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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Feb 20 19:51:52 EST 2009


Author: tirelli
Date: 2009-02-20 19:51:40 -0500 (Fri, 20 Feb 2009)
New Revision: 25370

Added:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/parser/JavaExitPointsDescr.java
Modified:
   labs/jbossrules/trunk/drools-compiler/pom.xml
   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/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/JavaAnalysisResult.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaConsequenceBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaExprAnalyzer.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/semantics/java/parser/Java.g
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/Tree2TestDRL.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/JavaConsequenceBuilderTest.java
Log:
Adding support to syntax translation for exitPoints reference in the java grammar

Modified: labs/jbossrules/trunk/drools-compiler/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-compiler/pom.xml	2009-02-20 19:24:04 UTC (rev 25369)
+++ labs/jbossrules/trunk/drools-compiler/pom.xml	2009-02-21 00:51:40 UTC (rev 25370)
@@ -115,12 +115,26 @@
 												<include name="**/*.java" />
 											</fileset>
 										</move>
+										<java classname="org.antlr.Tool" fork="true">
+											<arg
+												line="-lib src/main/resources/org/drools/semantics/java/parser src/main/resources/org/drools/semantics/java/parser/Java.g" />
+											<classpath refid="base.classpath" />
+										</java>
+										<move todir="src/main/java/org/drools/rule/builder/dialect/java/parser">
+											<fileset dir="src/main/resources/org/drools/semantics/java/parser">
+												<include name="**/*.java" />
+											</fileset>
+										</move>
 										<delete>
 											<fileset dir="src/main/resources/org/drools/lang">
 												<include name="**/*.tokens" />
 												<include name="DRL__.g" />
 												<include name="dsl/DSLMap__.g" />
 											</fileset>
+											<fileset dir="src/main/resources/org/drools/semantics/java/parser">
+												<include name="**/*.tokens" />
+												<include name="Java__.g" />
+											</fileset>
 										</delete>
 									</tasks>
 								</configuration>

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	2009-02-20 19:24:04 UTC (rev 25369)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java	2009-02-21 00:51:40 UTC (rev 25370)
@@ -1,4 +1,4 @@
-// $ANTLR 3.1.1 src/main/resources/org/drools/lang/DRL.g 2009-02-11 15:20:22
+// $ANTLR 3.1.1 src/main/resources/org/drools/lang/DRL.g 2009-02-20 18:38:43
 
 	package org.drools.lang;
 

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	2009-02-20 19:24:04 UTC (rev 25369)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLParser.java	2009-02-21 00:51:40 UTC (rev 25370)
@@ -1,4 +1,4 @@
-// $ANTLR 3.1.1 src/main/resources/org/drools/lang/DRL.g 2009-02-11 15:20:20
+// $ANTLR 3.1.1 src/main/resources/org/drools/lang/DRL.g 2009-02-20 18:38:42
 
 	package org.drools.lang;
 	

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	2009-02-20 19:24:04 UTC (rev 25369)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DescrBuilderTree.java	2009-02-21 00:51:40 UTC (rev 25370)
@@ -1,4 +1,4 @@
-// $ANTLR 3.1.1 src/main/resources/org/drools/lang/DescrBuilderTree.g 2009-02-11 15:20:22
+// $ANTLR 3.1.1 src/main/resources/org/drools/lang/DescrBuilderTree.g 2009-02-20 18:38:43
 
 	package org.drools.lang;
 

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	2009-02-20 19:24:04 UTC (rev 25369)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapLexer.java	2009-02-21 00:51:40 UTC (rev 25370)
@@ -1,4 +1,4 @@
-// $ANTLR 3.1.1 src/main/resources/org/drools/lang/dsl/DSLMap.g 2009-02-11 15:20:25
+// $ANTLR 3.1.1 src/main/resources/org/drools/lang/dsl/DSLMap.g 2009-02-20 18:38:47
 
 	package org.drools.lang.dsl;
 	import java.util.List;

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	2009-02-20 19:24:04 UTC (rev 25369)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapParser.java	2009-02-21 00:51:40 UTC (rev 25370)
@@ -1,4 +1,4 @@
-// $ANTLR 3.1.1 src/main/resources/org/drools/lang/dsl/DSLMap.g 2009-02-11 15:20:25
+// $ANTLR 3.1.1 src/main/resources/org/drools/lang/dsl/DSLMap.g 2009-02-20 18:38:46
 
 	package org.drools.lang.dsl;
 	import java.util.List;

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	2009-02-20 19:24:04 UTC (rev 25369)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapWalker.java	2009-02-21 00:51:40 UTC (rev 25370)
@@ -1,4 +1,4 @@
-// $ANTLR 3.1.1 src/main/resources/org/drools/lang/dsl/DSLMapWalker.g 2009-02-11 15:20:25
+// $ANTLR 3.1.1 src/main/resources/org/drools/lang/dsl/DSLMapWalker.g 2009-02-20 18:38:47
 
 	package org.drools.lang.dsl;
 	

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaAnalysisResult.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaAnalysisResult.java	2009-02-20 19:24:04 UTC (rev 25369)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaAnalysisResult.java	2009-02-21 00:51:40 UTC (rev 25370)
@@ -23,6 +23,7 @@
 import java.util.Map;
 
 import org.drools.compiler.Dialect.AnalysisResult;
+import org.drools.rule.builder.dialect.java.parser.JavaExitPointsDescr;
 import org.drools.rule.builder.dialect.java.parser.JavaLocalDeclarationDescr;
 
 /**
@@ -38,6 +39,7 @@
     private Map localVariables = Collections.EMPTY_MAP;
     private List notBoundedIdentifiers = Collections.EMPTY_LIST;
     private List modifyBlocks = Collections.EMPTY_LIST;
+    private List<JavaExitPointsDescr> exitPoints = Collections.emptyList();
     
     public List[] getBoundIdentifiers() {
         return boundIdentifiers;
@@ -75,4 +77,10 @@
     public void setModifyBlocks(List modifyBlocks) {
         this.modifyBlocks = modifyBlocks;
     }
+    public List<JavaExitPointsDescr> getExitPoints() {
+        return exitPoints;
+    }
+    public void setExitPoints(List<JavaExitPointsDescr> exitPoints) {
+        this.exitPoints = exitPoints;
+    }
 }

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaConsequenceBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaConsequenceBuilder.java	2009-02-20 19:24:04 UTC (rev 25369)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaConsequenceBuilder.java	2009-02-21 00:51:40 UTC (rev 25370)
@@ -17,6 +17,7 @@
 package org.drools.rule.builder.dialect.java;
 
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.Comparator;
 import java.util.Iterator;
 import java.util.List;
@@ -32,6 +33,7 @@
 import org.drools.rule.Declaration;
 import org.drools.rule.builder.ConsequenceBuilder;
 import org.drools.rule.builder.RuleBuildContext;
+import org.drools.rule.builder.dialect.java.parser.JavaExitPointsDescr;
 import org.drools.rule.builder.dialect.java.parser.JavaModifyBlockDescr;
 import org.drools.rule.builder.dialect.mvel.MVELDialect;
 import org.drools.spi.PatternExtractor;
@@ -46,7 +48,7 @@
     implements
     ConsequenceBuilder {
 
-    private final Pattern lineBreakFinder = Pattern.compile( "\\r\\n|\\r|\\n" ); 
+    private final Pattern lineBreakFinder = Pattern.compile( "\\r\\n|\\r|\\n" );
 
     /* (non-Javadoc)
      * @see org.drools.semantics.java.builder.ConsequenceBuilder#buildConsequence(org.drools.semantics.java.builder.BuildContext, org.drools.semantics.java.builder.BuildUtils, org.drools.lang.descr.RuleDescr)
@@ -63,27 +65,34 @@
         Dialect.AnalysisResult analysis = context.getDialect().analyzeBlock( context,
                                                                              ruleDescr,
                                                                              (String) ruleDescr.getConsequence(),
-                                                                             new Set[]{context.getDeclarationResolver().getDeclarations(context.getRule()).keySet(), context.getPkg().getGlobals().keySet()} );
+                                                                             new Set[]{context.getDeclarationResolver().getDeclarations( context.getRule() ).keySet(), context.getPkg().getGlobals().keySet()} );
 
         if ( analysis == null ) {
             // not possible to get the analysis results
             return;
         }
-        
-        String fixedConsequence = this.fixModifyBlocks( context, (JavaAnalysisResult) analysis, (String) ruleDescr.getConsequence() );
-        
+
+        String fixedConsequence = this.fixModifyBlocks( context,
+                                                        (JavaAnalysisResult) analysis,
+                                                        (String) ruleDescr.getConsequence() );
+        fixedConsequence = this.fixExitPointsReferences( context,
+                                                        (JavaAnalysisResult) analysis,
+                                                        fixedConsequence );
+
+
         if ( fixedConsequence == null ) {
             // not possible to rewrite the modify blocks
             return;
         }
-        fixedConsequence = ((JavaDialect) context.getDialect()).getKnowledgeHelperFixer().fix( fixedConsequence );        
+        fixedConsequence = ((JavaDialect) context.getDialect()).getKnowledgeHelperFixer().fix( fixedConsequence );
 
         final List[] usedIdentifiers = analysis.getBoundIdentifiers();
 
         final Declaration[] declarations = new Declaration[usedIdentifiers[0].size()];
-        
-        for ( int i = 0, size = usedIdentifiers[0].size(); i < size; i++ ) {    	
-            declarations[i] = context.getDeclarationResolver().getDeclaration(context.getRule(), (String) usedIdentifiers[0].get( i ) );
+
+        for ( int i = 0, size = usedIdentifiers[0].size(); i < size; i++ ) {
+            declarations[i] = context.getDeclarationResolver().getDeclaration( context.getRule(),
+                                                                               (String) usedIdentifiers[0].get( i ) );
         }
 
         final Map map = createVariableContext( className,
@@ -93,7 +102,7 @@
                                                null,
                                                (String[]) usedIdentifiers[1].toArray( new String[usedIdentifiers[1].size()] ) );
         map.put( "text",
-                  fixedConsequence);
+                 fixedConsequence );
 
         // Must use the rule declarations, so we use the same order as used in the generated invoker
         final List list = Arrays.asList( context.getRule().getDeclarations() );
@@ -149,7 +158,7 @@
             blocks.add( it.next() );
         }
 
-        StringBuffer consequence = new StringBuffer();
+        StringBuilder consequence = new StringBuilder();
         int lastAdded = 0;
         for ( Iterator it = blocks.iterator(); it.hasNext(); ) {
             JavaModifyBlockDescr d = (JavaModifyBlockDescr) it.next();
@@ -162,7 +171,7 @@
                                                                      context.getRuleDescr(),
                                                                      mvel.getInterceptors(),
                                                                      d.getModifyExpression(),
-                                                                     new Set[]{context.getDeclarationResolver().getDeclarations(context.getRule()).keySet(), context.getPkg().getGlobals().keySet()},
+                                                                     new Set[]{context.getDeclarationResolver().getDeclarations( context.getRule() ).keySet(), context.getPkg().getGlobals().keySet()},
                                                                      null );
 
             final ExecutableStatement expr = (ExecutableStatement) mvel.compile( d.getModifyExpression(),
@@ -173,14 +182,14 @@
                                                                                  context );
 
             Class ret = expr.getKnownEgressType();
-            
-            if( ret == null ) {
+
+            if ( ret == null ) {
                 // not possible to evaluate expression return value
                 context.getErrors().add( new DescrBuildError( context.getParentDescr(),
                                                               context.getRuleDescr(),
                                                               originalCode,
-                                                              "Unable to determine the resulting type of the expression: " + d.getModifyExpression()+"\n" ) );
-                
+                                                              "Unable to determine the resulting type of the expression: " + d.getModifyExpression() + "\n" ) );
+
                 return null;
             }
             String retString = ClassUtils.canonicalName( ret );
@@ -197,14 +206,14 @@
             consequence.append( "modifyRetract( __obj__ ); " );
 
             // the following is a hack to preserve line breaks.
-            String originalBlock = originalCode.substring( d.getStart()-1,
+            String originalBlock = originalCode.substring( d.getStart() - 1,
                                                            d.getEnd() );
             int end = originalBlock.indexOf( "{" );
             addLineBreaks( consequence,
                            originalBlock.substring( 0,
                                                     end ) );
 
-            int start = end+1;
+            int start = end + 1;
             // adding each of the expressions:
             for ( Iterator exprIt = d.getExpressions().iterator(); exprIt.hasNext(); ) {
                 String exprStr = (String) exprIt.next();
@@ -219,7 +228,8 @@
                 start = end + exprStr.length();
             }
             // adding the modifyInsert call:
-            addLineBreaks( consequence, originalBlock.substring( end ) );
+            addLineBreaks( consequence,
+                           originalBlock.substring( end ) );
             consequence.append( "modifyInsert( __obj__ ); }" );
         }
         consequence.append( originalCode.substring( lastAdded ) );
@@ -227,11 +237,49 @@
         return consequence.toString();
     }
 
+    protected String fixExitPointsReferences(final RuleBuildContext context,
+                                             final JavaAnalysisResult analysis,
+                                             final String originalCode) {
+        // sorting exit points for correct order iteration
+        List<JavaExitPointsDescr> exitPoints = analysis.getExitPoints();
+        Collections.sort( exitPoints, new Comparator<JavaExitPointsDescr>() {
+            public int compare(JavaExitPointsDescr o1,
+                               JavaExitPointsDescr o2) {
+                return o1.getStart() - o2.getStart();
+            }
+        } );
+
+        StringBuilder consequence = new StringBuilder();
+        int lastAdded = 0;
+        for ( JavaExitPointsDescr ep : exitPoints ) {
+            // adding chunk
+            consequence.append( originalCode.substring( lastAdded,
+                                                        ep.getStart() - 1 ) );
+            lastAdded = ep.getEnd();
+
+            // rewriting it for proper exitPoints access
+            consequence.append( "exitPoints.get( " );
+            consequence.append( ep.getId() );
+            consequence.append( " )" );
+
+            // the following is a hack to preserve line breaks.
+            String originalBlock = originalCode.substring( ep.getStart() - 1,
+                                                           ep.getEnd() );
+            int end = originalBlock.indexOf( "]" );
+            addLineBreaks( consequence,
+                           originalBlock.substring( 0,
+                                                    end ) );
+        }
+        consequence.append( originalCode.substring( lastAdded ) );
+
+        return consequence.toString();
+    }
+
     /**
      * @param consequence
      * @param chunk
      */
-    private void addLineBreaks(StringBuffer consequence,
+    private void addLineBreaks(StringBuilder consequence,
                                String chunk) {
         Matcher m = lineBreakFinder.matcher( chunk );
         while ( m.find() ) {

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaExprAnalyzer.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaExprAnalyzer.java	2009-02-20 19:24:04 UTC (rev 25369)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaExprAnalyzer.java	2009-02-21 00:51:40 UTC (rev 25370)
@@ -100,6 +100,7 @@
             }
         }
         result.setModifyBlocks( parser.getModifyBlocks() );
+        result.setExitPoints( parser.getExitPoints() );
 
         return analyze( result,
                         availableIdentifiers );

Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/parser/JavaExitPointsDescr.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/parser/JavaExitPointsDescr.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/parser/JavaExitPointsDescr.java	2009-02-21 00:51:40 UTC (rev 25370)
@@ -0,0 +1,45 @@
+/**
+ * 
+ */
+package org.drools.rule.builder.dialect.java.parser;
+
+
+/**
+ * A helper class used during java code parsing to identify
+ * and handle exitPoints calls
+ * 
+ * @author etirelli
+ */
+public class JavaExitPointsDescr {
+    private int start;
+    private int end;
+    private String id;
+    
+    public JavaExitPointsDescr( String id ) {
+        this.id = id;
+    }
+    
+    public int getStart() {
+        return start;
+    }
+    public void setStart(int start) {
+        this.start = start;
+    }
+    public int getEnd() {
+        return end;
+    }
+    public void setEnd(int end) {
+        this.end = end;
+    }
+    public String getId() {
+        return id;
+    }
+    public void setId(String id) {
+        this.id = id;
+    }
+    
+    public String toString() {
+        return "ExitPoints( start="+start+" end="+end+" id="+id+" )";
+    }
+
+}

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	2009-02-20 19:24:04 UTC (rev 25369)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/parser/JavaLexer.java	2009-02-21 00:51:40 UTC (rev 25370)
@@ -1,4814 +1,4859 @@
-// $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.*;
-import java.util.Stack;
-import java.util.List;
-import java.util.ArrayList;
-
-public class JavaLexer extends Lexer {
-    public static final int T__42=42;
-    public static final int HexDigit=12;
-    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 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 T__113=113;
-    public static final int IntegerTypeSuffix=13;
-    public static final int T__89=89;
-    public static final int Identifier=4;
-    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__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 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 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 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 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 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) {
-        this(input, new RecognizerSharedState());
-    }
-    public JavaLexer(CharStream input, RecognizerSharedState state) {
-        super(input,state);
-
-    }
-    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 = 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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__24"
-
-    // $ANTLR start "T__25"
-    public final void mT__25() throws RecognitionException {
-        try {
-            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(';'); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__25"
-
-    // $ANTLR start "T__26"
-    public final void mT__26() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__26"
-
-    // $ANTLR start "T__27"
-    public final void mT__27() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__27"
-
-    // $ANTLR start "T__28"
-    public final void mT__28() throws RecognitionException {
-        try {
-            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('.'); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__28"
-
-    // $ANTLR start "T__29"
-    public final void mT__29() throws RecognitionException {
-        try {
-            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('*'); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__29"
-
-    // $ANTLR start "T__30"
-    public final void mT__30() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__30"
-
-    // $ANTLR start "T__31"
-    public final void mT__31() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__31"
-
-    // $ANTLR start "T__32"
-    public final void mT__32() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__32"
-
-    // $ANTLR start "T__33"
-    public final void mT__33() throws RecognitionException {
-        try {
-            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('<'); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__33"
-
-    // $ANTLR start "T__34"
-    public final void mT__34() throws RecognitionException {
-        try {
-            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(','); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__34"
-
-    // $ANTLR start "T__35"
-    public final void mT__35() throws RecognitionException {
-        try {
-            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('>'); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__35"
-
-    // $ANTLR start "T__36"
-    public final void mT__36() throws RecognitionException {
-        try {
-            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('&'); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__36"
-
-    // $ANTLR start "T__37"
-    public final void mT__37() throws RecognitionException {
-        try {
-            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('{'); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__37"
-
-    // $ANTLR start "T__38"
-    public final void mT__38() throws RecognitionException {
-        try {
-            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('}'); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__38"
-
-    // $ANTLR start "T__39"
-    public final void mT__39() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__39"
-
-    // $ANTLR start "T__40"
-    public final void mT__40() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__40"
-
-    // $ANTLR start "T__41"
-    public final void mT__41() throws RecognitionException {
-        try {
-            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('['); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__41"
-
-    // $ANTLR start "T__42"
-    public final void mT__42() throws RecognitionException {
-        try {
-            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(']'); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__42"
-
-    // $ANTLR start "T__43"
-    public final void mT__43() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__43"
-
-    // $ANTLR start "T__44"
-    public final void mT__44() throws RecognitionException {
-        try {
-            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('='); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__44"
-
-    // $ANTLR start "T__45"
-    public final void mT__45() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__45"
-
-    // $ANTLR start "T__46"
-    public final void mT__46() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__46"
-
-    // $ANTLR start "T__47"
-    public final void mT__47() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__47"
-
-    // $ANTLR start "T__48"
-    public final void mT__48() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__48"
-
-    // $ANTLR start "T__49"
-    public final void mT__49() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__49"
-
-    // $ANTLR start "T__50"
-    public final void mT__50() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__50"
-
-    // $ANTLR start "T__51"
-    public final void mT__51() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__51"
-
-    // $ANTLR start "T__52"
-    public final void mT__52() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__52"
-
-    // $ANTLR start "T__53"
-    public final void mT__53() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__53"
-
-    // $ANTLR start "T__54"
-    public final void mT__54() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__54"
-
-    // $ANTLR start "T__55"
-    public final void mT__55() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__55"
-
-    // $ANTLR start "T__56"
-    public final void mT__56() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__56"
-
-    // $ANTLR start "T__57"
-    public final void mT__57() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__57"
-
-    // $ANTLR start "T__58"
-    public final void mT__58() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__58"
-
-    // $ANTLR start "T__59"
-    public final void mT__59() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__59"
-
-    // $ANTLR start "T__60"
-    public final void mT__60() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__60"
-
-    // $ANTLR start "T__61"
-    public final void mT__61() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__61"
-
-    // $ANTLR start "T__62"
-    public final void mT__62() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__62"
-
-    // $ANTLR start "T__63"
-    public final void mT__63() throws RecognitionException {
-        try {
-            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('?'); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__63"
-
-    // $ANTLR start "T__64"
-    public final void mT__64() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__64"
-
-    // $ANTLR start "T__65"
-    public final void mT__65() throws RecognitionException {
-        try {
-            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('('); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__65"
-
-    // $ANTLR start "T__66"
-    public final void mT__66() throws RecognitionException {
-        try {
-            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(')'); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__66"
-
-    // $ANTLR start "T__67"
-    public final void mT__67() throws RecognitionException {
-        try {
-            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("..."); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__67"
-
-    // $ANTLR start "T__68"
-    public final void mT__68() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__68"
-
-    // $ANTLR start "T__69"
-    public final void mT__69() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__69"
-
-    // $ANTLR start "T__70"
-    public final void mT__70() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__70"
-
-    // $ANTLR start "T__71"
-    public final void mT__71() throws RecognitionException {
-        try {
-            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('@'); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__71"
-
-    // $ANTLR start "T__72"
-    public final void mT__72() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__72"
-
-    // $ANTLR start "T__73"
-    public final void mT__73() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__73"
-
-    // $ANTLR start "T__74"
-    public final void mT__74() throws RecognitionException {
-        try {
-            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(':'); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__74"
-
-    // $ANTLR start "T__75"
-    public final void mT__75() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__75"
-
-    // $ANTLR start "T__76"
-    public final void mT__76() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__76"
-
-    // $ANTLR start "T__77"
-    public final void mT__77() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__77"
-
-    // $ANTLR start "T__78"
-    public final void mT__78() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__78"
-
-    // $ANTLR start "T__79"
-    public final void mT__79() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__79"
-
-    // $ANTLR start "T__80"
-    public final void mT__80() throws RecognitionException {
-        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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__80"
-
-    // $ANTLR start "T__81"
-    public final void mT__81() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__81"
-
-    // $ANTLR start "T__82"
-    public final void mT__82() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__82"
-
-    // $ANTLR start "T__83"
-    public final void mT__83() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__83"
-
-    // $ANTLR start "T__84"
-    public final void mT__84() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__84"
-
-    // $ANTLR start "T__85"
-    public final void mT__85() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__85"
-
-    // $ANTLR start "T__86"
-    public final void mT__86() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__86"
-
-    // $ANTLR start "T__87"
-    public final void mT__87() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__87"
-
-    // $ANTLR start "T__88"
-    public final void mT__88() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__88"
-
-    // $ANTLR start "T__89"
-    public final void mT__89() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__89"
-
-    // $ANTLR start "T__90"
-    public final void mT__90() throws RecognitionException {
-        try {
-            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("+="); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__90"
-
-    // $ANTLR start "T__91"
-    public final void mT__91() throws RecognitionException {
-        try {
-            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("-="); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__91"
-
-    // $ANTLR start "T__92"
-    public final void mT__92() throws RecognitionException {
-        try {
-            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("*="); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__92"
-
-    // $ANTLR start "T__93"
-    public final void mT__93() throws RecognitionException {
-        try {
-            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("/="); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__93"
-
-    // $ANTLR start "T__94"
-    public final void mT__94() throws RecognitionException {
-        try {
-            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("&="); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__94"
-
-    // $ANTLR start "T__95"
-    public final void mT__95() throws RecognitionException {
-        try {
-            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("|="); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__95"
-
-    // $ANTLR start "T__96"
-    public final void mT__96() throws RecognitionException {
-        try {
-            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("^="); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__96"
-
-    // $ANTLR start "T__97"
-    public final void mT__97() throws RecognitionException {
-        try {
-            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("%="); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__97"
-
-    // $ANTLR start "T__98"
-    public final void mT__98() throws RecognitionException {
-        try {
-            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("||"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__98"
-
-    // $ANTLR start "T__99"
-    public final void mT__99() throws RecognitionException {
-        try {
-            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("&&"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__99"
-
-    // $ANTLR start "T__100"
-    public final void mT__100() throws RecognitionException {
-        try {
-            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('|'); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__100"
-
-    // $ANTLR start "T__101"
-    public final void mT__101() throws RecognitionException {
-        try {
-            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('^'); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__101"
-
-    // $ANTLR start "T__102"
-    public final void mT__102() throws RecognitionException {
-        try {
-            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("=="); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__102"
-
-    // $ANTLR start "T__103"
-    public final void mT__103() throws RecognitionException {
-        try {
-            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("!="); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__103"
-
-    // $ANTLR start "T__104"
-    public final void mT__104() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__104"
-
-    // $ANTLR start "T__105"
-    public final void mT__105() throws RecognitionException {
-        try {
-            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('+'); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__105"
-
-    // $ANTLR start "T__106"
-    public final void mT__106() throws RecognitionException {
-        try {
-            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('-'); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__106"
-
-    // $ANTLR start "T__107"
-    public final void mT__107() throws RecognitionException {
-        try {
-            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('/'); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__107"
-
-    // $ANTLR start "T__108"
-    public final void mT__108() throws RecognitionException {
-        try {
-            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('%'); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__108"
-
-    // $ANTLR start "T__109"
-    public final void mT__109() throws RecognitionException {
-        try {
-            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("++"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__109"
-
-    // $ANTLR start "T__110"
-    public final void mT__110() throws RecognitionException {
-        try {
-            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("--"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__110"
-
-    // $ANTLR start "T__111"
-    public final void mT__111() throws RecognitionException {
-        try {
-            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('~'); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__111"
-
-    // $ANTLR start "T__112"
-    public final void mT__112() throws RecognitionException {
-        try {
-            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('!'); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__112"
-
-    // $ANTLR start "T__113"
-    public final void mT__113() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__113"
-
-    // $ANTLR start "T__114"
-    public final void mT__114() throws RecognitionException {
-        try {
-            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"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__114"
-
-    // $ANTLR start "HexLiteral"
-    public final void mHexLiteral() throws RecognitionException {
-        try {
-            int _type = HexLiteral;
-            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' ) {
-                input.consume();
-
-            }
-            else {
-                MismatchedSetException mse = new MismatchedSetException(null,input);
-                recover(mse);
-                throw mse;}
-
-            // /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 {
-                int alt1=2;
-                int LA1_0 = input.LA(1);
-
-                if ( ((LA1_0>='0' && LA1_0<='9')||(LA1_0>='A' && LA1_0<='F')||(LA1_0>='a' && LA1_0<='f')) ) {
-                    alt1=1;
-                }
-
-
-                switch (alt1) {
-            	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:960:28: HexDigit
-            	    {
-            	    mHexDigit(); 
-
-            	    }
-            	    break;
-
-            	default :
-            	    if ( cnt1 >= 1 ) break loop1;
-                        EarlyExitException eee =
-                            new EarlyExitException(1, input);
-                        throw eee;
-                }
-                cnt1++;
-            } while (true);
-
-            // /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);
-
-            if ( (LA2_0=='L'||LA2_0=='l') ) {
-                alt2=1;
-            }
-            switch (alt2) {
-                case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:960:38: IntegerTypeSuffix
-                    {
-                    mIntegerTypeSuffix(); 
-
-                    }
-                    break;
-
-            }
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "HexLiteral"
-
-    // $ANTLR start "DecimalLiteral"
-    public final void mDecimalLiteral() throws RecognitionException {
-        try {
-            int _type = DecimalLiteral;
-            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 )?
-            {
-            // /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);
-
-            if ( (LA4_0=='0') ) {
-                alt4=1;
-            }
-            else if ( ((LA4_0>='1' && LA4_0<='9')) ) {
-                alt4=2;
-            }
-            else {
-                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/semantics/java/parser/Java.g:962:19: '0'
-                    {
-                    match('0'); 
-
-                    }
-                    break;
-                case 2 :
-                    // /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'); 
-                    // /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;
-                        int LA3_0 = input.LA(1);
-
-                        if ( ((LA3_0>='0' && LA3_0<='9')) ) {
-                            alt3=1;
-                        }
-
-
-                        switch (alt3) {
-                    	case 1 :
-                    	    // /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'); 
-
-                    	    }
-                    	    break;
-
-                    	default :
-                    	    break loop3;
-                        }
-                    } while (true);
-
-
-                    }
-                    break;
-
-            }
-
-            // /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);
-
-            if ( (LA5_0=='L'||LA5_0=='l') ) {
-                alt5=1;
-            }
-            switch (alt5) {
-                case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:962:45: IntegerTypeSuffix
-                    {
-                    mIntegerTypeSuffix(); 
-
-                    }
-                    break;
-
-            }
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "DecimalLiteral"
-
-    // $ANTLR start "OctalLiteral"
-    public final void mOctalLiteral() throws RecognitionException {
-        try {
-            int _type = OctalLiteral;
-            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'); 
-            // /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 {
-                int alt6=2;
-                int LA6_0 = input.LA(1);
-
-                if ( ((LA6_0>='0' && LA6_0<='7')) ) {
-                    alt6=1;
-                }
-
-
-                switch (alt6) {
-            	case 1 :
-            	    // /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'); 
-
-            	    }
-            	    break;
-
-            	default :
-            	    if ( cnt6 >= 1 ) break loop6;
-                        EarlyExitException eee =
-                            new EarlyExitException(6, input);
-                        throw eee;
-                }
-                cnt6++;
-            } while (true);
-
-            // /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);
-
-            if ( (LA7_0=='L'||LA7_0=='l') ) {
-                alt7=1;
-            }
-            switch (alt7) {
-                case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:964:32: IntegerTypeSuffix
-                    {
-                    mIntegerTypeSuffix(); 
-
-                    }
-                    break;
-
-            }
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "OctalLiteral"
-
-    // $ANTLR start "HexDigit"
-    public final void mHexDigit() throws RecognitionException {
-        try {
-            // /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;}
-
-
-            }
-
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "HexDigit"
-
-    // $ANTLR start "IntegerTypeSuffix"
-    public final void mIntegerTypeSuffix() throws RecognitionException {
-        try {
-            // /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;}
-
-
-            }
-
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "IntegerTypeSuffix"
-
-    // $ANTLR start "FloatingPointLiteral"
-    public final void mFloatingPointLiteral() throws RecognitionException {
-        try {
-            int _type = FloatingPointLiteral;
-            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 :
-                    // /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 )?
-                    {
-                    // /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 {
-                        int alt8=2;
-                        int LA8_0 = input.LA(1);
-
-                        if ( ((LA8_0>='0' && LA8_0<='9')) ) {
-                            alt8=1;
-                        }
-
-
-                        switch (alt8) {
-                    	case 1 :
-                    	    // /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'); 
-
-                    	    }
-                    	    break;
-
-                    	default :
-                    	    if ( cnt8 >= 1 ) break loop8;
-                                EarlyExitException eee =
-                                    new EarlyExitException(8, input);
-                                throw eee;
-                        }
-                        cnt8++;
-                    } while (true);
-
-                    match('.'); 
-                    // /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;
-                        int LA9_0 = input.LA(1);
-
-                        if ( ((LA9_0>='0' && LA9_0<='9')) ) {
-                            alt9=1;
-                        }
-
-
-                        switch (alt9) {
-                    	case 1 :
-                    	    // /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'); 
-
-                    	    }
-                    	    break;
-
-                    	default :
-                    	    break loop9;
-                        }
-                    } while (true);
-
-                    // /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);
-
-                    if ( (LA10_0=='E'||LA10_0=='e') ) {
-                        alt10=1;
-                    }
-                    switch (alt10) {
-                        case 1 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:973:37: Exponent
-                            {
-                            mExponent(); 
-
-                            }
-                            break;
-
-                    }
-
-                    // /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);
-
-                    if ( (LA11_0=='D'||LA11_0=='F'||LA11_0=='d'||LA11_0=='f') ) {
-                        alt11=1;
-                    }
-                    switch (alt11) {
-                        case 1 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:973:47: FloatTypeSuffix
-                            {
-                            mFloatTypeSuffix(); 
-
-                            }
-                            break;
-
-                    }
-
-
-                    }
-                    break;
-                case 2 :
-                    // /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('.'); 
-                    // /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 {
-                        int alt12=2;
-                        int LA12_0 = input.LA(1);
-
-                        if ( ((LA12_0>='0' && LA12_0<='9')) ) {
-                            alt12=1;
-                        }
-
-
-                        switch (alt12) {
-                    	case 1 :
-                    	    // /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'); 
-
-                    	    }
-                    	    break;
-
-                    	default :
-                    	    if ( cnt12 >= 1 ) break loop12;
-                                EarlyExitException eee =
-                                    new EarlyExitException(12, input);
-                                throw eee;
-                        }
-                        cnt12++;
-                    } while (true);
-
-                    // /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);
-
-                    if ( (LA13_0=='E'||LA13_0=='e') ) {
-                        alt13=1;
-                    }
-                    switch (alt13) {
-                        case 1 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:974:25: Exponent
-                            {
-                            mExponent(); 
-
-                            }
-                            break;
-
-                    }
-
-                    // /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);
-
-                    if ( (LA14_0=='D'||LA14_0=='F'||LA14_0=='d'||LA14_0=='f') ) {
-                        alt14=1;
-                    }
-                    switch (alt14) {
-                        case 1 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:974:35: FloatTypeSuffix
-                            {
-                            mFloatTypeSuffix(); 
-
-                            }
-                            break;
-
-                    }
-
-
-                    }
-                    break;
-                case 3 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/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' )+
-                    int cnt15=0;
-                    loop15:
-                    do {
-                        int alt15=2;
-                        int LA15_0 = input.LA(1);
-
-                        if ( ((LA15_0>='0' && LA15_0<='9')) ) {
-                            alt15=1;
-                        }
-
-
-                        switch (alt15) {
-                    	case 1 :
-                    	    // /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'); 
-
-                    	    }
-                    	    break;
-
-                    	default :
-                    	    if ( cnt15 >= 1 ) break loop15;
-                                EarlyExitException eee =
-                                    new EarlyExitException(15, input);
-                                throw eee;
-                        }
-                        cnt15++;
-                    } while (true);
-
-                    mExponent(); 
-                    // /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);
-
-                    if ( (LA16_0=='D'||LA16_0=='F'||LA16_0=='d'||LA16_0=='f') ) {
-                        alt16=1;
-                    }
-                    switch (alt16) {
-                        case 1 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:975:30: FloatTypeSuffix
-                            {
-                            mFloatTypeSuffix(); 
-
-                            }
-                            break;
-
-                    }
-
-
-                    }
-                    break;
-                case 4 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/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' )+
-                    int cnt17=0;
-                    loop17:
-                    do {
-                        int alt17=2;
-                        int LA17_0 = input.LA(1);
-
-                        if ( ((LA17_0>='0' && LA17_0<='9')) ) {
-                            alt17=1;
-                        }
-
-
-                        switch (alt17) {
-                    	case 1 :
-                    	    // /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'); 
-
-                    	    }
-                    	    break;
-
-                    	default :
-                    	    if ( cnt17 >= 1 ) break loop17;
-                                EarlyExitException eee =
-                                    new EarlyExitException(17, input);
-                                throw eee;
-                        }
-                        cnt17++;
-                    } while (true);
-
-                    // /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);
-
-                    if ( (LA18_0=='E'||LA18_0=='e') ) {
-                        alt18=1;
-                    }
-                    switch (alt18) {
-                        case 1 :
-                            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:976:21: Exponent
-                            {
-                            mExponent(); 
-
-                            }
-                            break;
-
-                    }
-
-                    mFloatTypeSuffix(); 
-
-                    }
-                    break;
-
-            }
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "FloatingPointLiteral"
-
-    // $ANTLR start "Exponent"
-    public final void mExponent() throws RecognitionException {
-        try {
-            // /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;}
-
-            // /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);
-
-            if ( (LA20_0=='+'||LA20_0=='-') ) {
-                alt20=1;
-            }
-            switch (alt20) {
-                case 1 :
-                    // /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;}
-
-
-                    }
-                    break;
-
-            }
-
-            // /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 {
-                int alt21=2;
-                int LA21_0 = input.LA(1);
-
-                if ( ((LA21_0>='0' && LA21_0<='9')) ) {
-                    alt21=1;
-                }
-
-
-                switch (alt21) {
-            	case 1 :
-            	    // /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'); 
-
-            	    }
-            	    break;
-
-            	default :
-            	    if ( cnt21 >= 1 ) break loop21;
-                        EarlyExitException eee =
-                            new EarlyExitException(21, input);
-                        throw eee;
-                }
-                cnt21++;
-            } while (true);
-
-
-            }
-
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "Exponent"
-
-    // $ANTLR start "FloatTypeSuffix"
-    public final void mFloatTypeSuffix() throws RecognitionException {
-        try {
-            // /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;}
-
-
-            }
-
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "FloatTypeSuffix"
-
-    // $ANTLR start "CharacterLiteral"
-    public final void mCharacterLiteral() throws RecognitionException {
-        try {
-            int _type = CharacterLiteral;
-            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('\''); 
-            // /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<='\uFFFF')) ) {
-                alt22=2;
-            }
-            else {
-                NoViableAltException nvae =
-                    new NoViableAltException("", 22, 0, input);
-
-                throw nvae;
-            }
-            switch (alt22) {
-                case 1 :
-                    // /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 :
-                    // /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)<='\uFFFF') ) {
-                        input.consume();
-
-                    }
-                    else {
-                        MismatchedSetException mse = new MismatchedSetException(null,input);
-                        recover(mse);
-                        throw mse;}
-
-
-                    }
-                    break;
-
-            }
-
-            match('\''); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "CharacterLiteral"
-
-    // $ANTLR start "StringLiteral"
-    public final void mStringLiteral() throws RecognitionException {
-        try {
-            int _type = StringLiteral;
-            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('\"'); 
-            // /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;
-                int LA23_0 = input.LA(1);
-
-                if ( (LA23_0=='\\') ) {
-                    alt23=1;
-                }
-                else if ( ((LA23_0>='\u0000' && LA23_0<='!')||(LA23_0>='#' && LA23_0<='[')||(LA23_0>=']' && LA23_0<='\uFFFF')) ) {
-                    alt23=2;
-                }
-
-
-                switch (alt23) {
-            	case 1 :
-            	    // /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 :
-            	    // /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)<='\uFFFF') ) {
-            	        input.consume();
-
-            	    }
-            	    else {
-            	        MismatchedSetException mse = new MismatchedSetException(null,input);
-            	        recover(mse);
-            	        throw mse;}
-
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop23;
-                }
-            } while (true);
-
-            match('\"'); 
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "StringLiteral"
-
-    // $ANTLR start "EscapeSequence"
-    public final void mEscapeSequence() throws RecognitionException {
-        try {
-            // /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 '\"':
-                case '\'':
-                case '\\':
-                case 'b':
-                case 'f':
-                case 'n':
-                case 'r':
-                case 't':
-                    {
-                    alt24=1;
-                    }
-                    break;
-                case 'u':
-                    {
-                    alt24=2;
-                    }
-                    break;
-                case '0':
-                case '1':
-                case '2':
-                case '3':
-                case '4':
-                case '5':
-                case '6':
-                case '7':
-                    {
-                    alt24=3;
-                    }
-                    break;
-                default:
-                    NoViableAltException nvae =
-                        new NoViableAltException("", 24, 1, input);
-
-                    throw nvae;
-                }
-
-            }
-            else {
-                NoViableAltException nvae =
-                    new NoViableAltException("", 24, 0, input);
-
-                throw nvae;
-            }
-            switch (alt24) {
-                case 1 :
-                    // /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' ) {
-                        input.consume();
-
-                    }
-                    else {
-                        MismatchedSetException mse = new MismatchedSetException(null,input);
-                        recover(mse);
-                        throw mse;}
-
-
-                    }
-                    break;
-                case 2 :
-                    // /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 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:997:9: OctalEscape
-                    {
-                    mOctalEscape(); 
-
-                    }
-                    break;
-
-            }
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "EscapeSequence"
-
-    // $ANTLR start "OctalEscape"
-    public final void mOctalEscape() throws RecognitionException {
-        try {
-            // /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);
-
-            if ( (LA25_0=='\\') ) {
-                int LA25_1 = input.LA(2);
-
-                if ( ((LA25_1>='0' && LA25_1<='3')) ) {
-                    int LA25_2 = input.LA(3);
-
-                    if ( ((LA25_2>='0' && LA25_2<='7')) ) {
-                        int LA25_5 = input.LA(4);
-
-                        if ( ((LA25_5>='0' && LA25_5<='7')) ) {
-                            alt25=1;
-                        }
-                        else {
-                            alt25=2;}
-                    }
-                    else {
-                        alt25=3;}
-                }
-                else if ( ((LA25_1>='4' && LA25_1<='7')) ) {
-                    int LA25_3 = input.LA(3);
-
-                    if ( ((LA25_3>='0' && LA25_3<='7')) ) {
-                        alt25=2;
-                    }
-                    else {
-                        alt25=3;}
-                }
-                else {
-                    NoViableAltException nvae =
-                        new NoViableAltException("", 25, 1, input);
-
-                    throw nvae;
-                }
-            }
-            else {
-                NoViableAltException nvae =
-                    new NoViableAltException("", 25, 0, input);
-
-                throw nvae;
-            }
-            switch (alt25) {
-                case 1 :
-                    // /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('\\'); 
-                    // /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'); 
-
-                    }
-
-                    // /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'); 
-
-                    }
-
-                    // /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'); 
-
-                    }
-
-
-                    }
-                    break;
-                case 2 :
-                    // /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('\\'); 
-                    // /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'); 
-
-                    }
-
-                    // /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'); 
-
-                    }
-
-
-                    }
-                    break;
-                case 3 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1004:9: '\\\\' ( '0' .. '7' )
-                    {
-                    match('\\'); 
-                    // /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'); 
-
-                    }
-
-
-                    }
-                    break;
-
-            }
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "OctalEscape"
-
-    // $ANTLR start "UnicodeEscape"
-    public final void mUnicodeEscape() throws RecognitionException {
-        try {
-            // /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'); 
-            mHexDigit(); 
-            mHexDigit(); 
-            mHexDigit(); 
-            mHexDigit(); 
-
-            }
-
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "UnicodeEscape"
-
-    // $ANTLR start "ENUM"
-    public final void mENUM() throws RecognitionException {
-        try {
-            int _type = 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"); 
-
-            if ( !enumIsKeyword ) _type=Identifier;
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "ENUM"
-
-    // $ANTLR start "Identifier"
-    public final void mIdentifier() throws RecognitionException {
-        try {
-            int _type = Identifier;
-            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(); 
-            // /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;
-                int LA26_0 = input.LA(1);
-
-                if ( (LA26_0=='$'||(LA26_0>='0' && LA26_0<='9')||(LA26_0>='A' && LA26_0<='Z')||LA26_0=='_'||(LA26_0>='a' && LA26_0<='z')||(LA26_0>='\u00C0' && LA26_0<='\u00D6')||(LA26_0>='\u00D8' && LA26_0<='\u00F6')||(LA26_0>='\u00F8' && LA26_0<='\u1FFF')||(LA26_0>='\u3040' && LA26_0<='\u318F')||(LA26_0>='\u3300' && LA26_0<='\u337F')||(LA26_0>='\u3400' && LA26_0<='\u3D2D')||(LA26_0>='\u4E00' && LA26_0<='\u9FFF')||(LA26_0>='\uF900' && LA26_0<='\uFAFF')) ) {
-                    alt26=1;
-                }
-
-
-                switch (alt26) {
-            	case 1 :
-            	    // /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;}
-
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop26;
-                }
-            } while (true);
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "Identifier"
-
-    // $ANTLR start "Letter"
-    public final void mLetter() throws RecognitionException {
-        try {
-            // /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;}
-
-
-            }
-
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "Letter"
-
-    // $ANTLR start "JavaIDDigit"
-    public final void mJavaIDDigit() throws RecognitionException {
-        try {
-            // /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;}
-
-
-            }
-
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "JavaIDDigit"
-
-    // $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/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;}
-
-            _channel=HIDDEN;
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "WS"
-
-    // $ANTLR start "COMMENT"
-    public final void mCOMMENT() throws RecognitionException {
-        try {
-            int _type = COMMENT;
-            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("/*"); 
-
-            // /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;
-                int LA27_0 = input.LA(1);
-
-                if ( (LA27_0=='*') ) {
-                    int LA27_1 = input.LA(2);
-
-                    if ( (LA27_1=='/') ) {
-                        alt27=2;
-                    }
-                    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<='\uFFFF')) ) {
-                    alt27=1;
-                }
-
-
-                switch (alt27) {
-            	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1062:42: .
-            	    {
-            	    matchAny(); 
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop27;
-                }
-            } while (true);
-
-            match("*/"); 
-
-            _channel=HIDDEN;
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "COMMENT"
-
-    // $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/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("//"); 
-
-            // /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<='\uFFFF')) ) {
-                    alt28=1;
-                }
-
-
-                switch (alt28) {
-            	case 1 :
-            	    // /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)<='\uFFFF') ) {
-            	        input.consume();
-
-            	    }
-            	    else {
-            	        MismatchedSetException mse = new MismatchedSetException(null,input);
-            	        recover(mse);
-            	        throw mse;}
-
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop28;
-                }
-            } while (true);
-
-            // /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);
-
-            if ( (LA29_0=='\r') ) {
-                alt29=1;
-            }
-            switch (alt29) {
-                case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1066:26: '\\r'
-                    {
-                    match('\r'); 
-
-                    }
-                    break;
-
-            }
-
-            match('\n'); 
-            _channel=HIDDEN;
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "LINE_COMMENT"
-
-    public void mTokens() throws RecognitionException {
-        // /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 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:10: T__24
-                {
-                mT__24(); 
-
-                }
-                break;
-            case 2 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:16: T__25
-                {
-                mT__25(); 
-
-                }
-                break;
-            case 3 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:22: T__26
-                {
-                mT__26(); 
-
-                }
-                break;
-            case 4 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:28: T__27
-                {
-                mT__27(); 
-
-                }
-                break;
-            case 5 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:34: T__28
-                {
-                mT__28(); 
-
-                }
-                break;
-            case 6 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:40: T__29
-                {
-                mT__29(); 
-
-                }
-                break;
-            case 7 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:46: T__30
-                {
-                mT__30(); 
-
-                }
-                break;
-            case 8 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:52: T__31
-                {
-                mT__31(); 
-
-                }
-                break;
-            case 9 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:58: T__32
-                {
-                mT__32(); 
-
-                }
-                break;
-            case 10 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:64: T__33
-                {
-                mT__33(); 
-
-                }
-                break;
-            case 11 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:70: T__34
-                {
-                mT__34(); 
-
-                }
-                break;
-            case 12 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:76: T__35
-                {
-                mT__35(); 
-
-                }
-                break;
-            case 13 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:82: T__36
-                {
-                mT__36(); 
-
-                }
-                break;
-            case 14 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:88: T__37
-                {
-                mT__37(); 
-
-                }
-                break;
-            case 15 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:94: T__38
-                {
-                mT__38(); 
-
-                }
-                break;
-            case 16 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:100: T__39
-                {
-                mT__39(); 
-
-                }
-                break;
-            case 17 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:106: T__40
-                {
-                mT__40(); 
-
-                }
-                break;
-            case 18 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:112: T__41
-                {
-                mT__41(); 
-
-                }
-                break;
-            case 19 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:118: T__42
-                {
-                mT__42(); 
-
-                }
-                break;
-            case 20 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:124: T__43
-                {
-                mT__43(); 
-
-                }
-                break;
-            case 21 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:130: T__44
-                {
-                mT__44(); 
-
-                }
-                break;
-            case 22 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:136: T__45
-                {
-                mT__45(); 
-
-                }
-                break;
-            case 23 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:142: T__46
-                {
-                mT__46(); 
-
-                }
-                break;
-            case 24 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:148: T__47
-                {
-                mT__47(); 
-
-                }
-                break;
-            case 25 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:154: T__48
-                {
-                mT__48(); 
-
-                }
-                break;
-            case 26 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:160: T__49
-                {
-                mT__49(); 
-
-                }
-                break;
-            case 27 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:166: T__50
-                {
-                mT__50(); 
-
-                }
-                break;
-            case 28 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:172: T__51
-                {
-                mT__51(); 
-
-                }
-                break;
-            case 29 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:178: T__52
-                {
-                mT__52(); 
-
-                }
-                break;
-            case 30 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:184: T__53
-                {
-                mT__53(); 
-
-                }
-                break;
-            case 31 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:190: T__54
-                {
-                mT__54(); 
-
-                }
-                break;
-            case 32 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:196: T__55
-                {
-                mT__55(); 
-
-                }
-                break;
-            case 33 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:202: T__56
-                {
-                mT__56(); 
-
-                }
-                break;
-            case 34 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:208: T__57
-                {
-                mT__57(); 
-
-                }
-                break;
-            case 35 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:214: T__58
-                {
-                mT__58(); 
-
-                }
-                break;
-            case 36 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:220: T__59
-                {
-                mT__59(); 
-
-                }
-                break;
-            case 37 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:226: T__60
-                {
-                mT__60(); 
-
-                }
-                break;
-            case 38 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:232: T__61
-                {
-                mT__61(); 
-
-                }
-                break;
-            case 39 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:238: T__62
-                {
-                mT__62(); 
-
-                }
-                break;
-            case 40 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:244: T__63
-                {
-                mT__63(); 
-
-                }
-                break;
-            case 41 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:250: T__64
-                {
-                mT__64(); 
-
-                }
-                break;
-            case 42 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:256: T__65
-                {
-                mT__65(); 
-
-                }
-                break;
-            case 43 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:262: T__66
-                {
-                mT__66(); 
-
-                }
-                break;
-            case 44 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:268: T__67
-                {
-                mT__67(); 
-
-                }
-                break;
-            case 45 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:274: T__68
-                {
-                mT__68(); 
-
-                }
-                break;
-            case 46 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:280: T__69
-                {
-                mT__69(); 
-
-                }
-                break;
-            case 47 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:286: T__70
-                {
-                mT__70(); 
-
-                }
-                break;
-            case 48 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:292: T__71
-                {
-                mT__71(); 
-
-                }
-                break;
-            case 49 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:298: T__72
-                {
-                mT__72(); 
-
-                }
-                break;
-            case 50 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:304: T__73
-                {
-                mT__73(); 
-
-                }
-                break;
-            case 51 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:310: T__74
-                {
-                mT__74(); 
-
-                }
-                break;
-            case 52 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:316: T__75
-                {
-                mT__75(); 
-
-                }
-                break;
-            case 53 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:322: T__76
-                {
-                mT__76(); 
-
-                }
-                break;
-            case 54 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:328: T__77
-                {
-                mT__77(); 
-
-                }
-                break;
-            case 55 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:334: T__78
-                {
-                mT__78(); 
-
-                }
-                break;
-            case 56 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:340: T__79
-                {
-                mT__79(); 
-
-                }
-                break;
-            case 57 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:346: T__80
-                {
-                mT__80(); 
-
-                }
-                break;
-            case 58 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:352: T__81
-                {
-                mT__81(); 
-
-                }
-                break;
-            case 59 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:358: T__82
-                {
-                mT__82(); 
-
-                }
-                break;
-            case 60 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:364: T__83
-                {
-                mT__83(); 
-
-                }
-                break;
-            case 61 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:370: T__84
-                {
-                mT__84(); 
-
-                }
-                break;
-            case 62 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:376: T__85
-                {
-                mT__85(); 
-
-                }
-                break;
-            case 63 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:382: T__86
-                {
-                mT__86(); 
-
-                }
-                break;
-            case 64 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:388: T__87
-                {
-                mT__87(); 
-
-                }
-                break;
-            case 65 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:394: T__88
-                {
-                mT__88(); 
-
-                }
-                break;
-            case 66 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:400: T__89
-                {
-                mT__89(); 
-
-                }
-                break;
-            case 67 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:406: T__90
-                {
-                mT__90(); 
-
-                }
-                break;
-            case 68 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:412: T__91
-                {
-                mT__91(); 
-
-                }
-                break;
-            case 69 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:418: T__92
-                {
-                mT__92(); 
-
-                }
-                break;
-            case 70 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:424: T__93
-                {
-                mT__93(); 
-
-                }
-                break;
-            case 71 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:430: T__94
-                {
-                mT__94(); 
-
-                }
-                break;
-            case 72 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:436: T__95
-                {
-                mT__95(); 
-
-                }
-                break;
-            case 73 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:442: T__96
-                {
-                mT__96(); 
-
-                }
-                break;
-            case 74 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:448: T__97
-                {
-                mT__97(); 
-
-                }
-                break;
-            case 75 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:454: T__98
-                {
-                mT__98(); 
-
-                }
-                break;
-            case 76 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:460: T__99
-                {
-                mT__99(); 
-
-                }
-                break;
-            case 77 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:466: T__100
-                {
-                mT__100(); 
-
-                }
-                break;
-            case 78 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:473: T__101
-                {
-                mT__101(); 
-
-                }
-                break;
-            case 79 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:480: T__102
-                {
-                mT__102(); 
-
-                }
-                break;
-            case 80 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:487: T__103
-                {
-                mT__103(); 
-
-                }
-                break;
-            case 81 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:494: T__104
-                {
-                mT__104(); 
-
-                }
-                break;
-            case 82 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:501: T__105
-                {
-                mT__105(); 
-
-                }
-                break;
-            case 83 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:508: T__106
-                {
-                mT__106(); 
-
-                }
-                break;
-            case 84 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:515: T__107
-                {
-                mT__107(); 
-
-                }
-                break;
-            case 85 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:522: T__108
-                {
-                mT__108(); 
-
-                }
-                break;
-            case 86 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:529: T__109
-                {
-                mT__109(); 
-
-                }
-                break;
-            case 87 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:536: T__110
-                {
-                mT__110(); 
-
-                }
-                break;
-            case 88 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:543: T__111
-                {
-                mT__111(); 
-
-                }
-                break;
-            case 89 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:550: T__112
-                {
-                mT__112(); 
-
-                }
-                break;
-            case 90 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:557: T__113
-                {
-                mT__113(); 
-
-                }
-                break;
-            case 91 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:564: T__114
-                {
-                mT__114(); 
-
-                }
-                break;
-            case 92 :
-                // /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 :
-                // /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 :
-                // /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 :
-                // /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 :
-                // /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 :
-                // /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 :
-                // /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 :
-                // /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 :
-                // /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 :
-                // /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 :
-                // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:1:689: LINE_COMMENT
-                {
-                mLINE_COMMENT(); 
-
-                }
-                break;
-
-        }
-
-    }
-
-
-    protected DFA19 dfa19 = new DFA19(this);
-    protected DFA30 dfa30 = new DFA30(this);
-    static final String DFA19_eotS =
-        "\7\uffff\1\10\2\uffff";
-    static final String DFA19_eofS =
-        "\12\uffff";
-    static final String DFA19_minS =
-        "\2\56\1\uffff\1\53\2\uffff\2\60\2\uffff";
-    static final String DFA19_maxS =
-        "\1\71\1\146\1\uffff\1\71\2\uffff\1\71\1\146\2\uffff";
-    static final String DFA19_acceptS =
-        "\2\uffff\1\2\1\uffff\1\4\1\1\2\uffff\2\3";
-    static final String DFA19_specialS =
-        "\12\uffff}>";
-    static final String[] DFA19_transitionS = {
-            "\1\2\1\uffff\12\1",
-            "\1\5\1\uffff\12\1\12\uffff\1\4\1\3\1\4\35\uffff\1\4\1\3\1\4",
-            "",
-            "\1\6\1\uffff\1\6\2\uffff\12\7",
-            "",
-            "",
-            "\12\7",
-            "\12\7\12\uffff\1\11\1\uffff\1\11\35\uffff\1\11\1\uffff\1\11",
-            "",
-            ""
-    };
-
-    static final short[] DFA19_eot = DFA.unpackEncodedString(DFA19_eotS);
-    static final short[] DFA19_eof = DFA.unpackEncodedString(DFA19_eofS);
-    static final char[] DFA19_min = DFA.unpackEncodedStringToUnsignedChars(DFA19_minS);
-    static final char[] DFA19_max = DFA.unpackEncodedStringToUnsignedChars(DFA19_maxS);
-    static final short[] DFA19_accept = DFA.unpackEncodedString(DFA19_acceptS);
-    static final short[] DFA19_special = DFA.unpackEncodedString(DFA19_specialS);
-    static final short[][] DFA19_transition;
-
-    static {
-        int numStates = DFA19_transitionS.length;
-        DFA19_transition = new short[numStates][];
-        for (int i=0; i<numStates; i++) {
-            DFA19_transition[i] = DFA.unpackEncodedString(DFA19_transitionS[i]);
-        }
-    }
-
-    class DFA19 extends DFA {
-
-        public DFA19(BaseRecognizer recognizer) {
-            this.recognizer = recognizer;
-            this.decisionNumber = 19;
-            this.eot = DFA19_eot;
-            this.eof = DFA19_eof;
-            this.min = DFA19_min;
-            this.max = DFA19_max;
-            this.accept = DFA19_accept;
-            this.special = DFA19_special;
-            this.transition = DFA19_transition;
-        }
-        public String getDescription() {
-            return "972:1: FloatingPointLiteral : ( ( '0' .. '9' )+ '.' ( '0' .. '9' )* ( Exponent )? ( FloatTypeSuffix )? | '.' ( '0' .. '9' )+ ( Exponent )? ( FloatTypeSuffix )? | ( '0' .. '9' )+ Exponent ( FloatTypeSuffix )? | ( '0' .. '9' )+ ( Exponent )? FloatTypeSuffix );";
-        }
-    }
-    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\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\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\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\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 = {
-            "\2\57\1\uffff\2\57\22\uffff\1\57\1\50\1\55\1\uffff\1\56\1\47"+
-            "\1\14\1\54\1\33\1\34\1\6\1\42\1\12\1\43\1\5\1\44\1\52\11\53"+
-            "\1\36\1\2\1\11\1\23\1\13\1\32\1\35\32\56\1\20\1\uffff\1\21\1"+
-            "\46\1\56\1\uffff\1\24\1\27\1\7\1\31\1\10\1\25\2\56\1\3\2\56"+
-            "\1\30\1\41\1\26\1\56\1\1\1\56\1\40\1\4\1\22\1\56\1\17\1\37\3"+
-            "\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\60\20\uffff\1\62\2\uffff\1\61",
-            "",
-            "\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\103\6\uffff\1\101\3\uffff\1\100\2\uffff\1\102",
-            "\1\105\1\uffff\1\106\11\uffff\1\104",
-            "",
-            "",
-            "",
-            "\1\110\26\uffff\1\107",
-            "",
-            "",
-            "\1\112",
-            "",
-            "",
-            "\1\113\11\uffff\1\114",
-            "\1\115",
-            "\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\135\11\uffff\1\134",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "\1\136",
-            "\1\137",
-            "\1\140",
-            "\1\142\21\uffff\1\141",
-            "\1\145\17\uffff\1\144",
-            "\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\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",
-            "\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\u0080\20\uffff\1\u0081",
-            "\1\u0082",
-            "\1\u0083",
-            "\1\u0084",
-            "\1\u0085",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "\1\u0086",
-            "\1\u0087",
-            "\1\u0088",
-            "\1\u008a\1\u0089",
-            "\1\u008b",
-            "\1\u008c",
-            "\1\u008d",
-            "",
-            "",
-            "",
-            "\1\u008e\2\uffff\1\u008f",
-            "\1\u0091\10\uffff\1\u0090",
-            "\1\u0092\23\uffff\1\u0093\3\uffff\1\u0094",
-            "",
-            "",
-            "\1\u0095",
-            "\1\u0096",
-            "\1\u0097",
-            "\1\u0098",
-            "\1\u0099",
-            "\1\u009a",
-            "\1\u009b",
-            "\1\u009c",
-            "\1\u009d",
-            "\1\u009e",
-            "\1\u009f",
-            "\1\u00a0",
-            "\1\u00a1",
-            "\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",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "\1\75\1\uffff\10\165\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\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\u00b1",
-            "",
-            "\1\u00b2",
-            "\1\u00b3",
-            "\1\u00b4",
-            "\1\u00b5",
-            "\1\u00b6",
-            "\1\u00b7",
-            "\1\u00b8",
-            "\1\u00b9",
-            "\1\u00ba",
-            "\1\u00bb",
-            "\1\u00bc",
-            "\1\u00bd",
-            "\1\u00be",
-            "\1\u00bf",
-            "\1\u00c0",
-            "\1\u00c1",
-            "\1\u00c2",
-            "\1\u00c3",
-            "\1\u00c4",
-            "\1\u00c5",
-            "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32"+
-            "\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
-            "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
-            "\u5200\56\u5900\uffff\u0200\56",
-            "\1\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"+
-            "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
-            "\u5200\56\u5900\uffff\u0200\56",
-            "\1\u00cd",
-            "\1\u00ce",
-            "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32"+
-            "\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
-            "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
-            "\u5200\56\u5900\uffff\u0200\56",
-            "\1\u00d0",
-            "\1\u00d1",
-            "\1\u00d2",
-            "\1\u00d3",
-            "\1\u00d4",
-            "",
-            "\1\u00d5",
-            "\1\u00d6",
-            "\1\u00d7",
-            "\1\u00d8",
-            "",
-            "\1\u00d9",
-            "\1\u00da",
-            "\1\u00db",
-            "\1\u00dc",
-            "\1\u00dd",
-            "\1\u00de",
-            "\1\u00df",
-            "",
-            "\1\u00e0",
-            "\1\u00e1",
-            "\1\u00e2",
-            "\1\u00e3",
-            "\1\u00e4",
-            "\1\u00e5",
-            "\1\u00e6",
-            "\1\u00e7",
-            "\1\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\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\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"+
-            "\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\u00f0",
-            "\1\u00f1",
-            "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32"+
-            "\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
-            "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
-            "\u5200\56\u5900\uffff\u0200\56",
-            "\1\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\u00f5",
-            "\1\u00f6",
-            "\1\u00f7",
-            "\1\u00f8",
-            "\1\u00f9",
-            "",
-            "\1\u00fa",
-            "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32"+
-            "\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
-            "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
-            "\u5200\56\u5900\uffff\u0200\56",
-            "",
-            "\1\u00fc",
-            "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32"+
-            "\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
-            "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
-            "\u5200\56\u5900\uffff\u0200\56",
-            "\1\u00fe",
-            "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32"+
-            "\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
-            "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
-            "\u5200\56\u5900\uffff\u0200\56",
-            "\1\u0100",
-            "\1\u0101",
-            "\1\u0102",
-            "\1\u0103",
-            "\1\u0104",
-            "\1\u0105",
-            "\1\u0106",
-            "\1\u0107",
-            "\1\u0108",
-            "\1\u0109",
-            "\1\u010a",
-            "\1\u010b",
-            "\1\u010c",
-            "\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"+
-            "\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\u0112",
-            "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32"+
-            "\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
-            "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
-            "\u5200\56\u5900\uffff\u0200\56",
-            "",
-            "\1\u0114",
-            "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32"+
-            "\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
-            "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
-            "\u5200\56\u5900\uffff\u0200\56",
-            "",
-            "\1\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\u011a",
-            "",
-            "\1\u011b",
-            "\1\u011c",
-            "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\13"+
-            "\56\1\u011d\16\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08"+
-            "\56\u1040\uffff\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e"+
-            "\56\u10d2\uffff\u5200\56\u5900\uffff\u0200\56",
-            "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32"+
-            "\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
-            "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
-            "\u5200\56\u5900\uffff\u0200\56",
-            "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\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\u0122",
-            "",
-            "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32"+
-            "\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
-            "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
-            "\u5200\56\u5900\uffff\u0200\56",
-            "",
-            "\1\u0124",
-            "\1\u0125",
-            "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32"+
-            "\56\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\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\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\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32"+
-            "\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
-            "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
-            "\u5200\56\u5900\uffff\u0200\56",
-            "\1\u0132",
-            "\1\u0133",
-            "",
-            "",
-            "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32"+
-            "\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
-            "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
-            "\u5200\56\u5900\uffff\u0200\56",
-            "",
-            "\1\u0135",
-            "",
-            "\1\u0136",
-            "\1\u0137",
-            "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32"+
-            "\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
-            "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
-            "\u5200\56\u5900\uffff\u0200\56",
-            "",
-            "\1\u0139",
-            "\1\u013a",
-            "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32"+
-            "\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
-            "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
-            "\u5200\56\u5900\uffff\u0200\56",
-            "\1\u013c",
-            "",
-            "",
-            "",
-            "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32"+
-            "\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
-            "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
-            "\u5200\56\u5900\uffff\u0200\56",
-            "\1\u013e",
-            "",
-            "\1\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"+
-            "\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\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"+
-            "\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\u0149",
-            "\1\u014a",
-            "",
-            "\1\u014b",
-            "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32"+
-            "\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
-            "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
-            "\u5200\56\u5900\uffff\u0200\56",
-            "\1\u014d",
-            "",
-            "\1\u014e",
-            "\1\u014f",
-            "",
-            "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32"+
-            "\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
-            "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
-            "\u5200\56\u5900\uffff\u0200\56",
-            "",
-            "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32"+
-            "\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
-            "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
-            "\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\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"+
-            "\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"+
-            "\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\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"+
-            "\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\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\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"+
-            "\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\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",
-            "",
-            "",
-            "",
-            "\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"+
-            "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
-            "\u5200\56\u5900\uffff\u0200\56",
-            ""
-    };
-
-    static final short[] DFA30_eot = DFA.unpackEncodedString(DFA30_eotS);
-    static final short[] DFA30_eof = DFA.unpackEncodedString(DFA30_eofS);
-    static final char[] DFA30_min = DFA.unpackEncodedStringToUnsignedChars(DFA30_minS);
-    static final char[] DFA30_max = DFA.unpackEncodedStringToUnsignedChars(DFA30_maxS);
-    static final short[] DFA30_accept = DFA.unpackEncodedString(DFA30_acceptS);
-    static final short[] DFA30_special = DFA.unpackEncodedString(DFA30_specialS);
-    static final short[][] DFA30_transition;
-
-    static {
-        int numStates = DFA30_transitionS.length;
-        DFA30_transition = new short[numStates][];
-        for (int i=0; i<numStates; i++) {
-            DFA30_transition[i] = DFA.unpackEncodedString(DFA30_transitionS[i]);
-        }
-    }
-
-    class DFA30 extends DFA {
-
-        public DFA30(BaseRecognizer recognizer) {
-            this.recognizer = recognizer;
-            this.decisionNumber = 30;
-            this.eot = DFA30_eot;
-            this.eof = DFA30_eof;
-            this.min = DFA30_min;
-            this.max = DFA30_max;
-            this.accept = DFA30_accept;
-            this.special = DFA30_special;
-            this.transition = DFA30_transition;
-        }
-        public String getDescription() {
-            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 );";
-        }
-    }
- 
-
+// $ANTLR 3.1.1 src/main/resources/org/drools/semantics/java/parser/Java.g 2009-02-20 18:38:50
+
+	package org.drools.rule.builder.dialect.java.parser;
+
+
+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 T__42=42;
+    public static final int HexDigit=12;
+    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__115=115;
+    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__48=48;
+    public static final int T__54=54;
+    public static final int FloatTypeSuffix=15;
+    public static final int T__113=113;
+    public static final int IntegerTypeSuffix=13;
+    public static final int T__89=89;
+    public static final int Identifier=4;
+    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__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 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 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 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 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 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) {
+        this(input, new RecognizerSharedState());
+    }
+    public JavaLexer(CharStream input, RecognizerSharedState state) {
+        super(input,state);
+
+    }
+    public String getGrammarFileName() { return "src/main/resources/org/drools/semantics/java/parser/Java.g"; }
+
+    // $ANTLR start "T__24"
+    public final void mT__24() throws RecognitionException {
+        try {
+            int _type = T__24;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:11:7: ( 'package' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:11:9: 'package'
+            {
+            match("package"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__24"
+
+    // $ANTLR start "T__25"
+    public final void mT__25() throws RecognitionException {
+        try {
+            int _type = T__25;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:12:7: ( ';' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:12:9: ';'
+            {
+            match(';'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__25"
+
+    // $ANTLR start "T__26"
+    public final void mT__26() throws RecognitionException {
+        try {
+            int _type = T__26;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:13:7: ( 'import' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:13:9: 'import'
+            {
+            match("import"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__26"
+
+    // $ANTLR start "T__27"
+    public final void mT__27() throws RecognitionException {
+        try {
+            int _type = T__27;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:14:7: ( 'static' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:14:9: 'static'
+            {
+            match("static"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__27"
+
+    // $ANTLR start "T__28"
+    public final void mT__28() throws RecognitionException {
+        try {
+            int _type = T__28;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:15:7: ( '.' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:15:9: '.'
+            {
+            match('.'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__28"
+
+    // $ANTLR start "T__29"
+    public final void mT__29() throws RecognitionException {
+        try {
+            int _type = T__29;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:16:7: ( '*' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:16:9: '*'
+            {
+            match('*'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__29"
+
+    // $ANTLR start "T__30"
+    public final void mT__30() throws RecognitionException {
+        try {
+            int _type = T__30;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:17:7: ( 'class' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:17:9: 'class'
+            {
+            match("class"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__30"
+
+    // $ANTLR start "T__31"
+    public final void mT__31() throws RecognitionException {
+        try {
+            int _type = T__31;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:18:7: ( 'extends' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:18:9: 'extends'
+            {
+            match("extends"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__31"
+
+    // $ANTLR start "T__32"
+    public final void mT__32() throws RecognitionException {
+        try {
+            int _type = T__32;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:19:7: ( 'implements' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:19:9: 'implements'
+            {
+            match("implements"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__32"
+
+    // $ANTLR start "T__33"
+    public final void mT__33() throws RecognitionException {
+        try {
+            int _type = T__33;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:20:7: ( '<' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:20:9: '<'
+            {
+            match('<'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__33"
+
+    // $ANTLR start "T__34"
+    public final void mT__34() throws RecognitionException {
+        try {
+            int _type = T__34;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:21:7: ( ',' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:21:9: ','
+            {
+            match(','); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__34"
+
+    // $ANTLR start "T__35"
+    public final void mT__35() throws RecognitionException {
+        try {
+            int _type = T__35;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:22:7: ( '>' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:22:9: '>'
+            {
+            match('>'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__35"
+
+    // $ANTLR start "T__36"
+    public final void mT__36() throws RecognitionException {
+        try {
+            int _type = T__36;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:23:7: ( '&' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:23:9: '&'
+            {
+            match('&'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__36"
+
+    // $ANTLR start "T__37"
+    public final void mT__37() throws RecognitionException {
+        try {
+            int _type = T__37;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:24:7: ( '{' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:24:9: '{'
+            {
+            match('{'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__37"
+
+    // $ANTLR start "T__38"
+    public final void mT__38() throws RecognitionException {
+        try {
+            int _type = T__38;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:25:7: ( '}' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:25:9: '}'
+            {
+            match('}'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__38"
+
+    // $ANTLR start "T__39"
+    public final void mT__39() throws RecognitionException {
+        try {
+            int _type = T__39;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:26:7: ( 'interface' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:26:9: 'interface'
+            {
+            match("interface"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__39"
+
+    // $ANTLR start "T__40"
+    public final void mT__40() throws RecognitionException {
+        try {
+            int _type = T__40;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:27:7: ( 'void' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:27:9: 'void'
+            {
+            match("void"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__40"
+
+    // $ANTLR start "T__41"
+    public final void mT__41() throws RecognitionException {
+        try {
+            int _type = T__41;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:28:7: ( '[' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:28:9: '['
+            {
+            match('['); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__41"
+
+    // $ANTLR start "T__42"
+    public final void mT__42() throws RecognitionException {
+        try {
+            int _type = T__42;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:29:7: ( ']' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:29:9: ']'
+            {
+            match(']'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__42"
+
+    // $ANTLR start "T__43"
+    public final void mT__43() throws RecognitionException {
+        try {
+            int _type = T__43;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:30:7: ( 'throws' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:30:9: 'throws'
+            {
+            match("throws"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__43"
+
+    // $ANTLR start "T__44"
+    public final void mT__44() throws RecognitionException {
+        try {
+            int _type = T__44;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:31:7: ( '=' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:31:9: '='
+            {
+            match('='); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__44"
+
+    // $ANTLR start "T__45"
+    public final void mT__45() throws RecognitionException {
+        try {
+            int _type = T__45;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:32:7: ( 'public' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:32:9: 'public'
+            {
+            match("public"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__45"
+
+    // $ANTLR start "T__46"
+    public final void mT__46() throws RecognitionException {
+        try {
+            int _type = T__46;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:33:7: ( 'protected' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:33:9: 'protected'
+            {
+            match("protected"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__46"
+
+    // $ANTLR start "T__47"
+    public final void mT__47() throws RecognitionException {
+        try {
+            int _type = T__47;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:34:7: ( 'private' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:34:9: 'private'
+            {
+            match("private"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__47"
+
+    // $ANTLR start "T__48"
+    public final void mT__48() throws RecognitionException {
+        try {
+            int _type = T__48;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:35:7: ( 'abstract' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:35:9: 'abstract'
+            {
+            match("abstract"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__48"
+
+    // $ANTLR start "T__49"
+    public final void mT__49() throws RecognitionException {
+        try {
+            int _type = T__49;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:36:7: ( 'final' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:36:9: 'final'
+            {
+            match("final"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__49"
+
+    // $ANTLR start "T__50"
+    public final void mT__50() throws RecognitionException {
+        try {
+            int _type = T__50;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:37:7: ( 'native' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:37:9: 'native'
+            {
+            match("native"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__50"
+
+    // $ANTLR start "T__51"
+    public final void mT__51() throws RecognitionException {
+        try {
+            int _type = T__51;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:38:7: ( 'synchronized' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:38:9: 'synchronized'
+            {
+            match("synchronized"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__51"
+
+    // $ANTLR start "T__52"
+    public final void mT__52() throws RecognitionException {
+        try {
+            int _type = T__52;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:39:7: ( 'transient' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:39:9: 'transient'
+            {
+            match("transient"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__52"
+
+    // $ANTLR start "T__53"
+    public final void mT__53() throws RecognitionException {
+        try {
+            int _type = T__53;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:40:7: ( 'volatile' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:40:9: 'volatile'
+            {
+            match("volatile"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__53"
+
+    // $ANTLR start "T__54"
+    public final void mT__54() throws RecognitionException {
+        try {
+            int _type = T__54;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:41:7: ( 'strictfp' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:41:9: 'strictfp'
+            {
+            match("strictfp"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__54"
+
+    // $ANTLR start "T__55"
+    public final void mT__55() throws RecognitionException {
+        try {
+            int _type = T__55;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:42:7: ( 'boolean' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:42:9: 'boolean'
+            {
+            match("boolean"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__55"
+
+    // $ANTLR start "T__56"
+    public final void mT__56() throws RecognitionException {
+        try {
+            int _type = T__56;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:43:7: ( 'char' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:43:9: 'char'
+            {
+            match("char"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__56"
+
+    // $ANTLR start "T__57"
+    public final void mT__57() throws RecognitionException {
+        try {
+            int _type = T__57;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:44:7: ( 'byte' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:44:9: 'byte'
+            {
+            match("byte"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__57"
+
+    // $ANTLR start "T__58"
+    public final void mT__58() throws RecognitionException {
+        try {
+            int _type = T__58;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:45:7: ( 'short' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:45:9: 'short'
+            {
+            match("short"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__58"
+
+    // $ANTLR start "T__59"
+    public final void mT__59() throws RecognitionException {
+        try {
+            int _type = T__59;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:46:7: ( 'int' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:46:9: 'int'
+            {
+            match("int"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__59"
+
+    // $ANTLR start "T__60"
+    public final void mT__60() throws RecognitionException {
+        try {
+            int _type = T__60;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:47:7: ( 'long' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:47:9: 'long'
+            {
+            match("long"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__60"
+
+    // $ANTLR start "T__61"
+    public final void mT__61() throws RecognitionException {
+        try {
+            int _type = T__61;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:48:7: ( 'float' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:48:9: 'float'
+            {
+            match("float"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__61"
+
+    // $ANTLR start "T__62"
+    public final void mT__62() throws RecognitionException {
+        try {
+            int _type = T__62;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:49:7: ( 'double' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:49:9: 'double'
+            {
+            match("double"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__62"
+
+    // $ANTLR start "T__63"
+    public final void mT__63() throws RecognitionException {
+        try {
+            int _type = T__63;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:50:7: ( '?' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:50:9: '?'
+            {
+            match('?'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__63"
+
+    // $ANTLR start "T__64"
+    public final void mT__64() throws RecognitionException {
+        try {
+            int _type = T__64;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:51:7: ( 'super' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:51:9: 'super'
+            {
+            match("super"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__64"
+
+    // $ANTLR start "T__65"
+    public final void mT__65() throws RecognitionException {
+        try {
+            int _type = T__65;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:52:7: ( '(' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:52:9: '('
+            {
+            match('('); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__65"
+
+    // $ANTLR start "T__66"
+    public final void mT__66() throws RecognitionException {
+        try {
+            int _type = T__66;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:53:7: ( ')' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:53:9: ')'
+            {
+            match(')'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__66"
+
+    // $ANTLR start "T__67"
+    public final void mT__67() throws RecognitionException {
+        try {
+            int _type = T__67;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:54:7: ( '...' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:54:9: '...'
+            {
+            match("..."); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__67"
+
+    // $ANTLR start "T__68"
+    public final void mT__68() throws RecognitionException {
+        try {
+            int _type = T__68;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:55:7: ( 'null' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:55:9: 'null'
+            {
+            match("null"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__68"
+
+    // $ANTLR start "T__69"
+    public final void mT__69() throws RecognitionException {
+        try {
+            int _type = T__69;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:56:7: ( 'true' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:56:9: 'true'
+            {
+            match("true"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__69"
+
+    // $ANTLR start "T__70"
+    public final void mT__70() throws RecognitionException {
+        try {
+            int _type = T__70;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:57:7: ( 'false' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:57:9: 'false'
+            {
+            match("false"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__70"
+
+    // $ANTLR start "T__71"
+    public final void mT__71() throws RecognitionException {
+        try {
+            int _type = T__71;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:58:7: ( '@' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:58:9: '@'
+            {
+            match('@'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__71"
+
+    // $ANTLR start "T__72"
+    public final void mT__72() throws RecognitionException {
+        try {
+            int _type = T__72;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:59:7: ( 'default' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:59:9: 'default'
+            {
+            match("default"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__72"
+
+    // $ANTLR start "T__73"
+    public final void mT__73() throws RecognitionException {
+        try {
+            int _type = T__73;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:60:7: ( 'assert' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:60:9: 'assert'
+            {
+            match("assert"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__73"
+
+    // $ANTLR start "T__74"
+    public final void mT__74() throws RecognitionException {
+        try {
+            int _type = T__74;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:61:7: ( ':' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:61:9: ':'
+            {
+            match(':'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__74"
+
+    // $ANTLR start "T__75"
+    public final void mT__75() throws RecognitionException {
+        try {
+            int _type = T__75;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:62:7: ( 'if' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:62:9: 'if'
+            {
+            match("if"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__75"
+
+    // $ANTLR start "T__76"
+    public final void mT__76() throws RecognitionException {
+        try {
+            int _type = T__76;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:63:7: ( 'else' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:63:9: 'else'
+            {
+            match("else"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__76"
+
+    // $ANTLR start "T__77"
+    public final void mT__77() throws RecognitionException {
+        try {
+            int _type = T__77;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:64:7: ( 'for' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:64:9: 'for'
+            {
+            match("for"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__77"
+
+    // $ANTLR start "T__78"
+    public final void mT__78() throws RecognitionException {
+        try {
+            int _type = T__78;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:65:7: ( 'while' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:65:9: 'while'
+            {
+            match("while"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__78"
+
+    // $ANTLR start "T__79"
+    public final void mT__79() throws RecognitionException {
+        try {
+            int _type = T__79;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:66:7: ( 'do' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:66:9: 'do'
+            {
+            match("do"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__79"
+
+    // $ANTLR start "T__80"
+    public final void mT__80() throws RecognitionException {
+        try {
+            int _type = T__80;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:67:7: ( 'try' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:67:9: 'try'
+            {
+            match("try"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__80"
+
+    // $ANTLR start "T__81"
+    public final void mT__81() throws RecognitionException {
+        try {
+            int _type = T__81;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:68:7: ( 'finally' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:68:9: 'finally'
+            {
+            match("finally"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__81"
+
+    // $ANTLR start "T__82"
+    public final void mT__82() throws RecognitionException {
+        try {
+            int _type = T__82;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:69:7: ( 'switch' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:69:9: 'switch'
+            {
+            match("switch"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__82"
+
+    // $ANTLR start "T__83"
+    public final void mT__83() throws RecognitionException {
+        try {
+            int _type = T__83;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:70:7: ( 'return' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:70:9: 'return'
+            {
+            match("return"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__83"
+
+    // $ANTLR start "T__84"
+    public final void mT__84() throws RecognitionException {
+        try {
+            int _type = T__84;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:71:7: ( 'throw' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:71:9: 'throw'
+            {
+            match("throw"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__84"
+
+    // $ANTLR start "T__85"
+    public final void mT__85() throws RecognitionException {
+        try {
+            int _type = T__85;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:72:7: ( 'break' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:72:9: 'break'
+            {
+            match("break"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__85"
+
+    // $ANTLR start "T__86"
+    public final void mT__86() throws RecognitionException {
+        try {
+            int _type = T__86;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:73:7: ( 'continue' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:73:9: 'continue'
+            {
+            match("continue"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__86"
+
+    // $ANTLR start "T__87"
+    public final void mT__87() throws RecognitionException {
+        try {
+            int _type = T__87;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:74:7: ( 'modify' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:74:9: 'modify'
+            {
+            match("modify"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__87"
+
+    // $ANTLR start "T__88"
+    public final void mT__88() throws RecognitionException {
+        try {
+            int _type = T__88;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:75:7: ( 'exitPoints' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:75:9: 'exitPoints'
+            {
+            match("exitPoints"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__88"
+
+    // $ANTLR start "T__89"
+    public final void mT__89() throws RecognitionException {
+        try {
+            int _type = T__89;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:76:7: ( 'catch' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:76:9: 'catch'
+            {
+            match("catch"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__89"
+
+    // $ANTLR start "T__90"
+    public final void mT__90() throws RecognitionException {
+        try {
+            int _type = T__90;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:77:7: ( 'case' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:77:9: 'case'
+            {
+            match("case"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__90"
+
+    // $ANTLR start "T__91"
+    public final void mT__91() throws RecognitionException {
+        try {
+            int _type = T__91;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:78:7: ( '+=' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:78:9: '+='
+            {
+            match("+="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__91"
+
+    // $ANTLR start "T__92"
+    public final void mT__92() throws RecognitionException {
+        try {
+            int _type = T__92;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:79:7: ( '-=' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:79:9: '-='
+            {
+            match("-="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__92"
+
+    // $ANTLR start "T__93"
+    public final void mT__93() throws RecognitionException {
+        try {
+            int _type = T__93;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:80:7: ( '*=' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:80:9: '*='
+            {
+            match("*="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__93"
+
+    // $ANTLR start "T__94"
+    public final void mT__94() throws RecognitionException {
+        try {
+            int _type = T__94;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:81:7: ( '/=' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:81:9: '/='
+            {
+            match("/="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__94"
+
+    // $ANTLR start "T__95"
+    public final void mT__95() throws RecognitionException {
+        try {
+            int _type = T__95;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:82:7: ( '&=' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:82:9: '&='
+            {
+            match("&="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__95"
+
+    // $ANTLR start "T__96"
+    public final void mT__96() throws RecognitionException {
+        try {
+            int _type = T__96;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:83:7: ( '|=' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:83:9: '|='
+            {
+            match("|="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__96"
+
+    // $ANTLR start "T__97"
+    public final void mT__97() throws RecognitionException {
+        try {
+            int _type = T__97;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:84:7: ( '^=' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:84:9: '^='
+            {
+            match("^="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__97"
+
+    // $ANTLR start "T__98"
+    public final void mT__98() throws RecognitionException {
+        try {
+            int _type = T__98;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:85:7: ( '%=' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:85:9: '%='
+            {
+            match("%="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__98"
+
+    // $ANTLR start "T__99"
+    public final void mT__99() throws RecognitionException {
+        try {
+            int _type = T__99;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:86:7: ( '||' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:86:9: '||'
+            {
+            match("||"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__99"
+
+    // $ANTLR start "T__100"
+    public final void mT__100() throws RecognitionException {
+        try {
+            int _type = T__100;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:87:8: ( '&&' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:87:10: '&&'
+            {
+            match("&&"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__100"
+
+    // $ANTLR start "T__101"
+    public final void mT__101() throws RecognitionException {
+        try {
+            int _type = T__101;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:88:8: ( '|' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:88:10: '|'
+            {
+            match('|'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__101"
+
+    // $ANTLR start "T__102"
+    public final void mT__102() throws RecognitionException {
+        try {
+            int _type = T__102;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:89:8: ( '^' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:89:10: '^'
+            {
+            match('^'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__102"
+
+    // $ANTLR start "T__103"
+    public final void mT__103() throws RecognitionException {
+        try {
+            int _type = T__103;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:90:8: ( '==' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:90:10: '=='
+            {
+            match("=="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__103"
+
+    // $ANTLR start "T__104"
+    public final void mT__104() throws RecognitionException {
+        try {
+            int _type = T__104;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:91:8: ( '!=' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:91:10: '!='
+            {
+            match("!="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__104"
+
+    // $ANTLR start "T__105"
+    public final void mT__105() throws RecognitionException {
+        try {
+            int _type = T__105;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:92:8: ( 'instanceof' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:92:10: 'instanceof'
+            {
+            match("instanceof"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__105"
+
+    // $ANTLR start "T__106"
+    public final void mT__106() throws RecognitionException {
+        try {
+            int _type = T__106;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:93:8: ( '+' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:93:10: '+'
+            {
+            match('+'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__106"
+
+    // $ANTLR start "T__107"
+    public final void mT__107() throws RecognitionException {
+        try {
+            int _type = T__107;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:94:8: ( '-' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:94:10: '-'
+            {
+            match('-'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__107"
+
+    // $ANTLR start "T__108"
+    public final void mT__108() throws RecognitionException {
+        try {
+            int _type = T__108;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:95:8: ( '/' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:95:10: '/'
+            {
+            match('/'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__108"
+
+    // $ANTLR start "T__109"
+    public final void mT__109() throws RecognitionException {
+        try {
+            int _type = T__109;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:96:8: ( '%' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:96:10: '%'
+            {
+            match('%'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__109"
+
+    // $ANTLR start "T__110"
+    public final void mT__110() throws RecognitionException {
+        try {
+            int _type = T__110;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:97:8: ( '++' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:97:10: '++'
+            {
+            match("++"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__110"
+
+    // $ANTLR start "T__111"
+    public final void mT__111() throws RecognitionException {
+        try {
+            int _type = T__111;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:98:8: ( '--' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:98:10: '--'
+            {
+            match("--"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__111"
+
+    // $ANTLR start "T__112"
+    public final void mT__112() throws RecognitionException {
+        try {
+            int _type = T__112;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:99:8: ( '~' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:99:10: '~'
+            {
+            match('~'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__112"
+
+    // $ANTLR start "T__113"
+    public final void mT__113() throws RecognitionException {
+        try {
+            int _type = T__113;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:100:8: ( '!' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:100:10: '!'
+            {
+            match('!'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__113"
+
+    // $ANTLR start "T__114"
+    public final void mT__114() throws RecognitionException {
+        try {
+            int _type = T__114;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:101:8: ( 'this' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:101:10: 'this'
+            {
+            match("this"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__114"
+
+    // $ANTLR start "T__115"
+    public final void mT__115() throws RecognitionException {
+        try {
+            int _type = T__115;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:102:8: ( 'new' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:102:10: 'new'
+            {
+            match("new"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__115"
+
+    // $ANTLR start "HexLiteral"
+    public final void mHexLiteral() throws RecognitionException {
+        try {
+            int _type = HexLiteral;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:976:12: ( '0' ( 'x' | 'X' ) ( HexDigit )+ ( IntegerTypeSuffix )? )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:976:14: '0' ( 'x' | 'X' ) ( HexDigit )+ ( IntegerTypeSuffix )?
+            {
+            match('0'); 
+            if ( input.LA(1)=='X'||input.LA(1)=='x' ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse = new MismatchedSetException(null,input);
+                recover(mse);
+                throw mse;}
+
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:976:28: ( HexDigit )+
+            int cnt1=0;
+            loop1:
+            do {
+                int alt1=2;
+                int LA1_0 = input.LA(1);
+
+                if ( ((LA1_0>='0' && LA1_0<='9')||(LA1_0>='A' && LA1_0<='F')||(LA1_0>='a' && LA1_0<='f')) ) {
+                    alt1=1;
+                }
+
+
+                switch (alt1) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:976:28: HexDigit
+            	    {
+            	    mHexDigit(); 
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt1 >= 1 ) break loop1;
+                        EarlyExitException eee =
+                            new EarlyExitException(1, input);
+                        throw eee;
+                }
+                cnt1++;
+            } while (true);
+
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:976:38: ( IntegerTypeSuffix )?
+            int alt2=2;
+            int LA2_0 = input.LA(1);
+
+            if ( (LA2_0=='L'||LA2_0=='l') ) {
+                alt2=1;
+            }
+            switch (alt2) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:976:38: IntegerTypeSuffix
+                    {
+                    mIntegerTypeSuffix(); 
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "HexLiteral"
+
+    // $ANTLR start "DecimalLiteral"
+    public final void mDecimalLiteral() throws RecognitionException {
+        try {
+            int _type = DecimalLiteral;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:978:16: ( ( '0' | '1' .. '9' ( '0' .. '9' )* ) ( IntegerTypeSuffix )? )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:978:18: ( '0' | '1' .. '9' ( '0' .. '9' )* ) ( IntegerTypeSuffix )?
+            {
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:978:18: ( '0' | '1' .. '9' ( '0' .. '9' )* )
+            int alt4=2;
+            int LA4_0 = input.LA(1);
+
+            if ( (LA4_0=='0') ) {
+                alt4=1;
+            }
+            else if ( ((LA4_0>='1' && LA4_0<='9')) ) {
+                alt4=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 4, 0, input);
+
+                throw nvae;
+            }
+            switch (alt4) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:978:19: '0'
+                    {
+                    match('0'); 
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:978:25: '1' .. '9' ( '0' .. '9' )*
+                    {
+                    matchRange('1','9'); 
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:978:34: ( '0' .. '9' )*
+                    loop3:
+                    do {
+                        int alt3=2;
+                        int LA3_0 = input.LA(1);
+
+                        if ( ((LA3_0>='0' && LA3_0<='9')) ) {
+                            alt3=1;
+                        }
+
+
+                        switch (alt3) {
+                    	case 1 :
+                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:978:34: '0' .. '9'
+                    	    {
+                    	    matchRange('0','9'); 
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop3;
+                        }
+                    } while (true);
+
+
+                    }
+                    break;
+
+            }
+
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:978:45: ( IntegerTypeSuffix )?
+            int alt5=2;
+            int LA5_0 = input.LA(1);
+
+            if ( (LA5_0=='L'||LA5_0=='l') ) {
+                alt5=1;
+            }
+            switch (alt5) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:978:45: IntegerTypeSuffix
+                    {
+                    mIntegerTypeSuffix(); 
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "DecimalLiteral"
+
+    // $ANTLR start "OctalLiteral"
+    public final void mOctalLiteral() throws RecognitionException {
+        try {
+            int _type = OctalLiteral;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:980:14: ( '0' ( '0' .. '7' )+ ( IntegerTypeSuffix )? )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:980:16: '0' ( '0' .. '7' )+ ( IntegerTypeSuffix )?
+            {
+            match('0'); 
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:980:20: ( '0' .. '7' )+
+            int cnt6=0;
+            loop6:
+            do {
+                int alt6=2;
+                int LA6_0 = input.LA(1);
+
+                if ( ((LA6_0>='0' && LA6_0<='7')) ) {
+                    alt6=1;
+                }
+
+
+                switch (alt6) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:980:21: '0' .. '7'
+            	    {
+            	    matchRange('0','7'); 
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt6 >= 1 ) break loop6;
+                        EarlyExitException eee =
+                            new EarlyExitException(6, input);
+                        throw eee;
+                }
+                cnt6++;
+            } while (true);
+
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:980:32: ( IntegerTypeSuffix )?
+            int alt7=2;
+            int LA7_0 = input.LA(1);
+
+            if ( (LA7_0=='L'||LA7_0=='l') ) {
+                alt7=1;
+            }
+            switch (alt7) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:980:32: IntegerTypeSuffix
+                    {
+                    mIntegerTypeSuffix(); 
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "OctalLiteral"
+
+    // $ANTLR start "HexDigit"
+    public final void mHexDigit() throws RecognitionException {
+        try {
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:983:10: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:983: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;}
+
+
+            }
+
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "HexDigit"
+
+    // $ANTLR start "IntegerTypeSuffix"
+    public final void mIntegerTypeSuffix() throws RecognitionException {
+        try {
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:986:19: ( ( 'l' | 'L' ) )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:986: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;}
+
+
+            }
+
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "IntegerTypeSuffix"
+
+    // $ANTLR start "FloatingPointLiteral"
+    public final void mFloatingPointLiteral() throws RecognitionException {
+        try {
+            int _type = FloatingPointLiteral;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:989: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 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:989:9: ( '0' .. '9' )+ '.' ( '0' .. '9' )* ( Exponent )? ( FloatTypeSuffix )?
+                    {
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:989:9: ( '0' .. '9' )+
+                    int cnt8=0;
+                    loop8:
+                    do {
+                        int alt8=2;
+                        int LA8_0 = input.LA(1);
+
+                        if ( ((LA8_0>='0' && LA8_0<='9')) ) {
+                            alt8=1;
+                        }
+
+
+                        switch (alt8) {
+                    	case 1 :
+                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:989:10: '0' .. '9'
+                    	    {
+                    	    matchRange('0','9'); 
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt8 >= 1 ) break loop8;
+                                EarlyExitException eee =
+                                    new EarlyExitException(8, input);
+                                throw eee;
+                        }
+                        cnt8++;
+                    } while (true);
+
+                    match('.'); 
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:989:25: ( '0' .. '9' )*
+                    loop9:
+                    do {
+                        int alt9=2;
+                        int LA9_0 = input.LA(1);
+
+                        if ( ((LA9_0>='0' && LA9_0<='9')) ) {
+                            alt9=1;
+                        }
+
+
+                        switch (alt9) {
+                    	case 1 :
+                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:989:26: '0' .. '9'
+                    	    {
+                    	    matchRange('0','9'); 
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop9;
+                        }
+                    } while (true);
+
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:989:37: ( Exponent )?
+                    int alt10=2;
+                    int LA10_0 = input.LA(1);
+
+                    if ( (LA10_0=='E'||LA10_0=='e') ) {
+                        alt10=1;
+                    }
+                    switch (alt10) {
+                        case 1 :
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:989:37: Exponent
+                            {
+                            mExponent(); 
+
+                            }
+                            break;
+
+                    }
+
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:989:47: ( FloatTypeSuffix )?
+                    int alt11=2;
+                    int LA11_0 = input.LA(1);
+
+                    if ( (LA11_0=='D'||LA11_0=='F'||LA11_0=='d'||LA11_0=='f') ) {
+                        alt11=1;
+                    }
+                    switch (alt11) {
+                        case 1 :
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:989:47: FloatTypeSuffix
+                            {
+                            mFloatTypeSuffix(); 
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:990:9: '.' ( '0' .. '9' )+ ( Exponent )? ( FloatTypeSuffix )?
+                    {
+                    match('.'); 
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:990:13: ( '0' .. '9' )+
+                    int cnt12=0;
+                    loop12:
+                    do {
+                        int alt12=2;
+                        int LA12_0 = input.LA(1);
+
+                        if ( ((LA12_0>='0' && LA12_0<='9')) ) {
+                            alt12=1;
+                        }
+
+
+                        switch (alt12) {
+                    	case 1 :
+                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:990:14: '0' .. '9'
+                    	    {
+                    	    matchRange('0','9'); 
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt12 >= 1 ) break loop12;
+                                EarlyExitException eee =
+                                    new EarlyExitException(12, input);
+                                throw eee;
+                        }
+                        cnt12++;
+                    } while (true);
+
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:990:25: ( Exponent )?
+                    int alt13=2;
+                    int LA13_0 = input.LA(1);
+
+                    if ( (LA13_0=='E'||LA13_0=='e') ) {
+                        alt13=1;
+                    }
+                    switch (alt13) {
+                        case 1 :
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:990:25: Exponent
+                            {
+                            mExponent(); 
+
+                            }
+                            break;
+
+                    }
+
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:990:35: ( FloatTypeSuffix )?
+                    int alt14=2;
+                    int LA14_0 = input.LA(1);
+
+                    if ( (LA14_0=='D'||LA14_0=='F'||LA14_0=='d'||LA14_0=='f') ) {
+                        alt14=1;
+                    }
+                    switch (alt14) {
+                        case 1 :
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:990:35: FloatTypeSuffix
+                            {
+                            mFloatTypeSuffix(); 
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:991:9: ( '0' .. '9' )+ Exponent ( FloatTypeSuffix )?
+                    {
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:991:9: ( '0' .. '9' )+
+                    int cnt15=0;
+                    loop15:
+                    do {
+                        int alt15=2;
+                        int LA15_0 = input.LA(1);
+
+                        if ( ((LA15_0>='0' && LA15_0<='9')) ) {
+                            alt15=1;
+                        }
+
+
+                        switch (alt15) {
+                    	case 1 :
+                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:991:10: '0' .. '9'
+                    	    {
+                    	    matchRange('0','9'); 
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt15 >= 1 ) break loop15;
+                                EarlyExitException eee =
+                                    new EarlyExitException(15, input);
+                                throw eee;
+                        }
+                        cnt15++;
+                    } while (true);
+
+                    mExponent(); 
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:991:30: ( FloatTypeSuffix )?
+                    int alt16=2;
+                    int LA16_0 = input.LA(1);
+
+                    if ( (LA16_0=='D'||LA16_0=='F'||LA16_0=='d'||LA16_0=='f') ) {
+                        alt16=1;
+                    }
+                    switch (alt16) {
+                        case 1 :
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:991:30: FloatTypeSuffix
+                            {
+                            mFloatTypeSuffix(); 
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:992:9: ( '0' .. '9' )+ ( Exponent )? FloatTypeSuffix
+                    {
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:992:9: ( '0' .. '9' )+
+                    int cnt17=0;
+                    loop17:
+                    do {
+                        int alt17=2;
+                        int LA17_0 = input.LA(1);
+
+                        if ( ((LA17_0>='0' && LA17_0<='9')) ) {
+                            alt17=1;
+                        }
+
+
+                        switch (alt17) {
+                    	case 1 :
+                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:992:10: '0' .. '9'
+                    	    {
+                    	    matchRange('0','9'); 
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt17 >= 1 ) break loop17;
+                                EarlyExitException eee =
+                                    new EarlyExitException(17, input);
+                                throw eee;
+                        }
+                        cnt17++;
+                    } while (true);
+
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:992:21: ( Exponent )?
+                    int alt18=2;
+                    int LA18_0 = input.LA(1);
+
+                    if ( (LA18_0=='E'||LA18_0=='e') ) {
+                        alt18=1;
+                    }
+                    switch (alt18) {
+                        case 1 :
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:992:21: Exponent
+                            {
+                            mExponent(); 
+
+                            }
+                            break;
+
+                    }
+
+                    mFloatTypeSuffix(); 
+
+                    }
+                    break;
+
+            }
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "FloatingPointLiteral"
+
+    // $ANTLR start "Exponent"
+    public final void mExponent() throws RecognitionException {
+        try {
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:996:10: ( ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+ )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:996: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;}
+
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:996:22: ( '+' | '-' )?
+            int alt20=2;
+            int LA20_0 = input.LA(1);
+
+            if ( (LA20_0=='+'||LA20_0=='-') ) {
+                alt20=1;
+            }
+            switch (alt20) {
+                case 1 :
+                    // 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;}
+
+
+                    }
+                    break;
+
+            }
+
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:996:33: ( '0' .. '9' )+
+            int cnt21=0;
+            loop21:
+            do {
+                int alt21=2;
+                int LA21_0 = input.LA(1);
+
+                if ( ((LA21_0>='0' && LA21_0<='9')) ) {
+                    alt21=1;
+                }
+
+
+                switch (alt21) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:996:34: '0' .. '9'
+            	    {
+            	    matchRange('0','9'); 
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt21 >= 1 ) break loop21;
+                        EarlyExitException eee =
+                            new EarlyExitException(21, input);
+                        throw eee;
+                }
+                cnt21++;
+            } while (true);
+
+
+            }
+
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "Exponent"
+
+    // $ANTLR start "FloatTypeSuffix"
+    public final void mFloatTypeSuffix() throws RecognitionException {
+        try {
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:999:17: ( ( 'f' | 'F' | 'd' | 'D' ) )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:999: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;}
+
+
+            }
+
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "FloatTypeSuffix"
+
+    // $ANTLR start "CharacterLiteral"
+    public final void mCharacterLiteral() throws RecognitionException {
+        try {
+            int _type = CharacterLiteral;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1002:5: ( '\\'' ( EscapeSequence | ~ ( '\\'' | '\\\\' ) ) '\\'' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1002:9: '\\'' ( EscapeSequence | ~ ( '\\'' | '\\\\' ) ) '\\''
+            {
+            match('\''); 
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1002: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<='\uFFFF')) ) {
+                alt22=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 22, 0, input);
+
+                throw nvae;
+            }
+            switch (alt22) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1002:16: EscapeSequence
+                    {
+                    mEscapeSequence(); 
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1002:33: ~ ( '\\'' | '\\\\' )
+                    {
+                    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;}
+
+
+                    }
+                    break;
+
+            }
+
+            match('\''); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "CharacterLiteral"
+
+    // $ANTLR start "StringLiteral"
+    public final void mStringLiteral() throws RecognitionException {
+        try {
+            int _type = StringLiteral;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1006:5: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1006:8: '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"'
+            {
+            match('\"'); 
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1006:12: ( EscapeSequence | ~ ( '\\\\' | '\"' ) )*
+            loop23:
+            do {
+                int alt23=3;
+                int LA23_0 = input.LA(1);
+
+                if ( (LA23_0=='\\') ) {
+                    alt23=1;
+                }
+                else if ( ((LA23_0>='\u0000' && LA23_0<='!')||(LA23_0>='#' && LA23_0<='[')||(LA23_0>=']' && LA23_0<='\uFFFF')) ) {
+                    alt23=2;
+                }
+
+
+                switch (alt23) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:1006:14: EscapeSequence
+            	    {
+            	    mEscapeSequence(); 
+
+            	    }
+            	    break;
+            	case 2 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:1006:31: ~ ( '\\\\' | '\"' )
+            	    {
+            	    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;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop23;
+                }
+            } while (true);
+
+            match('\"'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "StringLiteral"
+
+    // $ANTLR start "EscapeSequence"
+    public final void mEscapeSequence() throws RecognitionException {
+        try {
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1011: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 '\"':
+                case '\'':
+                case '\\':
+                case 'b':
+                case 'f':
+                case 'n':
+                case 'r':
+                case 't':
+                    {
+                    alt24=1;
+                    }
+                    break;
+                case 'u':
+                    {
+                    alt24=2;
+                    }
+                    break;
+                case '0':
+                case '1':
+                case '2':
+                case '3':
+                case '4':
+                case '5':
+                case '6':
+                case '7':
+                    {
+                    alt24=3;
+                    }
+                    break;
+                default:
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 24, 1, input);
+
+                    throw nvae;
+                }
+
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 24, 0, input);
+
+                throw nvae;
+            }
+            switch (alt24) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1011: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' ) {
+                        input.consume();
+
+                    }
+                    else {
+                        MismatchedSetException mse = new MismatchedSetException(null,input);
+                        recover(mse);
+                        throw mse;}
+
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1012:9: UnicodeEscape
+                    {
+                    mUnicodeEscape(); 
+
+                    }
+                    break;
+                case 3 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1013:9: OctalEscape
+                    {
+                    mOctalEscape(); 
+
+                    }
+                    break;
+
+            }
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "EscapeSequence"
+
+    // $ANTLR start "OctalEscape"
+    public final void mOctalEscape() throws RecognitionException {
+        try {
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1018:5: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
+            int alt25=3;
+            int LA25_0 = input.LA(1);
+
+            if ( (LA25_0=='\\') ) {
+                int LA25_1 = input.LA(2);
+
+                if ( ((LA25_1>='0' && LA25_1<='3')) ) {
+                    int LA25_2 = input.LA(3);
+
+                    if ( ((LA25_2>='0' && LA25_2<='7')) ) {
+                        int LA25_4 = input.LA(4);
+
+                        if ( ((LA25_4>='0' && LA25_4<='7')) ) {
+                            alt25=1;
+                        }
+                        else {
+                            alt25=2;}
+                    }
+                    else {
+                        alt25=3;}
+                }
+                else if ( ((LA25_1>='4' && LA25_1<='7')) ) {
+                    int LA25_3 = input.LA(3);
+
+                    if ( ((LA25_3>='0' && LA25_3<='7')) ) {
+                        alt25=2;
+                    }
+                    else {
+                        alt25=3;}
+                }
+                else {
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 25, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 25, 0, input);
+
+                throw nvae;
+            }
+            switch (alt25) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1018:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
+                    {
+                    match('\\'); 
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1018:14: ( '0' .. '3' )
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1018:15: '0' .. '3'
+                    {
+                    matchRange('0','3'); 
+
+                    }
+
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1018:25: ( '0' .. '7' )
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1018:26: '0' .. '7'
+                    {
+                    matchRange('0','7'); 
+
+                    }
+
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1018:36: ( '0' .. '7' )
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1018:37: '0' .. '7'
+                    {
+                    matchRange('0','7'); 
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1019:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
+                    {
+                    match('\\'); 
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1019:14: ( '0' .. '7' )
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1019:15: '0' .. '7'
+                    {
+                    matchRange('0','7'); 
+
+                    }
+
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1019:25: ( '0' .. '7' )
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1019:26: '0' .. '7'
+                    {
+                    matchRange('0','7'); 
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1020:9: '\\\\' ( '0' .. '7' )
+                    {
+                    match('\\'); 
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1020:14: ( '0' .. '7' )
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1020:15: '0' .. '7'
+                    {
+                    matchRange('0','7'); 
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "OctalEscape"
+
+    // $ANTLR start "UnicodeEscape"
+    public final void mUnicodeEscape() throws RecognitionException {
+        try {
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1025:5: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1025:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit
+            {
+            match('\\'); 
+            match('u'); 
+            mHexDigit(); 
+            mHexDigit(); 
+            mHexDigit(); 
+            mHexDigit(); 
+
+            }
+
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "UnicodeEscape"
+
+    // $ANTLR start "ENUM"
+    public final void mENUM() throws RecognitionException {
+        try {
+            int _type = ENUM;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1028:5: ( 'enum' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1028:7: 'enum'
+            {
+            match("enum"); 
+
+            if ( !enumIsKeyword ) _type=Identifier;
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "ENUM"
+
+    // $ANTLR start "Identifier"
+    public final void mIdentifier() throws RecognitionException {
+        try {
+            int _type = Identifier;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1032:5: ( Letter ( Letter | JavaIDDigit )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1032:9: Letter ( Letter | JavaIDDigit )*
+            {
+            mLetter(); 
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1032:16: ( Letter | JavaIDDigit )*
+            loop26:
+            do {
+                int alt26=2;
+                int LA26_0 = input.LA(1);
+
+                if ( (LA26_0=='$'||(LA26_0>='0' && LA26_0<='9')||(LA26_0>='A' && LA26_0<='Z')||LA26_0=='_'||(LA26_0>='a' && LA26_0<='z')||(LA26_0>='\u00C0' && LA26_0<='\u00D6')||(LA26_0>='\u00D8' && LA26_0<='\u00F6')||(LA26_0>='\u00F8' && LA26_0<='\u1FFF')||(LA26_0>='\u3040' && LA26_0<='\u318F')||(LA26_0>='\u3300' && LA26_0<='\u337F')||(LA26_0>='\u3400' && LA26_0<='\u3D2D')||(LA26_0>='\u4E00' && LA26_0<='\u9FFF')||(LA26_0>='\uF900' && LA26_0<='\uFAFF')) ) {
+                    alt26=1;
+                }
+
+
+                switch (alt26) {
+            	case 1 :
+            	    // 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;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop26;
+                }
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "Identifier"
+
+    // $ANTLR start "Letter"
+    public final void mLetter() throws RecognitionException {
+        try {
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1040: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' )
+            // 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;}
+
+
+            }
+
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "Letter"
+
+    // $ANTLR start "JavaIDDigit"
+    public final void mJavaIDDigit() throws RecognitionException {
+        try {
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1057: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' )
+            // 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;}
+
+
+            }
+
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "JavaIDDigit"
+
+    // $ANTLR start "WS"
+    public final void mWS() throws RecognitionException {
+        try {
+            int _type = WS;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1074:5: ( ( ' ' | '\\r' | '\\t' | '\\u000C' | '\\n' ) )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1074: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;}
+
+            _channel=HIDDEN;
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "WS"
+
+    // $ANTLR start "COMMENT"
+    public final void mCOMMENT() throws RecognitionException {
+        try {
+            int _type = COMMENT;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1078:5: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1078:9: '/*' ( options {greedy=false; } : . )* '*/'
+            {
+            match("/*"); 
+
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1078:14: ( options {greedy=false; } : . )*
+            loop27:
+            do {
+                int alt27=2;
+                int LA27_0 = input.LA(1);
+
+                if ( (LA27_0=='*') ) {
+                    int LA27_1 = input.LA(2);
+
+                    if ( (LA27_1=='/') ) {
+                        alt27=2;
+                    }
+                    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<='\uFFFF')) ) {
+                    alt27=1;
+                }
+
+
+                switch (alt27) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:1078:42: .
+            	    {
+            	    matchAny(); 
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop27;
+                }
+            } while (true);
+
+            match("*/"); 
+
+            _channel=HIDDEN;
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "COMMENT"
+
+    // $ANTLR start "LINE_COMMENT"
+    public final void mLINE_COMMENT() throws RecognitionException {
+        try {
+            int _type = LINE_COMMENT;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1082:5: ( '//' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1082:7: '//' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n'
+            {
+            match("//"); 
+
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1082: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<='\uFFFF')) ) {
+                    alt28=1;
+                }
+
+
+                switch (alt28) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:1082: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)<='\uFFFF') ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop28;
+                }
+            } while (true);
+
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1082:26: ( '\\r' )?
+            int alt29=2;
+            int LA29_0 = input.LA(1);
+
+            if ( (LA29_0=='\r') ) {
+                alt29=1;
+            }
+            switch (alt29) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1082:26: '\\r'
+                    {
+                    match('\r'); 
+
+                    }
+                    break;
+
+            }
+
+            match('\n'); 
+            _channel=HIDDEN;
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "LINE_COMMENT"
+
+    public void mTokens() throws RecognitionException {
+        // 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 | T__115 | HexLiteral | DecimalLiteral | OctalLiteral | FloatingPointLiteral | CharacterLiteral | StringLiteral | ENUM | Identifier | WS | COMMENT | LINE_COMMENT )
+        int alt30=103;
+        alt30 = dfa30.predict(input);
+        switch (alt30) {
+            case 1 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:10: T__24
+                {
+                mT__24(); 
+
+                }
+                break;
+            case 2 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:16: T__25
+                {
+                mT__25(); 
+
+                }
+                break;
+            case 3 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:22: T__26
+                {
+                mT__26(); 
+
+                }
+                break;
+            case 4 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:28: T__27
+                {
+                mT__27(); 
+
+                }
+                break;
+            case 5 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:34: T__28
+                {
+                mT__28(); 
+
+                }
+                break;
+            case 6 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:40: T__29
+                {
+                mT__29(); 
+
+                }
+                break;
+            case 7 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:46: T__30
+                {
+                mT__30(); 
+
+                }
+                break;
+            case 8 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:52: T__31
+                {
+                mT__31(); 
+
+                }
+                break;
+            case 9 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:58: T__32
+                {
+                mT__32(); 
+
+                }
+                break;
+            case 10 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:64: T__33
+                {
+                mT__33(); 
+
+                }
+                break;
+            case 11 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:70: T__34
+                {
+                mT__34(); 
+
+                }
+                break;
+            case 12 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:76: T__35
+                {
+                mT__35(); 
+
+                }
+                break;
+            case 13 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:82: T__36
+                {
+                mT__36(); 
+
+                }
+                break;
+            case 14 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:88: T__37
+                {
+                mT__37(); 
+
+                }
+                break;
+            case 15 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:94: T__38
+                {
+                mT__38(); 
+
+                }
+                break;
+            case 16 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:100: T__39
+                {
+                mT__39(); 
+
+                }
+                break;
+            case 17 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:106: T__40
+                {
+                mT__40(); 
+
+                }
+                break;
+            case 18 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:112: T__41
+                {
+                mT__41(); 
+
+                }
+                break;
+            case 19 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:118: T__42
+                {
+                mT__42(); 
+
+                }
+                break;
+            case 20 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:124: T__43
+                {
+                mT__43(); 
+
+                }
+                break;
+            case 21 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:130: T__44
+                {
+                mT__44(); 
+
+                }
+                break;
+            case 22 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:136: T__45
+                {
+                mT__45(); 
+
+                }
+                break;
+            case 23 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:142: T__46
+                {
+                mT__46(); 
+
+                }
+                break;
+            case 24 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:148: T__47
+                {
+                mT__47(); 
+
+                }
+                break;
+            case 25 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:154: T__48
+                {
+                mT__48(); 
+
+                }
+                break;
+            case 26 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:160: T__49
+                {
+                mT__49(); 
+
+                }
+                break;
+            case 27 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:166: T__50
+                {
+                mT__50(); 
+
+                }
+                break;
+            case 28 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:172: T__51
+                {
+                mT__51(); 
+
+                }
+                break;
+            case 29 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:178: T__52
+                {
+                mT__52(); 
+
+                }
+                break;
+            case 30 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:184: T__53
+                {
+                mT__53(); 
+
+                }
+                break;
+            case 31 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:190: T__54
+                {
+                mT__54(); 
+
+                }
+                break;
+            case 32 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:196: T__55
+                {
+                mT__55(); 
+
+                }
+                break;
+            case 33 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:202: T__56
+                {
+                mT__56(); 
+
+                }
+                break;
+            case 34 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:208: T__57
+                {
+                mT__57(); 
+
+                }
+                break;
+            case 35 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:214: T__58
+                {
+                mT__58(); 
+
+                }
+                break;
+            case 36 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:220: T__59
+                {
+                mT__59(); 
+
+                }
+                break;
+            case 37 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:226: T__60
+                {
+                mT__60(); 
+
+                }
+                break;
+            case 38 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:232: T__61
+                {
+                mT__61(); 
+
+                }
+                break;
+            case 39 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:238: T__62
+                {
+                mT__62(); 
+
+                }
+                break;
+            case 40 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:244: T__63
+                {
+                mT__63(); 
+
+                }
+                break;
+            case 41 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:250: T__64
+                {
+                mT__64(); 
+
+                }
+                break;
+            case 42 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:256: T__65
+                {
+                mT__65(); 
+
+                }
+                break;
+            case 43 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:262: T__66
+                {
+                mT__66(); 
+
+                }
+                break;
+            case 44 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:268: T__67
+                {
+                mT__67(); 
+
+                }
+                break;
+            case 45 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:274: T__68
+                {
+                mT__68(); 
+
+                }
+                break;
+            case 46 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:280: T__69
+                {
+                mT__69(); 
+
+                }
+                break;
+            case 47 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:286: T__70
+                {
+                mT__70(); 
+
+                }
+                break;
+            case 48 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:292: T__71
+                {
+                mT__71(); 
+
+                }
+                break;
+            case 49 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:298: T__72
+                {
+                mT__72(); 
+
+                }
+                break;
+            case 50 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:304: T__73
+                {
+                mT__73(); 
+
+                }
+                break;
+            case 51 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:310: T__74
+                {
+                mT__74(); 
+
+                }
+                break;
+            case 52 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:316: T__75
+                {
+                mT__75(); 
+
+                }
+                break;
+            case 53 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:322: T__76
+                {
+                mT__76(); 
+
+                }
+                break;
+            case 54 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:328: T__77
+                {
+                mT__77(); 
+
+                }
+                break;
+            case 55 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:334: T__78
+                {
+                mT__78(); 
+
+                }
+                break;
+            case 56 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:340: T__79
+                {
+                mT__79(); 
+
+                }
+                break;
+            case 57 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:346: T__80
+                {
+                mT__80(); 
+
+                }
+                break;
+            case 58 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:352: T__81
+                {
+                mT__81(); 
+
+                }
+                break;
+            case 59 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:358: T__82
+                {
+                mT__82(); 
+
+                }
+                break;
+            case 60 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:364: T__83
+                {
+                mT__83(); 
+
+                }
+                break;
+            case 61 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:370: T__84
+                {
+                mT__84(); 
+
+                }
+                break;
+            case 62 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:376: T__85
+                {
+                mT__85(); 
+
+                }
+                break;
+            case 63 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:382: T__86
+                {
+                mT__86(); 
+
+                }
+                break;
+            case 64 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:388: T__87
+                {
+                mT__87(); 
+
+                }
+                break;
+            case 65 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:394: T__88
+                {
+                mT__88(); 
+
+                }
+                break;
+            case 66 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:400: T__89
+                {
+                mT__89(); 
+
+                }
+                break;
+            case 67 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:406: T__90
+                {
+                mT__90(); 
+
+                }
+                break;
+            case 68 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:412: T__91
+                {
+                mT__91(); 
+
+                }
+                break;
+            case 69 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:418: T__92
+                {
+                mT__92(); 
+
+                }
+                break;
+            case 70 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:424: T__93
+                {
+                mT__93(); 
+
+                }
+                break;
+            case 71 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:430: T__94
+                {
+                mT__94(); 
+
+                }
+                break;
+            case 72 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:436: T__95
+                {
+                mT__95(); 
+
+                }
+                break;
+            case 73 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:442: T__96
+                {
+                mT__96(); 
+
+                }
+                break;
+            case 74 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:448: T__97
+                {
+                mT__97(); 
+
+                }
+                break;
+            case 75 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:454: T__98
+                {
+                mT__98(); 
+
+                }
+                break;
+            case 76 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:460: T__99
+                {
+                mT__99(); 
+
+                }
+                break;
+            case 77 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:466: T__100
+                {
+                mT__100(); 
+
+                }
+                break;
+            case 78 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:473: T__101
+                {
+                mT__101(); 
+
+                }
+                break;
+            case 79 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:480: T__102
+                {
+                mT__102(); 
+
+                }
+                break;
+            case 80 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:487: T__103
+                {
+                mT__103(); 
+
+                }
+                break;
+            case 81 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:494: T__104
+                {
+                mT__104(); 
+
+                }
+                break;
+            case 82 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:501: T__105
+                {
+                mT__105(); 
+
+                }
+                break;
+            case 83 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:508: T__106
+                {
+                mT__106(); 
+
+                }
+                break;
+            case 84 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:515: T__107
+                {
+                mT__107(); 
+
+                }
+                break;
+            case 85 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:522: T__108
+                {
+                mT__108(); 
+
+                }
+                break;
+            case 86 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:529: T__109
+                {
+                mT__109(); 
+
+                }
+                break;
+            case 87 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:536: T__110
+                {
+                mT__110(); 
+
+                }
+                break;
+            case 88 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:543: T__111
+                {
+                mT__111(); 
+
+                }
+                break;
+            case 89 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:550: T__112
+                {
+                mT__112(); 
+
+                }
+                break;
+            case 90 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:557: T__113
+                {
+                mT__113(); 
+
+                }
+                break;
+            case 91 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:564: T__114
+                {
+                mT__114(); 
+
+                }
+                break;
+            case 92 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:571: T__115
+                {
+                mT__115(); 
+
+                }
+                break;
+            case 93 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:578: HexLiteral
+                {
+                mHexLiteral(); 
+
+                }
+                break;
+            case 94 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:589: DecimalLiteral
+                {
+                mDecimalLiteral(); 
+
+                }
+                break;
+            case 95 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:604: OctalLiteral
+                {
+                mOctalLiteral(); 
+
+                }
+                break;
+            case 96 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:617: FloatingPointLiteral
+                {
+                mFloatingPointLiteral(); 
+
+                }
+                break;
+            case 97 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:638: CharacterLiteral
+                {
+                mCharacterLiteral(); 
+
+                }
+                break;
+            case 98 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:655: StringLiteral
+                {
+                mStringLiteral(); 
+
+                }
+                break;
+            case 99 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:669: ENUM
+                {
+                mENUM(); 
+
+                }
+                break;
+            case 100 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:674: Identifier
+                {
+                mIdentifier(); 
+
+                }
+                break;
+            case 101 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:685: WS
+                {
+                mWS(); 
+
+                }
+                break;
+            case 102 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:688: COMMENT
+                {
+                mCOMMENT(); 
+
+                }
+                break;
+            case 103 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:696: LINE_COMMENT
+                {
+                mLINE_COMMENT(); 
+
+                }
+                break;
+
+        }
+
+    }
+
+
+    protected DFA19 dfa19 = new DFA19(this);
+    protected DFA30 dfa30 = new DFA30(this);
+    static final String DFA19_eotS =
+        "\7\uffff\1\10\2\uffff";
+    static final String DFA19_eofS =
+        "\12\uffff";
+    static final String DFA19_minS =
+        "\2\56\1\uffff\1\53\2\uffff\2\60\2\uffff";
+    static final String DFA19_maxS =
+        "\1\71\1\146\1\uffff\1\71\2\uffff\1\71\1\146\2\uffff";
+    static final String DFA19_acceptS =
+        "\2\uffff\1\2\1\uffff\1\4\1\1\2\uffff\2\3";
+    static final String DFA19_specialS =
+        "\12\uffff}>";
+    static final String[] DFA19_transitionS = {
+            "\1\2\1\uffff\12\1",
+            "\1\5\1\uffff\12\1\12\uffff\1\4\1\3\1\4\35\uffff\1\4\1\3\1"+
+            "\4",
+            "",
+            "\1\6\1\uffff\1\6\2\uffff\12\7",
+            "",
+            "",
+            "\12\7",
+            "\12\7\12\uffff\1\11\1\uffff\1\11\35\uffff\1\11\1\uffff\1\11",
+            "",
+            ""
+    };
+
+    static final short[] DFA19_eot = DFA.unpackEncodedString(DFA19_eotS);
+    static final short[] DFA19_eof = DFA.unpackEncodedString(DFA19_eofS);
+    static final char[] DFA19_min = DFA.unpackEncodedStringToUnsignedChars(DFA19_minS);
+    static final char[] DFA19_max = DFA.unpackEncodedStringToUnsignedChars(DFA19_maxS);
+    static final short[] DFA19_accept = DFA.unpackEncodedString(DFA19_acceptS);
+    static final short[] DFA19_special = DFA.unpackEncodedString(DFA19_specialS);
+    static final short[][] DFA19_transition;
+
+    static {
+        int numStates = DFA19_transitionS.length;
+        DFA19_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA19_transition[i] = DFA.unpackEncodedString(DFA19_transitionS[i]);
+        }
+    }
+
+    class DFA19 extends DFA {
+
+        public DFA19(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 19;
+            this.eot = DFA19_eot;
+            this.eof = DFA19_eof;
+            this.min = DFA19_min;
+            this.max = DFA19_max;
+            this.accept = DFA19_accept;
+            this.special = DFA19_special;
+            this.transition = DFA19_transition;
+        }
+        public String getDescription() {
+            return "988:1: FloatingPointLiteral : ( ( '0' .. '9' )+ '.' ( '0' .. '9' )* ( Exponent )? ( FloatTypeSuffix )? | '.' ( '0' .. '9' )+ ( Exponent )? ( FloatTypeSuffix )? | ( '0' .. '9' )+ Exponent ( FloatTypeSuffix )? | ( '0' .. '9' )+ ( Exponent )? FloatTypeSuffix );";
+        }
+    }
+    static final String DFA30_eotS =
+        "\1\uffff\1\56\1\uffff\2\56\1\75\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\166\4\uffff\5\56\1\177\5\56\5\uffff"+
+        "\7\56\3\uffff\3\56\2\uffff\15\56\1\u00a4\4\56\24\uffff\1\u00a9\1"+
+        "\uffff\1\166\5\56\1\u00b1\1\56\1\uffff\25\56\1\u00c8\5\56\1\u00ce"+
+        "\2\56\1\u00d1\5\56\1\uffff\4\56\1\uffff\7\56\1\uffff\10\56\1\u00ea"+
+        "\2\56\1\u00ed\2\56\1\u00f0\1\u00f1\1\u00f2\2\56\1\u00f5\1\56\1\u00f7"+
+        "\1\uffff\5\56\1\uffff\1\56\1\u00fe\1\uffff\1\56\1\u0100\1\56\1\u0102"+
+        "\20\56\1\u0113\1\u0114\1\56\1\u0116\1\uffff\1\56\1\u0118\1\uffff"+
+        "\2\56\3\uffff\1\56\1\u011d\1\uffff\1\56\1\uffff\2\56\1\u0122\1\u0123"+
+        "\1\u0124\1\56\1\uffff\1\56\1\uffff\1\u0127\1\uffff\2\56\1\u012a"+
+        "\3\56\1\u012e\2\56\1\u0131\3\56\1\u0135\2\56\2\uffff\1\u0138\1\uffff"+
+        "\1\56\1\uffff\3\56\1\u013d\1\uffff\2\56\1\u0140\1\56\3\uffff\1\u0142"+
+        "\1\56\1\uffff\1\u0144\1\56\1\uffff\1\u0146\1\u0147\1\u0148\1\uffff"+
+        "\1\56\1\u014a\1\uffff\3\56\1\uffff\2\56\1\uffff\1\56\1\u0151\2\56"+
+        "\1\uffff\2\56\1\uffff\1\u0156\1\uffff\1\u0157\1\uffff\1\u0158\3"+
+        "\uffff\1\56\1\uffff\3\56\1\u015d\1\56\1\u015f\1\uffff\1\56\1\u0161"+
+        "\1\56\1\u0163\3\uffff\1\u0164\1\56\1\u0166\1\56\1\uffff\1\56\1\uffff"+
+        "\1\56\1\uffff\1\u016a\2\uffff\1\u016b\1\uffff\1\u016c\1\56\1\u016e"+
+        "\3\uffff\1\56\1\uffff\1\u0170\1\uffff";
+    static final String DFA30_eofS =
+        "\u0171\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\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\151\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\2\145\1\164\1\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\1\120\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\1\157\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\151\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\156"+
+        "\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\164\1\44\1\164\1\44\3\uffff\1\44\1\163\1\44\1\146\1\uffff\1\172"+
+        "\1\uffff\1\163\1\uffff\1\44\2\uffff\1\44\1\uffff\1\44\1\145\1\44"+
+        "\3\uffff\1\144\1\uffff\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\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\2\145\1\164\1\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\1\120\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\1\157\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\151\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\156\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\164"+
+        "\1\ufaff\1\164\1\ufaff\3\uffff\1\ufaff\1\163\1\ufaff\1\146\1\uffff"+
+        "\1\172\1\uffff\1\163\1\uffff\1\ufaff\2\uffff\1\ufaff\1\uffff\1\ufaff"+
+        "\1\145\1\ufaff\3\uffff\1\144\1\uffff\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\131\2\uffff"+
+        "\1\141\1\142\1\144\1\145\13\uffff\1\54\1\140\1\5\1\106\1\6\7\uffff"+
+        "\1\110\1\115\1\15\3\uffff\1\120\1\25\22\uffff\1\104\1\127\1\123"+
+        "\1\105\1\130\1\124\1\107\1\146\1\147\1\125\1\111\1\114\1\116\1\112"+
+        "\1\117\1\113\1\126\1\121\1\132\1\135\1\uffff\1\136\10\uffff\1\64"+
+        "\44\uffff\1\70\4\uffff\1\137\7\uffff\1\44\26\uffff\1\71\5\uffff"+
+        "\1\66\2\uffff\1\134\30\uffff\1\41\2\uffff\1\103\2\uffff\1\65\1\143"+
+        "\1\21\2\uffff\1\133\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\102\4\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\4\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\4\uffff\1\72\1\40\1\61\4\uffff\1\37\1\uffff\1\77\1\uffff\1"+
+        "\36\1\uffff\1\31\1\27\1\uffff\1\20\3\uffff\1\35\1\11\1\122\1\uffff"+
+        "\1\101\1\uffff\1\34";
+    static final String DFA30_specialS =
+        "\u0171\uffff}>";
+    static final String[] DFA30_transitionS = {
+            "\2\57\1\uffff\2\57\22\uffff\1\57\1\50\1\55\1\uffff\1\56\1\47"+
+            "\1\14\1\54\1\33\1\34\1\6\1\42\1\12\1\43\1\5\1\44\1\52\11\53"+
+            "\1\36\1\2\1\11\1\23\1\13\1\32\1\35\32\56\1\20\1\uffff\1\21\1"+
+            "\46\1\56\1\uffff\1\24\1\27\1\7\1\31\1\10\1\25\2\56\1\3\2\56"+
+            "\1\30\1\41\1\26\1\56\1\1\1\56\1\40\1\4\1\22\1\56\1\17\1\37\3"+
+            "\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\60\20\uffff\1\62\2\uffff\1\61",
+            "",
+            "\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\74",
+            "\1\76",
+            "\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\110\26\uffff\1\107",
+            "",
+            "",
+            "\1\112",
+            "",
+            "",
+            "\1\113\11\uffff\1\114",
+            "\1\115",
+            "\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\135\11\uffff\1\134",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\136",
+            "\1\137",
+            "\1\140",
+            "\1\142\21\uffff\1\141",
+            "\1\145\17\uffff\1\144",
+            "\1\150\4\uffff\1\151\15\uffff\1\147",
+            "\1\153\76\uffff\1\154",
+            "\1\156",
+            "\1\160",
+            "\1\162",
+            "",
+            "\1\74\1\uffff\10\165\2\74\12\uffff\3\74\21\uffff\1\164\13"+
+            "\uffff\3\74\21\uffff\1\164",
+            "\1\74\1\uffff\12\167\12\uffff\3\74\35\uffff\3\74",
+            "",
+            "",
+            "",
+            "",
+            "\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\u0080\20\uffff\1\u0081",
+            "\1\u0082",
+            "\1\u0083",
+            "\1\u0084",
+            "\1\u0085",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u0086",
+            "\1\u0087",
+            "\1\u0088",
+            "\1\u008a\1\u0089",
+            "\1\u008c\12\uffff\1\u008b",
+            "\1\u008d",
+            "\1\u008e",
+            "",
+            "",
+            "",
+            "\1\u008f\2\uffff\1\u0090",
+            "\1\u0092\10\uffff\1\u0091",
+            "\1\u0093\23\uffff\1\u0094\3\uffff\1\u0095",
+            "",
+            "",
+            "\1\u0096",
+            "\1\u0097",
+            "\1\u0098",
+            "\1\u0099",
+            "\1\u009a",
+            "\1\u009b",
+            "\1\u009c",
+            "\1\u009d",
+            "\1\u009e",
+            "\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"+
+            "\56\u10d2\uffff\u5200\56\u5900\uffff\u0200\56",
+            "\1\u00a5",
+            "\1\u00a6",
+            "\1\u00a7",
+            "\1\u00a8",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\74\1\uffff\10\165\2\74\12\uffff\3\74\35\uffff\3\74",
+            "",
+            "\1\74\1\uffff\12\167\12\uffff\3\74\35\uffff\3\74",
+            "\1\u00aa",
+            "\1\u00ab",
+            "\1\u00ac",
+            "\1\u00ad",
+            "\1\u00af\2\uffff\1\u00ae",
+            "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\4"+
+            "\56\1\u00b0\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\u00b2",
+            "",
+            "\1\u00b3",
+            "\1\u00b4",
+            "\1\u00b5",
+            "\1\u00b6",
+            "\1\u00b7",
+            "\1\u00b8",
+            "\1\u00b9",
+            "\1\u00ba",
+            "\1\u00bb",
+            "\1\u00bc",
+            "\1\u00bd",
+            "\1\u00be",
+            "\1\u00bf",
+            "\1\u00c0",
+            "\1\u00c1",
+            "\1\u00c2",
+            "\1\u00c3",
+            "\1\u00c4",
+            "\1\u00c5",
+            "\1\u00c6",
+            "\1\u00c7",
+            "\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\u00c9",
+            "\1\u00ca",
+            "\1\u00cb",
+            "\1\u00cc",
+            "\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"+
+            "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
+            "\u5200\56\u5900\uffff\u0200\56",
+            "\1\u00cf",
+            "\1\u00d0",
+            "\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\u00d2",
+            "\1\u00d3",
+            "\1\u00d4",
+            "\1\u00d5",
+            "\1\u00d6",
+            "",
+            "\1\u00d7",
+            "\1\u00d8",
+            "\1\u00d9",
+            "\1\u00da",
+            "",
+            "\1\u00db",
+            "\1\u00dc",
+            "\1\u00dd",
+            "\1\u00de",
+            "\1\u00df",
+            "\1\u00e0",
+            "\1\u00e1",
+            "",
+            "\1\u00e2",
+            "\1\u00e3",
+            "\1\u00e4",
+            "\1\u00e5",
+            "\1\u00e6",
+            "\1\u00e7",
+            "\1\u00e8",
+            "\1\u00e9",
+            "\1\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\u00eb",
+            "\1\u00ec",
+            "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32"+
+            "\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
+            "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
+            "\u5200\56\u5900\uffff\u0200\56",
+            "\1\u00ee",
+            "\1\u00ef",
+            "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32"+
+            "\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
+            "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
+            "\u5200\56\u5900\uffff\u0200\56",
+            "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32"+
+            "\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
+            "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
+            "\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\u00f3",
+            "\1\u00f4",
+            "\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\u00f6",
+            "\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\u00f8",
+            "\1\u00f9",
+            "\1\u00fa",
+            "\1\u00fb",
+            "\1\u00fc",
+            "",
+            "\1\u00fd",
+            "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32"+
+            "\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
+            "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
+            "\u5200\56\u5900\uffff\u0200\56",
+            "",
+            "\1\u00ff",
+            "\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\u0101",
+            "\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\u0103",
+            "\1\u0104",
+            "\1\u0105",
+            "\1\u0106",
+            "\1\u0107",
+            "\1\u0108",
+            "\1\u0109",
+            "\1\u010a",
+            "\1\u010b",
+            "\1\u010c",
+            "\1\u010d",
+            "\1\u010e",
+            "\1\u010f",
+            "\1\u0110",
+            "\1\u0111",
+            "\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"+
+            "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
+            "\u5200\56\u5900\uffff\u0200\56",
+            "\1\u0115",
+            "\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\u0117",
+            "\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\u0119",
+            "\1\u011a",
+            "",
+            "",
+            "",
+            "\1\u011b",
+            "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\22"+
+            "\56\1\u011c\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\u011e",
+            "",
+            "\1\u011f",
+            "\1\u0120",
+            "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\13"+
+            "\56\1\u0121\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\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\u0125",
+            "",
+            "\1\u0126",
+            "",
+            "\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\u0128",
+            "\1\u0129",
+            "\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\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\u012f",
+            "\1\u0130",
+            "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32"+
+            "\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
+            "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
+            "\u5200\56\u5900\uffff\u0200\56",
+            "\1\u0132",
+            "\1\u0133",
+            "\1\u0134",
+            "\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\u0136",
+            "\1\u0137",
+            "",
+            "",
+            "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32"+
+            "\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
+            "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
+            "\u5200\56\u5900\uffff\u0200\56",
+            "",
+            "\1\u0139",
+            "",
+            "\1\u013a",
+            "\1\u013b",
+            "\1\u013c",
+            "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32"+
+            "\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
+            "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
+            "\u5200\56\u5900\uffff\u0200\56",
+            "",
+            "\1\u013e",
+            "\1\u013f",
+            "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32"+
+            "\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
+            "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
+            "\u5200\56\u5900\uffff\u0200\56",
+            "\1\u0141",
+            "",
+            "",
+            "",
+            "\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\u0143",
+            "",
+            "\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\u0145",
+            "",
+            "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32"+
+            "\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
+            "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
+            "\u5200\56\u5900\uffff\u0200\56",
+            "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32"+
+            "\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
+            "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
+            "\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\u0149",
+            "\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\u014b",
+            "\1\u014c",
+            "\1\u014d",
+            "",
+            "\1\u014e",
+            "\1\u014f",
+            "",
+            "\1\u0150",
+            "\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\u0152",
+            "\1\u0153",
+            "",
+            "\1\u0154",
+            "\1\u0155",
+            "",
+            "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32"+
+            "\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
+            "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
+            "\u5200\56\u5900\uffff\u0200\56",
+            "",
+            "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32"+
+            "\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
+            "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
+            "\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\u0159",
+            "",
+            "\1\u015a",
+            "\1\u015b",
+            "\1\u015c",
+            "\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\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\u0160",
+            "\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\u0162",
+            "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32"+
+            "\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
+            "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
+            "\u5200\56\u5900\uffff\u0200\56",
+            "",
+            "",
+            "",
+            "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32"+
+            "\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
+            "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
+            "\u5200\56\u5900\uffff\u0200\56",
+            "\1\u0165",
+            "\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\u0167",
+            "",
+            "\1\u0168",
+            "",
+            "\1\u0169",
+            "",
+            "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32"+
+            "\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
+            "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
+            "\u5200\56\u5900\uffff\u0200\56",
+            "",
+            "",
+            "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32"+
+            "\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
+            "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
+            "\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\u016d",
+            "\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\u016f",
+            "",
+            "\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",
+            ""
+    };
+
+    static final short[] DFA30_eot = DFA.unpackEncodedString(DFA30_eotS);
+    static final short[] DFA30_eof = DFA.unpackEncodedString(DFA30_eofS);
+    static final char[] DFA30_min = DFA.unpackEncodedStringToUnsignedChars(DFA30_minS);
+    static final char[] DFA30_max = DFA.unpackEncodedStringToUnsignedChars(DFA30_maxS);
+    static final short[] DFA30_accept = DFA.unpackEncodedString(DFA30_acceptS);
+    static final short[] DFA30_special = DFA.unpackEncodedString(DFA30_specialS);
+    static final short[][] DFA30_transition;
+
+    static {
+        int numStates = DFA30_transitionS.length;
+        DFA30_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA30_transition[i] = DFA.unpackEncodedString(DFA30_transitionS[i]);
+        }
+    }
+
+    class DFA30 extends DFA {
+
+        public DFA30(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 30;
+            this.eot = DFA30_eot;
+            this.eof = DFA30_eof;
+            this.min = DFA30_min;
+            this.max = DFA30_max;
+            this.accept = DFA30_accept;
+            this.special = DFA30_special;
+            this.transition = DFA30_transition;
+        }
+        public String getDescription() {
+            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 | T__115 | HexLiteral | DecimalLiteral | OctalLiteral | FloatingPointLiteral | CharacterLiteral | StringLiteral | ENUM | Identifier | WS | COMMENT | LINE_COMMENT );";
+        }
+    }
+ 
+
 }
\ No newline at end of file

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	2009-02-20 19:24:04 UTC (rev 25369)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/parser/JavaParser.java	2009-02-21 00:51:40 UTC (rev 25370)
@@ -1,21632 +1,21710 @@
-// $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.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;
-/** A Java 1.5 grammar for ANTLR v3 derived from the spec
- *
- *  This is a very close representation of the spec; the changes
- *  are comestic (remove left recursion) and also fixes (the spec
- *  isn't exactly perfect).  I have run this on the 1.4.2 source
- *  and some nasty looking enums from 1.5, but have not really
- *  tested for 1.5 compatibility.
- *
- *  I built this with: java -Xmx100M org.antlr.Tool java.g 
- *  and got two errors that are ok (for now):
- *  java.g:691:9: Decision can match input such as
- *    "'0'..'9'{'E', 'e'}{'+', '-'}'0'..'9'{'D', 'F', 'd', 'f'}"
- *    using multiple alternatives: 3, 4
- *  As a result, alternative(s) 4 were disabled for that input
- *  java.g:734:35: Decision can match input such as "{'$', 'A'..'Z',
- *    '_', 'a'..'z', '\u00C0'..'\u00D6', '\u00D8'..'\u00F6',
- *    '\u00F8'..'\u1FFF', '\u3040'..'\u318F', '\u3300'..'\u337F',
- *    '\u3400'..'\u3D2D', '\u4E00'..'\u9FFF', '\uF900'..'\uFAFF'}"
- *    using multiple alternatives: 1, 2
- *  As a result, alternative(s) 2 were disabled for that input
- *
- *  You can turn enum on/off as a keyword :)
- *
- *  Version 1.0 -- initial release July 5, 2006 (requires 3.0b2 or higher)
- *
- *  Primary author: Terence Parr, July 2006
- *
- *  Version 1.0.1 -- corrections by Koen Vanderkimpen & Marko van Dooren,
- *      October 25, 2006;
- *      fixed normalInterfaceDeclaration: now uses typeParameters instead
- *          of typeParameter (according to JLS, 3rd edition)
- *      fixed castExpression: no longer allows expression next to type
- *          (according to semantics in JLS, in contrast with syntax in JLS)
- *
- *  Version 1.0.2 -- Terence Parr, Nov 27, 2006
- *      java spec I built this from had some bizarre for-loop control.
- *          Looked weird and so I looked elsewhere...Yep, it's messed up.
- *          simplified.
- *
- *  Version 1.0.3 -- Chris Hogue, Feb 26, 2007
- *      Factored out an annotationName rule and used it in the annotation rule.
- *          Not sure why, but typeName wasn't recognizing references to inner
- *          annotations (e.g. @InterfaceName.InnerAnnotation())
- *      Factored out the elementValue section of an annotation reference.  Created 
- *          elementValuePair and elementValuePairs rules, then used them in the 
- *          annotation rule.  Allows it to recognize annotation references with 
- *          multiple, comma separated attributes.
- *      Updated elementValueArrayInitializer so that it allows multiple elements.
- *          (It was only allowing 0 or 1 element).
- *      Updated localVariableDeclaration to allow annotations.  Interestingly the JLS
- *          doesn't appear to indicate this is legal, but it does work as of at least
- *          JDK 1.5.0_06.
- *      Moved the Identifier portion of annotationTypeElementRest to annotationMethodRest.
- *          Because annotationConstantRest already references variableDeclarator which 
- *          has the Identifier portion in it, the parser would fail on constants in 
- *          annotation definitions because it expected two identifiers.  
- *      Added optional trailing ';' to the alternatives in annotationTypeElementRest.
- *          Wouldn't handle an inner interface that has a trailing ';'.
- *      Swapped the expression and type rule reference order in castExpression to 
- *          make it check for genericized casts first.  It was failing to recognize a
- *          statement like  "Class<Byte> TYPE = (Class<Byte>)...;" because it was seeing
- *          'Class<Byte' in the cast expression as a less than expression, then failing 
- *          on the '>'.
- *      Changed createdName to use typeArguments instead of nonWildcardTypeArguments.
- *          Again, JLS doesn't seem to allow this, but java.lang.Class has an example of
- *          of this construct.
- *      Changed the 'this' alternative in primary to allow 'identifierSuffix' rather than
- *          just 'arguments'.  The case it couldn't handle was a call to an explicit
- *          generic method invocation (e.g. this.<E>doSomething()).  Using identifierSuffix
- *          may be overly aggressive--perhaps should create a more constrained thisSuffix rule?
- * 		
- *  Version 1.0.4 -- Hiroaki Nakamura, May 3, 2007
- *
- *	Fixed formalParameterDecls, localVariableDeclaration, forInit,
- *	and forVarControl to use variableModifier* not 'final'? (annotation)?
- */
-public class JavaParser extends Parser {
-    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 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 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 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 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 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 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) {
-            this(input, new RecognizerSharedState());
-        }
-        public JavaParser(TokenStream input, RecognizerSharedState state) {
-            super(input, state);
-            this.state.ruleMemo = new HashMap[407+1];
-             
-             
-        }
-        
-
-    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();
-    	public List getIdentifiers() { return identifiers; }
-    	private List localDeclarations = new ArrayList();
-    	public List getLocalDeclarations() { return localDeclarations; }
-    	public static final CommonToken IGNORE_TOKEN = new CommonToken(null,0,99,0,0);
-    	private List errors = new ArrayList();
-    	private int localVariableLevel = 0;
-    	private List modifyBlocks = new ArrayList();
-    	public List getModifyBlocks() { return modifyBlocks; }
-    	
-    	private String source = "unknown";
-    	
-    	public void setSource(String source) {
-    		this.source = source;
-    	}
-    	
-    	public String getSource() {
-    		return this.source;
-    	}
-    		
-    	public void reportError(RecognitionException ex) {
-    	        // if we've already reported an error and have not matched a token
-                    // yet successfully, don't report any errors.
-                    if ( state.errorRecovery ) {
-                            //System.err.print("[SPURIOUS] ");
-                            return;
-                    }
-                    state.errorRecovery = true;
-
-    		errors.add( ex ); 
-    	}
-         	
-         	/** return the raw RecognitionException errors */
-         	public List getErrors() {
-         		return errors;
-         	}
-         	
-         	/** Return a list of pretty strings summarising the errors */
-         	public List getErrorMessages() {
-         		List messages = new ArrayList();
-     		for ( Iterator errorIter = errors.iterator() ; errorIter.hasNext() ; ) {
-         	     		messages.add( createErrorMessage( (RecognitionException) errorIter.next() ) );
-         	     	}
-         	     	return messages;
-         	}
-         	
-         	/** return true if any parser errors were accumulated */
-         	public boolean hasErrors() {
-      		return ! errors.isEmpty();
-         	}
-         	
-         	/** This will take a RecognitionException, and create a sensible error message out of it */
-         	public String createErrorMessage(RecognitionException e)
-            {
-    		StringBuffer message = new StringBuffer();		
-                    message.append( source + ":"+e.line+":"+e.charPositionInLine+" ");
-                    if ( e instanceof MismatchedTokenException ) {
-                            MismatchedTokenException mte = (MismatchedTokenException)e;
-                            message.append("mismatched token: "+
-                                                               e.token+
-                                                               "; expecting type "+
-                                                               tokenNames[mte.expecting]);
-                    }
-                    else if ( e instanceof MismatchedTreeNodeException ) {
-                            MismatchedTreeNodeException mtne = (MismatchedTreeNodeException)e;
-                            message.append("mismatched tree node: "+
-                                                               mtne.node+
-                                                               "; expecting type "+
-                                                               tokenNames[mtne.expecting]);
-                    }
-                    else if ( e instanceof NoViableAltException ) {
-                            NoViableAltException nvae = (NoViableAltException)e;
-    			message.append( "Unexpected token '" + e.token.getText() + "'" );
-                            /*
-                            message.append("decision=<<"+nvae.grammarDecisionDescription+">>"+
-                                                               " state "+nvae.stateNumber+
-                                                               " (decision="+nvae.decisionNumber+
-                                                               ") no viable alt; token="+
-                                                               e.token);
-                                                               */
-                    }
-                    else if ( e instanceof EarlyExitException ) {
-                            EarlyExitException eee = (EarlyExitException)e;
-                            message.append("required (...)+ loop (decision="+
-                                                               eee.decisionNumber+
-                                                               ") did not match anything; token="+
-                                                               e.token);
-                    }
-                    else if ( e instanceof MismatchedSetException ) {
-                            MismatchedSetException mse = (MismatchedSetException)e;
-                            message.append("mismatched token '"+
-                                                               e.token+
-                                                               "' expecting set "+mse.expecting);
-                    }
-                    else if ( e instanceof MismatchedNotSetException ) {
-                            MismatchedNotSetException mse = (MismatchedNotSetException)e;
-                            message.append("mismatched token '"+
-                                                               e.token+
-                                                               "' expecting set "+mse.expecting);
-                    }
-                    else if ( e instanceof FailedPredicateException ) {
-                            FailedPredicateException fpe = (FailedPredicateException)e;
-                            message.append("rule "+fpe.ruleName+" failed predicate: {"+
-                                                               fpe.predicateText+"}?");
-    		}
-                   	return message.toString();
-            }   
-
-
-
-    // $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 ( 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 )*
-            {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:207:4: ( annotations )?
-            int alt1=2;
-            alt1 = dfa1.predict(input);
-            switch (alt1) {
-                case 1 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:208:3: ( packageDeclaration )?
-            int alt2=2;
-            alt2 = dfa2.predict(input);
-            switch (alt2) {
-                case 1 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-
-            // /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;
-                alt3 = dfa3.predict(input);
-                switch (alt3) {
-            	case 1 :
-            	    // /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();
-
-            	    state._fsp--;
-            	    if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop3;
-                }
-            } while (true);
-
-            // /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;
-                alt4 = dfa4.predict(input);
-                switch (alt4) {
-            	case 1 :
-            	    // /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();
-
-            	    state._fsp--;
-            	    if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop4;
-                }
-            } while (true);
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 1, compilationUnit_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "compilationUnit"
-
-
-    // $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 ( 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 (state.failed) return ;
-            pushFollow(FOLLOW_qualifiedName_in_packageDeclaration111);
-            qualifiedName();
-
-            state._fsp--;
-            if (state.failed) return ;
-            match(input,25,FOLLOW_25_in_packageDeclaration113); if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 2, packageDeclaration_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "packageDeclaration"
-
-
-    // $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 ( 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 (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);
-
-            if ( (LA5_0==27) ) {
-                alt5=1;
-            }
-            switch (alt5) {
-                case 1 :
-                    // /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 (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-
-            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;
-                int LA6_0 = input.LA(1);
-
-                if ( (LA6_0==28) ) {
-                    int LA6_1 = input.LA(2);
-
-                    if ( (LA6_1==Identifier) ) {
-                        alt6=1;
-                    }
-
-
-                }
-
-
-                switch (alt6) {
-            	case 1 :
-            	    // /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 (state.failed) return ;
-            	    match(input,Identifier,FOLLOW_Identifier_in_importDeclaration135); if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop6;
-                }
-            } while (true);
-
-            // /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);
-
-            if ( (LA7_0==28) ) {
-                alt7=1;
-            }
-            switch (alt7) {
-                case 1 :
-                    // /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 (state.failed) return ;
-                    match(input,29,FOLLOW_29_in_importDeclaration142); if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-
-            match(input,25,FOLLOW_25_in_importDeclaration146); if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 3, importDeclaration_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "importDeclaration"
-
-
-    // $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 ( 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;
-            alt8 = dfa8.predict(input);
-            switch (alt8) {
-                case 1 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 2 :
-                    // /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 (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 4, typeDeclaration_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "typeDeclaration"
-
-
-    // $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 ( 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 )
-            {
-            // /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;
-                alt9 = dfa9.predict(input);
-                switch (alt9) {
-            	case 1 :
-            	    // /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();
-
-            	    state._fsp--;
-            	    if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop9;
-                }
-            } while (true);
-
-            // /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);
-
-            if ( (LA10_0==ENUM||LA10_0==30) ) {
-                alt10=1;
-            }
-            else if ( (LA10_0==39||LA10_0==71) ) {
-                alt10=2;
-            }
-            else {
-                if (state.backtracking>0) {state.failed=true; return ;}
-                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/semantics/java/parser/Java.g:227:15: classDeclaration
-                    {
-                    pushFollow(FOLLOW_classDeclaration_in_classOrInterfaceDeclaration184);
-                    classDeclaration();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 2 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 5, classOrInterfaceDeclaration_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "classOrInterfaceDeclaration"
-
-
-    // $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 ( 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);
-
-            if ( (LA11_0==30) ) {
-                alt11=1;
-            }
-            else if ( (LA11_0==ENUM) ) {
-                alt11=2;
-            }
-            else {
-                if (state.backtracking>0) {state.failed=true; return ;}
-                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/semantics/java/parser/Java.g:231:4: normalClassDeclaration
-                    {
-                    pushFollow(FOLLOW_normalClassDeclaration_in_classDeclaration201);
-                    normalClassDeclaration();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 2 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 6, classDeclaration_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "classDeclaration"
-
-
-    // $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 ( 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 (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);
-
-            if ( (LA12_0==33) ) {
-                alt12=1;
-            }
-            switch (alt12) {
-                case 1 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-
-            // /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);
-
-            if ( (LA13_0==31) ) {
-                alt13=1;
-            }
-            switch (alt13) {
-                case 1 :
-                    // /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 (state.failed) return ;
-                    pushFollow(FOLLOW_type_in_normalClassDeclaration243);
-                    type();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-
-            // /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);
-
-            if ( (LA14_0==32) ) {
-                alt14=1;
-            }
-            switch (alt14) {
-                case 1 :
-                    // /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 (state.failed) return ;
-                    pushFollow(FOLLOW_typeList_in_normalClassDeclaration258);
-                    typeList();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-
-            pushFollow(FOLLOW_classBody_in_normalClassDeclaration270);
-            classBody();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 7, normalClassDeclaration_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "normalClassDeclaration"
-
-
-    // $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 ( 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 (state.failed) return ;
-            pushFollow(FOLLOW_typeParameter_in_typeParameters284);
-            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;
-                int LA15_0 = input.LA(1);
-
-                if ( (LA15_0==34) ) {
-                    alt15=1;
-                }
-
-
-                switch (alt15) {
-            	case 1 :
-            	    // /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 (state.failed) return ;
-            	    pushFollow(FOLLOW_typeParameter_in_typeParameters289);
-            	    typeParameter();
-
-            	    state._fsp--;
-            	    if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop15;
-                }
-            } while (true);
-
-            match(input,35,FOLLOW_35_in_typeParameters293); if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 8, typeParameters_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "typeParameters"
-
-
-    // $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 ( 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 (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);
-
-            if ( (LA16_0==31) ) {
-                alt16=1;
-            }
-            switch (alt16) {
-                case 1 :
-                    // /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 (state.failed) return ;
-                    pushFollow(FOLLOW_bound_in_typeParameter309);
-                    bound();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 9, typeParameter_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "typeParameter"
-
-
-    // $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 ( 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();
-
-            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;
-                int LA17_0 = input.LA(1);
-
-                if ( (LA17_0==36) ) {
-                    alt17=1;
-                }
-
-
-                switch (alt17) {
-            	case 1 :
-            	    // /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 (state.failed) return ;
-            	    pushFollow(FOLLOW_type_in_bound329);
-            	    type();
-
-            	    state._fsp--;
-            	    if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop17;
-                }
-            } while (true);
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 10, bound_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "bound"
-
-
-    // $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 ( 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 (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);
-
-            if ( (LA18_0==32) ) {
-                alt18=1;
-            }
-            switch (alt18) {
-                case 1 :
-                    // /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 (state.failed) return ;
-                    pushFollow(FOLLOW_typeList_in_enumDeclaration349);
-                    typeList();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-
-            pushFollow(FOLLOW_enumBody_in_enumDeclaration353);
-            enumBody();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 11, enumDeclaration_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "enumDeclaration"
-
-
-    // $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 ( 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 (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);
-
-            if ( (LA19_0==Identifier||LA19_0==71) ) {
-                alt19=1;
-            }
-            switch (alt19) {
-                case 1 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-
-            // /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);
-
-            if ( (LA20_0==34) ) {
-                alt20=1;
-            }
-            switch (alt20) {
-                case 1 :
-                    // /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 (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-
-            // /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);
-
-            if ( (LA21_0==25) ) {
-                alt21=1;
-            }
-            switch (alt21) {
-                case 1 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-
-            match(input,38,FOLLOW_38_in_enumBody376); if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 12, enumBody_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "enumBody"
-
-
-    // $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 ( 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();
-
-            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;
-                int LA22_0 = input.LA(1);
-
-                if ( (LA22_0==34) ) {
-                    int LA22_1 = input.LA(2);
-
-                    if ( (LA22_1==Identifier||LA22_1==71) ) {
-                        alt22=1;
-                    }
-
-
-                }
-
-
-                switch (alt22) {
-            	case 1 :
-            	    // /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 (state.failed) return ;
-            	    pushFollow(FOLLOW_enumConstant_in_enumConstants392);
-            	    enumConstant();
-
-            	    state._fsp--;
-            	    if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop22;
-                }
-            } while (true);
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 13, enumConstants_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "enumConstants"
-
-
-    // $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 ( 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 )?
-            {
-            // /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);
-
-            if ( (LA23_0==71) ) {
-                alt23=1;
-            }
-            switch (alt23) {
-                case 1 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-
-            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);
-
-            if ( (LA24_0==65) ) {
-                alt24=1;
-            }
-            switch (alt24) {
-                case 1 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-
-            // /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);
-
-            if ( (LA25_0==37) ) {
-                alt25=1;
-            }
-            switch (alt25) {
-                case 1 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 14, enumConstant_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "enumConstant"
-
-
-    // $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 ( 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 (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;
-                alt26 = dfa26.predict(input);
-                switch (alt26) {
-            	case 1 :
-            	    // /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();
-
-            	    state._fsp--;
-            	    if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop26;
-                }
-            } while (true);
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 15, enumBodyDeclarations_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "enumBodyDeclarations"
-
-
-    // $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 ( 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);
-
-            if ( (LA27_0==39) ) {
-                alt27=1;
-            }
-            else if ( (LA27_0==71) ) {
-                alt27=2;
-            }
-            else {
-                if (state.backtracking>0) {state.failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("", 27, 0, input);
-
-                throw nvae;
-            }
-            switch (alt27) {
-                case 1 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 2 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 16, interfaceDeclaration_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "interfaceDeclaration"
-
-
-    // $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 ( 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 (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);
-
-            if ( (LA28_0==33) ) {
-                alt28=1;
-            }
-            switch (alt28) {
-                case 1 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-
-            // /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);
-
-            if ( (LA29_0==31) ) {
-                alt29=1;
-            }
-            switch (alt29) {
-                case 1 :
-                    // /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 (state.failed) return ;
-                    pushFollow(FOLLOW_typeList_in_normalInterfaceDeclaration476);
-                    typeList();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-
-            pushFollow(FOLLOW_interfaceBody_in_normalInterfaceDeclaration480);
-            interfaceBody();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 17, normalInterfaceDeclaration_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "normalInterfaceDeclaration"
-
-
-    // $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 ( 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();
-
-            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;
-                int LA30_0 = input.LA(1);
-
-                if ( (LA30_0==34) ) {
-                    alt30=1;
-                }
-
-
-                switch (alt30) {
-            	case 1 :
-            	    // /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 (state.failed) return ;
-            	    pushFollow(FOLLOW_type_in_typeList497);
-            	    type();
-
-            	    state._fsp--;
-            	    if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop30;
-                }
-            } while (true);
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 18, typeList_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "typeList"
-
-
-    // $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 ( 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 (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;
-                alt31 = dfa31.predict(input);
-                switch (alt31) {
-            	case 1 :
-            	    // /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();
-
-            	    state._fsp--;
-            	    if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop31;
-                }
-            } while (true);
-
-            match(input,38,FOLLOW_38_in_classBody516); if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 19, classBody_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "classBody"
-
-
-    // $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 ( 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 (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;
-                alt32 = dfa32.predict(input);
-                switch (alt32) {
-            	case 1 :
-            	    // /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();
-
-            	    state._fsp--;
-            	    if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop32;
-                }
-            } while (true);
-
-            match(input,38,FOLLOW_38_in_interfaceBody533); if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 20, interfaceBody_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "interfaceBody"
-
-
-    // $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 ( 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;
-            alt35 = dfa35.predict(input);
-            switch (alt35) {
-                case 1 :
-                    // /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 (state.failed) return ;
-
-                    }
-                    break;
-                case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/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' )?
-                    int alt33=2;
-                    int LA33_0 = input.LA(1);
-
-                    if ( (LA33_0==27) ) {
-                        alt33=1;
-                    }
-                    switch (alt33) {
-                        case 1 :
-                            // /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 (state.failed) return ;
-
-                            }
-                            break;
-
-                    }
-
-                    pushFollow(FOLLOW_block_in_classBodyDeclaration552);
-                    block();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 3 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/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 )*
-                    loop34:
-                    do {
-                        int alt34=2;
-                        alt34 = dfa34.predict(input);
-                        switch (alt34) {
-                    	case 1 :
-                    	    // /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();
-
-                    	    state._fsp--;
-                    	    if (state.failed) return ;
-
-                    	    }
-                    	    break;
-
-                    	default :
-                    	    break loop34;
-                        }
-                    } while (true);
-
-                    pushFollow(FOLLOW_memberDecl_in_classBodyDeclaration560);
-                    memberDecl();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 21, classBodyDeclaration_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "classBodyDeclaration"
-
-
-    // $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 ( 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;
-            alt36 = dfa36.predict(input);
-            switch (alt36) {
-                case 1 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 2 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 3 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 4 :
-                    // /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 (state.failed) return ;
-                    match(input,Identifier,FOLLOW_Identifier_in_memberDecl589); if (state.failed) return ;
-                    pushFollow(FOLLOW_voidMethodDeclaratorRest_in_memberDecl591);
-                    voidMethodDeclaratorRest();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 5 :
-                    // /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 (state.failed) return ;
-                    pushFollow(FOLLOW_constructorDeclaratorRest_in_memberDecl598);
-                    constructorDeclaratorRest();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 6 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 7 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 22, memberDecl_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "memberDecl"
-
-
-    // $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 ( 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();
-
-            state._fsp--;
-            if (state.failed) return ;
-            pushFollow(FOLLOW_genericMethodOrConstructorRest_in_genericMethodOrConstructorDecl622);
-            genericMethodOrConstructorRest();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 23, genericMethodOrConstructorDecl_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "genericMethodOrConstructorDecl"
-
-
-    // $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 ( 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==65) ) {
-                    alt38=2;
-                }
-                else if ( (LA38_1==Identifier||LA38_1==28||LA38_1==33||LA38_1==41) ) {
-                    alt38=1;
-                }
-                else {
-                    if (state.backtracking>0) {state.failed=true; return ;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("", 38, 1, input);
-
-                    throw nvae;
-                }
-            }
-            else if ( (LA38_0==40||(LA38_0>=55 && LA38_0<=62)) ) {
-                alt38=1;
-            }
-            else {
-                if (state.backtracking>0) {state.failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("", 38, 0, input);
-
-                throw nvae;
-            }
-            switch (alt38) {
-                case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/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' )
-                    int alt37=2;
-                    int LA37_0 = input.LA(1);
-
-                    if ( (LA37_0==Identifier||(LA37_0>=55 && LA37_0<=62)) ) {
-                        alt37=1;
-                    }
-                    else if ( (LA37_0==40) ) {
-                        alt37=2;
-                    }
-                    else {
-                        if (state.backtracking>0) {state.failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("", 37, 0, input);
-
-                        throw nvae;
-                    }
-                    switch (alt37) {
-                        case 1 :
-                            // /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();
-
-                            state._fsp--;
-                            if (state.failed) return ;
-
-                            }
-                            break;
-                        case 2 :
-                            // /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 (state.failed) return ;
-
-                            }
-                            break;
-
-                    }
-
-                    match(input,Identifier,FOLLOW_Identifier_in_genericMethodOrConstructorRest642); if (state.failed) return ;
-                    pushFollow(FOLLOW_methodDeclaratorRest_in_genericMethodOrConstructorRest644);
-                    methodDeclaratorRest();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 2 :
-                    // /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 (state.failed) return ;
-                    pushFollow(FOLLOW_constructorDeclaratorRest_in_genericMethodOrConstructorRest651);
-                    constructorDeclaratorRest();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 24, genericMethodOrConstructorRest_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "genericMethodOrConstructorRest"
-
-
-    // $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 ( 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();
-
-            state._fsp--;
-            if (state.failed) return ;
-            match(input,Identifier,FOLLOW_Identifier_in_methodDeclaration664); if (state.failed) return ;
-            pushFollow(FOLLOW_methodDeclaratorRest_in_methodDeclaration666);
-            methodDeclaratorRest();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 25, methodDeclaration_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "methodDeclaration"
-
-
-    // $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 ( 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();
-
-            state._fsp--;
-            if (state.failed) return ;
-            pushFollow(FOLLOW_variableDeclarators_in_fieldDeclaration679);
-            variableDeclarators();
-
-            state._fsp--;
-            if (state.failed) return ;
-            match(input,25,FOLLOW_25_in_fieldDeclaration681); if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 26, fieldDeclaration_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "fieldDeclaration"
-
-
-    // $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 ( 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;
-            alt40 = dfa40.predict(input);
-            switch (alt40) {
-                case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/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 )*
-                    loop39:
-                    do {
-                        int alt39=2;
-                        alt39 = dfa39.predict(input);
-                        switch (alt39) {
-                    	case 1 :
-                    	    // /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();
-
-                    	    state._fsp--;
-                    	    if (state.failed) return ;
-
-                    	    }
-                    	    break;
-
-                    	default :
-                    	    break loop39;
-                        }
-                    } while (true);
-
-                    pushFollow(FOLLOW_interfaceMemberDecl_in_interfaceBodyDeclaration697);
-                    interfaceMemberDecl();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 2 :
-                    // /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 (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 27, interfaceBodyDeclaration_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "interfaceBodyDeclaration"
-
-
-    // $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 ( 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:
-            case 55:
-            case 56:
-            case 57:
-            case 58:
-            case 59:
-            case 60:
-            case 61:
-            case 62:
-                {
-                alt41=1;
-                }
-                break;
-            case 33:
-                {
-                alt41=2;
-                }
-                break;
-            case 40:
-                {
-                alt41=3;
-                }
-                break;
-            case 39:
-            case 71:
-                {
-                alt41=4;
-                }
-                break;
-            case ENUM:
-            case 30:
-                {
-                alt41=5;
-                }
-                break;
-            default:
-                if (state.backtracking>0) {state.failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("", 41, 0, input);
-
-                throw nvae;
-            }
-
-            switch (alt41) {
-                case 1 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 2 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 3 :
-                    // /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 (state.failed) return ;
-                    match(input,Identifier,FOLLOW_Identifier_in_interfaceMemberDecl734); if (state.failed) return ;
-                    pushFollow(FOLLOW_voidInterfaceMethodDeclaratorRest_in_interfaceMemberDecl736);
-                    voidInterfaceMethodDeclaratorRest();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 4 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 5 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 28, interfaceMemberDecl_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "interfaceMemberDecl"
-
-
-    // $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 ( 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();
-
-            state._fsp--;
-            if (state.failed) return ;
-            match(input,Identifier,FOLLOW_Identifier_in_interfaceMethodOrFieldDecl770); if (state.failed) return ;
-            pushFollow(FOLLOW_interfaceMethodOrFieldRest_in_interfaceMethodOrFieldDecl772);
-            interfaceMethodOrFieldRest();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 29, interfaceMethodOrFieldDecl_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "interfaceMethodOrFieldDecl"
-
-
-    // $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 ( 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);
-
-            if ( (LA42_0==41||LA42_0==44) ) {
-                alt42=1;
-            }
-            else if ( (LA42_0==65) ) {
-                alt42=2;
-            }
-            else {
-                if (state.backtracking>0) {state.failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("", 42, 0, input);
-
-                throw nvae;
-            }
-            switch (alt42) {
-                case 1 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-                    match(input,25,FOLLOW_25_in_interfaceMethodOrFieldRest786); if (state.failed) return ;
-
-                    }
-                    break;
-                case 2 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 30, interfaceMethodOrFieldRest_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "interfaceMethodOrFieldRest"
-
-
-    // $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 ( 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();
-
-            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;
-                int LA43_0 = input.LA(1);
-
-                if ( (LA43_0==41) ) {
-                    alt43=1;
-                }
-
-
-                switch (alt43) {
-            	case 1 :
-            	    // /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 (state.failed) return ;
-            	    match(input,42,FOLLOW_42_in_methodDeclaratorRest808); if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop43;
-                }
-            } while (true);
-
-            // /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);
-
-            if ( (LA44_0==43) ) {
-                alt44=1;
-            }
-            switch (alt44) {
-                case 1 :
-                    // /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 (state.failed) return ;
-                    pushFollow(FOLLOW_qualifiedNameList_in_methodDeclaratorRest823);
-                    qualifiedNameList();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-
-            // /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);
-
-            if ( (LA45_0==37) ) {
-                alt45=1;
-            }
-            else if ( (LA45_0==25) ) {
-                alt45=2;
-            }
-            else {
-                if (state.backtracking>0) {state.failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("", 45, 0, input);
-
-                throw nvae;
-            }
-            switch (alt45) {
-                case 1 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 2 :
-                    // /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 (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 31, methodDeclaratorRest_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "methodDeclaratorRest"
-
-
-    // $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 ( 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();
-
-            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);
-
-            if ( (LA46_0==43) ) {
-                alt46=1;
-            }
-            switch (alt46) {
-                case 1 :
-                    // /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 (state.failed) return ;
-                    pushFollow(FOLLOW_qualifiedNameList_in_voidMethodDeclaratorRest880);
-                    qualifiedNameList();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-
-            // /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);
-
-            if ( (LA47_0==37) ) {
-                alt47=1;
-            }
-            else if ( (LA47_0==25) ) {
-                alt47=2;
-            }
-            else {
-                if (state.backtracking>0) {state.failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("", 47, 0, input);
-
-                throw nvae;
-            }
-            switch (alt47) {
-                case 1 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 2 :
-                    // /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 (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 32, voidMethodDeclaratorRest_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "voidMethodDeclaratorRest"
-
-
-    // $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 ( 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();
-
-            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;
-                int LA48_0 = input.LA(1);
-
-                if ( (LA48_0==41) ) {
-                    alt48=1;
-                }
-
-
-                switch (alt48) {
-            	case 1 :
-            	    // /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 (state.failed) return ;
-            	    match(input,42,FOLLOW_42_in_interfaceMethodDeclaratorRest937); if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop48;
-                }
-            } while (true);
-
-            // /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);
-
-            if ( (LA49_0==43) ) {
-                alt49=1;
-            }
-            switch (alt49) {
-                case 1 :
-                    // /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 (state.failed) return ;
-                    pushFollow(FOLLOW_qualifiedNameList_in_interfaceMethodDeclaratorRest944);
-                    qualifiedNameList();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-
-            match(input,25,FOLLOW_25_in_interfaceMethodDeclaratorRest948); if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 33, interfaceMethodDeclaratorRest_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "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 ( 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();
-
-            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);
-
-            if ( (LA50_0==Identifier||(LA50_0>=55 && LA50_0<=62)) ) {
-                alt50=1;
-            }
-            else if ( (LA50_0==40) ) {
-                alt50=2;
-            }
-            else {
-                if (state.backtracking>0) {state.failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("", 50, 0, input);
-
-                throw nvae;
-            }
-            switch (alt50) {
-                case 1 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 2 :
-                    // /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 (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-
-            match(input,Identifier,FOLLOW_Identifier_in_interfaceGenericMethodDecl970); if (state.failed) return ;
-            pushFollow(FOLLOW_interfaceMethodDeclaratorRest_in_interfaceGenericMethodDecl980);
-            interfaceMethodDeclaratorRest();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 34, interfaceGenericMethodDecl_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "interfaceGenericMethodDecl"
-
-
-    // $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 ( 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();
-
-            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);
-
-            if ( (LA51_0==43) ) {
-                alt51=1;
-            }
-            switch (alt51) {
-                case 1 :
-                    // /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 (state.failed) return ;
-                    pushFollow(FOLLOW_qualifiedNameList_in_voidInterfaceMethodDeclaratorRest997);
-                    qualifiedNameList();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-
-            match(input,25,FOLLOW_25_in_voidInterfaceMethodDeclaratorRest1001); if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 35, voidInterfaceMethodDeclaratorRest_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "voidInterfaceMethodDeclaratorRest"
-
-
-    // $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 ( 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();
-
-            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);
-
-            if ( (LA52_0==43) ) {
-                alt52=1;
-            }
-            switch (alt52) {
-                case 1 :
-                    // /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 (state.failed) return ;
-                    pushFollow(FOLLOW_qualifiedNameList_in_constructorDeclaratorRest1018);
-                    qualifiedNameList();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-
-            pushFollow(FOLLOW_methodBody_in_constructorDeclaratorRest1022);
-            methodBody();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 36, constructorDeclaratorRest_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "constructorDeclaratorRest"
-
-
-    // $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 ( 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 (state.failed) return ;
-            pushFollow(FOLLOW_constantDeclaratorRest_in_constantDeclarator1035);
-            constantDeclaratorRest();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 37, constantDeclarator_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "constantDeclarator"
-
-
-    // $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 ( 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();
-
-            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;
-                int LA53_0 = input.LA(1);
-
-                if ( (LA53_0==34) ) {
-                    alt53=1;
-                }
-
-
-                switch (alt53) {
-            	case 1 :
-            	    // /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 (state.failed) return ;
-            	    pushFollow(FOLLOW_variableDeclarator_in_variableDeclarators1052);
-            	    variableDeclarator();
-
-            	    state._fsp--;
-            	    if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop53;
-                }
-            } while (true);
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 38, variableDeclarators_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "variableDeclarators"
-
-    protected static class variableDeclarator_scope {
-        JavaLocalDeclarationDescr.IdentifierDescr ident;
-    }
-    protected Stack variableDeclarator_stack = new Stack();
-
-
-    // $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;
-        JavaParser.variableDeclaratorRest_return rest = null;
-
-
-
-        		if( this.localVariableLevel == 1 ) { // we only want top level local vars
-        			((variableDeclarator_scope)variableDeclarator_stack.peek()).ident = new JavaLocalDeclarationDescr.IdentifierDescr();
-        		}
-        	
-        try {
-            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)match(input,Identifier,FOLLOW_Identifier_in_variableDeclarator1084); if (state.failed) return ;
-            pushFollow(FOLLOW_variableDeclaratorRest_in_variableDeclarator1088);
-            rest=variableDeclaratorRest();
-
-            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!=null?id.getText():null) );
-              				((variableDeclarator_scope)variableDeclarator_stack.peek()).ident.setStart( ((CommonToken)id).getStartIndex() - 1 );
-              				if( (rest!=null?((Token)rest.stop):null) != null ) {
-                 					((variableDeclarator_scope)variableDeclarator_stack.peek()).ident.setEnd( ((CommonToken)(rest!=null?((Token)rest.stop):null)).getStopIndex() );
-              				}
-              			}
-              		
-            }
-
-            }
-
-            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 );
-              	        }
-              	
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 39, variableDeclarator_StartIndex); }
-            variableDeclarator_stack.pop();
-        }
-        return ;
-    }
-    // $ANTLR end "variableDeclarator"
-
-    public static class variableDeclaratorRest_return extends ParserRuleReturnScope {
-    };
-
-    // $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 ( 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:
-                {
-                alt56=1;
-                }
-                break;
-            case 44:
-                {
-                alt56=2;
-                }
-                break;
-            case EOF:
-            case 25:
-            case 34:
-                {
-                alt56=3;
-                }
-                break;
-            default:
-                if (state.backtracking>0) {state.failed=true; return retval;}
-                NoViableAltException nvae =
-                    new NoViableAltException("", 56, 0, input);
-
-                throw nvae;
-            }
-
-            switch (alt56) {
-                case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/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: ( '[' ']' )+
-                    int cnt54=0;
-                    loop54:
-                    do {
-                        int alt54=2;
-                        int LA54_0 = input.LA(1);
-
-                        if ( (LA54_0==41) ) {
-                            alt54=1;
-                        }
-
-
-                        switch (alt54) {
-                    	case 1 :
-                    	    // /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 (state.failed) return retval;
-                    	    match(input,42,FOLLOW_42_in_variableDeclaratorRest1108); if (state.failed) return retval;
-
-                    	    }
-                    	    break;
-
-                    	default :
-                    	    if ( cnt54 >= 1 ) break loop54;
-                    	    if (state.backtracking>0) {state.failed=true; return retval;}
-                                EarlyExitException eee =
-                                    new EarlyExitException(54, input);
-                                throw eee;
-                        }
-                        cnt54++;
-                    } while (true);
-
-                    // /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);
-
-                    if ( (LA55_0==44) ) {
-                        alt55=1;
-                    }
-                    switch (alt55) {
-                        case 1 :
-                            // /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 (state.failed) return retval;
-                            pushFollow(FOLLOW_variableInitializer_in_variableDeclaratorRest1115);
-                            variableInitializer();
-
-                            state._fsp--;
-                            if (state.failed) return retval;
-
-                            }
-                            break;
-
-                    }
-
-
-                    }
-                    break;
-                case 2 :
-                    // /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 (state.failed) return retval;
-                    pushFollow(FOLLOW_variableInitializer_in_variableDeclaratorRest1124);
-                    variableInitializer();
-
-                    state._fsp--;
-                    if (state.failed) return retval;
-
-                    }
-                    break;
-                case 3 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:420:2: 
-                    {
-                    }
-                    break;
-
-            }
-            retval.stop = input.LT(-1);
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 40, variableDeclaratorRest_StartIndex); }
-        }
-        return retval;
-    }
-    // $ANTLR end "variableDeclaratorRest"
-
-
-    // $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 ( 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();
-
-            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;
-                int LA57_0 = input.LA(1);
-
-                if ( (LA57_0==34) ) {
-                    alt57=1;
-                }
-
-
-                switch (alt57) {
-            	case 1 :
-            	    // /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 (state.failed) return ;
-            	    pushFollow(FOLLOW_constantDeclarator_in_constantDeclaratorsRest1149);
-            	    constantDeclarator();
-
-            	    state._fsp--;
-            	    if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop57;
-                }
-            } while (true);
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 41, constantDeclaratorsRest_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "constantDeclaratorsRest"
-
-
-    // $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 ( 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
-            {
-            // /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;
-                int LA58_0 = input.LA(1);
-
-                if ( (LA58_0==41) ) {
-                    alt58=1;
-                }
-
-
-                switch (alt58) {
-            	case 1 :
-            	    // /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 (state.failed) return ;
-            	    match(input,42,FOLLOW_42_in_constantDeclaratorRest1168); if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop58;
-                }
-            } while (true);
-
-            match(input,44,FOLLOW_44_in_constantDeclaratorRest1172); if (state.failed) return ;
-            pushFollow(FOLLOW_variableInitializer_in_constantDeclaratorRest1174);
-            variableInitializer();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 42, constantDeclaratorRest_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "constantDeclaratorRest"
-
-
-    // $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 ( 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 (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;
-                int LA59_0 = input.LA(1);
-
-                if ( (LA59_0==41) ) {
-                    alt59=1;
-                }
-
-
-                switch (alt59) {
-            	case 1 :
-            	    // /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 (state.failed) return ;
-            	    match(input,42,FOLLOW_42_in_variableDeclaratorId1191); if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop59;
-                }
-            } while (true);
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 43, variableDeclaratorId_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "variableDeclaratorId"
-
-
-    // $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 ( 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;
-            alt60 = dfa60.predict(input);
-            switch (alt60) {
-                case 1 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 2 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 44, variableInitializer_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "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 ( 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 (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;
-            alt63 = dfa63.predict(input);
-            switch (alt63) {
-                case 1 :
-                    // /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();
-
-                    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;
-                        alt61 = dfa61.predict(input);
-                        switch (alt61) {
-                    	case 1 :
-                    	    // /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 (state.failed) return ;
-                    	    pushFollow(FOLLOW_variableInitializer_in_arrayInitializer1234);
-                    	    variableInitializer();
-
-                    	    state._fsp--;
-                    	    if (state.failed) return ;
-
-                    	    }
-                    	    break;
-
-                    	default :
-                    	    break loop61;
-                        }
-                    } while (true);
-
-                    // /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);
-
-                    if ( (LA62_0==34) ) {
-                        alt62=1;
-                    }
-                    switch (alt62) {
-                        case 1 :
-                            // /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 (state.failed) return ;
-
-                            }
-                            break;
-
-                    }
-
-
-                    }
-                    break;
-
-            }
-
-            match(input,38,FOLLOW_38_in_arrayInitializer1246); if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 45, arrayInitializer_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "arrayInitializer"
-
-
-    // $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 ( 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;
-            alt64 = dfa64.predict(input);
-            switch (alt64) {
-                case 1 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 2 :
-                    // /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 (state.failed) return ;
-
-                    }
-                    break;
-                case 3 :
-                    // /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 (state.failed) return ;
-
-                    }
-                    break;
-                case 4 :
-                    // /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 (state.failed) return ;
-
-                    }
-                    break;
-                case 5 :
-                    // /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 (state.failed) return ;
-
-                    }
-                    break;
-                case 6 :
-                    // /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 (state.failed) return ;
-
-                    }
-                    break;
-                case 7 :
-                    // /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 (state.failed) return ;
-
-                    }
-                    break;
-                case 8 :
-                    // /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 (state.failed) return ;
-
-                    }
-                    break;
-                case 9 :
-                    // /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 (state.failed) return ;
-
-                    }
-                    break;
-                case 10 :
-                    // /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 (state.failed) return ;
-
-                    }
-                    break;
-                case 11 :
-                    // /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 (state.failed) return ;
-
-                    }
-                    break;
-                case 12 :
-                    // /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 (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 46, modifier_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "modifier"
-
-
-    // $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 ( 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 (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;
-                int LA65_0 = input.LA(1);
-
-                if ( (LA65_0==28) ) {
-                    int LA65_1 = input.LA(2);
-
-                    if ( (LA65_1==Identifier) ) {
-                        int LA65_2 = input.LA(3);
-
-                        if ( (synpred85_Java()) ) {
-                            alt65=1;
-                        }
-
-
-                    }
-
-
-                }
-
-
-                switch (alt65) {
-            	case 1 :
-            	    // /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 (state.failed) return ;
-            	    match(input,Identifier,FOLLOW_Identifier_in_packageOrTypeName1391); if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop65;
-                }
-            } while (true);
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 47, packageOrTypeName_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "packageOrTypeName"
-
-
-    // $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 ( 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 (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 48, enumConstantName_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "enumConstantName"
-
-
-    // $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 ( 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);
-
-            if ( (LA66_0==Identifier) ) {
-                int LA66_1 = input.LA(2);
-
-                if ( (LA66_1==EOF) ) {
-                    alt66=1;
-                }
-                else if ( (LA66_1==28) ) {
-                    alt66=2;
-                }
-                else {
-                    if (state.backtracking>0) {state.failed=true; return ;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("", 66, 1, input);
-
-                    throw nvae;
-                }
-            }
-            else {
-                if (state.backtracking>0) {state.failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("", 66, 0, input);
-
-                throw nvae;
-            }
-            switch (alt66) {
-                case 1 :
-                    // /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 (state.failed) return ;
-
-                    }
-                    break;
-                case 2 :
-                    // /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();
-
-                    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;
-
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 49, typeName_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "typeName"
-
-    public static class type_return extends ParserRuleReturnScope {
-    };
-
-    // $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 ( 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);
-
-            if ( (LA72_0==Identifier) ) {
-                alt72=1;
-            }
-            else if ( ((LA72_0>=55 && LA72_0<=62)) ) {
-                alt72=2;
-            }
-            else {
-                if (state.backtracking>0) {state.failed=true; return retval;}
-                NoViableAltException nvae =
-                    new NoViableAltException("", 72, 0, input);
-
-                throw nvae;
-            }
-            switch (alt72) {
-                case 1 :
-                    // /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 (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;
-                    alt67 = dfa67.predict(input);
-                    switch (alt67) {
-                        case 1 :
-                            // /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();
-
-                            state._fsp--;
-                            if (state.failed) return retval;
-
-                            }
-                            break;
-
-                    }
-
-                    // /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;
-                        alt69 = dfa69.predict(input);
-                        switch (alt69) {
-                    	case 1 :
-                    	    // /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 (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;
-                    	    alt68 = dfa68.predict(input);
-                    	    switch (alt68) {
-                    	        case 1 :
-                    	            // /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();
-
-                    	            state._fsp--;
-                    	            if (state.failed) return retval;
-
-                    	            }
-                    	            break;
-
-                    	    }
-
-
-                    	    }
-                    	    break;
-
-                    	default :
-                    	    break loop69;
-                        }
-                    } while (true);
-
-                    // /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;
-                        alt70 = dfa70.predict(input);
-                        switch (alt70) {
-                    	case 1 :
-                    	    // /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 (state.failed) return retval;
-                    	    match(input,42,FOLLOW_42_in_type1473); if (state.failed) return retval;
-
-                    	    }
-                    	    break;
-
-                    	default :
-                    	    break loop70;
-                        }
-                    } while (true);
-
-
-                    }
-                    break;
-                case 2 :
-                    // /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();
-
-                    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;
-                        alt71 = dfa71.predict(input);
-                        switch (alt71) {
-                    	case 1 :
-                    	    // /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 (state.failed) return retval;
-                    	    match(input,42,FOLLOW_42_in_type1485); if (state.failed) return retval;
-
-                    	    }
-                    	    break;
-
-                    	default :
-                    	    break loop71;
-                        }
-                    } while (true);
-
-
-                    }
-                    break;
-
-            }
-            retval.stop = input.LT(-1);
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 50, type_StartIndex); }
-        }
-        return retval;
-    }
-    // $ANTLR end "type"
-
-
-    // $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 ( 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();
-                state.errorRecovery=false;state.failed=false;
-            }
-            else {
-                if (state.backtracking>0) {state.failed=true; return ;}
-                MismatchedSetException mse = new MismatchedSetException(null,input);
-                throw mse;
-            }
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 51, primitiveType_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "primitiveType"
-
-    public static class variableModifier_return extends ParserRuleReturnScope {
-    };
-
-    // $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 ( 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);
-
-            if ( (LA73_0==49) ) {
-                alt73=1;
-            }
-            else if ( (LA73_0==71) ) {
-                alt73=2;
-            }
-            else {
-                if (state.backtracking>0) {state.failed=true; return retval;}
-                NoViableAltException nvae =
-                    new NoViableAltException("", 73, 0, input);
-
-                throw nvae;
-            }
-            switch (alt73) {
-                case 1 :
-                    // /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 (state.failed) return retval;
-
-                    }
-                    break;
-                case 2 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return retval;
-
-                    }
-                    break;
-
-            }
-            retval.stop = input.LT(-1);
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 52, variableModifier_StartIndex); }
-        }
-        return retval;
-    }
-    // $ANTLR end "variableModifier"
-
-
-    // $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 ( 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 (state.failed) return ;
-            pushFollow(FOLLOW_typeArgument_in_typeArguments1596);
-            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;
-                int LA74_0 = input.LA(1);
-
-                if ( (LA74_0==34) ) {
-                    alt74=1;
-                }
-
-
-                switch (alt74) {
-            	case 1 :
-            	    // /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 (state.failed) return ;
-            	    pushFollow(FOLLOW_typeArgument_in_typeArguments1601);
-            	    typeArgument();
-
-            	    state._fsp--;
-            	    if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop74;
-                }
-            } while (true);
-
-            match(input,35,FOLLOW_35_in_typeArguments1605); if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 53, typeArguments_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "typeArguments"
-
-
-    // $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 ( 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);
-
-            if ( (LA76_0==Identifier||(LA76_0>=55 && LA76_0<=62)) ) {
-                alt76=1;
-            }
-            else if ( (LA76_0==63) ) {
-                alt76=2;
-            }
-            else {
-                if (state.backtracking>0) {state.failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("", 76, 0, input);
-
-                throw nvae;
-            }
-            switch (alt76) {
-                case 1 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 2 :
-                    // /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 (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);
-
-                    if ( (LA75_0==31||LA75_0==64) ) {
-                        alt75=1;
-                    }
-                    switch (alt75) {
-                        case 1 :
-                            // /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();
-                                state.errorRecovery=false;state.failed=false;
-                            }
-                            else {
-                                if (state.backtracking>0) {state.failed=true; return ;}
-                                MismatchedSetException mse = new MismatchedSetException(null,input);
-                                throw mse;
-                            }
-
-                            pushFollow(FOLLOW_type_in_typeArgument1633);
-                            type();
-
-                            state._fsp--;
-                            if (state.failed) return ;
-
-                            }
-                            break;
-
-                    }
-
-
-                    }
-                    break;
-
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 54, typeArgument_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "typeArgument"
-
-
-    // $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 ( 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();
-
-            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;
-                int LA77_0 = input.LA(1);
-
-                if ( (LA77_0==34) ) {
-                    alt77=1;
-                }
-
-
-                switch (alt77) {
-            	case 1 :
-            	    // /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 (state.failed) return ;
-            	    pushFollow(FOLLOW_qualifiedName_in_qualifiedNameList1652);
-            	    qualifiedName();
-
-            	    state._fsp--;
-            	    if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop77;
-                }
-            } while (true);
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 55, qualifiedNameList_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "qualifiedNameList"
-
-
-    // $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 ( 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 (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);
-
-            if ( (LA78_0==Identifier||LA78_0==49||(LA78_0>=55 && LA78_0<=62)||LA78_0==71) ) {
-                alt78=1;
-            }
-            switch (alt78) {
-                case 1 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-
-            match(input,66,FOLLOW_66_in_formalParameters1671); if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 56, formalParameters_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "formalParameters"
-
-
-    // $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 ( 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 )?
-            {
-            // /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;
-                int LA79_0 = input.LA(1);
-
-                if ( (LA79_0==49||LA79_0==71) ) {
-                    alt79=1;
-                }
-
-
-                switch (alt79) {
-            	case 1 :
-            	    // /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();
-
-            	    state._fsp--;
-            	    if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop79;
-                }
-            } while (true);
-
-            pushFollow(FOLLOW_type_in_formalParameterDecls1686);
-            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:510:27: ( formalParameterDeclsRest )?
-            int alt80=2;
-            int LA80_0 = input.LA(1);
-
-            if ( (LA80_0==Identifier||LA80_0==67) ) {
-                alt80=1;
-            }
-            switch (alt80) {
-                case 1 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 57, formalParameterDecls_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "formalParameterDecls"
-
-
-    // $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 ( 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);
-
-            if ( (LA82_0==Identifier) ) {
-                alt82=1;
-            }
-            else if ( (LA82_0==67) ) {
-                alt82=2;
-            }
-            else {
-                if (state.backtracking>0) {state.failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("", 82, 0, input);
-
-                throw nvae;
-            }
-            switch (alt82) {
-                case 1 :
-                    // /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();
-
-                    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);
-
-                    if ( (LA81_0==34) ) {
-                        alt81=1;
-                    }
-                    switch (alt81) {
-                        case 1 :
-                            // /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 (state.failed) return ;
-                            pushFollow(FOLLOW_formalParameterDecls_in_formalParameterDeclsRest1706);
-                            formalParameterDecls();
-
-                            state._fsp--;
-                            if (state.failed) return ;
-
-                            }
-                            break;
-
-                    }
-
-
-                    }
-                    break;
-                case 2 :
-                    // /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 (state.failed) return ;
-                    pushFollow(FOLLOW_variableDeclaratorId_in_formalParameterDeclsRest1717);
-                    variableDeclaratorId();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 58, formalParameterDeclsRest_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "formalParameterDeclsRest"
-
-
-    // $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 ( 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();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 59, methodBody_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "methodBody"
-
-
-    // $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 ( 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 (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;
-                int LA83_0 = input.LA(1);
-
-                if ( (LA83_0==28) ) {
-                    alt83=1;
-                }
-
-
-                switch (alt83) {
-            	case 1 :
-            	    // /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 (state.failed) return ;
-            	    match(input,Identifier,FOLLOW_Identifier_in_qualifiedName1745); if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop83;
-                }
-            } while (true);
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 60, qualifiedName_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "qualifiedName"
-
-
-    // $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 ( 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:
-            case OctalLiteral:
-            case DecimalLiteral:
-                {
-                alt84=1;
-                }
-                break;
-            case FloatingPointLiteral:
-                {
-                alt84=2;
-                }
-                break;
-            case CharacterLiteral:
-                {
-                alt84=3;
-                }
-                break;
-            case StringLiteral:
-                {
-                alt84=4;
-                }
-                break;
-            case 69:
-            case 70:
-                {
-                alt84=5;
-                }
-                break;
-            case 68:
-                {
-                alt84=6;
-                }
-                break;
-            default:
-                if (state.backtracking>0) {state.failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("", 84, 0, input);
-
-                throw nvae;
-            }
-
-            switch (alt84) {
-                case 1 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 2 :
-                    // /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 (state.failed) return ;
-
-                    }
-                    break;
-                case 3 :
-                    // /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 (state.failed) return ;
-
-                    }
-                    break;
-                case 4 :
-                    // /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 (state.failed) return ;
-
-                    }
-                    break;
-                case 5 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 6 :
-                    // /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 (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 61, literal_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "literal"
-
-
-    // $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 ( 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();
-                state.errorRecovery=false;state.failed=false;
-            }
-            else {
-                if (state.backtracking>0) {state.failed=true; return ;}
-                MismatchedSetException mse = new MismatchedSetException(null,input);
-                throw mse;
-            }
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 62, integerLiteral_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "integerLiteral"
-
-
-    // $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 ( 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();
-                state.errorRecovery=false;state.failed=false;
-            }
-            else {
-                if (state.backtracking>0) {state.failed=true; return ;}
-                MismatchedSetException mse = new MismatchedSetException(null,input);
-                throw mse;
-            }
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 63, booleanLiteral_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "booleanLiteral"
-
-
-    // $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 ( 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 )+
-            {
-            // /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;
-                alt85 = dfa85.predict(input);
-                switch (alt85) {
-            	case 1 :
-            	    // /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();
-
-            	    state._fsp--;
-            	    if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    if ( cnt85 >= 1 ) break loop85;
-            	    if (state.backtracking>0) {state.failed=true; return ;}
-                        EarlyExitException eee =
-                            new EarlyExitException(85, input);
-                        throw eee;
-                }
-                cnt85++;
-            } while (true);
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 64, annotations_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "annotations"
-
-
-    // $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 ( 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 (state.failed) return ;
-            pushFollow(FOLLOW_annotationName_in_annotation1907);
-            annotationName();
-
-            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;
-            alt87 = dfa87.predict(input);
-            switch (alt87) {
-                case 1 :
-                    // /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 (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;
-                    alt86 = dfa86.predict(input);
-                    switch (alt86) {
-                        case 1 :
-                            // /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();
-
-                            state._fsp--;
-                            if (state.failed) return ;
-
-                            }
-                            break;
-
-                    }
-
-                    match(input,66,FOLLOW_66_in_annotation1915); if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 65, annotation_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "annotation"
-
-
-    // $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 ( 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 (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;
-                alt88 = dfa88.predict(input);
-                switch (alt88) {
-            	case 1 :
-            	    // /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 (state.failed) return ;
-            	    match(input,Identifier,FOLLOW_Identifier_in_annotationName1934); if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop88;
-                }
-            } while (true);
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 66, annotationName_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "annotationName"
-
-
-    // $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 ( 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();
-
-            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;
-                int LA89_0 = input.LA(1);
-
-                if ( (LA89_0==34) ) {
-                    alt89=1;
-                }
-
-
-                switch (alt89) {
-            	case 1 :
-            	    // /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 (state.failed) return ;
-            	    pushFollow(FOLLOW_elementValuePair_in_elementValuePairs1953);
-            	    elementValuePair();
-
-            	    state._fsp--;
-            	    if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop89;
-                }
-            } while (true);
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 67, elementValuePairs_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "elementValuePairs"
-
-
-    // $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 ( 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
-            {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:565:4: ( Identifier '=' )?
-            int alt90=2;
-            alt90 = dfa90.predict(input);
-            switch (alt90) {
-                case 1 :
-                    // /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 (state.failed) return ;
-                    match(input,44,FOLLOW_44_in_elementValuePair1970); if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-
-            pushFollow(FOLLOW_elementValue_in_elementValuePair1974);
-            elementValue();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 68, elementValuePair_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "elementValuePair"
-
-
-    // $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 ( 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;
-            alt91 = dfa91.predict(input);
-            switch (alt91) {
-                case 1 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 2 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 3 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 69, elementValue_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "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 ( 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 (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;
-            alt93 = dfa93.predict(input);
-            switch (alt93) {
-                case 1 :
-                    // /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();
-
-                    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;
-                        int LA92_0 = input.LA(1);
-
-                        if ( (LA92_0==34) ) {
-                            alt92=1;
-                        }
-
-
-                        switch (alt92) {
-                    	case 1 :
-                    	    // /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 (state.failed) return ;
-                    	    pushFollow(FOLLOW_elementValue_in_elementValueArrayInitializer2020);
-                    	    elementValue();
-
-                    	    state._fsp--;
-                    	    if (state.failed) return ;
-
-                    	    }
-                    	    break;
-
-                    	default :
-                    	    break loop92;
-                        }
-                    } while (true);
-
-
-                    }
-                    break;
-
-            }
-
-            match(input,38,FOLLOW_38_in_elementValueArrayInitializer2027); if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 70, elementValueArrayInitializer_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "elementValueArrayInitializer"
-
-
-    // $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 ( 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 (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();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 71, annotationTypeDeclaration_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "annotationTypeDeclaration"
-
-
-    // $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 ( 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 (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;
-            alt94 = dfa94.predict(input);
-            switch (alt94) {
-                case 1 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-
-            match(input,38,FOLLOW_38_in_annotationTypeBody2064); if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 72, annotationTypeBody_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "annotationTypeBody"
-
-
-    // $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 ( 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 )*
-            {
-            // /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();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
-            // /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;
-                alt95 = dfa95.predict(input);
-                switch (alt95) {
-            	case 1 :
-            	    // /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();
-
-            	    state._fsp--;
-            	    if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop95;
-                }
-            } while (true);
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 73, annotationTypeElementDeclarations_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "annotationTypeElementDeclarations"
-
-
-    // $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 ( 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
-            {
-            // /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;
-                alt96 = dfa96.predict(input);
-                switch (alt96) {
-            	case 1 :
-            	    // /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();
-
-            	    state._fsp--;
-            	    if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop96;
-                }
-            } while (true);
-
-            pushFollow(FOLLOW_annotationTypeElementRest_in_annotationTypeElementDeclaration2100);
-            annotationTypeElementRest();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 74, annotationTypeElementDeclaration_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "annotationTypeElementDeclaration"
-
-
-    // $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 ( 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;
-            alt101 = dfa101.predict(input);
-            switch (alt101) {
-                case 1 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-                    pushFollow(FOLLOW_annotationMethodOrConstantRest_in_annotationTypeElementRest2114);
-                    annotationMethodOrConstantRest();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-                    match(input,25,FOLLOW_25_in_annotationTypeElementRest2116); if (state.failed) return ;
-
-                    }
-                    break;
-                case 2 :
-                    // /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();
-
-                    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;
-                    alt97 = dfa97.predict(input);
-                    switch (alt97) {
-                        case 1 :
-                            // /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 (state.failed) return ;
-
-                            }
-                            break;
-
-                    }
-
-
-                    }
-                    break;
-                case 3 :
-                    // /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();
-
-                    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;
-                    alt98 = dfa98.predict(input);
-                    switch (alt98) {
-                        case 1 :
-                            // /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 (state.failed) return ;
-
-                            }
-                            break;
-
-                    }
-
-
-                    }
-                    break;
-                case 4 :
-                    // /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();
-
-                    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;
-                    alt99 = dfa99.predict(input);
-                    switch (alt99) {
-                        case 1 :
-                            // /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 (state.failed) return ;
-
-                            }
-                            break;
-
-                    }
-
-
-                    }
-                    break;
-                case 5 :
-                    // /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();
-
-                    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;
-                    alt100 = dfa100.predict(input);
-                    switch (alt100) {
-                        case 1 :
-                            // /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 (state.failed) return ;
-
-                            }
-                            break;
-
-                    }
-
-
-                    }
-                    break;
-
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 75, annotationTypeElementRest_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "annotationTypeElementRest"
-
-
-    // $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 ( 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);
-
-            if ( (LA102_0==Identifier) ) {
-                int LA102_1 = input.LA(2);
-
-                if ( (LA102_1==65) ) {
-                    alt102=1;
-                }
-                else if ( (LA102_1==25||LA102_1==34||LA102_1==41||LA102_1==44) ) {
-                    alt102=2;
-                }
-                else {
-                    if (state.backtracking>0) {state.failed=true; return ;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("", 102, 1, input);
-
-                    throw nvae;
-                }
-            }
-            else {
-                if (state.backtracking>0) {state.failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("", 102, 0, input);
-
-                throw nvae;
-            }
-            switch (alt102) {
-                case 1 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 2 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 76, annotationMethodOrConstantRest_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "annotationMethodOrConstantRest"
-
-
-    // $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 ( 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 (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);
-
-            if ( (LA103_0==72) ) {
-                alt103=1;
-            }
-            switch (alt103) {
-                case 1 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 77, annotationMethodRest_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "annotationMethodRest"
-
-
-    // $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 ( 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();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 78, annotationConstantRest_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "annotationConstantRest"
-
-
-    // $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 ( 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 (state.failed) return ;
-            pushFollow(FOLLOW_elementValue_in_defaultValue2229);
-            elementValue();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 79, defaultValue_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "defaultValue"
-
-
-    // $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 ( 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 (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;
-                alt104 = dfa104.predict(input);
-                switch (alt104) {
-            	case 1 :
-            	    // /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();
-
-            	    state._fsp--;
-            	    if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop104;
-                }
-            } while (true);
-
-            match(input,38,FOLLOW_38_in_block2274); if (state.failed) return ;
-
-            }
-
-            if ( state.backtracking==0 ) {
-
-                          this.localVariableLevel--;
-                      
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 80, block_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "block"
-
-
-    // $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 ( 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;
-            alt105 = dfa105.predict(input);
-            switch (alt105) {
-                case 1 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 2 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 3 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 81, blockStatement_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "blockStatement"
-
-    protected static class localVariableDeclaration_scope {
-        JavaLocalDeclarationDescr descr;
-    }
-    protected Stack localVariableDeclaration_stack = new Stack();
-
-
-    // $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();
-        JavaParser.variableModifier_return variableModifier1 = null;
-
-        JavaParser.type_return type2 = null;
-
-
-
-                    ((localVariableDeclaration_scope)localVariableDeclaration_stack.peek()).descr = new JavaLocalDeclarationDescr();
-                
-        try {
-            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 ';'
-            {
-            // /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;
-                int LA106_0 = input.LA(1);
-
-                if ( (LA106_0==49||LA106_0==71) ) {
-                    alt106=1;
-                }
-
-
-                switch (alt106) {
-            	case 1 :
-            	    // /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();
-
-            	    state._fsp--;
-            	    if (state.failed) return ;
-            	    if ( state.backtracking==0 ) {
-            	       
-            	      	        ((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) ); 
-            	      	    
-            	    }
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop106;
-                }
-            } while (true);
-
-            pushFollow(FOLLOW_type_in_localVariableDeclaration2365);
-            type2=type();
-
-            state._fsp--;
-            if (state.failed) return ;
-            if ( state.backtracking==0 ) {
-               
-              	        ((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();
-
-            state._fsp--;
-            if (state.failed) return ;
-            match(input,25,FOLLOW_25_in_localVariableDeclaration2378); if (state.failed) return ;
-
-            }
-
-            if ( state.backtracking==0 ) {
-
-                          localDeclarations.add( ((localVariableDeclaration_scope)localVariableDeclaration_stack.peek()).descr );
-                      
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 82, localVariableDeclaration_StartIndex); }
-            localVariableDeclaration_stack.pop();
-        }
-        return ;
-    }
-    // $ANTLR end "localVariableDeclaration"
-
-
-    // $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 ( 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;
-            alt113 = dfa113.predict(input);
-            switch (alt113) {
-                case 1 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 2 :
-                    // /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 (state.failed) return ;
-                    pushFollow(FOLLOW_expression_in_statement2400);
-                    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);
-
-                    if ( (LA107_0==74) ) {
-                        alt107=1;
-                    }
-                    switch (alt107) {
-                        case 1 :
-                            // /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 (state.failed) return ;
-                            pushFollow(FOLLOW_expression_in_statement2405);
-                            expression();
-
-                            state._fsp--;
-                            if (state.failed) return ;
-
-                            }
-                            break;
-
-                    }
-
-                    match(input,25,FOLLOW_25_in_statement2409); if (state.failed) return ;
-
-                    }
-                    break;
-                case 3 :
-                    // /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 (state.failed) return ;
-                    pushFollow(FOLLOW_parExpression_in_statement2419);
-                    parExpression();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-                    pushFollow(FOLLOW_statement_in_statement2421);
-                    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_Java()) ) {
-                            alt108=1;
-                        }
-                    }
-                    switch (alt108) {
-                        case 1 :
-                            // /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 (state.failed) return ;
-                            pushFollow(FOLLOW_statement_in_statement2433);
-                            statement();
-
-                            state._fsp--;
-                            if (state.failed) return ;
-
-                            }
-                            break;
-
-                    }
-
-
-                    }
-                    break;
-                case 4 :
-                    // /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 (state.failed) return ;
-                    match(input,65,FOLLOW_65_in_statement2445); if (state.failed) return ;
-                    pushFollow(FOLLOW_forControl_in_statement2447);
-                    forControl();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-                    match(input,66,FOLLOW_66_in_statement2449); if (state.failed) return ;
-                    pushFollow(FOLLOW_statement_in_statement2451);
-                    statement();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 5 :
-                    // /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 (state.failed) return ;
-                    pushFollow(FOLLOW_parExpression_in_statement2461);
-                    parExpression();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-                    pushFollow(FOLLOW_statement_in_statement2463);
-                    statement();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 6 :
-                    // /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 (state.failed) return ;
-                    pushFollow(FOLLOW_statement_in_statement2473);
-                    statement();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-                    match(input,78,FOLLOW_78_in_statement2475); if (state.failed) return ;
-                    pushFollow(FOLLOW_parExpression_in_statement2477);
-                    parExpression();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-                    match(input,25,FOLLOW_25_in_statement2479); if (state.failed) return ;
-
-                    }
-                    break;
-                case 7 :
-                    // /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 (state.failed) return ;
-                    pushFollow(FOLLOW_block_in_statement2489);
-                    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);
-
-                    if ( (LA109_0==88) ) {
-                        int LA109_1 = input.LA(2);
-
-                        if ( (LA109_1==65) ) {
-                            int LA109_3 = input.LA(3);
-
-                            if ( (synpred155_Java()) ) {
-                                alt109=1;
-                            }
-                            else if ( (synpred156_Java()) ) {
-                                alt109=2;
-                            }
-                            else {
-                                if (state.backtracking>0) {state.failed=true; return ;}
-                                NoViableAltException nvae =
-                                    new NoViableAltException("", 109, 3, input);
-
-                                throw nvae;
-                            }
-                        }
-                        else {
-                            if (state.backtracking>0) {state.failed=true; return ;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("", 109, 1, input);
-
-                            throw nvae;
-                        }
-                    }
-                    else if ( (LA109_0==81) ) {
-                        alt109=3;
-                    }
-                    else {
-                        if (state.backtracking>0) {state.failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("", 109, 0, input);
-
-                        throw nvae;
-                    }
-                    switch (alt109) {
-                        case 1 :
-                            // /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();
-
-                            state._fsp--;
-                            if (state.failed) return ;
-                            match(input,81,FOLLOW_81_in_statement2501); if (state.failed) return ;
-                            pushFollow(FOLLOW_block_in_statement2503);
-                            block();
-
-                            state._fsp--;
-                            if (state.failed) return ;
-
-                            }
-                            break;
-                        case 2 :
-                            // /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();
-
-                            state._fsp--;
-                            if (state.failed) return ;
-
-                            }
-                            break;
-                        case 3 :
-                            // /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 (state.failed) return ;
-                            pushFollow(FOLLOW_block_in_statement2525);
-                            block();
-
-                            state._fsp--;
-                            if (state.failed) return ;
-
-                            }
-                            break;
-
-                    }
-
-
-                    }
-                    break;
-                case 8 :
-                    // /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 (state.failed) return ;
-                    pushFollow(FOLLOW_parExpression_in_statement2543);
-                    parExpression();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-                    match(input,37,FOLLOW_37_in_statement2545); if (state.failed) return ;
-                    pushFollow(FOLLOW_switchBlockStatementGroups_in_statement2547);
-                    switchBlockStatementGroups();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-                    match(input,38,FOLLOW_38_in_statement2549); if (state.failed) return ;
-
-                    }
-                    break;
-                case 9 :
-                    // /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 (state.failed) return ;
-                    pushFollow(FOLLOW_parExpression_in_statement2559);
-                    parExpression();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-                    pushFollow(FOLLOW_block_in_statement2561);
-                    block();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 10 :
-                    // /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 (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;
-                    alt110 = dfa110.predict(input);
-                    switch (alt110) {
-                        case 1 :
-                            // /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();
-
-                            state._fsp--;
-                            if (state.failed) return ;
-
-                            }
-                            break;
-
-                    }
-
-                    match(input,25,FOLLOW_25_in_statement2574); if (state.failed) return ;
-
-                    }
-                    break;
-                case 11 :
-                    // /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 (state.failed) return ;
-                    pushFollow(FOLLOW_expression_in_statement2584);
-                    expression();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-                    match(input,25,FOLLOW_25_in_statement2586); if (state.failed) return ;
-
-                    }
-                    break;
-                case 12 :
-                    // /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 (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);
-
-                    if ( (LA111_0==Identifier) ) {
-                        alt111=1;
-                    }
-                    switch (alt111) {
-                        case 1 :
-                            // /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 (state.failed) return ;
-
-                            }
-                            break;
-
-                    }
-
-                    match(input,25,FOLLOW_25_in_statement2599); if (state.failed) return ;
-
-                    }
-                    break;
-                case 13 :
-                    // /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 (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);
-
-                    if ( (LA112_0==Identifier) ) {
-                        alt112=1;
-                    }
-                    switch (alt112) {
-                        case 1 :
-                            // /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 (state.failed) return ;
-
-                            }
-                            break;
-
-                    }
-
-                    match(input,25,FOLLOW_25_in_statement2612); if (state.failed) return ;
-
-                    }
-                    break;
-                case 14 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 15 :
-                    // /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 (state.failed) return ;
-
-                    }
-                    break;
-                case 16 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-                    match(input,25,FOLLOW_25_in_statement2643); if (state.failed) return ;
-
-                    }
-                    break;
-                case 17 :
-                    // /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 (state.failed) return ;
-                    match(input,74,FOLLOW_74_in_statement2653); if (state.failed) return ;
-                    pushFollow(FOLLOW_statement_in_statement2655);
-                    statement();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 83, statement_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "statement"
-
-
-    // $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;
-        JavaParser.expression_return e = null;
-
-        JavaParser.parExpression_return parExpression3 = null;
-
-
-
-        	    JavaModifyBlockDescr d = null;
-        	
-        try {
-            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)match(input,87,FOLLOW_87_in_modifyStatement2675); if (state.failed) return ;
-            pushFollow(FOLLOW_parExpression_in_modifyStatement2677);
-            parExpression3=parExpression();
-
-            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 (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;
-            alt115 = dfa115.predict(input);
-            switch (alt115) {
-                case 1 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-                    if ( state.backtracking==0 ) {
-                       d.getExpressions().add( (e!=null?input.toString(e.start,e.stop):null) ); 
-                    }
-                    // /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;
-                        int LA114_0 = input.LA(1);
-
-                        if ( (LA114_0==34) ) {
-                            alt114=1;
-                        }
-
-
-                        switch (alt114) {
-                    	case 1 :
-                    	    // /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 (state.failed) return ;
-                    	    pushFollow(FOLLOW_expression_in_modifyStatement2709);
-                    	    e=expression();
-
-                    	    state._fsp--;
-                    	    if (state.failed) return ;
-                    	    if ( state.backtracking==0 ) {
-                    	       d.getExpressions().add( (e!=null?input.toString(e.start,e.stop):null) ); 
-                    	    }
-
-                    	    }
-                    	    break;
-
-                    	default :
-                    	    break loop114;
-                        }
-                    } while (true);
-
-
-                    }
-                    break;
-
-            }
-
-            c=(Token)match(input,38,FOLLOW_38_in_modifyStatement2728); if (state.failed) return ;
-            if ( state.backtracking==0 ) {
-
-                          d.setEnd( ((CommonToken)c).getStopIndex() ); 
-                      
-            }
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 84, modifyStatement_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "modifyStatement"
-
-
-    // $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 ( 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();
-
-            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;
-                alt116 = dfa116.predict(input);
-                switch (alt116) {
-            	case 1 :
-            	    // /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();
-
-            	    state._fsp--;
-            	    if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop116;
-                }
-            } while (true);
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 85, catches_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "catches"
-
-
-    // $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 ( 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 (state.failed) return ;
-            match(input,65,FOLLOW_65_in_catchClause2771); if (state.failed) return ;
-            pushFollow(FOLLOW_formalParameter_in_catchClause2773);
-            formalParameter();
-
-            state._fsp--;
-            if (state.failed) return ;
-            match(input,66,FOLLOW_66_in_catchClause2775); if (state.failed) return ;
-            pushFollow(FOLLOW_block_in_catchClause2777);
-            block();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 86, catchClause_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "catchClause"
-
-
-    // $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 ( 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
-            {
-            // /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;
-                int LA117_0 = input.LA(1);
-
-                if ( (LA117_0==49||LA117_0==71) ) {
-                    alt117=1;
-                }
-
-
-                switch (alt117) {
-            	case 1 :
-            	    // /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();
-
-            	    state._fsp--;
-            	    if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop117;
-                }
-            } while (true);
-
-            pushFollow(FOLLOW_type_in_formalParameter2791);
-            type();
-
-            state._fsp--;
-            if (state.failed) return ;
-            pushFollow(FOLLOW_variableDeclaratorId_in_formalParameter2793);
-            variableDeclaratorId();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 87, formalParameter_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "formalParameter"
-
-
-    // $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 ( 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 )*
-            {
-            // /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;
-                int LA118_0 = input.LA(1);
-
-                if ( (LA118_0==72||LA118_0==89) ) {
-                    alt118=1;
-                }
-
-
-                switch (alt118) {
-            	case 1 :
-            	    // /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();
-
-            	    state._fsp--;
-            	    if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop118;
-                }
-            } while (true);
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 88, switchBlockStatementGroups_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "switchBlockStatementGroups"
-
-
-    // $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 ( 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();
-
-            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;
-                alt119 = dfa119.predict(input);
-                switch (alt119) {
-            	case 1 :
-            	    // /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();
-
-            	    state._fsp--;
-            	    if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop119;
-                }
-            } while (true);
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 89, switchBlockStatementGroup_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "switchBlockStatementGroup"
-
-
-    // $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 ( 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;
-            alt120 = dfa120.predict(input);
-            switch (alt120) {
-                case 1 :
-                    // /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 (state.failed) return ;
-                    pushFollow(FOLLOW_constantExpression_in_switchLabel2838);
-                    constantExpression();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-                    match(input,74,FOLLOW_74_in_switchLabel2840); if (state.failed) return ;
-
-                    }
-                    break;
-                case 2 :
-                    // /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 (state.failed) return ;
-                    pushFollow(FOLLOW_enumConstantName_in_switchLabel2849);
-                    enumConstantName();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-                    match(input,74,FOLLOW_74_in_switchLabel2851); if (state.failed) return ;
-
-                    }
-                    break;
-                case 3 :
-                    // /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 (state.failed) return ;
-                    match(input,74,FOLLOW_74_in_switchLabel2860); if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 90, switchLabel_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "switchLabel"
-
-
-    // $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 ( 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 )*
-            {
-            // /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;
-                int LA121_0 = input.LA(1);
-
-                if ( (LA121_0==34) ) {
-                    alt121=1;
-                }
-
-
-                switch (alt121) {
-            	case 1 :
-            	    // /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 (state.failed) return ;
-            	    pushFollow(FOLLOW_statementExpression_in_moreStatementExpressions2875);
-            	    statementExpression();
-
-            	    state._fsp--;
-            	    if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop121;
-                }
-            } while (true);
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 91, moreStatementExpressions_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "moreStatementExpressions"
-
-
-    // $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 ( 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;
-            alt125 = dfa125.predict(input);
-            switch (alt125) {
-                case 1 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 2 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/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 )?
-                    int alt122=2;
-                    alt122 = dfa122.predict(input);
-                    switch (alt122) {
-                        case 1 :
-                            // /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();
-
-                            state._fsp--;
-                            if (state.failed) return ;
-
-                            }
-                            break;
-
-                    }
-
-                    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;
-                    alt123 = dfa123.predict(input);
-                    switch (alt123) {
-                        case 1 :
-                            // /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();
-
-                            state._fsp--;
-                            if (state.failed) return ;
-
-                            }
-                            break;
-
-                    }
-
-                    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;
-                    alt124 = dfa124.predict(input);
-                    switch (alt124) {
-                        case 1 :
-                            // /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();
-
-                            state._fsp--;
-                            if (state.failed) return ;
-
-                            }
-                            break;
-
-                    }
-
-
-                    }
-                    break;
-
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 92, forControl_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "forControl"
-
-
-    // $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 ( 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;
-            alt127 = dfa127.predict(input);
-            switch (alt127) {
-                case 1 :
-                    // /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 )*
-                    loop126:
-                    do {
-                        int alt126=2;
-                        int LA126_0 = input.LA(1);
-
-                        if ( (LA126_0==49||LA126_0==71) ) {
-                            alt126=1;
-                        }
-
-
-                        switch (alt126) {
-                    	case 1 :
-                    	    // /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();
-
-                    	    state._fsp--;
-                    	    if (state.failed) return ;
-
-                    	    }
-                    	    break;
-
-                    	default :
-                    	    break loop126;
-                        }
-                    } while (true);
-
-                    pushFollow(FOLLOW_type_in_forInit2952);
-                    type();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-                    pushFollow(FOLLOW_variableDeclarators_in_forInit2954);
-                    variableDeclarators();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 2 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-            if ( state.backtracking==0 ) {
-
-                          this.localVariableLevel--;
-                      
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 93, forInit_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "forInit"
-
-
-    // $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 ( 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
-            {
-            // /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;
-                int LA128_0 = input.LA(1);
-
-                if ( (LA128_0==49||LA128_0==71) ) {
-                    alt128=1;
-                }
-
-
-                switch (alt128) {
-            	case 1 :
-            	    // /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();
-
-            	    state._fsp--;
-            	    if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop128;
-                }
-            } while (true);
-
-            pushFollow(FOLLOW_type_in_forVarControl2974);
-            type();
-
-            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();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 94, forVarControl_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "forVarControl"
-
-
-    // $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 ( 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();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 95, forUpdate_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "forUpdate"
-
-    public static class parExpression_return extends ParserRuleReturnScope {
-    };
-
-    // $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 ( 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 (state.failed) return retval;
-            pushFollow(FOLLOW_expression_in_parExpression3006);
-            expression();
-
-            state._fsp--;
-            if (state.failed) return retval;
-            match(input,66,FOLLOW_66_in_parExpression3008); if (state.failed) return retval;
-
-            }
-
-            retval.stop = input.LT(-1);
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 96, parExpression_StartIndex); }
-        }
-        return retval;
-    }
-    // $ANTLR end "parExpression"
-
-
-    // $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 ( 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();
-
-            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;
-                int LA129_0 = input.LA(1);
-
-                if ( (LA129_0==34) ) {
-                    alt129=1;
-                }
-
-
-                switch (alt129) {
-            	case 1 :
-            	    // /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 (state.failed) return ;
-            	    pushFollow(FOLLOW_expression_in_expressionList3030);
-            	    expression();
-
-            	    state._fsp--;
-            	    if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop129;
-                }
-            } while (true);
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 97, expressionList_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "expressionList"
-
-
-    // $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 ( 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();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 98, statementExpression_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "statementExpression"
-
-
-    // $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 ( 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();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 99, constantExpression_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "constantExpression"
-
-    public static class expression_return extends ParserRuleReturnScope {
-    };
-
-    // $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 ( 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();
-
-            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;
-            alt130 = dfa130.predict(input);
-            switch (alt130) {
-                case 1 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return retval;
-                    pushFollow(FOLLOW_expression_in_expression3075);
-                    expression();
-
-                    state._fsp--;
-                    if (state.failed) return retval;
-
-                    }
-                    break;
-
-            }
-
-
-            }
-
-            retval.stop = input.LT(-1);
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 100, expression_StartIndex); }
-        }
-        return retval;
-    }
-    // $ANTLR end "expression"
-
-
-    // $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 ( 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;
-            alt131 = dfa131.predict(input);
-            switch (alt131) {
-                case 1 :
-                    // /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 (state.failed) return ;
-
-                    }
-                    break;
-                case 2 :
-                    // /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 (state.failed) return ;
-
-                    }
-                    break;
-                case 3 :
-                    // /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 (state.failed) return ;
-
-                    }
-                    break;
-                case 4 :
-                    // /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 (state.failed) return ;
-
-                    }
-                    break;
-                case 5 :
-                    // /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 (state.failed) return ;
-
-                    }
-                    break;
-                case 6 :
-                    // /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 (state.failed) return ;
-
-                    }
-                    break;
-                case 7 :
-                    // /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 (state.failed) return ;
-
-                    }
-                    break;
-                case 8 :
-                    // /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 (state.failed) return ;
-
-                    }
-                    break;
-                case 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 (state.failed) return ;
-
-                    }
-                    break;
-                case 10 :
-                    // /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 (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 :
-                    // /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 (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 :
-                    // /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 (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;
-
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 101, assignmentOperator_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "assignmentOperator"
-
-
-    // $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 ( 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();
-
-            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;
-            alt132 = dfa132.predict(input);
-            switch (alt132) {
-                case 1 :
-                    // /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 (state.failed) return ;
-                    pushFollow(FOLLOW_expression_in_conditionalExpression3235);
-                    expression();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-                    match(input,74,FOLLOW_74_in_conditionalExpression3237); if (state.failed) return ;
-                    pushFollow(FOLLOW_expression_in_conditionalExpression3239);
-                    expression();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 102, conditionalExpression_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "conditionalExpression"
-
-
-    // $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 ( 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();
-
-            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;
-                alt133 = dfa133.predict(input);
-                switch (alt133) {
-            	case 1 :
-            	    // /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 (state.failed) return ;
-            	    pushFollow(FOLLOW_conditionalAndExpression_in_conditionalOrExpression3264);
-            	    conditionalAndExpression();
-
-            	    state._fsp--;
-            	    if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop133;
-                }
-            } while (true);
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 103, conditionalOrExpression_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "conditionalOrExpression"
-
-
-    // $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 ( 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();
-
-            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;
-                alt134 = dfa134.predict(input);
-                switch (alt134) {
-            	case 1 :
-            	    // /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 (state.failed) return ;
-            	    pushFollow(FOLLOW_inclusiveOrExpression_in_conditionalAndExpression3289);
-            	    inclusiveOrExpression();
-
-            	    state._fsp--;
-            	    if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop134;
-                }
-            } while (true);
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 104, conditionalAndExpression_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "conditionalAndExpression"
-
-
-    // $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 ( 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();
-
-            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;
-                alt135 = dfa135.predict(input);
-                switch (alt135) {
-            	case 1 :
-            	    // /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 (state.failed) return ;
-            	    pushFollow(FOLLOW_exclusiveOrExpression_in_inclusiveOrExpression3314);
-            	    exclusiveOrExpression();
-
-            	    state._fsp--;
-            	    if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop135;
-                }
-            } while (true);
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 105, inclusiveOrExpression_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "inclusiveOrExpression"
-
-
-    // $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 ( 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();
-
-            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;
-                alt136 = dfa136.predict(input);
-                switch (alt136) {
-            	case 1 :
-            	    // /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 (state.failed) return ;
-            	    pushFollow(FOLLOW_andExpression_in_exclusiveOrExpression3339);
-            	    andExpression();
-
-            	    state._fsp--;
-            	    if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop136;
-                }
-            } while (true);
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 106, exclusiveOrExpression_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "exclusiveOrExpression"
-
-
-    // $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 ( 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();
-
-            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;
-                alt137 = dfa137.predict(input);
-                switch (alt137) {
-            	case 1 :
-            	    // /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 (state.failed) return ;
-            	    pushFollow(FOLLOW_equalityExpression_in_andExpression3364);
-            	    equalityExpression();
-
-            	    state._fsp--;
-            	    if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop137;
-                }
-            } while (true);
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 107, andExpression_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "andExpression"
-
-
-    // $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 ( 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();
-
-            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;
-                alt138 = dfa138.predict(input);
-                switch (alt138) {
-            	case 1 :
-            	    // /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();
-            	        state.errorRecovery=false;state.failed=false;
-            	    }
-            	    else {
-            	        if (state.backtracking>0) {state.failed=true; return ;}
-            	        MismatchedSetException mse = new MismatchedSetException(null,input);
-            	        throw mse;
-            	    }
-
-            	    pushFollow(FOLLOW_instanceOfExpression_in_equalityExpression3395);
-            	    instanceOfExpression();
-
-            	    state._fsp--;
-            	    if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop138;
-                }
-            } while (true);
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 108, equalityExpression_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "equalityExpression"
-
-
-    // $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 ( 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();
-
-            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;
-            alt139 = dfa139.predict(input);
-            switch (alt139) {
-                case 1 :
-                    // /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 (state.failed) return ;
-                    pushFollow(FOLLOW_type_in_instanceOfExpression3419);
-                    type();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 109, instanceOfExpression_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "instanceOfExpression"
-
-
-    // $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 ( 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();
-
-            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;
-                alt140 = dfa140.predict(input);
-                switch (alt140) {
-            	case 1 :
-            	    // /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();
-
-            	    state._fsp--;
-            	    if (state.failed) return ;
-            	    pushFollow(FOLLOW_shiftExpression_in_relationalExpression3443);
-            	    shiftExpression();
-
-            	    state._fsp--;
-            	    if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop140;
-                }
-            } while (true);
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 110, relationalExpression_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "relationalExpression"
-
-
-    // $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 ( 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: ( '<' '=' | '>' '=' | '<' | '>' )
-            {
-            // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:837:4: ( '<' '=' | '>' '=' | '<' | '>' )
-            int alt141=4;
-            alt141 = dfa141.predict(input);
-            switch (alt141) {
-                case 1 :
-                    // /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 (state.failed) return ;
-                    match(input,44,FOLLOW_44_in_relationalOp3461); if (state.failed) return ;
-
-                    }
-                    break;
-                case 2 :
-                    // /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 (state.failed) return ;
-                    match(input,44,FOLLOW_44_in_relationalOp3467); if (state.failed) return ;
-
-                    }
-                    break;
-                case 3 :
-                    // /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 (state.failed) return ;
-
-                    }
-                    break;
-                case 4 :
-                    // /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 (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 111, relationalOp_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "relationalOp"
-
-
-    // $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 ( 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();
-
-            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;
-                alt142 = dfa142.predict(input);
-                switch (alt142) {
-            	case 1 :
-            	    // /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();
-
-            	    state._fsp--;
-            	    if (state.failed) return ;
-            	    pushFollow(FOLLOW_additiveExpression_in_shiftExpression3498);
-            	    additiveExpression();
-
-            	    state._fsp--;
-            	    if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop142;
-                }
-            } while (true);
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 112, shiftExpression_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "shiftExpression"
-
-
-    // $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 ( 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: ( '<' '<' | '>' '>' '>' | '>' '>' )
-            {
-            // /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);
-
-            if ( (LA143_0==33) ) {
-                alt143=1;
-            }
-            else if ( (LA143_0==35) ) {
-                int LA143_2 = input.LA(2);
-
-                if ( (LA143_2==35) ) {
-                    int LA143_3 = input.LA(3);
-
-                    if ( (synpred214_Java()) ) {
-                        alt143=2;
-                    }
-                    else if ( (true) ) {
-                        alt143=3;
-                    }
-                    else {
-                        if (state.backtracking>0) {state.failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("", 143, 3, input);
-
-                        throw nvae;
-                    }
-                }
-                else {
-                    if (state.backtracking>0) {state.failed=true; return ;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("", 143, 2, input);
-
-                    throw nvae;
-                }
-            }
-            else {
-                if (state.backtracking>0) {state.failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("", 143, 0, input);
-
-                throw nvae;
-            }
-            switch (alt143) {
-                case 1 :
-                    // /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 (state.failed) return ;
-                    match(input,33,FOLLOW_33_in_shiftOp3524); if (state.failed) return ;
-
-                    }
-                    break;
-                case 2 :
-                    // /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 (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 :
-                    // /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 (state.failed) return ;
-                    match(input,35,FOLLOW_35_in_shiftOp3538); if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 113, shiftOp_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "shiftOp"
-
-
-    // $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 ( 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();
-
-            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;
-                alt144 = dfa144.predict(input);
-                switch (alt144) {
-            	case 1 :
-            	    // /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();
-            	        state.errorRecovery=false;state.failed=false;
-            	    }
-            	    else {
-            	        if (state.backtracking>0) {state.failed=true; return ;}
-            	        MismatchedSetException mse = new MismatchedSetException(null,input);
-            	        throw mse;
-            	    }
-
-            	    pushFollow(FOLLOW_multiplicativeExpression_in_additiveExpression3568);
-            	    multiplicativeExpression();
-
-            	    state._fsp--;
-            	    if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop144;
-                }
-            } while (true);
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 114, additiveExpression_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "additiveExpression"
-
-
-    // $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 ( 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();
-
-            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;
-                alt145 = dfa145.predict(input);
-                switch (alt145) {
-            	case 1 :
-            	    // /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();
-            	        state.errorRecovery=false;state.failed=false;
-            	    }
-            	    else {
-            	        if (state.backtracking>0) {state.failed=true; return ;}
-            	        MismatchedSetException mse = new MismatchedSetException(null,input);
-            	        throw mse;
-            	    }
-
-            	    pushFollow(FOLLOW_unaryExpression_in_multiplicativeExpression3605);
-            	    unaryExpression();
-
-            	    state._fsp--;
-            	    if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop145;
-                }
-            } while (true);
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 115, multiplicativeExpression_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "multiplicativeExpression"
-
-
-    // $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 ( 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;
-            alt146 = dfa146.predict(input);
-            switch (alt146) {
-                case 1 :
-                    // /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 (state.failed) return ;
-                    pushFollow(FOLLOW_unaryExpression_in_unaryExpression3627);
-                    unaryExpression();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 2 :
-                    // /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 (state.failed) return ;
-                    pushFollow(FOLLOW_unaryExpression_in_unaryExpression3637);
-                    unaryExpression();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 3 :
-                    // /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 (state.failed) return ;
-                    pushFollow(FOLLOW_primary_in_unaryExpression3649);
-                    primary();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 4 :
-                    // /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 (state.failed) return ;
-                    pushFollow(FOLLOW_primary_in_unaryExpression3661);
-                    primary();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 5 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 116, unaryExpression_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "unaryExpression"
-
-
-    // $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 ( 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;
-            alt149 = dfa149.predict(input);
-            switch (alt149) {
-                case 1 :
-                    // /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 (state.failed) return ;
-                    pushFollow(FOLLOW_unaryExpression_in_unaryExpressionNotPlusMinus3692);
-                    unaryExpression();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 2 :
-                    // /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 (state.failed) return ;
-                    pushFollow(FOLLOW_unaryExpression_in_unaryExpressionNotPlusMinus3703);
-                    unaryExpression();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 3 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 4 :
-                    // /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();
-
-                    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;
-                        alt147 = dfa147.predict(input);
-                        switch (alt147) {
-                    	case 1 :
-                    	    // /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();
-
-                    	    state._fsp--;
-                    	    if (state.failed) return ;
-
-                    	    }
-                    	    break;
-
-                    	default :
-                    	    break loop147;
-                        }
-                    } while (true);
-
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:870:27: ( '++' | '--' )?
-                    int alt148=2;
-                    alt148 = dfa148.predict(input);
-                    switch (alt148) {
-                        case 1 :
-                            // /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();
-                                state.errorRecovery=false;state.failed=false;
-                            }
-                            else {
-                                if (state.backtracking>0) {state.failed=true; return ;}
-                                MismatchedSetException mse = new MismatchedSetException(null,input);
-                                throw mse;
-                            }
-
-
-                            }
-                            break;
-
-                    }
-
-
-                    }
-                    break;
-
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 117, unaryExpressionNotPlusMinus_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "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 ( 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;
-            alt151 = dfa151.predict(input);
-            switch (alt151) {
-                case 1 :
-                    // /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 (state.failed) return ;
-                    pushFollow(FOLLOW_primitiveType_in_castExpression3753);
-                    primitiveType();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-                    match(input,66,FOLLOW_66_in_castExpression3755); if (state.failed) return ;
-                    pushFollow(FOLLOW_unaryExpression_in_castExpression3757);
-                    unaryExpression();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 2 :
-                    // /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 (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;
-                    alt150 = dfa150.predict(input);
-                    switch (alt150) {
-                        case 1 :
-                            // /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();
-
-                            state._fsp--;
-                            if (state.failed) return ;
-
-                            }
-                            break;
-                        case 2 :
-                            // /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();
-
-                            state._fsp--;
-                            if (state.failed) return ;
-
-                            }
-                            break;
-
-                    }
-
-                    match(input,66,FOLLOW_66_in_castExpression3776); if (state.failed) return ;
-                    pushFollow(FOLLOW_unaryExpressionNotPlusMinus_in_castExpression3778);
-                    unaryExpressionNotPlusMinus();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 118, castExpression_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "castExpression"
-
-
-    // $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 ( 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;
-            alt158 = dfa158.predict(input);
-            switch (alt158) {
-                case 1 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 2 :
-                    // /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();
-
-                    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);
-
-                    if ( (LA152_0==Identifier||LA152_0==64) ) {
-                        alt152=1;
-                    }
-                    else if ( (LA152_0==113) ) {
-                        alt152=2;
-                    }
-                    else {
-                        if (state.backtracking>0) {state.failed=true; return ;}
-                        NoViableAltException nvae =
-                            new NoViableAltException("", 152, 0, input);
-
-                        throw nvae;
-                    }
-                    switch (alt152) {
-                        case 1 :
-                            // /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();
-
-                            state._fsp--;
-                            if (state.failed) return ;
-
-                            }
-                            break;
-                        case 2 :
-                            // /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 (state.failed) return ;
-                            pushFollow(FOLLOW_arguments_in_primary3822);
-                            arguments();
-
-                            state._fsp--;
-                            if (state.failed) return ;
-
-                            }
-                            break;
-
-                    }
-
-
-                    }
-                    break;
-                case 3 :
-                    // /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 (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;
-                        alt153 = dfa153.predict(input);
-                        switch (alt153) {
-                    	case 1 :
-                    	    // /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 (state.failed) return ;
-                    	    match(input,Identifier,FOLLOW_Identifier_in_primary3838); if (state.failed) return ;
-
-                    	    }
-                    	    break;
-
-                    	default :
-                    	    break loop153;
-                        }
-                    } while (true);
-
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:882:34: ( identifierSuffix )?
-                    int alt154=2;
-                    alt154 = dfa154.predict(input);
-                    switch (alt154) {
-                        case 1 :
-                            // /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();
-
-                            state._fsp--;
-                            if (state.failed) return ;
-
-                            }
-                            break;
-
-                    }
-
-
-                    }
-                    break;
-                case 4 :
-                    // /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 (state.failed) return ;
-                    pushFollow(FOLLOW_superSuffix_in_primary3857);
-                    superSuffix();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 5 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 6 :
-                    // /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 (state.failed) return ;
-                    pushFollow(FOLLOW_creator_in_primary3879);
-                    creator();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 7 :
-                    // /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)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) );  
-                    }
-                    // /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;
-                        alt155 = dfa155.predict(input);
-                        switch (alt155) {
-                    	case 1 :
-                    	    // /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 (state.failed) return ;
-                    	    match(input,Identifier,FOLLOW_Identifier_in_primary3898); if (state.failed) return ;
-
-                    	    }
-                    	    break;
-
-                    	default :
-                    	    break loop155;
-                        }
-                    } while (true);
-
-                    // /Users/porcelli/Documents/dev/drools-trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g:886:144: ( identifierSuffix )?
-                    int alt156=2;
-                    alt156 = dfa156.predict(input);
-                    switch (alt156) {
-                        case 1 :
-                            // /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();
-
-                            state._fsp--;
-                            if (state.failed) return ;
-
-                            }
-                            break;
-
-                    }
-
-
-                    }
-                    break;
-                case 8 :
-                    // /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();
-
-                    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;
-                        int LA157_0 = input.LA(1);
-
-                        if ( (LA157_0==41) ) {
-                            alt157=1;
-                        }
-
-
-                        switch (alt157) {
-                    	case 1 :
-                    	    // /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 (state.failed) return ;
-                    	    match(input,42,FOLLOW_42_in_primary3920); if (state.failed) return ;
-
-                    	    }
-                    	    break;
-
-                    	default :
-                    	    break loop157;
-                        }
-                    } while (true);
-
-                    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 :
-                    // /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 (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;
-
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 119, primary_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "primary"
-
-
-    // $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 ( 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;
-            alt162 = dfa162.predict(input);
-            switch (alt162) {
-                case 1 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/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: ( '[' ']' )+
-                    int cnt159=0;
-                    loop159:
-                    do {
-                        int alt159=2;
-                        int LA159_0 = input.LA(1);
-
-                        if ( (LA159_0==41) ) {
-                            alt159=1;
-                        }
-
-
-                        switch (alt159) {
-                    	case 1 :
-                    	    // /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 (state.failed) return ;
-                    	    match(input,42,FOLLOW_42_in_identifierSuffix3954); if (state.failed) return ;
-
-                    	    }
-                    	    break;
-
-                    	default :
-                    	    if ( cnt159 >= 1 ) break loop159;
-                    	    if (state.backtracking>0) {state.failed=true; return ;}
-                                EarlyExitException eee =
-                                    new EarlyExitException(159, input);
-                                throw eee;
-                        }
-                        cnt159++;
-                    } while (true);
-
-                    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 :
-                    // /Users/porcelli/Documents/dev/drools-trunk/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;
-                        alt160 = dfa160.predict(input);
-                        switch (alt160) {
-                    	case 1 :
-                    	    // /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 (state.failed) return ;
-                    	    pushFollow(FOLLOW_expression_in_identifierSuffix3968);
-                    	    expression();
-
-                    	    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 (state.backtracking>0) {state.failed=true; return ;}
-                                EarlyExitException eee =
-                                    new EarlyExitException(160, input);
-                                throw eee;
-                        }
-                        cnt160++;
-                    } while (true);
-
-
-                    }
-                    break;
-                case 3 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 4 :
-                    // /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 (state.failed) return ;
-                    match(input,30,FOLLOW_30_in_identifierSuffix3995); if (state.failed) return ;
-
-                    }
-                    break;
-                case 5 :
-                    // /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 (state.failed) return ;
-                    pushFollow(FOLLOW_explicitGenericInvocation_in_identifierSuffix4007);
-                    explicitGenericInvocation();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 6 :
-                    // /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 (state.failed) return ;
-                    match(input,113,FOLLOW_113_in_identifierSuffix4019); if (state.failed) return ;
-
-                    }
-                    break;
-                case 7 :
-                    // /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 (state.failed) return ;
-                    match(input,64,FOLLOW_64_in_identifierSuffix4031); if (state.failed) return ;
-                    pushFollow(FOLLOW_arguments_in_identifierSuffix4033);
-                    arguments();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 8 :
-                    // /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 (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);
-
-                    if ( (LA161_0==33) ) {
-                        alt161=1;
-                    }
-                    switch (alt161) {
-                        case 1 :
-                            // /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();
-
-                            state._fsp--;
-                            if (state.failed) return ;
-
-                            }
-                            break;
-
-                    }
-
-                    pushFollow(FOLLOW_innerCreator_in_identifierSuffix4052);
-                    innerCreator();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 120, identifierSuffix_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "identifierSuffix"
-
-
-    // $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 ( 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 )
-            {
-            // /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);
-
-            if ( (LA163_0==33) ) {
-                alt163=1;
-            }
-            switch (alt163) {
-                case 1 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-
-            pushFollow(FOLLOW_createdName_in_creator4067);
-            createdName();
-
-            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);
-
-            if ( (LA164_0==41) ) {
-                alt164=1;
-            }
-            else if ( (LA164_0==65) ) {
-                alt164=2;
-            }
-            else {
-                if (state.backtracking>0) {state.failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("", 164, 0, input);
-
-                throw nvae;
-            }
-            switch (alt164) {
-                case 1 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 2 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 121, creator_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "creator"
-
-
-    // $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 ( 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);
-
-            if ( (LA168_0==Identifier) ) {
-                alt168=1;
-            }
-            else if ( ((LA168_0>=55 && LA168_0<=62)) ) {
-                alt168=2;
-            }
-            else {
-                if (state.backtracking>0) {state.failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("", 168, 0, input);
-
-                throw nvae;
-            }
-            switch (alt168) {
-                case 1 :
-                    // /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 (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);
-
-                    if ( (LA165_0==33) ) {
-                        alt165=1;
-                    }
-                    switch (alt165) {
-                        case 1 :
-                            // /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();
-
-                            state._fsp--;
-                            if (state.failed) return ;
-
-                            }
-                            break;
-
-                    }
-
-                    // /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;
-                        int LA167_0 = input.LA(1);
-
-                        if ( (LA167_0==28) ) {
-                            alt167=1;
-                        }
-
-
-                        switch (alt167) {
-                    	case 1 :
-                    	    // /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 (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);
-
-                    	    if ( (LA166_0==33) ) {
-                    	        alt166=1;
-                    	    }
-                    	    switch (alt166) {
-                    	        case 1 :
-                    	            // /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();
-
-                    	            state._fsp--;
-                    	            if (state.failed) return ;
-
-                    	            }
-                    	            break;
-
-                    	    }
-
-
-                    	    }
-                    	    break;
-
-                    	default :
-                    	    break loop167;
-                        }
-                    } while (true);
-
-
-                    }
-                    break;
-                case 2 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 122, createdName_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "createdName"
-
-
-    // $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 ( 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 (state.failed) return ;
-            pushFollow(FOLLOW_classCreatorRest_in_innerCreator4137);
-            classCreatorRest();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 123, innerCreator_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "innerCreator"
-
-
-    // $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 ( 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 (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;
-            alt172 = dfa172.predict(input);
-            switch (alt172) {
-                case 1 :
-                    // /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 (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;
-                        int LA169_0 = input.LA(1);
-
-                        if ( (LA169_0==41) ) {
-                            alt169=1;
-                        }
-
-
-                        switch (alt169) {
-                    	case 1 :
-                    	    // /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 (state.failed) return ;
-                    	    match(input,42,FOLLOW_42_in_arrayCreatorRest4167); if (state.failed) return ;
-
-                    	    }
-                    	    break;
-
-                    	default :
-                    	    break loop169;
-                        }
-                    } while (true);
-
-                    pushFollow(FOLLOW_arrayInitializer_in_arrayCreatorRest4171);
-                    arrayInitializer();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 2 :
-                    // /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();
-
-                    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;
-                        alt170 = dfa170.predict(input);
-                        switch (alt170) {
-                    	case 1 :
-                    	    // /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 (state.failed) return ;
-                    	    pushFollow(FOLLOW_expression_in_arrayCreatorRest4192);
-                    	    expression();
-
-                    	    state._fsp--;
-                    	    if (state.failed) return ;
-                    	    match(input,42,FOLLOW_42_in_arrayCreatorRest4194); if (state.failed) return ;
-
-                    	    }
-                    	    break;
-
-                    	default :
-                    	    break loop170;
-                        }
-                    } while (true);
-
-                    // /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;
-                        alt171 = dfa171.predict(input);
-                        switch (alt171) {
-                    	case 1 :
-                    	    // /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 (state.failed) return ;
-                    	    match(input,42,FOLLOW_42_in_arrayCreatorRest4201); if (state.failed) return ;
-
-                    	    }
-                    	    break;
-
-                    	default :
-                    	    break loop171;
-                        }
-                    } while (true);
-
-
-                    }
-                    break;
-
-            }
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 124, arrayCreatorRest_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "arrayCreatorRest"
-
-
-    // $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 ( 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();
-
-            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;
-            alt173 = dfa173.predict(input);
-            switch (alt173) {
-                case 1 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 125, classCreatorRest_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "classCreatorRest"
-
-
-    // $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 ( 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();
-
-            state._fsp--;
-            if (state.failed) return ;
-            pushFollow(FOLLOW_explicitGenericInvocationSuffix_in_explicitGenericInvocation4241);
-            explicitGenericInvocationSuffix();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 126, explicitGenericInvocation_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "explicitGenericInvocation"
-
-
-    // $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 ( 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 (state.failed) return ;
-            pushFollow(FOLLOW_typeList_in_nonWildcardTypeArguments4255);
-            typeList();
-
-            state._fsp--;
-            if (state.failed) return ;
-            match(input,35,FOLLOW_35_in_nonWildcardTypeArguments4257); if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 127, nonWildcardTypeArguments_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "nonWildcardTypeArguments"
-
-
-    // $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 ( 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);
-
-            if ( (LA174_0==64) ) {
-                alt174=1;
-            }
-            else if ( (LA174_0==Identifier) ) {
-                alt174=2;
-            }
-            else {
-                if (state.backtracking>0) {state.failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("", 174, 0, input);
-
-                throw nvae;
-            }
-            switch (alt174) {
-                case 1 :
-                    // /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 (state.failed) return ;
-                    pushFollow(FOLLOW_superSuffix_in_explicitGenericInvocationSuffix4271);
-                    superSuffix();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 2 :
-                    // /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 (state.failed) return ;
-                    pushFollow(FOLLOW_arguments_in_explicitGenericInvocationSuffix4280);
-                    arguments();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 128, explicitGenericInvocationSuffix_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "explicitGenericInvocationSuffix"
-
-
-    // $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 ( 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);
-
-            if ( (LA177_0==28) ) {
-                switch ( input.LA(2) ) {
-                case Identifier:
-                    {
-                    alt177=1;
-                    }
-                    break;
-                case 113:
-                    {
-                    alt177=2;
-                    }
-                    break;
-                case 64:
-                    {
-                    alt177=3;
-                    }
-                    break;
-                case 114:
-                    {
-                    alt177=4;
-                    }
-                    break;
-                default:
-                    if (state.backtracking>0) {state.failed=true; return ;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("", 177, 1, input);
-
-                    throw nvae;
-                }
-
-            }
-            else if ( (LA177_0==41) ) {
-                alt177=5;
-            }
-            else {
-                if (state.backtracking>0) {state.failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("", 177, 0, input);
-
-                throw nvae;
-            }
-            switch (alt177) {
-                case 1 :
-                    // /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 (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;
-                    alt175 = dfa175.predict(input);
-                    switch (alt175) {
-                        case 1 :
-                            // /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();
-
-                            state._fsp--;
-                            if (state.failed) return ;
-
-                            }
-                            break;
-
-                    }
-
-
-                    }
-                    break;
-                case 2 :
-                    // /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 (state.failed) return ;
-                    match(input,113,FOLLOW_113_in_selector4308); if (state.failed) return ;
-
-                    }
-                    break;
-                case 3 :
-                    // /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 (state.failed) return ;
-                    match(input,64,FOLLOW_64_in_selector4317); if (state.failed) return ;
-                    pushFollow(FOLLOW_superSuffix_in_selector4319);
-                    superSuffix();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 4 :
-                    // /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 (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);
-
-                    if ( (LA176_0==33) ) {
-                        alt176=1;
-                    }
-                    switch (alt176) {
-                        case 1 :
-                            // /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();
-
-                            state._fsp--;
-                            if (state.failed) return ;
-
-                            }
-                            break;
-
-                    }
-
-                    pushFollow(FOLLOW_innerCreator_in_selector4335);
-                    innerCreator();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 5 :
-                    // /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 (state.failed) return ;
-                    pushFollow(FOLLOW_expression_in_selector4344);
-                    expression();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-                    match(input,42,FOLLOW_42_in_selector4346); if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 129, selector_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "selector"
-
-
-    // $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 ( 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);
-
-            if ( (LA179_0==65) ) {
-                alt179=1;
-            }
-            else if ( (LA179_0==28) ) {
-                alt179=2;
-            }
-            else {
-                if (state.backtracking>0) {state.failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("", 179, 0, input);
-
-                throw nvae;
-            }
-            switch (alt179) {
-                case 1 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-                case 2 :
-                    // /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 (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;
-                    alt178 = dfa178.predict(input);
-                    switch (alt178) {
-                        case 1 :
-                            // /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();
-
-                            state._fsp--;
-                            if (state.failed) return ;
-
-                            }
-                            break;
-
-                    }
-
-
-                    }
-                    break;
-
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 130, superSuffix_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "superSuffix"
-
-
-    // $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 ( 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 (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;
-            alt180 = dfa180.predict(input);
-            switch (alt180) {
-                case 1 :
-                    // /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();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
-
-            }
-
-            match(input,66,FOLLOW_66_in_arguments4391); if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-            if ( state.backtracking>0 ) { memoize(input, 131, arguments_StartIndex); }
-        }
-        return ;
-    }
-    // $ANTLR end "arguments"
-
-    // $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_synpred1_Java70);
-        annotations();
-
-        state._fsp--;
-        if (state.failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred1_Java
-
-    // $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_synpred38_Java577);
-        methodDeclaration();
-
-        state._fsp--;
-        if (state.failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred38_Java
-
-    // $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_synpred39_Java582);
-        fieldDeclaration();
-
-        state._fsp--;
-        if (state.failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred39_Java
-
-    // $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_synpred85_Java1389); if (state.failed) return ;
-        match(input,Identifier,FOLLOW_Identifier_in_synpred85_Java1391); if (state.failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred85_Java
-
-    // $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_synpred120_Java1893);
-        annotation();
-
-        state._fsp--;
-        if (state.failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred120_Java
-
-    // $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_synpred135_Java2123);
-        classDeclaration();
-
-        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);
-
-        if ( (LA196_0==25) ) {
-            alt196=1;
-        }
-        switch (alt196) {
-            case 1 :
-                // /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_synpred135_Java2125); if (state.failed) return ;
-
-                }
-                break;
-
-        }
-
-
-        }
-    }
-    // $ANTLR end synpred135_Java
-
-    // $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_synpred137_Java2133);
-        interfaceDeclaration();
-
-        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);
-
-        if ( (LA197_0==25) ) {
-            alt197=1;
-        }
-        switch (alt197) {
-            case 1 :
-                // /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_synpred137_Java2135); if (state.failed) return ;
-
-                }
-                break;
-
-        }
-
-
-        }
-    }
-    // $ANTLR end synpred137_Java
-
-    // $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_synpred139_Java2143);
-        enumDeclaration();
-
-        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);
-
-        if ( (LA198_0==25) ) {
-            alt198=1;
-        }
-        switch (alt198) {
-            case 1 :
-                // /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_synpred139_Java2145); if (state.failed) return ;
-
-                }
-                break;
-
-        }
-
-
-        }
-    }
-    // $ANTLR end synpred139_Java
-
-    // $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_synpred144_Java2286);
-        localVariableDeclaration();
-
-        state._fsp--;
-        if (state.failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred144_Java
-
-    // $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_synpred145_Java2291);
-        classOrInterfaceDeclaration();
-
-        state._fsp--;
-        if (state.failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred145_Java
-
-    // $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_synpred150_Java2431); if (state.failed) return ;
-        pushFollow(FOLLOW_statement_in_synpred150_Java2433);
-        statement();
-
-        state._fsp--;
-        if (state.failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred150_Java
-
-    // $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_synpred155_Java2499);
-        catches();
-
-        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();
-
-        state._fsp--;
-        if (state.failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred155_Java
-
-    // $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_synpred156_Java2513);
-        catches();
-
-        state._fsp--;
-        if (state.failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred156_Java
-
-    // $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_synpred176_Java2836); if (state.failed) return ;
-        pushFollow(FOLLOW_constantExpression_in_synpred176_Java2838);
-        constantExpression();
-
-        state._fsp--;
-        if (state.failed) return ;
-        match(input,74,FOLLOW_74_in_synpred176_Java2840); if (state.failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred176_Java
-
-    // $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_synpred177_Java2847); if (state.failed) return ;
-        pushFollow(FOLLOW_enumConstantName_in_synpred177_Java2849);
-        enumConstantName();
-
-        state._fsp--;
-        if (state.failed) return ;
-        match(input,74,FOLLOW_74_in_synpred177_Java2851); if (state.failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred177_Java
-
-    // $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_synpred179_Java2896);
-        forVarControl();
-
-        state._fsp--;
-        if (state.failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred179_Java
-
-    // $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
-        {
-        // /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;
-            int LA206_0 = input.LA(1);
-
-            if ( (LA206_0==49||LA206_0==71) ) {
-                alt206=1;
-            }
-
-
-            switch (alt206) {
-        	case 1 :
-        	    // /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_synpred184_Java2949);
-        	    variableModifier();
-
-        	    state._fsp--;
-        	    if (state.failed) return ;
-
-        	    }
-        	    break;
-
-        	default :
-        	    break loop206;
-            }
-        } while (true);
-
-        pushFollow(FOLLOW_type_in_synpred184_Java2952);
-        type();
-
-        state._fsp--;
-        if (state.failed) return ;
-        pushFollow(FOLLOW_variableDeclarators_in_synpred184_Java2954);
-        variableDeclarators();
-
-        state._fsp--;
-        if (state.failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred184_Java
-
-    // $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_synpred187_Java3073);
-        assignmentOperator();
-
-        state._fsp--;
-        if (state.failed) return ;
-        pushFollow(FOLLOW_expression_in_synpred187_Java3075);
-        expression();
-
-        state._fsp--;
-        if (state.failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred187_Java
-
-    // $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_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_Java
-
-    // $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_synpred208_Java3441);
-        relationalOp();
-
-        state._fsp--;
-        if (state.failed) return ;
-        pushFollow(FOLLOW_shiftExpression_in_synpred208_Java3443);
-        shiftExpression();
-
-        state._fsp--;
-        if (state.failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred208_Java
-
-    // $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_synpred212_Java3496);
-        shiftOp();
-
-        state._fsp--;
-        if (state.failed) return ;
-        pushFollow(FOLLOW_additiveExpression_in_synpred212_Java3498);
-        additiveExpression();
-
-        state._fsp--;
-        if (state.failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred212_Java
-
-    // $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_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_Java
-
-    // $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_synpred226_Java3713);
-        castExpression();
-
-        state._fsp--;
-        if (state.failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred226_Java
-
-    // $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_synpred230_Java3751); if (state.failed) return ;
-        pushFollow(FOLLOW_primitiveType_in_synpred230_Java3753);
-        primitiveType();
-
-        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();
-
-        state._fsp--;
-        if (state.failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred230_Java
-
-    // $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_synpred231_Java3769);
-        type();
-
-        state._fsp--;
-        if (state.failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred231_Java
-
-    // $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_synpred235_Java3836); if (state.failed) return ;
-        match(input,Identifier,FOLLOW_Identifier_in_synpred235_Java3838); if (state.failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred235_Java
-
-    // $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_synpred236_Java3843);
-        identifierSuffix();
-
-        state._fsp--;
-        if (state.failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred236_Java
-
-    // $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_synpred241_Java3896); if (state.failed) return ;
-        match(input,Identifier,FOLLOW_Identifier_in_synpred241_Java3898); if (state.failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred241_Java
-
-    // $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_synpred242_Java3903);
-        identifierSuffix();
-
-        state._fsp--;
-        if (state.failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred242_Java
-
-    // $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_synpred248_Java3966); if (state.failed) return ;
-        pushFollow(FOLLOW_expression_in_synpred248_Java3968);
-        expression();
-
-        state._fsp--;
-        if (state.failed) return ;
-        match(input,42,FOLLOW_42_in_synpred248_Java3970); if (state.failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred248_Java
-
-    // $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_synpred264_Java4190); if (state.failed) return ;
-        pushFollow(FOLLOW_expression_in_synpred264_Java4192);
-        expression();
-
-        state._fsp--;
-        if (state.failed) return ;
-        match(input,42,FOLLOW_42_in_synpred264_Java4194); if (state.failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred264_Java
-
-    // Delegated rules
-
-    public final boolean synpred156_Java() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred156_Java_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 synpred248_Java() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred248_Java_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 synpred38_Java() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred38_Java_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 synpred145_Java() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred145_Java_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 synpred135_Java() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred135_Java_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 synpred230_Java() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred230_Java_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 synpred144_Java() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred144_Java_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 synpred39_Java() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred39_Java_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 synpred155_Java() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred155_Java_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 synpred236_Java() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred236_Java_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 synpred85_Java() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred85_Java_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 synpred198_Java() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred198_Java_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 synpred137_Java() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred137_Java_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 synpred139_Java() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred139_Java_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 synpred208_Java() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred208_Java_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 synpred179_Java() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred179_Java_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 synpred120_Java() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred120_Java_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 synpred214_Java() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred214_Java_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 synpred150_Java() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred150_Java_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 synpred187_Java() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred187_Java_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 synpred235_Java() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred235_Java_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 synpred231_Java() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred231_Java_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 synpred184_Java() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred184_Java_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 synpred212_Java() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred212_Java_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 synpred264_Java() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred264_Java_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 synpred176_Java() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred176_Java_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 synpred177_Java() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred177_Java_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 synpred1_Java() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred1_Java_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 synpred242_Java() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred242_Java_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 synpred226_Java() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred226_Java_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 synpred241_Java() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred241_Java_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 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});
-    public static final BitSet FOLLOW_packageDeclaration_in_compilationUnit75 = new BitSet(new long[]{0x007FE0804E000022L,0x0000000000000080L});
-    public static final BitSet FOLLOW_importDeclaration_in_compilationUnit86 = new BitSet(new long[]{0x007FE0804E000022L,0x0000000000000080L});
-    public static final BitSet FOLLOW_typeDeclaration_in_compilationUnit97 = new BitSet(new long[]{0x007FE0804A000022L,0x0000000000000080L});
-    public static final BitSet FOLLOW_24_in_packageDeclaration109 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_qualifiedName_in_packageDeclaration111 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_25_in_packageDeclaration113 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_26_in_importDeclaration125 = new BitSet(new long[]{0x0000000008000010L});
-    public static final BitSet FOLLOW_27_in_importDeclaration127 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_Identifier_in_importDeclaration130 = new BitSet(new long[]{0x0000000012000000L});
-    public static final BitSet FOLLOW_28_in_importDeclaration133 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_Identifier_in_importDeclaration135 = new BitSet(new long[]{0x0000000012000000L});
-    public static final BitSet FOLLOW_28_in_importDeclaration140 = new BitSet(new long[]{0x0000000020000000L});
-    public static final BitSet FOLLOW_29_in_importDeclaration142 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_25_in_importDeclaration146 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_classOrInterfaceDeclaration_in_typeDeclaration158 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_25_in_typeDeclaration168 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_modifier_in_classOrInterfaceDeclaration180 = new BitSet(new long[]{0x007FE08048000020L,0x0000000000000080L});
-    public static final BitSet FOLLOW_classDeclaration_in_classOrInterfaceDeclaration184 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_interfaceDeclaration_in_classOrInterfaceDeclaration188 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_normalClassDeclaration_in_classDeclaration201 = new BitSet(new long[]{0x0000000000000002L});
-    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[]{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[]{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[]{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});
-    public static final BitSet FOLLOW_34_in_typeParameters287 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_typeParameter_in_typeParameters289 = new BitSet(new long[]{0x0000000C00000000L});
-    public static final BitSet FOLLOW_35_in_typeParameters293 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_Identifier_in_typeParameter304 = new BitSet(new long[]{0x0000000080000002L});
-    public static final BitSet FOLLOW_31_in_typeParameter307 = new BitSet(new long[]{0x7F80000000000010L});
-    public static final BitSet FOLLOW_bound_in_typeParameter309 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_type_in_bound324 = new BitSet(new long[]{0x0000001000000002L});
-    public static final BitSet FOLLOW_36_in_bound327 = new BitSet(new long[]{0x7F80000000000010L});
-    public static final BitSet FOLLOW_type_in_bound329 = new BitSet(new long[]{0x0000001000000002L});
-    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[]{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});
-    public static final BitSet FOLLOW_34_in_enumBody370 = new BitSet(new long[]{0x0000004002000000L});
-    public static final BitSet FOLLOW_enumBodyDeclarations_in_enumBody373 = new BitSet(new long[]{0x0000004000000000L});
-    public static final BitSet FOLLOW_38_in_enumBody376 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_enumConstant_in_enumConstants387 = new BitSet(new long[]{0x0000000400000002L});
-    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[]{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});
-    public static final BitSet FOLLOW_normalInterfaceDeclaration_in_interfaceDeclaration448 = new BitSet(new long[]{0x0000000000000002L});
-    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[]{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[]{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});
-    public static final BitSet FOLLOW_type_in_typeList497 = new BitSet(new long[]{0x0000000400000002L});
-    public static final BitSet FOLLOW_37_in_classBody511 = new BitSet(new long[]{0x7FFFE1E24A000030L,0x0000000000000080L});
-    public static final BitSet FOLLOW_classBodyDeclaration_in_classBody513 = new BitSet(new long[]{0x7FFFE1E24A000030L,0x0000000000000080L});
-    public static final BitSet FOLLOW_38_in_classBody516 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_37_in_interfaceBody528 = new BitSet(new long[]{0x7FFFE1C24A000030L,0x0000000000000080L});
-    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[]{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[]{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});
-    public static final BitSet FOLLOW_fieldDeclaration_in_memberDecl582 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_40_in_memberDecl587 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_Identifier_in_memberDecl589 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_voidMethodDeclaratorRest_in_memberDecl591 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_Identifier_in_memberDecl596 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_constructorDeclaratorRest_in_memberDecl598 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_interfaceDeclaration_in_memberDecl603 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_classDeclaration_in_memberDecl608 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_typeParameters_in_genericMethodOrConstructorDecl620 = new BitSet(new long[]{0x7F80010000000010L});
-    public static final BitSet FOLLOW_genericMethodOrConstructorRest_in_genericMethodOrConstructorDecl622 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_type_in_genericMethodOrConstructorRest635 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_40_in_genericMethodOrConstructorRest639 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_Identifier_in_genericMethodOrConstructorRest642 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_methodDeclaratorRest_in_genericMethodOrConstructorRest644 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_Identifier_in_genericMethodOrConstructorRest649 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_constructorDeclaratorRest_in_genericMethodOrConstructorRest651 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_type_in_methodDeclaration662 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_Identifier_in_methodDeclaration664 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_methodDeclaratorRest_in_methodDeclaration666 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_type_in_fieldDeclaration677 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_variableDeclarators_in_fieldDeclaration679 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_25_in_fieldDeclaration681 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_modifier_in_interfaceBodyDeclaration694 = new BitSet(new long[]{0x7FFFE18248000030L,0x0000000000000080L});
-    public static final BitSet FOLLOW_interfaceMemberDecl_in_interfaceBodyDeclaration697 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_25_in_interfaceBodyDeclaration704 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_interfaceMethodOrFieldDecl_in_interfaceMemberDecl715 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_interfaceGenericMethodDecl_in_interfaceMemberDecl722 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_40_in_interfaceMemberDecl732 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_Identifier_in_interfaceMemberDecl734 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_voidInterfaceMethodDeclaratorRest_in_interfaceMemberDecl736 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_interfaceDeclaration_in_interfaceMemberDecl746 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_classDeclaration_in_interfaceMemberDecl756 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_type_in_interfaceMethodOrFieldDecl768 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_Identifier_in_interfaceMethodOrFieldDecl770 = new BitSet(new long[]{0x0000120000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_interfaceMethodOrFieldRest_in_interfaceMethodOrFieldDecl772 = new BitSet(new long[]{0x0000000000000002L});
-    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[]{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[]{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[]{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[]{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[]{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});
-    public static final BitSet FOLLOW_41_in_interfaceMethodDeclaratorRest935 = new BitSet(new long[]{0x0000040000000000L});
-    public static final BitSet FOLLOW_42_in_interfaceMethodDeclaratorRest937 = new BitSet(new long[]{0x00000A0002000000L});
-    public static final BitSet FOLLOW_43_in_interfaceMethodDeclaratorRest942 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_qualifiedNameList_in_interfaceMethodDeclaratorRest944 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_25_in_interfaceMethodDeclaratorRest948 = new BitSet(new long[]{0x0000000000000002L});
-    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[]{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[]{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[]{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[]{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});
-    public static final BitSet FOLLOW_44_in_variableDeclaratorRest1113 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E60000000073L});
-    public static final BitSet FOLLOW_variableInitializer_in_variableDeclaratorRest1115 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_44_in_variableDeclaratorRest1122 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E60000000073L});
-    public static final BitSet FOLLOW_variableInitializer_in_variableDeclaratorRest1124 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_constantDeclaratorRest_in_constantDeclaratorsRest1144 = new BitSet(new long[]{0x0000000400000002L});
-    public static final BitSet FOLLOW_34_in_constantDeclaratorsRest1147 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_constantDeclarator_in_constantDeclaratorsRest1149 = new BitSet(new long[]{0x0000000400000002L});
-    public static final BitSet FOLLOW_41_in_constantDeclaratorRest1166 = new BitSet(new long[]{0x0000040000000000L});
-    public static final BitSet FOLLOW_42_in_constantDeclaratorRest1168 = new BitSet(new long[]{0x0000120000000000L});
-    public static final BitSet FOLLOW_44_in_constantDeclaratorRest1172 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E60000000073L});
-    public static final BitSet FOLLOW_variableInitializer_in_constantDeclaratorRest1174 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_Identifier_in_variableDeclaratorId1186 = new BitSet(new long[]{0x0000020000000002L});
-    public static final BitSet FOLLOW_41_in_variableDeclaratorId1189 = new BitSet(new long[]{0x0000040000000000L});
-    public static final BitSet FOLLOW_42_in_variableDeclaratorId1191 = new BitSet(new long[]{0x0000020000000002L});
-    public static final BitSet FOLLOW_arrayInitializer_in_variableInitializer1204 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_expression_in_variableInitializer1214 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_37_in_arrayInitializer1226 = new BitSet(new long[]{0x7F80016200000FD0L,0x0007E60000000073L});
-    public static final BitSet FOLLOW_variableInitializer_in_arrayInitializer1229 = new BitSet(new long[]{0x0000004400000000L});
-    public static final BitSet FOLLOW_34_in_arrayInitializer1232 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E60000000073L});
-    public static final BitSet FOLLOW_variableInitializer_in_arrayInitializer1234 = new BitSet(new long[]{0x0000004400000000L});
-    public static final BitSet FOLLOW_34_in_arrayInitializer1239 = new BitSet(new long[]{0x0000004000000000L});
-    public static final BitSet FOLLOW_38_in_arrayInitializer1246 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_annotation_in_modifier1262 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_45_in_modifier1272 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_46_in_modifier1282 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_47_in_modifier1292 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_27_in_modifier1302 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_48_in_modifier1312 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_49_in_modifier1322 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_50_in_modifier1332 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_51_in_modifier1342 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_52_in_modifier1352 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_53_in_modifier1362 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_54_in_modifier1372 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_Identifier_in_packageOrTypeName1386 = new BitSet(new long[]{0x0000000010000002L});
-    public static final BitSet FOLLOW_28_in_packageOrTypeName1389 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_Identifier_in_packageOrTypeName1391 = new BitSet(new long[]{0x0000000010000002L});
-    public static final BitSet FOLLOW_Identifier_in_enumConstantName1409 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_Identifier_in_typeName1425 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_packageOrTypeName_in_typeName1435 = new BitSet(new long[]{0x0000000010000000L});
-    public static final BitSet FOLLOW_28_in_typeName1437 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_Identifier_in_typeName1439 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_Identifier_in_type1450 = new BitSet(new long[]{0x0000020210000002L});
-    public static final BitSet FOLLOW_typeArguments_in_type1453 = new BitSet(new long[]{0x0000020010000002L});
-    public static final BitSet FOLLOW_28_in_type1458 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_Identifier_in_type1460 = new BitSet(new long[]{0x0000020210000002L});
-    public static final BitSet FOLLOW_typeArguments_in_type1463 = new BitSet(new long[]{0x0000020010000002L});
-    public static final BitSet FOLLOW_41_in_type1471 = new BitSet(new long[]{0x0000040000000000L});
-    public static final BitSet FOLLOW_42_in_type1473 = new BitSet(new long[]{0x0000020000000002L});
-    public static final BitSet FOLLOW_primitiveType_in_type1480 = new BitSet(new long[]{0x0000020000000002L});
-    public static final BitSet FOLLOW_41_in_type1483 = new BitSet(new long[]{0x0000040000000000L});
-    public static final BitSet FOLLOW_42_in_type1485 = new BitSet(new long[]{0x0000020000000002L});
-    public static final BitSet FOLLOW_set_in_primitiveType0 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_49_in_variableModifier1573 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_annotation_in_variableModifier1583 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_33_in_typeArguments1594 = new BitSet(new long[]{0xFF80000000000010L});
-    public static final BitSet FOLLOW_typeArgument_in_typeArguments1596 = new BitSet(new long[]{0x0000000C00000000L});
-    public static final BitSet FOLLOW_34_in_typeArguments1599 = new BitSet(new long[]{0xFF80000000000010L});
-    public static final BitSet FOLLOW_typeArgument_in_typeArguments1601 = new BitSet(new long[]{0x0000000C00000000L});
-    public static final BitSet FOLLOW_35_in_typeArguments1605 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_type_in_typeArgument1617 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_63_in_typeArgument1622 = new BitSet(new long[]{0x0000000080000002L,0x0000000000000001L});
-    public static final BitSet FOLLOW_set_in_typeArgument1625 = new BitSet(new long[]{0x7F80000000000010L});
-    public static final BitSet FOLLOW_type_in_typeArgument1633 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_qualifiedName_in_qualifiedNameList1647 = new BitSet(new long[]{0x0000000400000002L});
-    public static final BitSet FOLLOW_34_in_qualifiedNameList1650 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_qualifiedName_in_qualifiedNameList1652 = new BitSet(new long[]{0x0000000400000002L});
-    public static final BitSet FOLLOW_65_in_formalParameters1666 = new BitSet(new long[]{0x7F82000000000010L,0x0000000000000084L});
-    public static final BitSet FOLLOW_formalParameterDecls_in_formalParameters1668 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
-    public static final BitSet FOLLOW_66_in_formalParameters1671 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_variableModifier_in_formalParameterDecls1683 = new BitSet(new long[]{0x7F82000000000010L,0x0000000000000080L});
-    public static final BitSet FOLLOW_type_in_formalParameterDecls1686 = new BitSet(new long[]{0x0000000000000012L,0x0000000000000008L});
-    public static final BitSet FOLLOW_formalParameterDeclsRest_in_formalParameterDecls1688 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_variableDeclaratorId_in_formalParameterDeclsRest1701 = new BitSet(new long[]{0x0000000400000002L});
-    public static final BitSet FOLLOW_34_in_formalParameterDeclsRest1704 = new BitSet(new long[]{0x7F82000000000010L,0x0000000000000080L});
-    public static final BitSet FOLLOW_formalParameterDecls_in_formalParameterDeclsRest1706 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_67_in_formalParameterDeclsRest1715 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_variableDeclaratorId_in_formalParameterDeclsRest1717 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_block_in_methodBody1729 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_Identifier_in_qualifiedName1740 = new BitSet(new long[]{0x0000000010000002L});
-    public static final BitSet FOLLOW_28_in_qualifiedName1743 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_Identifier_in_qualifiedName1745 = new BitSet(new long[]{0x0000000010000002L});
-    public static final BitSet FOLLOW_integerLiteral_in_literal1762 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FloatingPointLiteral_in_literal1772 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_CharacterLiteral_in_literal1782 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_StringLiteral_in_literal1792 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_booleanLiteral_in_literal1802 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_68_in_literal1812 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_set_in_integerLiteral0 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_set_in_booleanLiteral0 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_annotation_in_annotations1893 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000080L});
-    public static final BitSet FOLLOW_71_in_annotation1905 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_annotationName_in_annotation1907 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000002L});
-    public static final BitSet FOLLOW_65_in_annotation1910 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E600000000F7L});
-    public static final BitSet FOLLOW_elementValuePairs_in_annotation1912 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
-    public static final BitSet FOLLOW_66_in_annotation1915 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_Identifier_in_annotationName1929 = new BitSet(new long[]{0x0000000010000002L});
-    public static final BitSet FOLLOW_28_in_annotationName1932 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_Identifier_in_annotationName1934 = new BitSet(new long[]{0x0000000010000002L});
-    public static final BitSet FOLLOW_elementValuePair_in_elementValuePairs1948 = new BitSet(new long[]{0x0000000400000002L});
-    public static final BitSet FOLLOW_34_in_elementValuePairs1951 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E600000000F3L});
-    public static final BitSet FOLLOW_elementValuePair_in_elementValuePairs1953 = new BitSet(new long[]{0x0000000400000002L});
-    public static final BitSet FOLLOW_Identifier_in_elementValuePair1968 = new BitSet(new long[]{0x0000100000000000L});
-    public static final BitSet FOLLOW_44_in_elementValuePair1970 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E600000000F3L});
-    public static final BitSet FOLLOW_elementValue_in_elementValuePair1974 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_conditionalExpression_in_elementValue1986 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_annotation_in_elementValue1993 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_elementValueArrayInitializer_in_elementValue2000 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_37_in_elementValueArrayInitializer2012 = new BitSet(new long[]{0x7F80016200000FD0L,0x0007E600000000F3L});
-    public static final BitSet FOLLOW_elementValue_in_elementValueArrayInitializer2015 = new BitSet(new long[]{0x0000004400000000L});
-    public static final BitSet FOLLOW_34_in_elementValueArrayInitializer2018 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E600000000F3L});
-    public static final BitSet FOLLOW_elementValue_in_elementValueArrayInitializer2020 = new BitSet(new long[]{0x0000004400000000L});
-    public static final BitSet FOLLOW_38_in_elementValueArrayInitializer2027 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_71_in_annotationTypeDeclaration2039 = new BitSet(new long[]{0x0000008000000000L});
-    public static final BitSet FOLLOW_39_in_annotationTypeDeclaration2041 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_Identifier_in_annotationTypeDeclaration2043 = new BitSet(new long[]{0x0000002000000000L});
-    public static final BitSet FOLLOW_annotationTypeBody_in_annotationTypeDeclaration2045 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_37_in_annotationTypeBody2057 = new BitSet(new long[]{0x7FFFE0C048000030L,0x0000000000000080L});
-    public static final BitSet FOLLOW_annotationTypeElementDeclarations_in_annotationTypeBody2060 = new BitSet(new long[]{0x0000004000000000L});
-    public static final BitSet FOLLOW_38_in_annotationTypeBody2064 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_annotationTypeElementDeclaration_in_annotationTypeElementDeclarations2077 = new BitSet(new long[]{0x7FFFE08048000032L,0x0000000000000080L});
-    public static final BitSet FOLLOW_annotationTypeElementDeclaration_in_annotationTypeElementDeclarations2081 = new BitSet(new long[]{0x7FFFE08048000032L,0x0000000000000080L});
-    public static final BitSet FOLLOW_modifier_in_annotationTypeElementDeclaration2096 = new BitSet(new long[]{0x7FFFE08048000030L,0x0000000000000080L});
-    public static final BitSet FOLLOW_annotationTypeElementRest_in_annotationTypeElementDeclaration2100 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_type_in_annotationTypeElementRest2112 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_annotationMethodOrConstantRest_in_annotationTypeElementRest2114 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_25_in_annotationTypeElementRest2116 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_classDeclaration_in_annotationTypeElementRest2123 = new BitSet(new long[]{0x0000000002000002L});
-    public static final BitSet FOLLOW_25_in_annotationTypeElementRest2125 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_interfaceDeclaration_in_annotationTypeElementRest2133 = new BitSet(new long[]{0x0000000002000002L});
-    public static final BitSet FOLLOW_25_in_annotationTypeElementRest2135 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_enumDeclaration_in_annotationTypeElementRest2143 = new BitSet(new long[]{0x0000000002000002L});
-    public static final BitSet FOLLOW_25_in_annotationTypeElementRest2145 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_annotationTypeDeclaration_in_annotationTypeElementRest2153 = new BitSet(new long[]{0x0000000002000002L});
-    public static final BitSet FOLLOW_25_in_annotationTypeElementRest2155 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_annotationMethodRest_in_annotationMethodOrConstantRest2168 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_annotationConstantRest_in_annotationMethodOrConstantRest2175 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_Identifier_in_annotationMethodRest2188 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_65_in_annotationMethodRest2190 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
-    public static final BitSet FOLLOW_66_in_annotationMethodRest2192 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000100L});
-    public static final BitSet FOLLOW_defaultValue_in_annotationMethodRest2195 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_variableDeclarators_in_annotationConstantRest2212 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_72_in_defaultValue2227 = new BitSet(new long[]{0x7F80012200000FD0L,0x0007E600000000F3L});
-    public static final BitSet FOLLOW_elementValue_in_defaultValue2229 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_37_in_block2269 = new BitSet(new long[]{0x7FFFE1E24A000FF0L,0x0007E60000FDEAF3L});
-    public static final BitSet FOLLOW_blockStatement_in_block2271 = new BitSet(new long[]{0x7FFFE1E24A000FF0L,0x0007E60000FDEAF3L});
-    public static final BitSet FOLLOW_38_in_block2274 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_localVariableDeclaration_in_blockStatement2286 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_classOrInterfaceDeclaration_in_blockStatement2291 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_statement_in_blockStatement2300 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_variableModifier_in_localVariableDeclaration2348 = new BitSet(new long[]{0x7F82000000000010L,0x0000000000000080L});
-    public static final BitSet FOLLOW_type_in_localVariableDeclaration2365 = new BitSet(new long[]{0x0000000000000010L});
-    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[]{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[]{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[]{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[]{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[]{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[]{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[]{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[]{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[]{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[]{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[]{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});
-    public static final BitSet FOLLOW_37_in_statement2545 = new BitSet(new long[]{0x0000004000000000L,0x0000000002000100L});
-    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[]{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[]{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[]{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});
-    public static final BitSet FOLLOW_Identifier_in_statement2596 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_25_in_statement2599 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_86_in_statement2607 = new BitSet(new long[]{0x0000000002000010L});
-    public static final BitSet FOLLOW_Identifier_in_statement2609 = new BitSet(new long[]{0x0000000002000000L});
-    public static final BitSet FOLLOW_25_in_statement2612 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_modifyStatement_in_statement2625 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_25_in_statement2633 = new BitSet(new long[]{0x0000000000000002L});
-    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[]{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[]{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[]{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});
-    public static final BitSet FOLLOW_catchClause_in_catches2755 = new BitSet(new long[]{0x0000000000000002L,0x0000000001000000L});
-    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[]{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});
-    public static final BitSet FOLLOW_variableDeclaratorId_in_formalParameter2793 = new BitSet(new long[]{0x0000000000000002L});
-    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[]{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});
-    public static final BitSet FOLLOW_enumConstantName_in_switchLabel2849 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
-    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[]{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[]{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[]{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});
-    public static final BitSet FOLLOW_variableDeclarators_in_forInit2954 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_expressionList_in_forInit2959 = new BitSet(new long[]{0x0000000000000002L});
-    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[]{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[]{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[]{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[]{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});
-    public static final BitSet FOLLOW_91_in_assignmentOperator3109 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_92_in_assignmentOperator3119 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_93_in_assignmentOperator3129 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_94_in_assignmentOperator3139 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_95_in_assignmentOperator3149 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_96_in_assignmentOperator3159 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_97_in_assignmentOperator3169 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_33_in_assignmentOperator3179 = new BitSet(new long[]{0x0000000200000000L});
-    public static final BitSet FOLLOW_33_in_assignmentOperator3181 = new BitSet(new long[]{0x0000100000000000L});
-    public static final BitSet FOLLOW_44_in_assignmentOperator3183 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_35_in_assignmentOperator3193 = new BitSet(new long[]{0x0000000800000000L});
-    public static final BitSet FOLLOW_35_in_assignmentOperator3195 = new BitSet(new long[]{0x0000100000000000L});
-    public static final BitSet FOLLOW_44_in_assignmentOperator3197 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_35_in_assignmentOperator3207 = new BitSet(new long[]{0x0000000800000000L});
-    public static final BitSet FOLLOW_35_in_assignmentOperator3209 = new BitSet(new long[]{0x0000000800000000L});
-    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[]{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[]{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[]{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[]{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[]{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[]{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[]{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[]{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[]{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});
-    public static final BitSet FOLLOW_35_in_relationalOp3465 = new BitSet(new long[]{0x0000100000000000L});
-    public static final BitSet FOLLOW_44_in_relationalOp3467 = new BitSet(new long[]{0x0000000000000002L});
-    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[]{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});
-    public static final BitSet FOLLOW_35_in_shiftOp3528 = new BitSet(new long[]{0x0000000800000000L});
-    public static final BitSet FOLLOW_35_in_shiftOp3530 = new BitSet(new long[]{0x0000000800000000L});
-    public static final BitSet FOLLOW_35_in_shiftOp3532 = new BitSet(new long[]{0x0000000000000002L});
-    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[]{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[]{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[]{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[]{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[]{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[]{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[]{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[]{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[]{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[]{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[]{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[]{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});
-    public static final BitSet FOLLOW_explicitGenericInvocationSuffix_in_primary3816 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_113_in_primary3820 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_arguments_in_primary3822 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_113_in_primary3833 = new BitSet(new long[]{0x0000020010000002L,0x0000000000000002L});
-    public static final BitSet FOLLOW_28_in_primary3836 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_Identifier_in_primary3838 = new BitSet(new long[]{0x0000020010000002L,0x0000000000000002L});
-    public static final BitSet FOLLOW_identifierSuffix_in_primary3843 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_64_in_primary3855 = new BitSet(new long[]{0x0000000010000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_superSuffix_in_primary3857 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_literal_in_primary3867 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_114_in_primary3877 = new BitSet(new long[]{0x7F80000200000010L});
-    public static final BitSet FOLLOW_creator_in_primary3879 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_Identifier_in_primary3891 = new BitSet(new long[]{0x0000020010000002L,0x0000000000000002L});
-    public static final BitSet FOLLOW_28_in_primary3896 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_Identifier_in_primary3898 = new BitSet(new long[]{0x0000020010000002L,0x0000000000000002L});
-    public static final BitSet FOLLOW_identifierSuffix_in_primary3903 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_primitiveType_in_primary3915 = new BitSet(new long[]{0x0000020010000000L});
-    public static final BitSet FOLLOW_41_in_primary3918 = new BitSet(new long[]{0x0000040000000000L});
-    public static final BitSet FOLLOW_42_in_primary3920 = new BitSet(new long[]{0x0000020010000000L});
-    public static final BitSet FOLLOW_28_in_primary3924 = new BitSet(new long[]{0x0000000040000000L});
-    public static final BitSet FOLLOW_30_in_primary3926 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_40_in_primary3936 = new BitSet(new long[]{0x0000000010000000L});
-    public static final BitSet FOLLOW_28_in_primary3938 = new BitSet(new long[]{0x0000000040000000L});
-    public static final BitSet FOLLOW_30_in_primary3940 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_41_in_identifierSuffix3952 = new BitSet(new long[]{0x0000040000000000L});
-    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[]{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});
-    public static final BitSet FOLLOW_28_in_identifierSuffix3993 = new BitSet(new long[]{0x0000000040000000L});
-    public static final BitSet FOLLOW_30_in_identifierSuffix3995 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_28_in_identifierSuffix4005 = new BitSet(new long[]{0x0000000200000000L});
-    public static final BitSet FOLLOW_explicitGenericInvocation_in_identifierSuffix4007 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_28_in_identifierSuffix4017 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
-    public static final BitSet FOLLOW_113_in_identifierSuffix4019 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_28_in_identifierSuffix4029 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
-    public static final BitSet FOLLOW_64_in_identifierSuffix4031 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
-    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[]{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[]{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});
-    public static final BitSet FOLLOW_Identifier_in_createdName4094 = new BitSet(new long[]{0x0000000210000002L});
-    public static final BitSet FOLLOW_typeArguments_in_createdName4096 = new BitSet(new long[]{0x0000000010000002L});
-    public static final BitSet FOLLOW_28_in_createdName4108 = new BitSet(new long[]{0x0000000000000010L});
-    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[]{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[]{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[]{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[]{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});
-    public static final BitSet FOLLOW_33_in_nonWildcardTypeArguments4253 = new BitSet(new long[]{0x7F80000000000010L});
-    public static final BitSet FOLLOW_typeList_in_nonWildcardTypeArguments4255 = new BitSet(new long[]{0x0000000800000000L});
-    public static final BitSet FOLLOW_35_in_nonWildcardTypeArguments4257 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_64_in_explicitGenericInvocationSuffix4269 = new BitSet(new long[]{0x0000000010000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_superSuffix_in_explicitGenericInvocationSuffix4271 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_Identifier_in_explicitGenericInvocationSuffix4278 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_arguments_in_explicitGenericInvocationSuffix4280 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_28_in_selector4292 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_Identifier_in_selector4294 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000002L});
-    public static final BitSet FOLLOW_arguments_in_selector4297 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_28_in_selector4306 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
-    public static final BitSet FOLLOW_113_in_selector4308 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_28_in_selector4315 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
-    public static final BitSet FOLLOW_64_in_selector4317 = new BitSet(new long[]{0x0000000010000000L,0x0000000000000002L});
-    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[]{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[]{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[]{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_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});
-
+// $ANTLR 3.1.1 src/main/resources/org/drools/semantics/java/parser/Java.g 2009-02-20 18:38:48
+
+	package org.drools.rule.builder.dialect.java.parser;
+	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;
+/** A Java 1.5 grammar for ANTLR v3 derived from the spec
+ *
+ *  This is a very close representation of the spec; the changes
+ *  are comestic (remove left recursion) and also fixes (the spec
+ *  isn't exactly perfect).  I have run this on the 1.4.2 source
+ *  and some nasty looking enums from 1.5, but have not really
+ *  tested for 1.5 compatibility.
+ *
+ *  I built this with: java -Xmx100M org.antlr.Tool java.g 
+ *  and got two errors that are ok (for now):
+ *  java.g:691:9: Decision can match input such as
+ *    "'0'..'9'{'E', 'e'}{'+', '-'}'0'..'9'{'D', 'F', 'd', 'f'}"
+ *    using multiple alternatives: 3, 4
+ *  As a result, alternative(s) 4 were disabled for that input
+ *  java.g:734:35: Decision can match input such as "{'$', 'A'..'Z',
+ *    '_', 'a'..'z', '\u00C0'..'\u00D6', '\u00D8'..'\u00F6',
+ *    '\u00F8'..'\u1FFF', '\u3040'..'\u318F', '\u3300'..'\u337F',
+ *    '\u3400'..'\u3D2D', '\u4E00'..'\u9FFF', '\uF900'..'\uFAFF'}"
+ *    using multiple alternatives: 1, 2
+ *  As a result, alternative(s) 2 were disabled for that input
+ *
+ *  You can turn enum on/off as a keyword :)
+ *
+ *  Version 1.0 -- initial release July 5, 2006 (requires 3.0b2 or higher)
+ *
+ *  Primary author: Terence Parr, July 2006
+ *
+ *  Version 1.0.1 -- corrections by Koen Vanderkimpen & Marko van Dooren,
+ *      October 25, 2006;
+ *      fixed normalInterfaceDeclaration: now uses typeParameters instead
+ *          of typeParameter (according to JLS, 3rd edition)
+ *      fixed castExpression: no longer allows expression next to type
+ *          (according to semantics in JLS, in contrast with syntax in JLS)
+ *
+ *  Version 1.0.2 -- Terence Parr, Nov 27, 2006
+ *      java spec I built this from had some bizarre for-loop control.
+ *          Looked weird and so I looked elsewhere...Yep, it's messed up.
+ *          simplified.
+ *
+ *  Version 1.0.3 -- Chris Hogue, Feb 26, 2007
+ *      Factored out an annotationName rule and used it in the annotation rule.
+ *          Not sure why, but typeName wasn't recognizing references to inner
+ *          annotations (e.g. @InterfaceName.InnerAnnotation())
+ *      Factored out the elementValue section of an annotation reference.  Created 
+ *          elementValuePair and elementValuePairs rules, then used them in the 
+ *          annotation rule.  Allows it to recognize annotation references with 
+ *          multiple, comma separated attributes.
+ *      Updated elementValueArrayInitializer so that it allows multiple elements.
+ *          (It was only allowing 0 or 1 element).
+ *      Updated localVariableDeclaration to allow annotations.  Interestingly the JLS
+ *          doesn't appear to indicate this is legal, but it does work as of at least
+ *          JDK 1.5.0_06.
+ *      Moved the Identifier portion of annotationTypeElementRest to annotationMethodRest.
+ *          Because annotationConstantRest already references variableDeclarator which 
+ *          has the Identifier portion in it, the parser would fail on constants in 
+ *          annotation definitions because it expected two identifiers.  
+ *      Added optional trailing ';' to the alternatives in annotationTypeElementRest.
+ *          Wouldn't handle an inner interface that has a trailing ';'.
+ *      Swapped the expression and type rule reference order in castExpression to 
+ *          make it check for genericized casts first.  It was failing to recognize a
+ *          statement like  "Class<Byte> TYPE = (Class<Byte>)...;" because it was seeing
+ *          'Class<Byte' in the cast expression as a less than expression, then failing 
+ *          on the '>'.
+ *      Changed createdName to use typeArguments instead of nonWildcardTypeArguments.
+ *          Again, JLS doesn't seem to allow this, but java.lang.Class has an example of
+ *          of this construct.
+ *      Changed the 'this' alternative in primary to allow 'identifierSuffix' rather than
+ *          just 'arguments'.  The case it couldn't handle was a call to an explicit
+ *          generic method invocation (e.g. this.<E>doSomething()).  Using identifierSuffix
+ *          may be overly aggressive--perhaps should create a more constrained thisSuffix rule?
+ * 		
+ *  Version 1.0.4 -- Hiroaki Nakamura, May 3, 2007
+ *
+ *	Fixed formalParameterDecls, localVariableDeclaration, forInit,
+ *	and forVarControl to use variableModifier* not 'final'? (annotation)?
+ */
+public class JavaParser extends Parser {
+    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'", "'exitPoints'", "'catch'", "'case'", "'+='", "'-='", "'*='", "'/='", "'&='", "'|='", "'^='", "'%='", "'||'", "'&&'", "'|'", "'^'", "'=='", "'!='", "'instanceof'", "'+'", "'-'", "'/'", "'%'", "'++'", "'--'", "'~'", "'!'", "'this'", "'new'"
+    };
+    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__115=115;
+    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 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 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 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 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 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) {
+            this(input, new RecognizerSharedState());
+        }
+        public JavaParser(TokenStream input, RecognizerSharedState state) {
+            super(input, state);
+            this.state.ruleMemo = new HashMap[409+1];
+             
+             
+        }
+        
+
+    public String[] getTokenNames() { return JavaParser.tokenNames; }
+    public String getGrammarFileName() { return "src/main/resources/org/drools/semantics/java/parser/Java.g"; }
+
+
+    	private List identifiers = new ArrayList();
+    	public List getIdentifiers() { return identifiers; }
+    	private List localDeclarations = new ArrayList();
+    	public List getLocalDeclarations() { return localDeclarations; }
+    	public static final CommonToken IGNORE_TOKEN = new CommonToken(null,0,99,0,0);
+    	private List errors = new ArrayList();
+    	private int localVariableLevel = 0;
+    	private List modifyBlocks = new ArrayList();
+    	public List getModifyBlocks() { return modifyBlocks; }
+    	private List<JavaExitPointsDescr> exitPoints = new ArrayList<JavaExitPointsDescr>();
+    	public List<JavaExitPointsDescr> getExitPoints() { return exitPoints; }
+    	
+    	private String source = "unknown";
+    	
+    	public void setSource(String source) {
+    		this.source = source;
+    	}
+    	
+    	public String getSource() {
+    		return this.source;
+    	}
+    		
+    	public void reportError(RecognitionException ex) {
+    	        // if we've already reported an error and have not matched a token
+                    // yet successfully, don't report any errors.
+                    if ( state.errorRecovery ) {
+                            //System.err.print("[SPURIOUS] ");
+                            return;
+                    }
+                    state.errorRecovery = true;
+
+    		errors.add( ex ); 
+    	}
+         	
+         	/** return the raw RecognitionException errors */
+         	public List getErrors() {
+         		return errors;
+         	}
+         	
+         	/** Return a list of pretty strings summarising the errors */
+         	public List getErrorMessages() {
+         		List messages = new ArrayList();
+     		for ( Iterator errorIter = errors.iterator() ; errorIter.hasNext() ; ) {
+         	     		messages.add( createErrorMessage( (RecognitionException) errorIter.next() ) );
+         	     	}
+         	     	return messages;
+         	}
+         	
+         	/** return true if any parser errors were accumulated */
+         	public boolean hasErrors() {
+      		return ! errors.isEmpty();
+         	}
+         	
+         	/** This will take a RecognitionException, and create a sensible error message out of it */
+         	public String createErrorMessage(RecognitionException e)
+            {
+    		StringBuffer message = new StringBuffer();		
+                    message.append( source + ":"+e.line+":"+e.charPositionInLine+" ");
+                    if ( e instanceof MismatchedTokenException ) {
+                            MismatchedTokenException mte = (MismatchedTokenException)e;
+                            message.append("mismatched token: "+
+                                                               e.token+
+                                                               "; expecting type "+
+                                                               tokenNames[mte.expecting]);
+                    }
+                    else if ( e instanceof MismatchedTreeNodeException ) {
+                            MismatchedTreeNodeException mtne = (MismatchedTreeNodeException)e;
+                            message.append("mismatched tree node: "+
+                                                               mtne.node+
+                                                               "; expecting type "+
+                                                               tokenNames[mtne.expecting]);
+                    }
+                    else if ( e instanceof NoViableAltException ) {
+                            NoViableAltException nvae = (NoViableAltException)e;
+    			message.append( "Unexpected token '" + e.token.getText() + "'" );
+                            /*
+                            message.append("decision=<<"+nvae.grammarDecisionDescription+">>"+
+                                                               " state "+nvae.stateNumber+
+                                                               " (decision="+nvae.decisionNumber+
+                                                               ") no viable alt; token="+
+                                                               e.token);
+                                                               */
+                    }
+                    else if ( e instanceof EarlyExitException ) {
+                            EarlyExitException eee = (EarlyExitException)e;
+                            message.append("required (...)+ loop (decision="+
+                                                               eee.decisionNumber+
+                                                               ") did not match anything; token="+
+                                                               e.token);
+                    }
+                    else if ( e instanceof MismatchedSetException ) {
+                            MismatchedSetException mse = (MismatchedSetException)e;
+                            message.append("mismatched token '"+
+                                                               e.token+
+                                                               "' expecting set "+mse.expecting);
+                    }
+                    else if ( e instanceof MismatchedNotSetException ) {
+                            MismatchedNotSetException mse = (MismatchedNotSetException)e;
+                            message.append("mismatched token '"+
+                                                               e.token+
+                                                               "' expecting set "+mse.expecting);
+                    }
+                    else if ( e instanceof FailedPredicateException ) {
+                            FailedPredicateException fpe = (FailedPredicateException)e;
+                            message.append("rule "+fpe.ruleName+" failed predicate: {"+
+                                                               fpe.predicateText+"}?");
+    		}
+                   	return message.toString();
+            }   
+
+
+
+    // $ANTLR start "compilationUnit"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:208:1: compilationUnit : ( annotations )? ( packageDeclaration )? ( importDeclaration )* ( typeDeclaration )* ;
+    public final void compilationUnit() throws RecognitionException {
+        int compilationUnit_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 1) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:209:2: ( ( annotations )? ( packageDeclaration )? ( importDeclaration )* ( typeDeclaration )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:209:4: ( annotations )? ( packageDeclaration )? ( importDeclaration )* ( typeDeclaration )*
+            {
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:209:4: ( annotations )?
+            int alt1=2;
+            alt1 = dfa1.predict(input);
+            switch (alt1) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: annotations
+                    {
+                    pushFollow(FOLLOW_annotations_in_compilationUnit70);
+                    annotations();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:210:3: ( packageDeclaration )?
+            int alt2=2;
+            alt2 = dfa2.predict(input);
+            switch (alt2) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: packageDeclaration
+                    {
+                    pushFollow(FOLLOW_packageDeclaration_in_compilationUnit75);
+                    packageDeclaration();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:211:9: ( importDeclaration )*
+            loop3:
+            do {
+                int alt3=2;
+                alt3 = dfa3.predict(input);
+                switch (alt3) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: importDeclaration
+            	    {
+            	    pushFollow(FOLLOW_importDeclaration_in_compilationUnit86);
+            	    importDeclaration();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop3;
+                }
+            } while (true);
+
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:212:9: ( typeDeclaration )*
+            loop4:
+            do {
+                int alt4=2;
+                alt4 = dfa4.predict(input);
+                switch (alt4) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: typeDeclaration
+            	    {
+            	    pushFollow(FOLLOW_typeDeclaration_in_compilationUnit97);
+            	    typeDeclaration();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop4;
+                }
+            } while (true);
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 1, compilationUnit_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "compilationUnit"
+
+
+    // $ANTLR start "packageDeclaration"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:215:1: packageDeclaration : 'package' qualifiedName ';' ;
+    public final void packageDeclaration() throws RecognitionException {
+        int packageDeclaration_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 2) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:216:2: ( 'package' qualifiedName ';' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:216:4: 'package' qualifiedName ';'
+            {
+            match(input,24,FOLLOW_24_in_packageDeclaration109); if (state.failed) return ;
+            pushFollow(FOLLOW_qualifiedName_in_packageDeclaration111);
+            qualifiedName();
+
+            state._fsp--;
+            if (state.failed) return ;
+            match(input,25,FOLLOW_25_in_packageDeclaration113); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 2, packageDeclaration_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "packageDeclaration"
+
+
+    // $ANTLR start "importDeclaration"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:219:1: importDeclaration : 'import' ( 'static' )? Identifier ( '.' Identifier )* ( '.' '*' )? ';' ;
+    public final void importDeclaration() throws RecognitionException {
+        int importDeclaration_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 3) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:220:2: ( 'import' ( 'static' )? Identifier ( '.' Identifier )* ( '.' '*' )? ';' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:220:4: 'import' ( 'static' )? Identifier ( '.' Identifier )* ( '.' '*' )? ';'
+            {
+            match(input,26,FOLLOW_26_in_importDeclaration125); if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:220:13: ( 'static' )?
+            int alt5=2;
+            int LA5_0 = input.LA(1);
+
+            if ( (LA5_0==27) ) {
+                alt5=1;
+            }
+            switch (alt5) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: 'static'
+                    {
+                    match(input,27,FOLLOW_27_in_importDeclaration127); if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            match(input,Identifier,FOLLOW_Identifier_in_importDeclaration130); if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:220:34: ( '.' Identifier )*
+            loop6:
+            do {
+                int alt6=2;
+                int LA6_0 = input.LA(1);
+
+                if ( (LA6_0==28) ) {
+                    int LA6_1 = input.LA(2);
+
+                    if ( (LA6_1==Identifier) ) {
+                        alt6=1;
+                    }
+
+
+                }
+
+
+                switch (alt6) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:220:35: '.' Identifier
+            	    {
+            	    match(input,28,FOLLOW_28_in_importDeclaration133); if (state.failed) return ;
+            	    match(input,Identifier,FOLLOW_Identifier_in_importDeclaration135); if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop6;
+                }
+            } while (true);
+
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:220:52: ( '.' '*' )?
+            int alt7=2;
+            int LA7_0 = input.LA(1);
+
+            if ( (LA7_0==28) ) {
+                alt7=1;
+            }
+            switch (alt7) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:220:53: '.' '*'
+                    {
+                    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 (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 3, importDeclaration_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "importDeclaration"
+
+
+    // $ANTLR start "typeDeclaration"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:223:1: typeDeclaration : ( classOrInterfaceDeclaration | ';' );
+    public final void typeDeclaration() throws RecognitionException {
+        int typeDeclaration_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 4) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:224:2: ( classOrInterfaceDeclaration | ';' )
+            int alt8=2;
+            alt8 = dfa8.predict(input);
+            switch (alt8) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:224:4: classOrInterfaceDeclaration
+                    {
+                    pushFollow(FOLLOW_classOrInterfaceDeclaration_in_typeDeclaration158);
+                    classOrInterfaceDeclaration();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:225:9: ';'
+                    {
+                    match(input,25,FOLLOW_25_in_typeDeclaration168); if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 4, typeDeclaration_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "typeDeclaration"
+
+
+    // $ANTLR start "classOrInterfaceDeclaration"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:228:1: classOrInterfaceDeclaration : ( modifier )* ( classDeclaration | interfaceDeclaration ) ;
+    public final void classOrInterfaceDeclaration() throws RecognitionException {
+        int classOrInterfaceDeclaration_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 5) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:229:2: ( ( modifier )* ( classDeclaration | interfaceDeclaration ) )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:229:4: ( modifier )* ( classDeclaration | interfaceDeclaration )
+            {
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:229:4: ( modifier )*
+            loop9:
+            do {
+                int alt9=2;
+                alt9 = dfa9.predict(input);
+                switch (alt9) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: modifier
+            	    {
+            	    pushFollow(FOLLOW_modifier_in_classOrInterfaceDeclaration180);
+            	    modifier();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop9;
+                }
+            } while (true);
+
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:229:14: ( classDeclaration | interfaceDeclaration )
+            int alt10=2;
+            int LA10_0 = input.LA(1);
+
+            if ( (LA10_0==ENUM||LA10_0==30) ) {
+                alt10=1;
+            }
+            else if ( (LA10_0==39||LA10_0==71) ) {
+                alt10=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 10, 0, input);
+
+                throw nvae;
+            }
+            switch (alt10) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:229:15: classDeclaration
+                    {
+                    pushFollow(FOLLOW_classDeclaration_in_classOrInterfaceDeclaration184);
+                    classDeclaration();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:229:34: interfaceDeclaration
+                    {
+                    pushFollow(FOLLOW_interfaceDeclaration_in_classOrInterfaceDeclaration188);
+                    interfaceDeclaration();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 5, classOrInterfaceDeclaration_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "classOrInterfaceDeclaration"
+
+
+    // $ANTLR start "classDeclaration"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:232:1: classDeclaration : ( normalClassDeclaration | enumDeclaration );
+    public final void classDeclaration() throws RecognitionException {
+        int classDeclaration_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 6) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:233:2: ( normalClassDeclaration | enumDeclaration )
+            int alt11=2;
+            int LA11_0 = input.LA(1);
+
+            if ( (LA11_0==30) ) {
+                alt11=1;
+            }
+            else if ( (LA11_0==ENUM) ) {
+                alt11=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 11, 0, input);
+
+                throw nvae;
+            }
+            switch (alt11) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:233:4: normalClassDeclaration
+                    {
+                    pushFollow(FOLLOW_normalClassDeclaration_in_classDeclaration201);
+                    normalClassDeclaration();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:234:9: enumDeclaration
+                    {
+                    pushFollow(FOLLOW_enumDeclaration_in_classDeclaration211);
+                    enumDeclaration();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 6, classDeclaration_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "classDeclaration"
+
+
+    // $ANTLR start "normalClassDeclaration"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:237:1: normalClassDeclaration : 'class' Identifier ( typeParameters )? ( 'extends' type )? ( 'implements' typeList )? classBody ;
+    public final void normalClassDeclaration() throws RecognitionException {
+        int normalClassDeclaration_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 7) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:238:2: ( 'class' Identifier ( typeParameters )? ( 'extends' type )? ( 'implements' typeList )? classBody )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:238:4: 'class' Identifier ( typeParameters )? ( 'extends' type )? ( 'implements' typeList )? classBody
+            {
+            match(input,30,FOLLOW_30_in_normalClassDeclaration223); if (state.failed) return ;
+            match(input,Identifier,FOLLOW_Identifier_in_normalClassDeclaration225); if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:238:23: ( typeParameters )?
+            int alt12=2;
+            int LA12_0 = input.LA(1);
+
+            if ( (LA12_0==33) ) {
+                alt12=1;
+            }
+            switch (alt12) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:238:24: typeParameters
+                    {
+                    pushFollow(FOLLOW_typeParameters_in_normalClassDeclaration228);
+                    typeParameters();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:239:9: ( 'extends' type )?
+            int alt13=2;
+            int LA13_0 = input.LA(1);
+
+            if ( (LA13_0==31) ) {
+                alt13=1;
+            }
+            switch (alt13) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:239:10: 'extends' type
+                    {
+                    match(input,31,FOLLOW_31_in_normalClassDeclaration241); if (state.failed) return ;
+                    pushFollow(FOLLOW_type_in_normalClassDeclaration243);
+                    type();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:240:9: ( 'implements' typeList )?
+            int alt14=2;
+            int LA14_0 = input.LA(1);
+
+            if ( (LA14_0==32) ) {
+                alt14=1;
+            }
+            switch (alt14) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:240:10: 'implements' typeList
+                    {
+                    match(input,32,FOLLOW_32_in_normalClassDeclaration256); if (state.failed) return ;
+                    pushFollow(FOLLOW_typeList_in_normalClassDeclaration258);
+                    typeList();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            pushFollow(FOLLOW_classBody_in_normalClassDeclaration270);
+            classBody();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 7, normalClassDeclaration_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "normalClassDeclaration"
+
+
+    // $ANTLR start "typeParameters"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:244:1: typeParameters : '<' typeParameter ( ',' typeParameter )* '>' ;
+    public final void typeParameters() throws RecognitionException {
+        int typeParameters_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 8) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:245:2: ( '<' typeParameter ( ',' typeParameter )* '>' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:245:4: '<' typeParameter ( ',' typeParameter )* '>'
+            {
+            match(input,33,FOLLOW_33_in_typeParameters282); if (state.failed) return ;
+            pushFollow(FOLLOW_typeParameter_in_typeParameters284);
+            typeParameter();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:245:22: ( ',' typeParameter )*
+            loop15:
+            do {
+                int alt15=2;
+                int LA15_0 = input.LA(1);
+
+                if ( (LA15_0==34) ) {
+                    alt15=1;
+                }
+
+
+                switch (alt15) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:245:23: ',' typeParameter
+            	    {
+            	    match(input,34,FOLLOW_34_in_typeParameters287); if (state.failed) return ;
+            	    pushFollow(FOLLOW_typeParameter_in_typeParameters289);
+            	    typeParameter();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop15;
+                }
+            } while (true);
+
+            match(input,35,FOLLOW_35_in_typeParameters293); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 8, typeParameters_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "typeParameters"
+
+
+    // $ANTLR start "typeParameter"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:248:1: typeParameter : Identifier ( 'extends' bound )? ;
+    public final void typeParameter() throws RecognitionException {
+        int typeParameter_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 9) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:249:2: ( Identifier ( 'extends' bound )? )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:249:4: Identifier ( 'extends' bound )?
+            {
+            match(input,Identifier,FOLLOW_Identifier_in_typeParameter304); if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:249:15: ( 'extends' bound )?
+            int alt16=2;
+            int LA16_0 = input.LA(1);
+
+            if ( (LA16_0==31) ) {
+                alt16=1;
+            }
+            switch (alt16) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:249:16: 'extends' bound
+                    {
+                    match(input,31,FOLLOW_31_in_typeParameter307); if (state.failed) return ;
+                    pushFollow(FOLLOW_bound_in_typeParameter309);
+                    bound();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 9, typeParameter_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "typeParameter"
+
+
+    // $ANTLR start "bound"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:252:1: bound : type ( '&' type )* ;
+    public final void bound() throws RecognitionException {
+        int bound_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 10) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:253:2: ( type ( '&' type )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:253:4: type ( '&' type )*
+            {
+            pushFollow(FOLLOW_type_in_bound324);
+            type();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:253:9: ( '&' type )*
+            loop17:
+            do {
+                int alt17=2;
+                int LA17_0 = input.LA(1);
+
+                if ( (LA17_0==36) ) {
+                    alt17=1;
+                }
+
+
+                switch (alt17) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:253:10: '&' type
+            	    {
+            	    match(input,36,FOLLOW_36_in_bound327); if (state.failed) return ;
+            	    pushFollow(FOLLOW_type_in_bound329);
+            	    type();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop17;
+                }
+            } while (true);
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 10, bound_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "bound"
+
+
+    // $ANTLR start "enumDeclaration"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:256:1: enumDeclaration : ENUM Identifier ( 'implements' typeList )? enumBody ;
+    public final void enumDeclaration() throws RecognitionException {
+        int enumDeclaration_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 11) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:257:2: ( ENUM Identifier ( 'implements' typeList )? enumBody )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:257:4: ENUM Identifier ( 'implements' typeList )? enumBody
+            {
+            match(input,ENUM,FOLLOW_ENUM_in_enumDeclaration342); if (state.failed) return ;
+            match(input,Identifier,FOLLOW_Identifier_in_enumDeclaration344); if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:257:20: ( 'implements' typeList )?
+            int alt18=2;
+            int LA18_0 = input.LA(1);
+
+            if ( (LA18_0==32) ) {
+                alt18=1;
+            }
+            switch (alt18) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:257:21: 'implements' typeList
+                    {
+                    match(input,32,FOLLOW_32_in_enumDeclaration347); if (state.failed) return ;
+                    pushFollow(FOLLOW_typeList_in_enumDeclaration349);
+                    typeList();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            pushFollow(FOLLOW_enumBody_in_enumDeclaration353);
+            enumBody();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 11, enumDeclaration_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "enumDeclaration"
+
+
+    // $ANTLR start "enumBody"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:260:1: enumBody : '{' ( enumConstants )? ( ',' )? ( enumBodyDeclarations )? '}' ;
+    public final void enumBody() throws RecognitionException {
+        int enumBody_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 12) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:261:2: ( '{' ( enumConstants )? ( ',' )? ( enumBodyDeclarations )? '}' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:261:4: '{' ( enumConstants )? ( ',' )? ( enumBodyDeclarations )? '}'
+            {
+            match(input,37,FOLLOW_37_in_enumBody365); if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:261:8: ( enumConstants )?
+            int alt19=2;
+            int LA19_0 = input.LA(1);
+
+            if ( (LA19_0==Identifier||LA19_0==71) ) {
+                alt19=1;
+            }
+            switch (alt19) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: enumConstants
+                    {
+                    pushFollow(FOLLOW_enumConstants_in_enumBody367);
+                    enumConstants();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:261:23: ( ',' )?
+            int alt20=2;
+            int LA20_0 = input.LA(1);
+
+            if ( (LA20_0==34) ) {
+                alt20=1;
+            }
+            switch (alt20) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: ','
+                    {
+                    match(input,34,FOLLOW_34_in_enumBody370); if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:261:28: ( enumBodyDeclarations )?
+            int alt21=2;
+            int LA21_0 = input.LA(1);
+
+            if ( (LA21_0==25) ) {
+                alt21=1;
+            }
+            switch (alt21) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: enumBodyDeclarations
+                    {
+                    pushFollow(FOLLOW_enumBodyDeclarations_in_enumBody373);
+                    enumBodyDeclarations();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            match(input,38,FOLLOW_38_in_enumBody376); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 12, enumBody_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "enumBody"
+
+
+    // $ANTLR start "enumConstants"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:264:1: enumConstants : enumConstant ( ',' enumConstant )* ;
+    public final void enumConstants() throws RecognitionException {
+        int enumConstants_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 13) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:265:2: ( enumConstant ( ',' enumConstant )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:265:4: enumConstant ( ',' enumConstant )*
+            {
+            pushFollow(FOLLOW_enumConstant_in_enumConstants387);
+            enumConstant();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:265:17: ( ',' enumConstant )*
+            loop22:
+            do {
+                int alt22=2;
+                int LA22_0 = input.LA(1);
+
+                if ( (LA22_0==34) ) {
+                    int LA22_1 = input.LA(2);
+
+                    if ( (LA22_1==Identifier||LA22_1==71) ) {
+                        alt22=1;
+                    }
+
+
+                }
+
+
+                switch (alt22) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:265:18: ',' enumConstant
+            	    {
+            	    match(input,34,FOLLOW_34_in_enumConstants390); if (state.failed) return ;
+            	    pushFollow(FOLLOW_enumConstant_in_enumConstants392);
+            	    enumConstant();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop22;
+                }
+            } while (true);
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 13, enumConstants_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "enumConstants"
+
+
+    // $ANTLR start "enumConstant"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:268:1: enumConstant : ( annotations )? Identifier ( arguments )? ( classBody )? ;
+    public final void enumConstant() throws RecognitionException {
+        int enumConstant_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 14) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:269:2: ( ( annotations )? Identifier ( arguments )? ( classBody )? )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:269:4: ( annotations )? Identifier ( arguments )? ( classBody )?
+            {
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:269:4: ( annotations )?
+            int alt23=2;
+            int LA23_0 = input.LA(1);
+
+            if ( (LA23_0==71) ) {
+                alt23=1;
+            }
+            switch (alt23) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: annotations
+                    {
+                    pushFollow(FOLLOW_annotations_in_enumConstant406);
+                    annotations();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            match(input,Identifier,FOLLOW_Identifier_in_enumConstant409); if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:269:28: ( arguments )?
+            int alt24=2;
+            int LA24_0 = input.LA(1);
+
+            if ( (LA24_0==65) ) {
+                alt24=1;
+            }
+            switch (alt24) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:269:29: arguments
+                    {
+                    pushFollow(FOLLOW_arguments_in_enumConstant412);
+                    arguments();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:269:41: ( classBody )?
+            int alt25=2;
+            int LA25_0 = input.LA(1);
+
+            if ( (LA25_0==37) ) {
+                alt25=1;
+            }
+            switch (alt25) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:269:42: classBody
+                    {
+                    pushFollow(FOLLOW_classBody_in_enumConstant417);
+                    classBody();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 14, enumConstant_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "enumConstant"
+
+
+    // $ANTLR start "enumBodyDeclarations"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:272:1: enumBodyDeclarations : ';' ( classBodyDeclaration )* ;
+    public final void enumBodyDeclarations() throws RecognitionException {
+        int enumBodyDeclarations_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 15) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:273:2: ( ';' ( classBodyDeclaration )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:273:4: ';' ( classBodyDeclaration )*
+            {
+            match(input,25,FOLLOW_25_in_enumBodyDeclarations431); if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:273:8: ( classBodyDeclaration )*
+            loop26:
+            do {
+                int alt26=2;
+                alt26 = dfa26.predict(input);
+                switch (alt26) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:273:9: classBodyDeclaration
+            	    {
+            	    pushFollow(FOLLOW_classBodyDeclaration_in_enumBodyDeclarations434);
+            	    classBodyDeclaration();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop26;
+                }
+            } while (true);
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 15, enumBodyDeclarations_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "enumBodyDeclarations"
+
+
+    // $ANTLR start "interfaceDeclaration"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:276:1: interfaceDeclaration : ( normalInterfaceDeclaration | annotationTypeDeclaration );
+    public final void interfaceDeclaration() throws RecognitionException {
+        int interfaceDeclaration_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 16) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:277:2: ( normalInterfaceDeclaration | annotationTypeDeclaration )
+            int alt27=2;
+            int LA27_0 = input.LA(1);
+
+            if ( (LA27_0==39) ) {
+                alt27=1;
+            }
+            else if ( (LA27_0==71) ) {
+                alt27=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 27, 0, input);
+
+                throw nvae;
+            }
+            switch (alt27) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:277:4: normalInterfaceDeclaration
+                    {
+                    pushFollow(FOLLOW_normalInterfaceDeclaration_in_interfaceDeclaration448);
+                    normalInterfaceDeclaration();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:278:5: annotationTypeDeclaration
+                    {
+                    pushFollow(FOLLOW_annotationTypeDeclaration_in_interfaceDeclaration454);
+                    annotationTypeDeclaration();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 16, interfaceDeclaration_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "interfaceDeclaration"
+
+
+    // $ANTLR start "normalInterfaceDeclaration"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:281:1: normalInterfaceDeclaration : 'interface' Identifier ( typeParameters )? ( 'extends' typeList )? interfaceBody ;
+    public final void normalInterfaceDeclaration() throws RecognitionException {
+        int normalInterfaceDeclaration_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 17) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:282:2: ( 'interface' Identifier ( typeParameters )? ( 'extends' typeList )? interfaceBody )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:282:4: 'interface' Identifier ( typeParameters )? ( 'extends' typeList )? interfaceBody
+            {
+            match(input,39,FOLLOW_39_in_normalInterfaceDeclaration466); if (state.failed) return ;
+            match(input,Identifier,FOLLOW_Identifier_in_normalInterfaceDeclaration468); if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:282:27: ( typeParameters )?
+            int alt28=2;
+            int LA28_0 = input.LA(1);
+
+            if ( (LA28_0==33) ) {
+                alt28=1;
+            }
+            switch (alt28) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: typeParameters
+                    {
+                    pushFollow(FOLLOW_typeParameters_in_normalInterfaceDeclaration470);
+                    typeParameters();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:282:43: ( 'extends' typeList )?
+            int alt29=2;
+            int LA29_0 = input.LA(1);
+
+            if ( (LA29_0==31) ) {
+                alt29=1;
+            }
+            switch (alt29) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:282:44: 'extends' typeList
+                    {
+                    match(input,31,FOLLOW_31_in_normalInterfaceDeclaration474); if (state.failed) return ;
+                    pushFollow(FOLLOW_typeList_in_normalInterfaceDeclaration476);
+                    typeList();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            pushFollow(FOLLOW_interfaceBody_in_normalInterfaceDeclaration480);
+            interfaceBody();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 17, normalInterfaceDeclaration_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "normalInterfaceDeclaration"
+
+
+    // $ANTLR start "typeList"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:285:1: typeList : type ( ',' type )* ;
+    public final void typeList() throws RecognitionException {
+        int typeList_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 18) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:286:2: ( type ( ',' type )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:286:4: type ( ',' type )*
+            {
+            pushFollow(FOLLOW_type_in_typeList492);
+            type();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:286:9: ( ',' type )*
+            loop30:
+            do {
+                int alt30=2;
+                int LA30_0 = input.LA(1);
+
+                if ( (LA30_0==34) ) {
+                    alt30=1;
+                }
+
+
+                switch (alt30) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:286:10: ',' type
+            	    {
+            	    match(input,34,FOLLOW_34_in_typeList495); if (state.failed) return ;
+            	    pushFollow(FOLLOW_type_in_typeList497);
+            	    type();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop30;
+                }
+            } while (true);
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 18, typeList_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "typeList"
+
+
+    // $ANTLR start "classBody"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:289:1: classBody : '{' ( classBodyDeclaration )* '}' ;
+    public final void classBody() throws RecognitionException {
+        int classBody_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 19) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:290:2: ( '{' ( classBodyDeclaration )* '}' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:290:4: '{' ( classBodyDeclaration )* '}'
+            {
+            match(input,37,FOLLOW_37_in_classBody511); if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:290:8: ( classBodyDeclaration )*
+            loop31:
+            do {
+                int alt31=2;
+                alt31 = dfa31.predict(input);
+                switch (alt31) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: classBodyDeclaration
+            	    {
+            	    pushFollow(FOLLOW_classBodyDeclaration_in_classBody513);
+            	    classBodyDeclaration();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop31;
+                }
+            } while (true);
+
+            match(input,38,FOLLOW_38_in_classBody516); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 19, classBody_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "classBody"
+
+
+    // $ANTLR start "interfaceBody"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:293:1: interfaceBody : '{' ( interfaceBodyDeclaration )* '}' ;
+    public final void interfaceBody() throws RecognitionException {
+        int interfaceBody_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 20) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:294:2: ( '{' ( interfaceBodyDeclaration )* '}' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:294:4: '{' ( interfaceBodyDeclaration )* '}'
+            {
+            match(input,37,FOLLOW_37_in_interfaceBody528); if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:294:8: ( interfaceBodyDeclaration )*
+            loop32:
+            do {
+                int alt32=2;
+                alt32 = dfa32.predict(input);
+                switch (alt32) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: interfaceBodyDeclaration
+            	    {
+            	    pushFollow(FOLLOW_interfaceBodyDeclaration_in_interfaceBody530);
+            	    interfaceBodyDeclaration();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop32;
+                }
+            } while (true);
+
+            match(input,38,FOLLOW_38_in_interfaceBody533); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 20, interfaceBody_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "interfaceBody"
+
+
+    // $ANTLR start "classBodyDeclaration"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:297:1: classBodyDeclaration : ( ';' | ( 'static' )? block | ( modifier )* memberDecl );
+    public final void classBodyDeclaration() throws RecognitionException {
+        int classBodyDeclaration_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 21) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:298:2: ( ';' | ( 'static' )? block | ( modifier )* memberDecl )
+            int alt35=3;
+            alt35 = dfa35.predict(input);
+            switch (alt35) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:298:4: ';'
+                    {
+                    match(input,25,FOLLOW_25_in_classBodyDeclaration544); if (state.failed) return ;
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:299:4: ( 'static' )? block
+                    {
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:299:4: ( 'static' )?
+                    int alt33=2;
+                    int LA33_0 = input.LA(1);
+
+                    if ( (LA33_0==27) ) {
+                        alt33=1;
+                    }
+                    switch (alt33) {
+                        case 1 :
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: 'static'
+                            {
+                            match(input,27,FOLLOW_27_in_classBodyDeclaration549); if (state.failed) return ;
+
+                            }
+                            break;
+
+                    }
+
+                    pushFollow(FOLLOW_block_in_classBodyDeclaration552);
+                    block();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 3 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:300:4: ( modifier )* memberDecl
+                    {
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:300:4: ( modifier )*
+                    loop34:
+                    do {
+                        int alt34=2;
+                        alt34 = dfa34.predict(input);
+                        switch (alt34) {
+                    	case 1 :
+                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: modifier
+                    	    {
+                    	    pushFollow(FOLLOW_modifier_in_classBodyDeclaration557);
+                    	    modifier();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return ;
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop34;
+                        }
+                    } while (true);
+
+                    pushFollow(FOLLOW_memberDecl_in_classBodyDeclaration560);
+                    memberDecl();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 21, classBodyDeclaration_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "classBodyDeclaration"
+
+
+    // $ANTLR start "memberDecl"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:303: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 ( state.backtracking>0 && alreadyParsedRule(input, 22) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:304:2: ( genericMethodOrConstructorDecl | methodDeclaration | fieldDeclaration | 'void' Identifier voidMethodDeclaratorRest | Identifier constructorDeclaratorRest | interfaceDeclaration | classDeclaration )
+            int alt36=7;
+            alt36 = dfa36.predict(input);
+            switch (alt36) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:304:4: genericMethodOrConstructorDecl
+                    {
+                    pushFollow(FOLLOW_genericMethodOrConstructorDecl_in_memberDecl572);
+                    genericMethodOrConstructorDecl();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:305:4: methodDeclaration
+                    {
+                    pushFollow(FOLLOW_methodDeclaration_in_memberDecl577);
+                    methodDeclaration();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 3 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:306:4: fieldDeclaration
+                    {
+                    pushFollow(FOLLOW_fieldDeclaration_in_memberDecl582);
+                    fieldDeclaration();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 4 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:307:4: 'void' Identifier voidMethodDeclaratorRest
+                    {
+                    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();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 5 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:308:4: Identifier constructorDeclaratorRest
+                    {
+                    match(input,Identifier,FOLLOW_Identifier_in_memberDecl596); if (state.failed) return ;
+                    pushFollow(FOLLOW_constructorDeclaratorRest_in_memberDecl598);
+                    constructorDeclaratorRest();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 6 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:309:4: interfaceDeclaration
+                    {
+                    pushFollow(FOLLOW_interfaceDeclaration_in_memberDecl603);
+                    interfaceDeclaration();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 7 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:310:4: classDeclaration
+                    {
+                    pushFollow(FOLLOW_classDeclaration_in_memberDecl608);
+                    classDeclaration();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 22, memberDecl_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "memberDecl"
+
+
+    // $ANTLR start "genericMethodOrConstructorDecl"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:313:1: genericMethodOrConstructorDecl : typeParameters genericMethodOrConstructorRest ;
+    public final void genericMethodOrConstructorDecl() throws RecognitionException {
+        int genericMethodOrConstructorDecl_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 23) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:314:2: ( typeParameters genericMethodOrConstructorRest )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:314:4: typeParameters genericMethodOrConstructorRest
+            {
+            pushFollow(FOLLOW_typeParameters_in_genericMethodOrConstructorDecl620);
+            typeParameters();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_genericMethodOrConstructorRest_in_genericMethodOrConstructorDecl622);
+            genericMethodOrConstructorRest();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 23, genericMethodOrConstructorDecl_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "genericMethodOrConstructorDecl"
+
+
+    // $ANTLR start "genericMethodOrConstructorRest"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:317:1: genericMethodOrConstructorRest : ( ( type | 'void' ) Identifier methodDeclaratorRest | Identifier constructorDeclaratorRest );
+    public final void genericMethodOrConstructorRest() throws RecognitionException {
+        int genericMethodOrConstructorRest_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 24) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:318: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) ) {
+                    alt38=1;
+                }
+                else if ( (LA38_1==65) ) {
+                    alt38=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 38, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else if ( (LA38_0==40||(LA38_0>=55 && LA38_0<=62)) ) {
+                alt38=1;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 38, 0, input);
+
+                throw nvae;
+            }
+            switch (alt38) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:318:4: ( type | 'void' ) Identifier methodDeclaratorRest
+                    {
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:318:4: ( type | 'void' )
+                    int alt37=2;
+                    int LA37_0 = input.LA(1);
+
+                    if ( (LA37_0==Identifier||(LA37_0>=55 && LA37_0<=62)) ) {
+                        alt37=1;
+                    }
+                    else if ( (LA37_0==40) ) {
+                        alt37=2;
+                    }
+                    else {
+                        if (state.backtracking>0) {state.failed=true; return ;}
+                        NoViableAltException nvae =
+                            new NoViableAltException("", 37, 0, input);
+
+                        throw nvae;
+                    }
+                    switch (alt37) {
+                        case 1 :
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:318:5: type
+                            {
+                            pushFollow(FOLLOW_type_in_genericMethodOrConstructorRest635);
+                            type();
+
+                            state._fsp--;
+                            if (state.failed) return ;
+
+                            }
+                            break;
+                        case 2 :
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:318:12: 'void'
+                            {
+                            match(input,40,FOLLOW_40_in_genericMethodOrConstructorRest639); if (state.failed) return ;
+
+                            }
+                            break;
+
+                    }
+
+                    match(input,Identifier,FOLLOW_Identifier_in_genericMethodOrConstructorRest642); if (state.failed) return ;
+                    pushFollow(FOLLOW_methodDeclaratorRest_in_genericMethodOrConstructorRest644);
+                    methodDeclaratorRest();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:319:4: Identifier constructorDeclaratorRest
+                    {
+                    match(input,Identifier,FOLLOW_Identifier_in_genericMethodOrConstructorRest649); if (state.failed) return ;
+                    pushFollow(FOLLOW_constructorDeclaratorRest_in_genericMethodOrConstructorRest651);
+                    constructorDeclaratorRest();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 24, genericMethodOrConstructorRest_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "genericMethodOrConstructorRest"
+
+
+    // $ANTLR start "methodDeclaration"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:322:1: methodDeclaration : type Identifier methodDeclaratorRest ;
+    public final void methodDeclaration() throws RecognitionException {
+        int methodDeclaration_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 25) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:323:2: ( type Identifier methodDeclaratorRest )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:323:4: type Identifier methodDeclaratorRest
+            {
+            pushFollow(FOLLOW_type_in_methodDeclaration662);
+            type();
+
+            state._fsp--;
+            if (state.failed) return ;
+            match(input,Identifier,FOLLOW_Identifier_in_methodDeclaration664); if (state.failed) return ;
+            pushFollow(FOLLOW_methodDeclaratorRest_in_methodDeclaration666);
+            methodDeclaratorRest();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 25, methodDeclaration_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "methodDeclaration"
+
+
+    // $ANTLR start "fieldDeclaration"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:326:1: fieldDeclaration : type variableDeclarators ';' ;
+    public final void fieldDeclaration() throws RecognitionException {
+        int fieldDeclaration_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 26) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:327:2: ( type variableDeclarators ';' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:327:4: type variableDeclarators ';'
+            {
+            pushFollow(FOLLOW_type_in_fieldDeclaration677);
+            type();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_variableDeclarators_in_fieldDeclaration679);
+            variableDeclarators();
+
+            state._fsp--;
+            if (state.failed) return ;
+            match(input,25,FOLLOW_25_in_fieldDeclaration681); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 26, fieldDeclaration_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "fieldDeclaration"
+
+
+    // $ANTLR start "interfaceBodyDeclaration"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:330:1: interfaceBodyDeclaration : ( ( modifier )* interfaceMemberDecl | ';' );
+    public final void interfaceBodyDeclaration() throws RecognitionException {
+        int interfaceBodyDeclaration_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 27) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:331:2: ( ( modifier )* interfaceMemberDecl | ';' )
+            int alt40=2;
+            alt40 = dfa40.predict(input);
+            switch (alt40) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:331:4: ( modifier )* interfaceMemberDecl
+                    {
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:331:4: ( modifier )*
+                    loop39:
+                    do {
+                        int alt39=2;
+                        alt39 = dfa39.predict(input);
+                        switch (alt39) {
+                    	case 1 :
+                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: modifier
+                    	    {
+                    	    pushFollow(FOLLOW_modifier_in_interfaceBodyDeclaration694);
+                    	    modifier();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return ;
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop39;
+                        }
+                    } while (true);
+
+                    pushFollow(FOLLOW_interfaceMemberDecl_in_interfaceBodyDeclaration697);
+                    interfaceMemberDecl();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:332:6: ';'
+                    {
+                    match(input,25,FOLLOW_25_in_interfaceBodyDeclaration704); if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 27, interfaceBodyDeclaration_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "interfaceBodyDeclaration"
+
+
+    // $ANTLR start "interfaceMemberDecl"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:335:1: interfaceMemberDecl : ( interfaceMethodOrFieldDecl | interfaceGenericMethodDecl | 'void' Identifier voidInterfaceMethodDeclaratorRest | interfaceDeclaration | classDeclaration );
+    public final void interfaceMemberDecl() throws RecognitionException {
+        int interfaceMemberDecl_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 28) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:336:2: ( interfaceMethodOrFieldDecl | interfaceGenericMethodDecl | 'void' Identifier voidInterfaceMethodDeclaratorRest | interfaceDeclaration | classDeclaration )
+            int alt41=5;
+            switch ( input.LA(1) ) {
+            case Identifier:
+            case 55:
+            case 56:
+            case 57:
+            case 58:
+            case 59:
+            case 60:
+            case 61:
+            case 62:
+                {
+                alt41=1;
+                }
+                break;
+            case 33:
+                {
+                alt41=2;
+                }
+                break;
+            case 40:
+                {
+                alt41=3;
+                }
+                break;
+            case 39:
+            case 71:
+                {
+                alt41=4;
+                }
+                break;
+            case ENUM:
+            case 30:
+                {
+                alt41=5;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 41, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt41) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:336:4: interfaceMethodOrFieldDecl
+                    {
+                    pushFollow(FOLLOW_interfaceMethodOrFieldDecl_in_interfaceMemberDecl715);
+                    interfaceMethodOrFieldDecl();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:337:6: interfaceGenericMethodDecl
+                    {
+                    pushFollow(FOLLOW_interfaceGenericMethodDecl_in_interfaceMemberDecl722);
+                    interfaceGenericMethodDecl();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 3 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:338:9: 'void' Identifier voidInterfaceMethodDeclaratorRest
+                    {
+                    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();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 4 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:339:9: interfaceDeclaration
+                    {
+                    pushFollow(FOLLOW_interfaceDeclaration_in_interfaceMemberDecl746);
+                    interfaceDeclaration();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 5 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:340:9: classDeclaration
+                    {
+                    pushFollow(FOLLOW_classDeclaration_in_interfaceMemberDecl756);
+                    classDeclaration();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 28, interfaceMemberDecl_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "interfaceMemberDecl"
+
+
+    // $ANTLR start "interfaceMethodOrFieldDecl"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:343:1: interfaceMethodOrFieldDecl : type Identifier interfaceMethodOrFieldRest ;
+    public final void interfaceMethodOrFieldDecl() throws RecognitionException {
+        int interfaceMethodOrFieldDecl_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 29) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:344:2: ( type Identifier interfaceMethodOrFieldRest )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:344:4: type Identifier interfaceMethodOrFieldRest
+            {
+            pushFollow(FOLLOW_type_in_interfaceMethodOrFieldDecl768);
+            type();
+
+            state._fsp--;
+            if (state.failed) return ;
+            match(input,Identifier,FOLLOW_Identifier_in_interfaceMethodOrFieldDecl770); if (state.failed) return ;
+            pushFollow(FOLLOW_interfaceMethodOrFieldRest_in_interfaceMethodOrFieldDecl772);
+            interfaceMethodOrFieldRest();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 29, interfaceMethodOrFieldDecl_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "interfaceMethodOrFieldDecl"
+
+
+    // $ANTLR start "interfaceMethodOrFieldRest"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:347:1: interfaceMethodOrFieldRest : ( constantDeclaratorsRest ';' | interfaceMethodDeclaratorRest );
+    public final void interfaceMethodOrFieldRest() throws RecognitionException {
+        int interfaceMethodOrFieldRest_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 30) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:348:2: ( constantDeclaratorsRest ';' | interfaceMethodDeclaratorRest )
+            int alt42=2;
+            int LA42_0 = input.LA(1);
+
+            if ( (LA42_0==41||LA42_0==44) ) {
+                alt42=1;
+            }
+            else if ( (LA42_0==65) ) {
+                alt42=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 42, 0, input);
+
+                throw nvae;
+            }
+            switch (alt42) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:348:4: constantDeclaratorsRest ';'
+                    {
+                    pushFollow(FOLLOW_constantDeclaratorsRest_in_interfaceMethodOrFieldRest784);
+                    constantDeclaratorsRest();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    match(input,25,FOLLOW_25_in_interfaceMethodOrFieldRest786); if (state.failed) return ;
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:349:4: interfaceMethodDeclaratorRest
+                    {
+                    pushFollow(FOLLOW_interfaceMethodDeclaratorRest_in_interfaceMethodOrFieldRest791);
+                    interfaceMethodDeclaratorRest();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 30, interfaceMethodOrFieldRest_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "interfaceMethodOrFieldRest"
+
+
+    // $ANTLR start "methodDeclaratorRest"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:352:1: methodDeclaratorRest : formalParameters ( '[' ']' )* ( 'throws' qualifiedNameList )? ( methodBody | ';' ) ;
+    public final void methodDeclaratorRest() throws RecognitionException {
+        int methodDeclaratorRest_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 31) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:353:2: ( formalParameters ( '[' ']' )* ( 'throws' qualifiedNameList )? ( methodBody | ';' ) )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:353:4: formalParameters ( '[' ']' )* ( 'throws' qualifiedNameList )? ( methodBody | ';' )
+            {
+            pushFollow(FOLLOW_formalParameters_in_methodDeclaratorRest803);
+            formalParameters();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:353:21: ( '[' ']' )*
+            loop43:
+            do {
+                int alt43=2;
+                int LA43_0 = input.LA(1);
+
+                if ( (LA43_0==41) ) {
+                    alt43=1;
+                }
+
+
+                switch (alt43) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:353:22: '[' ']'
+            	    {
+            	    match(input,41,FOLLOW_41_in_methodDeclaratorRest806); if (state.failed) return ;
+            	    match(input,42,FOLLOW_42_in_methodDeclaratorRest808); if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop43;
+                }
+            } while (true);
+
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:354:9: ( 'throws' qualifiedNameList )?
+            int alt44=2;
+            int LA44_0 = input.LA(1);
+
+            if ( (LA44_0==43) ) {
+                alt44=1;
+            }
+            switch (alt44) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:354:10: 'throws' qualifiedNameList
+                    {
+                    match(input,43,FOLLOW_43_in_methodDeclaratorRest821); if (state.failed) return ;
+                    pushFollow(FOLLOW_qualifiedNameList_in_methodDeclaratorRest823);
+                    qualifiedNameList();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:355:9: ( methodBody | ';' )
+            int alt45=2;
+            int LA45_0 = input.LA(1);
+
+            if ( (LA45_0==37) ) {
+                alt45=1;
+            }
+            else if ( (LA45_0==25) ) {
+                alt45=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 45, 0, input);
+
+                throw nvae;
+            }
+            switch (alt45) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:355:13: methodBody
+                    {
+                    pushFollow(FOLLOW_methodBody_in_methodDeclaratorRest839);
+                    methodBody();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:356:13: ';'
+                    {
+                    match(input,25,FOLLOW_25_in_methodDeclaratorRest853); if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 31, methodDeclaratorRest_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "methodDeclaratorRest"
+
+
+    // $ANTLR start "voidMethodDeclaratorRest"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:360:1: voidMethodDeclaratorRest : formalParameters ( 'throws' qualifiedNameList )? ( methodBody | ';' ) ;
+    public final void voidMethodDeclaratorRest() throws RecognitionException {
+        int voidMethodDeclaratorRest_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 32) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:361:2: ( formalParameters ( 'throws' qualifiedNameList )? ( methodBody | ';' ) )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:361:4: formalParameters ( 'throws' qualifiedNameList )? ( methodBody | ';' )
+            {
+            pushFollow(FOLLOW_formalParameters_in_voidMethodDeclaratorRest875);
+            formalParameters();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:361:21: ( 'throws' qualifiedNameList )?
+            int alt46=2;
+            int LA46_0 = input.LA(1);
+
+            if ( (LA46_0==43) ) {
+                alt46=1;
+            }
+            switch (alt46) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:361:22: 'throws' qualifiedNameList
+                    {
+                    match(input,43,FOLLOW_43_in_voidMethodDeclaratorRest878); if (state.failed) return ;
+                    pushFollow(FOLLOW_qualifiedNameList_in_voidMethodDeclaratorRest880);
+                    qualifiedNameList();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:362:9: ( methodBody | ';' )
+            int alt47=2;
+            int LA47_0 = input.LA(1);
+
+            if ( (LA47_0==37) ) {
+                alt47=1;
+            }
+            else if ( (LA47_0==25) ) {
+                alt47=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 47, 0, input);
+
+                throw nvae;
+            }
+            switch (alt47) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:362:13: methodBody
+                    {
+                    pushFollow(FOLLOW_methodBody_in_voidMethodDeclaratorRest896);
+                    methodBody();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:363:13: ';'
+                    {
+                    match(input,25,FOLLOW_25_in_voidMethodDeclaratorRest910); if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 32, voidMethodDeclaratorRest_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "voidMethodDeclaratorRest"
+
+
+    // $ANTLR start "interfaceMethodDeclaratorRest"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:367:1: interfaceMethodDeclaratorRest : formalParameters ( '[' ']' )* ( 'throws' qualifiedNameList )? ';' ;
+    public final void interfaceMethodDeclaratorRest() throws RecognitionException {
+        int interfaceMethodDeclaratorRest_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 33) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:368:2: ( formalParameters ( '[' ']' )* ( 'throws' qualifiedNameList )? ';' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:368:4: formalParameters ( '[' ']' )* ( 'throws' qualifiedNameList )? ';'
+            {
+            pushFollow(FOLLOW_formalParameters_in_interfaceMethodDeclaratorRest932);
+            formalParameters();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:368:21: ( '[' ']' )*
+            loop48:
+            do {
+                int alt48=2;
+                int LA48_0 = input.LA(1);
+
+                if ( (LA48_0==41) ) {
+                    alt48=1;
+                }
+
+
+                switch (alt48) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:368:22: '[' ']'
+            	    {
+            	    match(input,41,FOLLOW_41_in_interfaceMethodDeclaratorRest935); if (state.failed) return ;
+            	    match(input,42,FOLLOW_42_in_interfaceMethodDeclaratorRest937); if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop48;
+                }
+            } while (true);
+
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:368:32: ( 'throws' qualifiedNameList )?
+            int alt49=2;
+            int LA49_0 = input.LA(1);
+
+            if ( (LA49_0==43) ) {
+                alt49=1;
+            }
+            switch (alt49) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:368:33: 'throws' qualifiedNameList
+                    {
+                    match(input,43,FOLLOW_43_in_interfaceMethodDeclaratorRest942); if (state.failed) return ;
+                    pushFollow(FOLLOW_qualifiedNameList_in_interfaceMethodDeclaratorRest944);
+                    qualifiedNameList();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            match(input,25,FOLLOW_25_in_interfaceMethodDeclaratorRest948); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 33, interfaceMethodDeclaratorRest_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "interfaceMethodDeclaratorRest"
+
+
+    // $ANTLR start "interfaceGenericMethodDecl"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:371:1: interfaceGenericMethodDecl : typeParameters ( type | 'void' ) Identifier interfaceMethodDeclaratorRest ;
+    public final void interfaceGenericMethodDecl() throws RecognitionException {
+        int interfaceGenericMethodDecl_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 34) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:372:2: ( typeParameters ( type | 'void' ) Identifier interfaceMethodDeclaratorRest )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:372:4: typeParameters ( type | 'void' ) Identifier interfaceMethodDeclaratorRest
+            {
+            pushFollow(FOLLOW_typeParameters_in_interfaceGenericMethodDecl960);
+            typeParameters();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:372:19: ( type | 'void' )
+            int alt50=2;
+            int LA50_0 = input.LA(1);
+
+            if ( (LA50_0==Identifier||(LA50_0>=55 && LA50_0<=62)) ) {
+                alt50=1;
+            }
+            else if ( (LA50_0==40) ) {
+                alt50=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 50, 0, input);
+
+                throw nvae;
+            }
+            switch (alt50) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:372:20: type
+                    {
+                    pushFollow(FOLLOW_type_in_interfaceGenericMethodDecl963);
+                    type();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:372:27: 'void'
+                    {
+                    match(input,40,FOLLOW_40_in_interfaceGenericMethodDecl967); if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            match(input,Identifier,FOLLOW_Identifier_in_interfaceGenericMethodDecl970); if (state.failed) return ;
+            pushFollow(FOLLOW_interfaceMethodDeclaratorRest_in_interfaceGenericMethodDecl980);
+            interfaceMethodDeclaratorRest();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 34, interfaceGenericMethodDecl_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "interfaceGenericMethodDecl"
+
+
+    // $ANTLR start "voidInterfaceMethodDeclaratorRest"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:376:1: voidInterfaceMethodDeclaratorRest : formalParameters ( 'throws' qualifiedNameList )? ';' ;
+    public final void voidInterfaceMethodDeclaratorRest() throws RecognitionException {
+        int voidInterfaceMethodDeclaratorRest_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 35) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:377:2: ( formalParameters ( 'throws' qualifiedNameList )? ';' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:377:4: formalParameters ( 'throws' qualifiedNameList )? ';'
+            {
+            pushFollow(FOLLOW_formalParameters_in_voidInterfaceMethodDeclaratorRest992);
+            formalParameters();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:377:21: ( 'throws' qualifiedNameList )?
+            int alt51=2;
+            int LA51_0 = input.LA(1);
+
+            if ( (LA51_0==43) ) {
+                alt51=1;
+            }
+            switch (alt51) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:377:22: 'throws' qualifiedNameList
+                    {
+                    match(input,43,FOLLOW_43_in_voidInterfaceMethodDeclaratorRest995); if (state.failed) return ;
+                    pushFollow(FOLLOW_qualifiedNameList_in_voidInterfaceMethodDeclaratorRest997);
+                    qualifiedNameList();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            match(input,25,FOLLOW_25_in_voidInterfaceMethodDeclaratorRest1001); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 35, voidInterfaceMethodDeclaratorRest_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "voidInterfaceMethodDeclaratorRest"
+
+
+    // $ANTLR start "constructorDeclaratorRest"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:380:1: constructorDeclaratorRest : formalParameters ( 'throws' qualifiedNameList )? methodBody ;
+    public final void constructorDeclaratorRest() throws RecognitionException {
+        int constructorDeclaratorRest_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 36) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:381:2: ( formalParameters ( 'throws' qualifiedNameList )? methodBody )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:381:4: formalParameters ( 'throws' qualifiedNameList )? methodBody
+            {
+            pushFollow(FOLLOW_formalParameters_in_constructorDeclaratorRest1013);
+            formalParameters();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:381:21: ( 'throws' qualifiedNameList )?
+            int alt52=2;
+            int LA52_0 = input.LA(1);
+
+            if ( (LA52_0==43) ) {
+                alt52=1;
+            }
+            switch (alt52) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:381:22: 'throws' qualifiedNameList
+                    {
+                    match(input,43,FOLLOW_43_in_constructorDeclaratorRest1016); if (state.failed) return ;
+                    pushFollow(FOLLOW_qualifiedNameList_in_constructorDeclaratorRest1018);
+                    qualifiedNameList();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            pushFollow(FOLLOW_methodBody_in_constructorDeclaratorRest1022);
+            methodBody();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 36, constructorDeclaratorRest_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "constructorDeclaratorRest"
+
+
+    // $ANTLR start "constantDeclarator"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:384:1: constantDeclarator : Identifier constantDeclaratorRest ;
+    public final void constantDeclarator() throws RecognitionException {
+        int constantDeclarator_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 37) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:385:2: ( Identifier constantDeclaratorRest )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:385:4: Identifier constantDeclaratorRest
+            {
+            match(input,Identifier,FOLLOW_Identifier_in_constantDeclarator1033); if (state.failed) return ;
+            pushFollow(FOLLOW_constantDeclaratorRest_in_constantDeclarator1035);
+            constantDeclaratorRest();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 37, constantDeclarator_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "constantDeclarator"
+
+
+    // $ANTLR start "variableDeclarators"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:388:1: variableDeclarators : variableDeclarator ( ',' variableDeclarator )* ;
+    public final void variableDeclarators() throws RecognitionException {
+        int variableDeclarators_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 38) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:389:2: ( variableDeclarator ( ',' variableDeclarator )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:389:4: variableDeclarator ( ',' variableDeclarator )*
+            {
+            pushFollow(FOLLOW_variableDeclarator_in_variableDeclarators1047);
+            variableDeclarator();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:389:23: ( ',' variableDeclarator )*
+            loop53:
+            do {
+                int alt53=2;
+                int LA53_0 = input.LA(1);
+
+                if ( (LA53_0==34) ) {
+                    alt53=1;
+                }
+
+
+                switch (alt53) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:389:24: ',' variableDeclarator
+            	    {
+            	    match(input,34,FOLLOW_34_in_variableDeclarators1050); if (state.failed) return ;
+            	    pushFollow(FOLLOW_variableDeclarator_in_variableDeclarators1052);
+            	    variableDeclarator();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop53;
+                }
+            } while (true);
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 38, variableDeclarators_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "variableDeclarators"
+
+    protected static class variableDeclarator_scope {
+        JavaLocalDeclarationDescr.IdentifierDescr ident;
+    }
+    protected Stack variableDeclarator_stack = new Stack();
+
+
+    // $ANTLR start "variableDeclarator"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:392: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;
+        JavaParser.variableDeclaratorRest_return rest = null;
+
+
+
+        		if( this.localVariableLevel == 1 ) { // we only want top level local vars
+        			((variableDeclarator_scope)variableDeclarator_stack.peek()).ident = new JavaLocalDeclarationDescr.IdentifierDescr();
+        		}
+        	
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 39) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:406:2: (id= Identifier rest= variableDeclaratorRest )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:406:4: id= Identifier rest= variableDeclaratorRest
+            {
+            id=(Token)match(input,Identifier,FOLLOW_Identifier_in_variableDeclarator1084); if (state.failed) return ;
+            pushFollow(FOLLOW_variableDeclaratorRest_in_variableDeclarator1088);
+            rest=variableDeclaratorRest();
+
+            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!=null?id.getText():null) );
+              				((variableDeclarator_scope)variableDeclarator_stack.peek()).ident.setStart( ((CommonToken)id).getStartIndex() - 1 );
+              				if( (rest!=null?((Token)rest.stop):null) != null ) {
+                 					((variableDeclarator_scope)variableDeclarator_stack.peek()).ident.setEnd( ((CommonToken)(rest!=null?((Token)rest.stop):null)).getStopIndex() );
+              				}
+              			}
+              		
+            }
+
+            }
+
+            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 );
+              	        }
+              	
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 39, variableDeclarator_StartIndex); }
+            variableDeclarator_stack.pop();
+        }
+        return ;
+    }
+    // $ANTLR end "variableDeclarator"
+
+    public static class variableDeclaratorRest_return extends ParserRuleReturnScope {
+    };
+
+    // $ANTLR start "variableDeclaratorRest"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:418: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 ( state.backtracking>0 && alreadyParsedRule(input, 40) ) { return retval; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:419:2: ( ( '[' ']' )+ ( '=' variableInitializer )? | '=' variableInitializer | )
+            int alt56=3;
+            switch ( input.LA(1) ) {
+            case 41:
+                {
+                alt56=1;
+                }
+                break;
+            case 44:
+                {
+                alt56=2;
+                }
+                break;
+            case EOF:
+            case 25:
+            case 34:
+                {
+                alt56=3;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 56, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt56) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:419:4: ( '[' ']' )+ ( '=' variableInitializer )?
+                    {
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:419:4: ( '[' ']' )+
+                    int cnt54=0;
+                    loop54:
+                    do {
+                        int alt54=2;
+                        int LA54_0 = input.LA(1);
+
+                        if ( (LA54_0==41) ) {
+                            alt54=1;
+                        }
+
+
+                        switch (alt54) {
+                    	case 1 :
+                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:419:5: '[' ']'
+                    	    {
+                    	    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 (state.backtracking>0) {state.failed=true; return retval;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(54, input);
+                                throw eee;
+                        }
+                        cnt54++;
+                    } while (true);
+
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:419:15: ( '=' variableInitializer )?
+                    int alt55=2;
+                    int LA55_0 = input.LA(1);
+
+                    if ( (LA55_0==44) ) {
+                        alt55=1;
+                    }
+                    switch (alt55) {
+                        case 1 :
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:419:16: '=' variableInitializer
+                            {
+                            match(input,44,FOLLOW_44_in_variableDeclaratorRest1113); if (state.failed) return retval;
+                            pushFollow(FOLLOW_variableInitializer_in_variableDeclaratorRest1115);
+                            variableInitializer();
+
+                            state._fsp--;
+                            if (state.failed) return retval;
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:420:4: '=' variableInitializer
+                    {
+                    match(input,44,FOLLOW_44_in_variableDeclaratorRest1122); if (state.failed) return retval;
+                    pushFollow(FOLLOW_variableInitializer_in_variableDeclaratorRest1124);
+                    variableInitializer();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+
+                    }
+                    break;
+                case 3 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:422:2: 
+                    {
+                    }
+                    break;
+
+            }
+            retval.stop = input.LT(-1);
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 40, variableDeclaratorRest_StartIndex); }
+        }
+        return retval;
+    }
+    // $ANTLR end "variableDeclaratorRest"
+
+
+    // $ANTLR start "constantDeclaratorsRest"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:424:1: constantDeclaratorsRest : constantDeclaratorRest ( ',' constantDeclarator )* ;
+    public final void constantDeclaratorsRest() throws RecognitionException {
+        int constantDeclaratorsRest_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 41) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:425:5: ( constantDeclaratorRest ( ',' constantDeclarator )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:425:9: constantDeclaratorRest ( ',' constantDeclarator )*
+            {
+            pushFollow(FOLLOW_constantDeclaratorRest_in_constantDeclaratorsRest1144);
+            constantDeclaratorRest();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:425:32: ( ',' constantDeclarator )*
+            loop57:
+            do {
+                int alt57=2;
+                int LA57_0 = input.LA(1);
+
+                if ( (LA57_0==34) ) {
+                    alt57=1;
+                }
+
+
+                switch (alt57) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:425:33: ',' constantDeclarator
+            	    {
+            	    match(input,34,FOLLOW_34_in_constantDeclaratorsRest1147); if (state.failed) return ;
+            	    pushFollow(FOLLOW_constantDeclarator_in_constantDeclaratorsRest1149);
+            	    constantDeclarator();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop57;
+                }
+            } while (true);
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 41, constantDeclaratorsRest_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "constantDeclaratorsRest"
+
+
+    // $ANTLR start "constantDeclaratorRest"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:428:1: constantDeclaratorRest : ( '[' ']' )* '=' variableInitializer ;
+    public final void constantDeclaratorRest() throws RecognitionException {
+        int constantDeclaratorRest_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 42) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:429:2: ( ( '[' ']' )* '=' variableInitializer )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:429:4: ( '[' ']' )* '=' variableInitializer
+            {
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:429:4: ( '[' ']' )*
+            loop58:
+            do {
+                int alt58=2;
+                int LA58_0 = input.LA(1);
+
+                if ( (LA58_0==41) ) {
+                    alt58=1;
+                }
+
+
+                switch (alt58) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:429:5: '[' ']'
+            	    {
+            	    match(input,41,FOLLOW_41_in_constantDeclaratorRest1166); if (state.failed) return ;
+            	    match(input,42,FOLLOW_42_in_constantDeclaratorRest1168); if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop58;
+                }
+            } while (true);
+
+            match(input,44,FOLLOW_44_in_constantDeclaratorRest1172); if (state.failed) return ;
+            pushFollow(FOLLOW_variableInitializer_in_constantDeclaratorRest1174);
+            variableInitializer();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 42, constantDeclaratorRest_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "constantDeclaratorRest"
+
+
+    // $ANTLR start "variableDeclaratorId"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:432:1: variableDeclaratorId : Identifier ( '[' ']' )* ;
+    public final void variableDeclaratorId() throws RecognitionException {
+        int variableDeclaratorId_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 43) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:433:2: ( Identifier ( '[' ']' )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:433:4: Identifier ( '[' ']' )*
+            {
+            match(input,Identifier,FOLLOW_Identifier_in_variableDeclaratorId1186); if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:433:15: ( '[' ']' )*
+            loop59:
+            do {
+                int alt59=2;
+                int LA59_0 = input.LA(1);
+
+                if ( (LA59_0==41) ) {
+                    alt59=1;
+                }
+
+
+                switch (alt59) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:433:16: '[' ']'
+            	    {
+            	    match(input,41,FOLLOW_41_in_variableDeclaratorId1189); if (state.failed) return ;
+            	    match(input,42,FOLLOW_42_in_variableDeclaratorId1191); if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop59;
+                }
+            } while (true);
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 43, variableDeclaratorId_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "variableDeclaratorId"
+
+
+    // $ANTLR start "variableInitializer"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:436:1: variableInitializer : ( arrayInitializer | expression );
+    public final void variableInitializer() throws RecognitionException {
+        int variableInitializer_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 44) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:437:2: ( arrayInitializer | expression )
+            int alt60=2;
+            alt60 = dfa60.predict(input);
+            switch (alt60) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:437:4: arrayInitializer
+                    {
+                    pushFollow(FOLLOW_arrayInitializer_in_variableInitializer1204);
+                    arrayInitializer();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:438:9: expression
+                    {
+                    pushFollow(FOLLOW_expression_in_variableInitializer1214);
+                    expression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 44, variableInitializer_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "variableInitializer"
+
+
+    // $ANTLR start "arrayInitializer"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:441:1: arrayInitializer : '{' ( variableInitializer ( ',' variableInitializer )* ( ',' )? )? '}' ;
+    public final void arrayInitializer() throws RecognitionException {
+        int arrayInitializer_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 45) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:442:2: ( '{' ( variableInitializer ( ',' variableInitializer )* ( ',' )? )? '}' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:442:4: '{' ( variableInitializer ( ',' variableInitializer )* ( ',' )? )? '}'
+            {
+            match(input,37,FOLLOW_37_in_arrayInitializer1226); if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:442:8: ( variableInitializer ( ',' variableInitializer )* ( ',' )? )?
+            int alt63=2;
+            alt63 = dfa63.predict(input);
+            switch (alt63) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:442:9: variableInitializer ( ',' variableInitializer )* ( ',' )?
+                    {
+                    pushFollow(FOLLOW_variableInitializer_in_arrayInitializer1229);
+                    variableInitializer();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:442:29: ( ',' variableInitializer )*
+                    loop61:
+                    do {
+                        int alt61=2;
+                        alt61 = dfa61.predict(input);
+                        switch (alt61) {
+                    	case 1 :
+                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:442:30: ',' variableInitializer
+                    	    {
+                    	    match(input,34,FOLLOW_34_in_arrayInitializer1232); if (state.failed) return ;
+                    	    pushFollow(FOLLOW_variableInitializer_in_arrayInitializer1234);
+                    	    variableInitializer();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return ;
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop61;
+                        }
+                    } while (true);
+
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:442:56: ( ',' )?
+                    int alt62=2;
+                    int LA62_0 = input.LA(1);
+
+                    if ( (LA62_0==34) ) {
+                        alt62=1;
+                    }
+                    switch (alt62) {
+                        case 1 :
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:442:57: ','
+                            {
+                            match(input,34,FOLLOW_34_in_arrayInitializer1239); if (state.failed) return ;
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            match(input,38,FOLLOW_38_in_arrayInitializer1246); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 45, arrayInitializer_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "arrayInitializer"
+
+
+    // $ANTLR start "modifier"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:445: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 ( state.backtracking>0 && alreadyParsedRule(input, 46) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:446:5: ( annotation | 'public' | 'protected' | 'private' | 'static' | 'abstract' | 'final' | 'native' | 'synchronized' | 'transient' | 'volatile' | 'strictfp' )
+            int alt64=12;
+            alt64 = dfa64.predict(input);
+            switch (alt64) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:446:9: annotation
+                    {
+                    pushFollow(FOLLOW_annotation_in_modifier1262);
+                    annotation();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:447:9: 'public'
+                    {
+                    match(input,45,FOLLOW_45_in_modifier1272); if (state.failed) return ;
+
+                    }
+                    break;
+                case 3 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:448:9: 'protected'
+                    {
+                    match(input,46,FOLLOW_46_in_modifier1282); if (state.failed) return ;
+
+                    }
+                    break;
+                case 4 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:449:9: 'private'
+                    {
+                    match(input,47,FOLLOW_47_in_modifier1292); if (state.failed) return ;
+
+                    }
+                    break;
+                case 5 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:450:9: 'static'
+                    {
+                    match(input,27,FOLLOW_27_in_modifier1302); if (state.failed) return ;
+
+                    }
+                    break;
+                case 6 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:451:9: 'abstract'
+                    {
+                    match(input,48,FOLLOW_48_in_modifier1312); if (state.failed) return ;
+
+                    }
+                    break;
+                case 7 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:452:9: 'final'
+                    {
+                    match(input,49,FOLLOW_49_in_modifier1322); if (state.failed) return ;
+
+                    }
+                    break;
+                case 8 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:453:9: 'native'
+                    {
+                    match(input,50,FOLLOW_50_in_modifier1332); if (state.failed) return ;
+
+                    }
+                    break;
+                case 9 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:454:9: 'synchronized'
+                    {
+                    match(input,51,FOLLOW_51_in_modifier1342); if (state.failed) return ;
+
+                    }
+                    break;
+                case 10 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:455:9: 'transient'
+                    {
+                    match(input,52,FOLLOW_52_in_modifier1352); if (state.failed) return ;
+
+                    }
+                    break;
+                case 11 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:456:9: 'volatile'
+                    {
+                    match(input,53,FOLLOW_53_in_modifier1362); if (state.failed) return ;
+
+                    }
+                    break;
+                case 12 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:457:9: 'strictfp'
+                    {
+                    match(input,54,FOLLOW_54_in_modifier1372); if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 46, modifier_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "modifier"
+
+
+    // $ANTLR start "packageOrTypeName"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:460:1: packageOrTypeName : Identifier ( '.' Identifier )* ;
+    public final void packageOrTypeName() throws RecognitionException {
+        int packageOrTypeName_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 47) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:461:2: ( Identifier ( '.' Identifier )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:461:4: Identifier ( '.' Identifier )*
+            {
+            match(input,Identifier,FOLLOW_Identifier_in_packageOrTypeName1386); if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:461:15: ( '.' Identifier )*
+            loop65:
+            do {
+                int alt65=2;
+                int LA65_0 = input.LA(1);
+
+                if ( (LA65_0==28) ) {
+                    int LA65_1 = input.LA(2);
+
+                    if ( (LA65_1==Identifier) ) {
+                        int LA65_2 = input.LA(3);
+
+                        if ( (synpred85_Java()) ) {
+                            alt65=1;
+                        }
+
+
+                    }
+
+
+                }
+
+
+                switch (alt65) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:461:16: '.' Identifier
+            	    {
+            	    match(input,28,FOLLOW_28_in_packageOrTypeName1389); if (state.failed) return ;
+            	    match(input,Identifier,FOLLOW_Identifier_in_packageOrTypeName1391); if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop65;
+                }
+            } while (true);
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 47, packageOrTypeName_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "packageOrTypeName"
+
+
+    // $ANTLR start "enumConstantName"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:464:1: enumConstantName : Identifier ;
+    public final void enumConstantName() throws RecognitionException {
+        int enumConstantName_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 48) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:465:5: ( Identifier )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:465:9: Identifier
+            {
+            match(input,Identifier,FOLLOW_Identifier_in_enumConstantName1409); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 48, enumConstantName_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "enumConstantName"
+
+
+    // $ANTLR start "typeName"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:468:1: typeName : ( Identifier | packageOrTypeName '.' Identifier );
+    public final void typeName() throws RecognitionException {
+        int typeName_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 49) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:469:2: ( Identifier | packageOrTypeName '.' Identifier )
+            int alt66=2;
+            int LA66_0 = input.LA(1);
+
+            if ( (LA66_0==Identifier) ) {
+                int LA66_1 = input.LA(2);
+
+                if ( (LA66_1==EOF) ) {
+                    alt66=1;
+                }
+                else if ( (LA66_1==28) ) {
+                    alt66=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 66, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 66, 0, input);
+
+                throw nvae;
+            }
+            switch (alt66) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:469:6: Identifier
+                    {
+                    match(input,Identifier,FOLLOW_Identifier_in_typeName1425); if (state.failed) return ;
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:470:9: packageOrTypeName '.' Identifier
+                    {
+                    pushFollow(FOLLOW_packageOrTypeName_in_typeName1435);
+                    packageOrTypeName();
+
+                    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;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 49, typeName_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "typeName"
+
+    public static class type_return extends ParserRuleReturnScope {
+    };
+
+    // $ANTLR start "type"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:473: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 ( state.backtracking>0 && alreadyParsedRule(input, 50) ) { return retval; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:474:2: ( Identifier ( typeArguments )? ( '.' Identifier ( typeArguments )? )* ( '[' ']' )* | primitiveType ( '[' ']' )* )
+            int alt72=2;
+            int LA72_0 = input.LA(1);
+
+            if ( (LA72_0==Identifier) ) {
+                alt72=1;
+            }
+            else if ( ((LA72_0>=55 && LA72_0<=62)) ) {
+                alt72=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 72, 0, input);
+
+                throw nvae;
+            }
+            switch (alt72) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:474:4: Identifier ( typeArguments )? ( '.' Identifier ( typeArguments )? )* ( '[' ']' )*
+                    {
+                    match(input,Identifier,FOLLOW_Identifier_in_type1450); if (state.failed) return retval;
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:474:15: ( typeArguments )?
+                    int alt67=2;
+                    alt67 = dfa67.predict(input);
+                    switch (alt67) {
+                        case 1 :
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:474:16: typeArguments
+                            {
+                            pushFollow(FOLLOW_typeArguments_in_type1453);
+                            typeArguments();
+
+                            state._fsp--;
+                            if (state.failed) return retval;
+
+                            }
+                            break;
+
+                    }
+
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:474:32: ( '.' Identifier ( typeArguments )? )*
+                    loop69:
+                    do {
+                        int alt69=2;
+                        alt69 = dfa69.predict(input);
+                        switch (alt69) {
+                    	case 1 :
+                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:474:33: '.' Identifier ( 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;
+                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:474:48: ( typeArguments )?
+                    	    int alt68=2;
+                    	    alt68 = dfa68.predict(input);
+                    	    switch (alt68) {
+                    	        case 1 :
+                    	            // src/main/resources/org/drools/semantics/java/parser/Java.g:474:49: typeArguments
+                    	            {
+                    	            pushFollow(FOLLOW_typeArguments_in_type1463);
+                    	            typeArguments();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return retval;
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop69;
+                        }
+                    } while (true);
+
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:474:68: ( '[' ']' )*
+                    loop70:
+                    do {
+                        int alt70=2;
+                        alt70 = dfa70.predict(input);
+                        switch (alt70) {
+                    	case 1 :
+                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:474:69: '[' ']'
+                    	    {
+                    	    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;
+
+                    	default :
+                    	    break loop70;
+                        }
+                    } while (true);
+
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:475:4: primitiveType ( '[' ']' )*
+                    {
+                    pushFollow(FOLLOW_primitiveType_in_type1480);
+                    primitiveType();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:475:18: ( '[' ']' )*
+                    loop71:
+                    do {
+                        int alt71=2;
+                        alt71 = dfa71.predict(input);
+                        switch (alt71) {
+                    	case 1 :
+                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:475:19: '[' ']'
+                    	    {
+                    	    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;
+
+                    	default :
+                    	    break loop71;
+                        }
+                    } while (true);
+
+
+                    }
+                    break;
+
+            }
+            retval.stop = input.LT(-1);
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 50, type_StartIndex); }
+        }
+        return retval;
+    }
+    // $ANTLR end "type"
+
+
+    // $ANTLR start "primitiveType"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:478:1: primitiveType : ( 'boolean' | 'char' | 'byte' | 'short' | 'int' | 'long' | 'float' | 'double' );
+    public final void primitiveType() throws RecognitionException {
+        int primitiveType_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 51) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:479:5: ( 'boolean' | 'char' | 'byte' | 'short' | 'int' | 'long' | 'float' | 'double' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:
+            {
+            if ( (input.LA(1)>=55 && input.LA(1)<=62) ) {
+                input.consume();
+                state.errorRecovery=false;state.failed=false;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                MismatchedSetException mse = new MismatchedSetException(null,input);
+                throw mse;
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 51, primitiveType_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "primitiveType"
+
+    public static class variableModifier_return extends ParserRuleReturnScope {
+    };
+
+    // $ANTLR start "variableModifier"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:489: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 ( state.backtracking>0 && alreadyParsedRule(input, 52) ) { return retval; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:490:2: ( 'final' | annotation )
+            int alt73=2;
+            int LA73_0 = input.LA(1);
+
+            if ( (LA73_0==49) ) {
+                alt73=1;
+            }
+            else if ( (LA73_0==71) ) {
+                alt73=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 73, 0, input);
+
+                throw nvae;
+            }
+            switch (alt73) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:490:4: 'final'
+                    {
+                    match(input,49,FOLLOW_49_in_variableModifier1573); if (state.failed) return retval;
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:491:9: annotation
+                    {
+                    pushFollow(FOLLOW_annotation_in_variableModifier1583);
+                    annotation();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+
+                    }
+                    break;
+
+            }
+            retval.stop = input.LT(-1);
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 52, variableModifier_StartIndex); }
+        }
+        return retval;
+    }
+    // $ANTLR end "variableModifier"
+
+
+    // $ANTLR start "typeArguments"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:494:1: typeArguments : '<' typeArgument ( ',' typeArgument )* '>' ;
+    public final void typeArguments() throws RecognitionException {
+        int typeArguments_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 53) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:495:2: ( '<' typeArgument ( ',' typeArgument )* '>' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:495:4: '<' typeArgument ( ',' typeArgument )* '>'
+            {
+            match(input,33,FOLLOW_33_in_typeArguments1594); if (state.failed) return ;
+            pushFollow(FOLLOW_typeArgument_in_typeArguments1596);
+            typeArgument();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:495:21: ( ',' typeArgument )*
+            loop74:
+            do {
+                int alt74=2;
+                int LA74_0 = input.LA(1);
+
+                if ( (LA74_0==34) ) {
+                    alt74=1;
+                }
+
+
+                switch (alt74) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:495:22: ',' typeArgument
+            	    {
+            	    match(input,34,FOLLOW_34_in_typeArguments1599); if (state.failed) return ;
+            	    pushFollow(FOLLOW_typeArgument_in_typeArguments1601);
+            	    typeArgument();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop74;
+                }
+            } while (true);
+
+            match(input,35,FOLLOW_35_in_typeArguments1605); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 53, typeArguments_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "typeArguments"
+
+
+    // $ANTLR start "typeArgument"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:498:1: typeArgument : ( type | '?' ( ( 'extends' | 'super' ) type )? );
+    public final void typeArgument() throws RecognitionException {
+        int typeArgument_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 54) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:499:2: ( type | '?' ( ( 'extends' | 'super' ) type )? )
+            int alt76=2;
+            int LA76_0 = input.LA(1);
+
+            if ( (LA76_0==Identifier||(LA76_0>=55 && LA76_0<=62)) ) {
+                alt76=1;
+            }
+            else if ( (LA76_0==63) ) {
+                alt76=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 76, 0, input);
+
+                throw nvae;
+            }
+            switch (alt76) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:499:4: type
+                    {
+                    pushFollow(FOLLOW_type_in_typeArgument1617);
+                    type();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:500:4: '?' ( ( 'extends' | 'super' ) type )?
+                    {
+                    match(input,63,FOLLOW_63_in_typeArgument1622); if (state.failed) return ;
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:500:8: ( ( 'extends' | 'super' ) type )?
+                    int alt75=2;
+                    int LA75_0 = input.LA(1);
+
+                    if ( (LA75_0==31||LA75_0==64) ) {
+                        alt75=1;
+                    }
+                    switch (alt75) {
+                        case 1 :
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:500:9: ( 'extends' | 'super' ) type
+                            {
+                            if ( input.LA(1)==31||input.LA(1)==64 ) {
+                                input.consume();
+                                state.errorRecovery=false;state.failed=false;
+                            }
+                            else {
+                                if (state.backtracking>0) {state.failed=true; return ;}
+                                MismatchedSetException mse = new MismatchedSetException(null,input);
+                                throw mse;
+                            }
+
+                            pushFollow(FOLLOW_type_in_typeArgument1633);
+                            type();
+
+                            state._fsp--;
+                            if (state.failed) return ;
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 54, typeArgument_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "typeArgument"
+
+
+    // $ANTLR start "qualifiedNameList"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:503:1: qualifiedNameList : qualifiedName ( ',' qualifiedName )* ;
+    public final void qualifiedNameList() throws RecognitionException {
+        int qualifiedNameList_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 55) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:504:2: ( qualifiedName ( ',' qualifiedName )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:504:4: qualifiedName ( ',' qualifiedName )*
+            {
+            pushFollow(FOLLOW_qualifiedName_in_qualifiedNameList1647);
+            qualifiedName();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:504:18: ( ',' qualifiedName )*
+            loop77:
+            do {
+                int alt77=2;
+                int LA77_0 = input.LA(1);
+
+                if ( (LA77_0==34) ) {
+                    alt77=1;
+                }
+
+
+                switch (alt77) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:504:19: ',' qualifiedName
+            	    {
+            	    match(input,34,FOLLOW_34_in_qualifiedNameList1650); if (state.failed) return ;
+            	    pushFollow(FOLLOW_qualifiedName_in_qualifiedNameList1652);
+            	    qualifiedName();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop77;
+                }
+            } while (true);
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 55, qualifiedNameList_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "qualifiedNameList"
+
+
+    // $ANTLR start "formalParameters"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:507:1: formalParameters : '(' ( formalParameterDecls )? ')' ;
+    public final void formalParameters() throws RecognitionException {
+        int formalParameters_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 56) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:508:2: ( '(' ( formalParameterDecls )? ')' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:508:4: '(' ( formalParameterDecls )? ')'
+            {
+            match(input,65,FOLLOW_65_in_formalParameters1666); if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:508:8: ( formalParameterDecls )?
+            int alt78=2;
+            int LA78_0 = input.LA(1);
+
+            if ( (LA78_0==Identifier||LA78_0==49||(LA78_0>=55 && LA78_0<=62)||LA78_0==71) ) {
+                alt78=1;
+            }
+            switch (alt78) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: formalParameterDecls
+                    {
+                    pushFollow(FOLLOW_formalParameterDecls_in_formalParameters1668);
+                    formalParameterDecls();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            match(input,66,FOLLOW_66_in_formalParameters1671); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 56, formalParameters_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "formalParameters"
+
+
+    // $ANTLR start "formalParameterDecls"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:511:1: formalParameterDecls : ( variableModifier )* type ( formalParameterDeclsRest )? ;
+    public final void formalParameterDecls() throws RecognitionException {
+        int formalParameterDecls_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 57) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:512:2: ( ( variableModifier )* type ( formalParameterDeclsRest )? )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:512:4: ( variableModifier )* type ( formalParameterDeclsRest )?
+            {
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:512:4: ( variableModifier )*
+            loop79:
+            do {
+                int alt79=2;
+                int LA79_0 = input.LA(1);
+
+                if ( (LA79_0==49||LA79_0==71) ) {
+                    alt79=1;
+                }
+
+
+                switch (alt79) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: variableModifier
+            	    {
+            	    pushFollow(FOLLOW_variableModifier_in_formalParameterDecls1683);
+            	    variableModifier();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop79;
+                }
+            } while (true);
+
+            pushFollow(FOLLOW_type_in_formalParameterDecls1686);
+            type();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:512:27: ( formalParameterDeclsRest )?
+            int alt80=2;
+            int LA80_0 = input.LA(1);
+
+            if ( (LA80_0==Identifier||LA80_0==67) ) {
+                alt80=1;
+            }
+            switch (alt80) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: formalParameterDeclsRest
+                    {
+                    pushFollow(FOLLOW_formalParameterDeclsRest_in_formalParameterDecls1688);
+                    formalParameterDeclsRest();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 57, formalParameterDecls_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "formalParameterDecls"
+
+
+    // $ANTLR start "formalParameterDeclsRest"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:515:1: formalParameterDeclsRest : ( variableDeclaratorId ( ',' formalParameterDecls )? | '...' variableDeclaratorId );
+    public final void formalParameterDeclsRest() throws RecognitionException {
+        int formalParameterDeclsRest_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 58) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:516:2: ( variableDeclaratorId ( ',' formalParameterDecls )? | '...' variableDeclaratorId )
+            int alt82=2;
+            int LA82_0 = input.LA(1);
+
+            if ( (LA82_0==Identifier) ) {
+                alt82=1;
+            }
+            else if ( (LA82_0==67) ) {
+                alt82=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 82, 0, input);
+
+                throw nvae;
+            }
+            switch (alt82) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:516:4: variableDeclaratorId ( ',' formalParameterDecls )?
+                    {
+                    pushFollow(FOLLOW_variableDeclaratorId_in_formalParameterDeclsRest1701);
+                    variableDeclaratorId();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:516:25: ( ',' formalParameterDecls )?
+                    int alt81=2;
+                    int LA81_0 = input.LA(1);
+
+                    if ( (LA81_0==34) ) {
+                        alt81=1;
+                    }
+                    switch (alt81) {
+                        case 1 :
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:516:26: ',' formalParameterDecls
+                            {
+                            match(input,34,FOLLOW_34_in_formalParameterDeclsRest1704); if (state.failed) return ;
+                            pushFollow(FOLLOW_formalParameterDecls_in_formalParameterDeclsRest1706);
+                            formalParameterDecls();
+
+                            state._fsp--;
+                            if (state.failed) return ;
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:517:6: '...' variableDeclaratorId
+                    {
+                    match(input,67,FOLLOW_67_in_formalParameterDeclsRest1715); if (state.failed) return ;
+                    pushFollow(FOLLOW_variableDeclaratorId_in_formalParameterDeclsRest1717);
+                    variableDeclaratorId();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 58, formalParameterDeclsRest_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "formalParameterDeclsRest"
+
+
+    // $ANTLR start "methodBody"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:520:1: methodBody : block ;
+    public final void methodBody() throws RecognitionException {
+        int methodBody_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 59) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:521:2: ( block )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:521:4: block
+            {
+            pushFollow(FOLLOW_block_in_methodBody1729);
+            block();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 59, methodBody_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "methodBody"
+
+
+    // $ANTLR start "qualifiedName"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:524:1: qualifiedName : Identifier ( '.' Identifier )* ;
+    public final void qualifiedName() throws RecognitionException {
+        int qualifiedName_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 60) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:525:2: ( Identifier ( '.' Identifier )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:525:4: Identifier ( '.' Identifier )*
+            {
+            match(input,Identifier,FOLLOW_Identifier_in_qualifiedName1740); if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:525:15: ( '.' Identifier )*
+            loop83:
+            do {
+                int alt83=2;
+                int LA83_0 = input.LA(1);
+
+                if ( (LA83_0==28) ) {
+                    alt83=1;
+                }
+
+
+                switch (alt83) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:525:16: '.' Identifier
+            	    {
+            	    match(input,28,FOLLOW_28_in_qualifiedName1743); if (state.failed) return ;
+            	    match(input,Identifier,FOLLOW_Identifier_in_qualifiedName1745); if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop83;
+                }
+            } while (true);
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 60, qualifiedName_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "qualifiedName"
+
+
+    // $ANTLR start "literal"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:528:1: literal : ( integerLiteral | FloatingPointLiteral | CharacterLiteral | StringLiteral | booleanLiteral | 'null' );
+    public final void literal() throws RecognitionException {
+        int literal_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 61) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:529:2: ( integerLiteral | FloatingPointLiteral | CharacterLiteral | StringLiteral | booleanLiteral | 'null' )
+            int alt84=6;
+            switch ( input.LA(1) ) {
+            case HexLiteral:
+            case OctalLiteral:
+            case DecimalLiteral:
+                {
+                alt84=1;
+                }
+                break;
+            case FloatingPointLiteral:
+                {
+                alt84=2;
+                }
+                break;
+            case CharacterLiteral:
+                {
+                alt84=3;
+                }
+                break;
+            case StringLiteral:
+                {
+                alt84=4;
+                }
+                break;
+            case 69:
+            case 70:
+                {
+                alt84=5;
+                }
+                break;
+            case 68:
+                {
+                alt84=6;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 84, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt84) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:529:6: integerLiteral
+                    {
+                    pushFollow(FOLLOW_integerLiteral_in_literal1762);
+                    integerLiteral();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:530:9: FloatingPointLiteral
+                    {
+                    match(input,FloatingPointLiteral,FOLLOW_FloatingPointLiteral_in_literal1772); if (state.failed) return ;
+
+                    }
+                    break;
+                case 3 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:531:9: CharacterLiteral
+                    {
+                    match(input,CharacterLiteral,FOLLOW_CharacterLiteral_in_literal1782); if (state.failed) return ;
+
+                    }
+                    break;
+                case 4 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:532:9: StringLiteral
+                    {
+                    match(input,StringLiteral,FOLLOW_StringLiteral_in_literal1792); if (state.failed) return ;
+
+                    }
+                    break;
+                case 5 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:533:9: booleanLiteral
+                    {
+                    pushFollow(FOLLOW_booleanLiteral_in_literal1802);
+                    booleanLiteral();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 6 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:534:9: 'null'
+                    {
+                    match(input,68,FOLLOW_68_in_literal1812); if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 61, literal_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "literal"
+
+
+    // $ANTLR start "integerLiteral"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:537:1: integerLiteral : ( HexLiteral | OctalLiteral | DecimalLiteral );
+    public final void integerLiteral() throws RecognitionException {
+        int integerLiteral_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 62) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:538:5: ( HexLiteral | OctalLiteral | DecimalLiteral )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:
+            {
+            if ( (input.LA(1)>=HexLiteral && input.LA(1)<=DecimalLiteral) ) {
+                input.consume();
+                state.errorRecovery=false;state.failed=false;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                MismatchedSetException mse = new MismatchedSetException(null,input);
+                throw mse;
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 62, integerLiteral_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "integerLiteral"
+
+
+    // $ANTLR start "booleanLiteral"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:543:1: booleanLiteral : ( 'true' | 'false' );
+    public final void booleanLiteral() throws RecognitionException {
+        int booleanLiteral_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 63) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:544:5: ( 'true' | 'false' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:
+            {
+            if ( (input.LA(1)>=69 && input.LA(1)<=70) ) {
+                input.consume();
+                state.errorRecovery=false;state.failed=false;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                MismatchedSetException mse = new MismatchedSetException(null,input);
+                throw mse;
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 63, booleanLiteral_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "booleanLiteral"
+
+
+    // $ANTLR start "annotations"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:550:1: annotations : ( annotation )+ ;
+    public final void annotations() throws RecognitionException {
+        int annotations_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 64) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:551:2: ( ( annotation )+ )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:551:4: ( annotation )+
+            {
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:551:4: ( annotation )+
+            int cnt85=0;
+            loop85:
+            do {
+                int alt85=2;
+                alt85 = dfa85.predict(input);
+                switch (alt85) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: annotation
+            	    {
+            	    pushFollow(FOLLOW_annotation_in_annotations1893);
+            	    annotation();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt85 >= 1 ) break loop85;
+            	    if (state.backtracking>0) {state.failed=true; return ;}
+                        EarlyExitException eee =
+                            new EarlyExitException(85, input);
+                        throw eee;
+                }
+                cnt85++;
+            } while (true);
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 64, annotations_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "annotations"
+
+
+    // $ANTLR start "annotation"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:554:1: annotation : '@' annotationName ( '(' ( elementValuePairs )? ')' )? ;
+    public final void annotation() throws RecognitionException {
+        int annotation_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 65) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:555:2: ( '@' annotationName ( '(' ( elementValuePairs )? ')' )? )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:555:4: '@' annotationName ( '(' ( elementValuePairs )? ')' )?
+            {
+            match(input,71,FOLLOW_71_in_annotation1905); if (state.failed) return ;
+            pushFollow(FOLLOW_annotationName_in_annotation1907);
+            annotationName();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:555:23: ( '(' ( elementValuePairs )? ')' )?
+            int alt87=2;
+            alt87 = dfa87.predict(input);
+            switch (alt87) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:555:24: '(' ( elementValuePairs )? ')'
+                    {
+                    match(input,65,FOLLOW_65_in_annotation1910); if (state.failed) return ;
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:555:28: ( elementValuePairs )?
+                    int alt86=2;
+                    alt86 = dfa86.predict(input);
+                    switch (alt86) {
+                        case 1 :
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: elementValuePairs
+                            {
+                            pushFollow(FOLLOW_elementValuePairs_in_annotation1912);
+                            elementValuePairs();
+
+                            state._fsp--;
+                            if (state.failed) return ;
+
+                            }
+                            break;
+
+                    }
+
+                    match(input,66,FOLLOW_66_in_annotation1915); if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 65, annotation_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "annotation"
+
+
+    // $ANTLR start "annotationName"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:558:1: annotationName : Identifier ( '.' Identifier )* ;
+    public final void annotationName() throws RecognitionException {
+        int annotationName_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 66) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:559:2: ( Identifier ( '.' Identifier )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:559:4: Identifier ( '.' Identifier )*
+            {
+            match(input,Identifier,FOLLOW_Identifier_in_annotationName1929); if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:559:15: ( '.' Identifier )*
+            loop88:
+            do {
+                int alt88=2;
+                alt88 = dfa88.predict(input);
+                switch (alt88) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:559:16: '.' Identifier
+            	    {
+            	    match(input,28,FOLLOW_28_in_annotationName1932); if (state.failed) return ;
+            	    match(input,Identifier,FOLLOW_Identifier_in_annotationName1934); if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop88;
+                }
+            } while (true);
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 66, annotationName_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "annotationName"
+
+
+    // $ANTLR start "elementValuePairs"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:562:1: elementValuePairs : elementValuePair ( ',' elementValuePair )* ;
+    public final void elementValuePairs() throws RecognitionException {
+        int elementValuePairs_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 67) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:563:2: ( elementValuePair ( ',' elementValuePair )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:563:4: elementValuePair ( ',' elementValuePair )*
+            {
+            pushFollow(FOLLOW_elementValuePair_in_elementValuePairs1948);
+            elementValuePair();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:563:21: ( ',' elementValuePair )*
+            loop89:
+            do {
+                int alt89=2;
+                int LA89_0 = input.LA(1);
+
+                if ( (LA89_0==34) ) {
+                    alt89=1;
+                }
+
+
+                switch (alt89) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:563:22: ',' elementValuePair
+            	    {
+            	    match(input,34,FOLLOW_34_in_elementValuePairs1951); if (state.failed) return ;
+            	    pushFollow(FOLLOW_elementValuePair_in_elementValuePairs1953);
+            	    elementValuePair();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop89;
+                }
+            } while (true);
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 67, elementValuePairs_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "elementValuePairs"
+
+
+    // $ANTLR start "elementValuePair"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:566:1: elementValuePair : ( Identifier '=' )? elementValue ;
+    public final void elementValuePair() throws RecognitionException {
+        int elementValuePair_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 68) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:567:2: ( ( Identifier '=' )? elementValue )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:567:4: ( Identifier '=' )? elementValue
+            {
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:567:4: ( Identifier '=' )?
+            int alt90=2;
+            alt90 = dfa90.predict(input);
+            switch (alt90) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:567:5: Identifier '='
+                    {
+                    match(input,Identifier,FOLLOW_Identifier_in_elementValuePair1968); if (state.failed) return ;
+                    match(input,44,FOLLOW_44_in_elementValuePair1970); if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            pushFollow(FOLLOW_elementValue_in_elementValuePair1974);
+            elementValue();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 68, elementValuePair_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "elementValuePair"
+
+
+    // $ANTLR start "elementValue"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:570:1: elementValue : ( conditionalExpression | annotation | elementValueArrayInitializer );
+    public final void elementValue() throws RecognitionException {
+        int elementValue_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 69) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:571:2: ( conditionalExpression | annotation | elementValueArrayInitializer )
+            int alt91=3;
+            alt91 = dfa91.predict(input);
+            switch (alt91) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:571:4: conditionalExpression
+                    {
+                    pushFollow(FOLLOW_conditionalExpression_in_elementValue1986);
+                    conditionalExpression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:572:6: annotation
+                    {
+                    pushFollow(FOLLOW_annotation_in_elementValue1993);
+                    annotation();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 3 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:573:6: elementValueArrayInitializer
+                    {
+                    pushFollow(FOLLOW_elementValueArrayInitializer_in_elementValue2000);
+                    elementValueArrayInitializer();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 69, elementValue_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "elementValue"
+
+
+    // $ANTLR start "elementValueArrayInitializer"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:576:1: elementValueArrayInitializer : '{' ( elementValue ( ',' elementValue )* )? '}' ;
+    public final void elementValueArrayInitializer() throws RecognitionException {
+        int elementValueArrayInitializer_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 70) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:577:2: ( '{' ( elementValue ( ',' elementValue )* )? '}' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:577:4: '{' ( elementValue ( ',' elementValue )* )? '}'
+            {
+            match(input,37,FOLLOW_37_in_elementValueArrayInitializer2012); if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:577:8: ( elementValue ( ',' elementValue )* )?
+            int alt93=2;
+            alt93 = dfa93.predict(input);
+            switch (alt93) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:577:9: elementValue ( ',' elementValue )*
+                    {
+                    pushFollow(FOLLOW_elementValue_in_elementValueArrayInitializer2015);
+                    elementValue();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:577:22: ( ',' elementValue )*
+                    loop92:
+                    do {
+                        int alt92=2;
+                        int LA92_0 = input.LA(1);
+
+                        if ( (LA92_0==34) ) {
+                            alt92=1;
+                        }
+
+
+                        switch (alt92) {
+                    	case 1 :
+                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:577:23: ',' elementValue
+                    	    {
+                    	    match(input,34,FOLLOW_34_in_elementValueArrayInitializer2018); if (state.failed) return ;
+                    	    pushFollow(FOLLOW_elementValue_in_elementValueArrayInitializer2020);
+                    	    elementValue();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return ;
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop92;
+                        }
+                    } while (true);
+
+
+                    }
+                    break;
+
+            }
+
+            match(input,38,FOLLOW_38_in_elementValueArrayInitializer2027); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 70, elementValueArrayInitializer_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "elementValueArrayInitializer"
+
+
+    // $ANTLR start "annotationTypeDeclaration"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:580:1: annotationTypeDeclaration : '@' 'interface' Identifier annotationTypeBody ;
+    public final void annotationTypeDeclaration() throws RecognitionException {
+        int annotationTypeDeclaration_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 71) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:581:2: ( '@' 'interface' Identifier annotationTypeBody )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:581:4: '@' 'interface' Identifier annotationTypeBody
+            {
+            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();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 71, annotationTypeDeclaration_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "annotationTypeDeclaration"
+
+
+    // $ANTLR start "annotationTypeBody"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:584:1: annotationTypeBody : '{' ( annotationTypeElementDeclarations )? '}' ;
+    public final void annotationTypeBody() throws RecognitionException {
+        int annotationTypeBody_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 72) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:585:2: ( '{' ( annotationTypeElementDeclarations )? '}' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:585:4: '{' ( annotationTypeElementDeclarations )? '}'
+            {
+            match(input,37,FOLLOW_37_in_annotationTypeBody2057); if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:585:8: ( annotationTypeElementDeclarations )?
+            int alt94=2;
+            alt94 = dfa94.predict(input);
+            switch (alt94) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:585:9: annotationTypeElementDeclarations
+                    {
+                    pushFollow(FOLLOW_annotationTypeElementDeclarations_in_annotationTypeBody2060);
+                    annotationTypeElementDeclarations();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            match(input,38,FOLLOW_38_in_annotationTypeBody2064); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 72, annotationTypeBody_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "annotationTypeBody"
+
+
+    // $ANTLR start "annotationTypeElementDeclarations"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:588:1: annotationTypeElementDeclarations : ( annotationTypeElementDeclaration ) ( annotationTypeElementDeclaration )* ;
+    public final void annotationTypeElementDeclarations() throws RecognitionException {
+        int annotationTypeElementDeclarations_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 73) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:589:2: ( ( annotationTypeElementDeclaration ) ( annotationTypeElementDeclaration )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:589:4: ( annotationTypeElementDeclaration ) ( annotationTypeElementDeclaration )*
+            {
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:589:4: ( annotationTypeElementDeclaration )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:589:5: annotationTypeElementDeclaration
+            {
+            pushFollow(FOLLOW_annotationTypeElementDeclaration_in_annotationTypeElementDeclarations2077);
+            annotationTypeElementDeclaration();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:589:39: ( annotationTypeElementDeclaration )*
+            loop95:
+            do {
+                int alt95=2;
+                alt95 = dfa95.predict(input);
+                switch (alt95) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:589:40: annotationTypeElementDeclaration
+            	    {
+            	    pushFollow(FOLLOW_annotationTypeElementDeclaration_in_annotationTypeElementDeclarations2081);
+            	    annotationTypeElementDeclaration();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop95;
+                }
+            } while (true);
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 73, annotationTypeElementDeclarations_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "annotationTypeElementDeclarations"
+
+
+    // $ANTLR start "annotationTypeElementDeclaration"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:592:1: annotationTypeElementDeclaration : ( modifier )* annotationTypeElementRest ;
+    public final void annotationTypeElementDeclaration() throws RecognitionException {
+        int annotationTypeElementDeclaration_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 74) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:593:2: ( ( modifier )* annotationTypeElementRest )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:593:4: ( modifier )* annotationTypeElementRest
+            {
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:593:4: ( modifier )*
+            loop96:
+            do {
+                int alt96=2;
+                alt96 = dfa96.predict(input);
+                switch (alt96) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:593:5: modifier
+            	    {
+            	    pushFollow(FOLLOW_modifier_in_annotationTypeElementDeclaration2096);
+            	    modifier();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop96;
+                }
+            } while (true);
+
+            pushFollow(FOLLOW_annotationTypeElementRest_in_annotationTypeElementDeclaration2100);
+            annotationTypeElementRest();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 74, annotationTypeElementDeclaration_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "annotationTypeElementDeclaration"
+
+
+    // $ANTLR start "annotationTypeElementRest"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:596:1: annotationTypeElementRest : ( type annotationMethodOrConstantRest ';' | classDeclaration ( ';' )? | interfaceDeclaration ( ';' )? | enumDeclaration ( ';' )? | annotationTypeDeclaration ( ';' )? );
+    public final void annotationTypeElementRest() throws RecognitionException {
+        int annotationTypeElementRest_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 75) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:597:2: ( type annotationMethodOrConstantRest ';' | classDeclaration ( ';' )? | interfaceDeclaration ( ';' )? | enumDeclaration ( ';' )? | annotationTypeDeclaration ( ';' )? )
+            int alt101=5;
+            alt101 = dfa101.predict(input);
+            switch (alt101) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:597:4: type annotationMethodOrConstantRest ';'
+                    {
+                    pushFollow(FOLLOW_type_in_annotationTypeElementRest2112);
+                    type();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    pushFollow(FOLLOW_annotationMethodOrConstantRest_in_annotationTypeElementRest2114);
+                    annotationMethodOrConstantRest();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    match(input,25,FOLLOW_25_in_annotationTypeElementRest2116); if (state.failed) return ;
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:598:6: classDeclaration ( ';' )?
+                    {
+                    pushFollow(FOLLOW_classDeclaration_in_annotationTypeElementRest2123);
+                    classDeclaration();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:598:23: ( ';' )?
+                    int alt97=2;
+                    alt97 = dfa97.predict(input);
+                    switch (alt97) {
+                        case 1 :
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: ';'
+                            {
+                            match(input,25,FOLLOW_25_in_annotationTypeElementRest2125); if (state.failed) return ;
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:599:6: interfaceDeclaration ( ';' )?
+                    {
+                    pushFollow(FOLLOW_interfaceDeclaration_in_annotationTypeElementRest2133);
+                    interfaceDeclaration();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:599:27: ( ';' )?
+                    int alt98=2;
+                    alt98 = dfa98.predict(input);
+                    switch (alt98) {
+                        case 1 :
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: ';'
+                            {
+                            match(input,25,FOLLOW_25_in_annotationTypeElementRest2135); if (state.failed) return ;
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:600:6: enumDeclaration ( ';' )?
+                    {
+                    pushFollow(FOLLOW_enumDeclaration_in_annotationTypeElementRest2143);
+                    enumDeclaration();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:600:22: ( ';' )?
+                    int alt99=2;
+                    alt99 = dfa99.predict(input);
+                    switch (alt99) {
+                        case 1 :
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: ';'
+                            {
+                            match(input,25,FOLLOW_25_in_annotationTypeElementRest2145); if (state.failed) return ;
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:601:6: annotationTypeDeclaration ( ';' )?
+                    {
+                    pushFollow(FOLLOW_annotationTypeDeclaration_in_annotationTypeElementRest2153);
+                    annotationTypeDeclaration();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:601:32: ( ';' )?
+                    int alt100=2;
+                    alt100 = dfa100.predict(input);
+                    switch (alt100) {
+                        case 1 :
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: ';'
+                            {
+                            match(input,25,FOLLOW_25_in_annotationTypeElementRest2155); if (state.failed) return ;
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 75, annotationTypeElementRest_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "annotationTypeElementRest"
+
+
+    // $ANTLR start "annotationMethodOrConstantRest"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:604:1: annotationMethodOrConstantRest : ( annotationMethodRest | annotationConstantRest );
+    public final void annotationMethodOrConstantRest() throws RecognitionException {
+        int annotationMethodOrConstantRest_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 76) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:605:2: ( annotationMethodRest | annotationConstantRest )
+            int alt102=2;
+            int LA102_0 = input.LA(1);
+
+            if ( (LA102_0==Identifier) ) {
+                int LA102_1 = input.LA(2);
+
+                if ( (LA102_1==65) ) {
+                    alt102=1;
+                }
+                else if ( (LA102_1==25||LA102_1==34||LA102_1==41||LA102_1==44) ) {
+                    alt102=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 102, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 102, 0, input);
+
+                throw nvae;
+            }
+            switch (alt102) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:605:4: annotationMethodRest
+                    {
+                    pushFollow(FOLLOW_annotationMethodRest_in_annotationMethodOrConstantRest2168);
+                    annotationMethodRest();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:606:6: annotationConstantRest
+                    {
+                    pushFollow(FOLLOW_annotationConstantRest_in_annotationMethodOrConstantRest2175);
+                    annotationConstantRest();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 76, annotationMethodOrConstantRest_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "annotationMethodOrConstantRest"
+
+
+    // $ANTLR start "annotationMethodRest"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:609:1: annotationMethodRest : Identifier '(' ')' ( defaultValue )? ;
+    public final void annotationMethodRest() throws RecognitionException {
+        int annotationMethodRest_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 77) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:610:3: ( Identifier '(' ')' ( defaultValue )? )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:610:5: Identifier '(' ')' ( 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 ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:610:24: ( defaultValue )?
+            int alt103=2;
+            int LA103_0 = input.LA(1);
+
+            if ( (LA103_0==72) ) {
+                alt103=1;
+            }
+            switch (alt103) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:610:25: defaultValue
+                    {
+                    pushFollow(FOLLOW_defaultValue_in_annotationMethodRest2195);
+                    defaultValue();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 77, annotationMethodRest_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "annotationMethodRest"
+
+
+    // $ANTLR start "annotationConstantRest"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:613:1: annotationConstantRest : variableDeclarators ;
+    public final void annotationConstantRest() throws RecognitionException {
+        int annotationConstantRest_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 78) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:614:3: ( variableDeclarators )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:614:5: variableDeclarators
+            {
+            pushFollow(FOLLOW_variableDeclarators_in_annotationConstantRest2212);
+            variableDeclarators();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 78, annotationConstantRest_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "annotationConstantRest"
+
+
+    // $ANTLR start "defaultValue"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:617:1: defaultValue : 'default' elementValue ;
+    public final void defaultValue() throws RecognitionException {
+        int defaultValue_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 79) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:618:3: ( 'default' elementValue )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:618:5: 'default' elementValue
+            {
+            match(input,72,FOLLOW_72_in_defaultValue2227); if (state.failed) return ;
+            pushFollow(FOLLOW_elementValue_in_defaultValue2229);
+            elementValue();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 79, defaultValue_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "defaultValue"
+
+
+    // $ANTLR start "block"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:623:1: block : '{' ( blockStatement )* '}' ;
+    public final void block() throws RecognitionException {
+        int block_StartIndex = input.index();
+
+                    this.localVariableLevel++;
+                
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 80) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:630:2: ( '{' ( blockStatement )* '}' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:630:4: '{' ( blockStatement )* '}'
+            {
+            match(input,37,FOLLOW_37_in_block2269); if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:630:8: ( blockStatement )*
+            loop104:
+            do {
+                int alt104=2;
+                alt104 = dfa104.predict(input);
+                switch (alt104) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: blockStatement
+            	    {
+            	    pushFollow(FOLLOW_blockStatement_in_block2271);
+            	    blockStatement();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop104;
+                }
+            } while (true);
+
+            match(input,38,FOLLOW_38_in_block2274); if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+                          this.localVariableLevel--;
+                      
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 80, block_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "block"
+
+
+    // $ANTLR start "blockStatement"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:633:1: blockStatement : ( localVariableDeclaration | classOrInterfaceDeclaration | statement );
+    public final void blockStatement() throws RecognitionException {
+        int blockStatement_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 81) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:634:2: ( localVariableDeclaration | classOrInterfaceDeclaration | statement )
+            int alt105=3;
+            alt105 = dfa105.predict(input);
+            switch (alt105) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:634:4: localVariableDeclaration
+                    {
+                    pushFollow(FOLLOW_localVariableDeclaration_in_blockStatement2286);
+                    localVariableDeclaration();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:635:4: classOrInterfaceDeclaration
+                    {
+                    pushFollow(FOLLOW_classOrInterfaceDeclaration_in_blockStatement2291);
+                    classOrInterfaceDeclaration();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 3 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:636:8: statement
+                    {
+                    pushFollow(FOLLOW_statement_in_blockStatement2300);
+                    statement();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 81, blockStatement_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "blockStatement"
+
+    protected static class localVariableDeclaration_scope {
+        JavaLocalDeclarationDescr descr;
+    }
+    protected Stack localVariableDeclaration_stack = new Stack();
+
+
+    // $ANTLR start "localVariableDeclaration"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:639:1: localVariableDeclaration : ( variableModifier )* type variableDeclarators ';' ;
+    public final void localVariableDeclaration() throws RecognitionException {
+        localVariableDeclaration_stack.push(new localVariableDeclaration_scope());
+        int localVariableDeclaration_StartIndex = input.index();
+        JavaParser.variableModifier_return variableModifier1 = null;
+
+        JavaParser.type_return type2 = null;
+
+
+
+                    ((localVariableDeclaration_scope)localVariableDeclaration_stack.peek()).descr = new JavaLocalDeclarationDescr();
+                
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 82) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:649:2: ( ( variableModifier )* type variableDeclarators ';' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:650:2: ( variableModifier )* type variableDeclarators ';'
+            {
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:650:2: ( variableModifier )*
+            loop106:
+            do {
+                int alt106=2;
+                int LA106_0 = input.LA(1);
+
+                if ( (LA106_0==49||LA106_0==71) ) {
+                    alt106=1;
+                }
+
+
+                switch (alt106) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:650:4: variableModifier
+            	    {
+            	    pushFollow(FOLLOW_variableModifier_in_localVariableDeclaration2348);
+            	    variableModifier1=variableModifier();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        ((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) ); 
+            	      	    
+            	    }
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop106;
+                }
+            } while (true);
+
+            pushFollow(FOLLOW_type_in_localVariableDeclaration2365);
+            type2=type();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               
+              	        ((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();
+
+            state._fsp--;
+            if (state.failed) return ;
+            match(input,25,FOLLOW_25_in_localVariableDeclaration2378); if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+                          localDeclarations.add( ((localVariableDeclaration_scope)localVariableDeclaration_stack.peek()).descr );
+                      
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 82, localVariableDeclaration_StartIndex); }
+            localVariableDeclaration_stack.pop();
+        }
+        return ;
+    }
+    // $ANTLR end "localVariableDeclaration"
+
+
+    // $ANTLR start "statement"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:665: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 | exitPointsStatement | ';' | statementExpression ';' | Identifier ':' statement );
+    public final void statement() throws RecognitionException {
+        int statement_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 83) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:666: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 | exitPointsStatement | ';' | statementExpression ';' | Identifier ':' statement )
+            int alt113=18;
+            alt113 = dfa113.predict(input);
+            switch (alt113) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:666:4: block
+                    {
+                    pushFollow(FOLLOW_block_in_statement2390);
+                    block();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:667:7: 'assert' expression ( ':' expression )? ';'
+                    {
+                    match(input,73,FOLLOW_73_in_statement2398); if (state.failed) return ;
+                    pushFollow(FOLLOW_expression_in_statement2400);
+                    expression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:667:27: ( ':' expression )?
+                    int alt107=2;
+                    int LA107_0 = input.LA(1);
+
+                    if ( (LA107_0==74) ) {
+                        alt107=1;
+                    }
+                    switch (alt107) {
+                        case 1 :
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:667:28: ':' expression
+                            {
+                            match(input,74,FOLLOW_74_in_statement2403); if (state.failed) return ;
+                            pushFollow(FOLLOW_expression_in_statement2405);
+                            expression();
+
+                            state._fsp--;
+                            if (state.failed) return ;
+
+                            }
+                            break;
+
+                    }
+
+                    match(input,25,FOLLOW_25_in_statement2409); if (state.failed) return ;
+
+                    }
+                    break;
+                case 3 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:668:7: 'if' parExpression statement ( options {k=1; } : 'else' statement )?
+                    {
+                    match(input,75,FOLLOW_75_in_statement2417); if (state.failed) return ;
+                    pushFollow(FOLLOW_parExpression_in_statement2419);
+                    parExpression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    pushFollow(FOLLOW_statement_in_statement2421);
+                    statement();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:668: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_Java()) ) {
+                            alt108=1;
+                        }
+                    }
+                    switch (alt108) {
+                        case 1 :
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:668:52: 'else' statement
+                            {
+                            match(input,76,FOLLOW_76_in_statement2431); if (state.failed) return ;
+                            pushFollow(FOLLOW_statement_in_statement2433);
+                            statement();
+
+                            state._fsp--;
+                            if (state.failed) return ;
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:669:7: 'for' '(' forControl ')' statement
+                    {
+                    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();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    match(input,66,FOLLOW_66_in_statement2449); if (state.failed) return ;
+                    pushFollow(FOLLOW_statement_in_statement2451);
+                    statement();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 5 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:670:7: 'while' parExpression statement
+                    {
+                    match(input,78,FOLLOW_78_in_statement2459); if (state.failed) return ;
+                    pushFollow(FOLLOW_parExpression_in_statement2461);
+                    parExpression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    pushFollow(FOLLOW_statement_in_statement2463);
+                    statement();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 6 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:671:7: 'do' statement 'while' parExpression ';'
+                    {
+                    match(input,79,FOLLOW_79_in_statement2471); if (state.failed) return ;
+                    pushFollow(FOLLOW_statement_in_statement2473);
+                    statement();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    match(input,78,FOLLOW_78_in_statement2475); if (state.failed) return ;
+                    pushFollow(FOLLOW_parExpression_in_statement2477);
+                    parExpression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    match(input,25,FOLLOW_25_in_statement2479); if (state.failed) return ;
+
+                    }
+                    break;
+                case 7 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:672:7: 'try' block ( catches 'finally' block | catches | 'finally' block )
+                    {
+                    match(input,80,FOLLOW_80_in_statement2487); if (state.failed) return ;
+                    pushFollow(FOLLOW_block_in_statement2489);
+                    block();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:673:7: ( catches 'finally' block | catches | 'finally' block )
+                    int alt109=3;
+                    int LA109_0 = input.LA(1);
+
+                    if ( (LA109_0==89) ) {
+                        int LA109_1 = input.LA(2);
+
+                        if ( (LA109_1==65) ) {
+                            int LA109_3 = input.LA(3);
+
+                            if ( (synpred155_Java()) ) {
+                                alt109=1;
+                            }
+                            else if ( (synpred156_Java()) ) {
+                                alt109=2;
+                            }
+                            else {
+                                if (state.backtracking>0) {state.failed=true; return ;}
+                                NoViableAltException nvae =
+                                    new NoViableAltException("", 109, 3, input);
+
+                                throw nvae;
+                            }
+                        }
+                        else {
+                            if (state.backtracking>0) {state.failed=true; return ;}
+                            NoViableAltException nvae =
+                                new NoViableAltException("", 109, 1, input);
+
+                            throw nvae;
+                        }
+                    }
+                    else if ( (LA109_0==81) ) {
+                        alt109=3;
+                    }
+                    else {
+                        if (state.backtracking>0) {state.failed=true; return ;}
+                        NoViableAltException nvae =
+                            new NoViableAltException("", 109, 0, input);
+
+                        throw nvae;
+                    }
+                    switch (alt109) {
+                        case 1 :
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:673:9: catches 'finally' block
+                            {
+                            pushFollow(FOLLOW_catches_in_statement2499);
+                            catches();
+
+                            state._fsp--;
+                            if (state.failed) return ;
+                            match(input,81,FOLLOW_81_in_statement2501); if (state.failed) return ;
+                            pushFollow(FOLLOW_block_in_statement2503);
+                            block();
+
+                            state._fsp--;
+                            if (state.failed) return ;
+
+                            }
+                            break;
+                        case 2 :
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:674:9: catches
+                            {
+                            pushFollow(FOLLOW_catches_in_statement2513);
+                            catches();
+
+                            state._fsp--;
+                            if (state.failed) return ;
+
+                            }
+                            break;
+                        case 3 :
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:675:9: 'finally' block
+                            {
+                            match(input,81,FOLLOW_81_in_statement2523); if (state.failed) return ;
+                            pushFollow(FOLLOW_block_in_statement2525);
+                            block();
+
+                            state._fsp--;
+                            if (state.failed) return ;
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+                case 8 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:677:7: 'switch' parExpression '{' switchBlockStatementGroups '}'
+                    {
+                    match(input,82,FOLLOW_82_in_statement2541); if (state.failed) return ;
+                    pushFollow(FOLLOW_parExpression_in_statement2543);
+                    parExpression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    match(input,37,FOLLOW_37_in_statement2545); if (state.failed) return ;
+                    pushFollow(FOLLOW_switchBlockStatementGroups_in_statement2547);
+                    switchBlockStatementGroups();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    match(input,38,FOLLOW_38_in_statement2549); if (state.failed) return ;
+
+                    }
+                    break;
+                case 9 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:678:7: 'synchronized' parExpression block
+                    {
+                    match(input,51,FOLLOW_51_in_statement2557); if (state.failed) return ;
+                    pushFollow(FOLLOW_parExpression_in_statement2559);
+                    parExpression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    pushFollow(FOLLOW_block_in_statement2561);
+                    block();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 10 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:679:7: 'return' ( expression )? ';'
+                    {
+                    match(input,83,FOLLOW_83_in_statement2569); if (state.failed) return ;
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:679:16: ( expression )?
+                    int alt110=2;
+                    alt110 = dfa110.predict(input);
+                    switch (alt110) {
+                        case 1 :
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: expression
+                            {
+                            pushFollow(FOLLOW_expression_in_statement2571);
+                            expression();
+
+                            state._fsp--;
+                            if (state.failed) return ;
+
+                            }
+                            break;
+
+                    }
+
+                    match(input,25,FOLLOW_25_in_statement2574); if (state.failed) return ;
+
+                    }
+                    break;
+                case 11 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:680:7: 'throw' expression ';'
+                    {
+                    match(input,84,FOLLOW_84_in_statement2582); if (state.failed) return ;
+                    pushFollow(FOLLOW_expression_in_statement2584);
+                    expression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    match(input,25,FOLLOW_25_in_statement2586); if (state.failed) return ;
+
+                    }
+                    break;
+                case 12 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:681:7: 'break' ( Identifier )? ';'
+                    {
+                    match(input,85,FOLLOW_85_in_statement2594); if (state.failed) return ;
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:681:15: ( Identifier )?
+                    int alt111=2;
+                    int LA111_0 = input.LA(1);
+
+                    if ( (LA111_0==Identifier) ) {
+                        alt111=1;
+                    }
+                    switch (alt111) {
+                        case 1 :
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: Identifier
+                            {
+                            match(input,Identifier,FOLLOW_Identifier_in_statement2596); if (state.failed) return ;
+
+                            }
+                            break;
+
+                    }
+
+                    match(input,25,FOLLOW_25_in_statement2599); if (state.failed) return ;
+
+                    }
+                    break;
+                case 13 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:682:7: 'continue' ( Identifier )? ';'
+                    {
+                    match(input,86,FOLLOW_86_in_statement2607); if (state.failed) return ;
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:682:18: ( Identifier )?
+                    int alt112=2;
+                    int LA112_0 = input.LA(1);
+
+                    if ( (LA112_0==Identifier) ) {
+                        alt112=1;
+                    }
+                    switch (alt112) {
+                        case 1 :
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: Identifier
+                            {
+                            match(input,Identifier,FOLLOW_Identifier_in_statement2609); if (state.failed) return ;
+
+                            }
+                            break;
+
+                    }
+
+                    match(input,25,FOLLOW_25_in_statement2612); if (state.failed) return ;
+
+                    }
+                    break;
+                case 14 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:684:7: modifyStatement
+                    {
+                    pushFollow(FOLLOW_modifyStatement_in_statement2625);
+                    modifyStatement();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 15 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:685:7: exitPointsStatement
+                    {
+                    pushFollow(FOLLOW_exitPointsStatement_in_statement2633);
+                    exitPointsStatement();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 16 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:686:7: ';'
+                    {
+                    match(input,25,FOLLOW_25_in_statement2641); if (state.failed) return ;
+
+                    }
+                    break;
+                case 17 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:687:7: statementExpression ';'
+                    {
+                    pushFollow(FOLLOW_statementExpression_in_statement2649);
+                    statementExpression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    match(input,25,FOLLOW_25_in_statement2651); if (state.failed) return ;
+
+                    }
+                    break;
+                case 18 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:688:7: Identifier ':' statement
+                    {
+                    match(input,Identifier,FOLLOW_Identifier_in_statement2659); if (state.failed) return ;
+                    match(input,74,FOLLOW_74_in_statement2661); if (state.failed) return ;
+                    pushFollow(FOLLOW_statement_in_statement2663);
+                    statement();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 83, statement_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "statement"
+
+
+    // $ANTLR start "modifyStatement"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:691: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;
+        JavaParser.expression_return e = null;
+
+        JavaParser.parExpression_return parExpression3 = null;
+
+
+
+        	    JavaModifyBlockDescr d = null;
+        	
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 84) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:695:2: (s= 'modify' parExpression '{' (e= expression ( ',' e= expression )* )? c= '}' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:695:4: s= 'modify' parExpression '{' (e= expression ( ',' e= expression )* )? c= '}'
+            {
+            s=(Token)match(input,87,FOLLOW_87_in_modifyStatement2683); if (state.failed) return ;
+            pushFollow(FOLLOW_parExpression_in_modifyStatement2685);
+            parExpression3=parExpression();
+
+            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_modifyStatement2692); if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:702:6: (e= expression ( ',' e= expression )* )?
+            int alt115=2;
+            alt115 = dfa115.predict(input);
+            switch (alt115) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:702:8: e= expression ( ',' e= expression )*
+                    {
+                    pushFollow(FOLLOW_expression_in_modifyStatement2700);
+                    e=expression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       d.getExpressions().add( (e!=null?input.toString(e.start,e.stop):null) ); 
+                    }
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:703:9: ( ',' e= expression )*
+                    loop114:
+                    do {
+                        int alt114=2;
+                        int LA114_0 = input.LA(1);
+
+                        if ( (LA114_0==34) ) {
+                            alt114=1;
+                        }
+
+
+                        switch (alt114) {
+                    	case 1 :
+                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:703:10: ',' e= expression
+                    	    {
+                    	    match(input,34,FOLLOW_34_in_modifyStatement2713); if (state.failed) return ;
+                    	    pushFollow(FOLLOW_expression_in_modifyStatement2717);
+                    	    e=expression();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return ;
+                    	    if ( state.backtracking==0 ) {
+                    	       d.getExpressions().add( (e!=null?input.toString(e.start,e.stop):null) ); 
+                    	    }
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop114;
+                        }
+                    } while (true);
+
+
+                    }
+                    break;
+
+            }
+
+            c=(Token)match(input,38,FOLLOW_38_in_modifyStatement2736); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+
+                          d.setEnd( ((CommonToken)c).getStopIndex() ); 
+                      
+            }
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 84, modifyStatement_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "modifyStatement"
+
+
+    // $ANTLR start "exitPointsStatement"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:711:1: exitPointsStatement : s= 'exitPoints' '[' id= StringLiteral c= ']' ;
+    public final void exitPointsStatement() throws RecognitionException {
+        int exitPointsStatement_StartIndex = input.index();
+        Token s=null;
+        Token id=null;
+        Token c=null;
+
+
+        	    JavaExitPointsDescr d = null;
+        	
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 85) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:715:9: (s= 'exitPoints' '[' id= StringLiteral c= ']' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:715:11: s= 'exitPoints' '[' id= StringLiteral c= ']'
+            {
+            s=(Token)match(input,88,FOLLOW_88_in_exitPointsStatement2775); if (state.failed) return ;
+            match(input,41,FOLLOW_41_in_exitPointsStatement2777); if (state.failed) return ;
+            id=(Token)match(input,StringLiteral,FOLLOW_StringLiteral_in_exitPointsStatement2781); if (state.failed) return ;
+            c=(Token)match(input,42,FOLLOW_42_in_exitPointsStatement2785); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+
+              	    d = new JavaExitPointsDescr( (id!=null?id.getText():null) );
+              	    d.setStart( ((CommonToken)s).getStartIndex() );
+                          d.setEnd( ((CommonToken)c).getStopIndex() ); 
+              	    this.exitPoints.add( d );
+                      
+            }
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 85, exitPointsStatement_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "exitPointsStatement"
+
+
+    // $ANTLR start "catches"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:724:1: catches : catchClause ( catchClause )* ;
+    public final void catches() throws RecognitionException {
+        int catches_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 86) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:725:2: ( catchClause ( catchClause )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:725:4: catchClause ( catchClause )*
+            {
+            pushFollow(FOLLOW_catchClause_in_catches2816);
+            catchClause();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:725:16: ( catchClause )*
+            loop116:
+            do {
+                int alt116=2;
+                alt116 = dfa116.predict(input);
+                switch (alt116) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:725:17: catchClause
+            	    {
+            	    pushFollow(FOLLOW_catchClause_in_catches2819);
+            	    catchClause();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop116;
+                }
+            } while (true);
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 86, catches_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "catches"
+
+
+    // $ANTLR start "catchClause"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:728:1: catchClause : 'catch' '(' formalParameter ')' block ;
+    public final void catchClause() throws RecognitionException {
+        int catchClause_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 87) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:729:2: ( 'catch' '(' formalParameter ')' block )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:729:4: 'catch' '(' formalParameter ')' block
+            {
+            match(input,89,FOLLOW_89_in_catchClause2833); if (state.failed) return ;
+            match(input,65,FOLLOW_65_in_catchClause2835); if (state.failed) return ;
+            pushFollow(FOLLOW_formalParameter_in_catchClause2837);
+            formalParameter();
+
+            state._fsp--;
+            if (state.failed) return ;
+            match(input,66,FOLLOW_66_in_catchClause2839); if (state.failed) return ;
+            pushFollow(FOLLOW_block_in_catchClause2841);
+            block();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 87, catchClause_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "catchClause"
+
+
+    // $ANTLR start "formalParameter"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:732:1: formalParameter : ( variableModifier )* type variableDeclaratorId ;
+    public final void formalParameter() throws RecognitionException {
+        int formalParameter_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 88) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:733:2: ( ( variableModifier )* type variableDeclaratorId )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:733:4: ( variableModifier )* type variableDeclaratorId
+            {
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:733:4: ( variableModifier )*
+            loop117:
+            do {
+                int alt117=2;
+                int LA117_0 = input.LA(1);
+
+                if ( (LA117_0==49||LA117_0==71) ) {
+                    alt117=1;
+                }
+
+
+                switch (alt117) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: variableModifier
+            	    {
+            	    pushFollow(FOLLOW_variableModifier_in_formalParameter2852);
+            	    variableModifier();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop117;
+                }
+            } while (true);
+
+            pushFollow(FOLLOW_type_in_formalParameter2855);
+            type();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_variableDeclaratorId_in_formalParameter2857);
+            variableDeclaratorId();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 88, formalParameter_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "formalParameter"
+
+
+    // $ANTLR start "switchBlockStatementGroups"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:736:1: switchBlockStatementGroups : ( switchBlockStatementGroup )* ;
+    public final void switchBlockStatementGroups() throws RecognitionException {
+        int switchBlockStatementGroups_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 89) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:737:2: ( ( switchBlockStatementGroup )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:737:4: ( switchBlockStatementGroup )*
+            {
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:737:4: ( switchBlockStatementGroup )*
+            loop118:
+            do {
+                int alt118=2;
+                int LA118_0 = input.LA(1);
+
+                if ( (LA118_0==72||LA118_0==90) ) {
+                    alt118=1;
+                }
+
+
+                switch (alt118) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:737:5: switchBlockStatementGroup
+            	    {
+            	    pushFollow(FOLLOW_switchBlockStatementGroup_in_switchBlockStatementGroups2871);
+            	    switchBlockStatementGroup();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop118;
+                }
+            } while (true);
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 89, switchBlockStatementGroups_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "switchBlockStatementGroups"
+
+
+    // $ANTLR start "switchBlockStatementGroup"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:740:1: switchBlockStatementGroup : switchLabel ( blockStatement )* ;
+    public final void switchBlockStatementGroup() throws RecognitionException {
+        int switchBlockStatementGroup_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 90) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:741:2: ( switchLabel ( blockStatement )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:741:4: switchLabel ( blockStatement )*
+            {
+            pushFollow(FOLLOW_switchLabel_in_switchBlockStatementGroup2885);
+            switchLabel();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:741:16: ( blockStatement )*
+            loop119:
+            do {
+                int alt119=2;
+                alt119 = dfa119.predict(input);
+                switch (alt119) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: blockStatement
+            	    {
+            	    pushFollow(FOLLOW_blockStatement_in_switchBlockStatementGroup2887);
+            	    blockStatement();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop119;
+                }
+            } while (true);
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 90, switchBlockStatementGroup_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "switchBlockStatementGroup"
+
+
+    // $ANTLR start "switchLabel"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:744:1: switchLabel : ( 'case' constantExpression ':' | 'case' enumConstantName ':' | 'default' ':' );
+    public final void switchLabel() throws RecognitionException {
+        int switchLabel_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 91) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:745:2: ( 'case' constantExpression ':' | 'case' enumConstantName ':' | 'default' ':' )
+            int alt120=3;
+            alt120 = dfa120.predict(input);
+            switch (alt120) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:745:4: 'case' constantExpression ':'
+                    {
+                    match(input,90,FOLLOW_90_in_switchLabel2900); if (state.failed) return ;
+                    pushFollow(FOLLOW_constantExpression_in_switchLabel2902);
+                    constantExpression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    match(input,74,FOLLOW_74_in_switchLabel2904); if (state.failed) return ;
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:746:6: 'case' enumConstantName ':'
+                    {
+                    match(input,90,FOLLOW_90_in_switchLabel2911); if (state.failed) return ;
+                    pushFollow(FOLLOW_enumConstantName_in_switchLabel2913);
+                    enumConstantName();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    match(input,74,FOLLOW_74_in_switchLabel2915); if (state.failed) return ;
+
+                    }
+                    break;
+                case 3 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:747:6: 'default' ':'
+                    {
+                    match(input,72,FOLLOW_72_in_switchLabel2922); if (state.failed) return ;
+                    match(input,74,FOLLOW_74_in_switchLabel2924); if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 91, switchLabel_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "switchLabel"
+
+
+    // $ANTLR start "moreStatementExpressions"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:750:1: moreStatementExpressions : ( ',' statementExpression )* ;
+    public final void moreStatementExpressions() throws RecognitionException {
+        int moreStatementExpressions_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 92) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:751:2: ( ( ',' statementExpression )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:751:4: ( ',' statementExpression )*
+            {
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:751:4: ( ',' statementExpression )*
+            loop121:
+            do {
+                int alt121=2;
+                int LA121_0 = input.LA(1);
+
+                if ( (LA121_0==34) ) {
+                    alt121=1;
+                }
+
+
+                switch (alt121) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:751:5: ',' statementExpression
+            	    {
+            	    match(input,34,FOLLOW_34_in_moreStatementExpressions2937); if (state.failed) return ;
+            	    pushFollow(FOLLOW_statementExpression_in_moreStatementExpressions2939);
+            	    statementExpression();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop121;
+                }
+            } while (true);
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 92, moreStatementExpressions_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "moreStatementExpressions"
+
+
+    // $ANTLR start "forControl"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:754:1: forControl options {k=3; } : ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );
+    public final void forControl() throws RecognitionException {
+        int forControl_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 93) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:756:2: ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? )
+            int alt125=2;
+            alt125 = dfa125.predict(input);
+            switch (alt125) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:756:4: forVarControl
+                    {
+                    pushFollow(FOLLOW_forVarControl_in_forControl2960);
+                    forVarControl();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:757:4: ( forInit )? ';' ( expression )? ';' ( forUpdate )?
+                    {
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:757:4: ( forInit )?
+                    int alt122=2;
+                    alt122 = dfa122.predict(input);
+                    switch (alt122) {
+                        case 1 :
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: forInit
+                            {
+                            pushFollow(FOLLOW_forInit_in_forControl2965);
+                            forInit();
+
+                            state._fsp--;
+                            if (state.failed) return ;
+
+                            }
+                            break;
+
+                    }
+
+                    match(input,25,FOLLOW_25_in_forControl2968); if (state.failed) return ;
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:757:17: ( expression )?
+                    int alt123=2;
+                    alt123 = dfa123.predict(input);
+                    switch (alt123) {
+                        case 1 :
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: expression
+                            {
+                            pushFollow(FOLLOW_expression_in_forControl2970);
+                            expression();
+
+                            state._fsp--;
+                            if (state.failed) return ;
+
+                            }
+                            break;
+
+                    }
+
+                    match(input,25,FOLLOW_25_in_forControl2973); if (state.failed) return ;
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:757:33: ( forUpdate )?
+                    int alt124=2;
+                    alt124 = dfa124.predict(input);
+                    switch (alt124) {
+                        case 1 :
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: forUpdate
+                            {
+                            pushFollow(FOLLOW_forUpdate_in_forControl2975);
+                            forUpdate();
+
+                            state._fsp--;
+                            if (state.failed) return ;
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 93, forControl_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "forControl"
+
+
+    // $ANTLR start "forInit"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:760:1: forInit : ( ( variableModifier )* type variableDeclarators | expressionList );
+    public final void forInit() throws RecognitionException {
+        int forInit_StartIndex = input.index();
+
+                    this.localVariableLevel++;
+                
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 94) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:767:2: ( ( variableModifier )* type variableDeclarators | expressionList )
+            int alt127=2;
+            alt127 = dfa127.predict(input);
+            switch (alt127) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:767:4: ( variableModifier )* type variableDeclarators
+                    {
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:767:4: ( variableModifier )*
+                    loop126:
+                    do {
+                        int alt126=2;
+                        int LA126_0 = input.LA(1);
+
+                        if ( (LA126_0==49||LA126_0==71) ) {
+                            alt126=1;
+                        }
+
+
+                        switch (alt126) {
+                    	case 1 :
+                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: variableModifier
+                    	    {
+                    	    pushFollow(FOLLOW_variableModifier_in_forInit3013);
+                    	    variableModifier();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return ;
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop126;
+                        }
+                    } while (true);
+
+                    pushFollow(FOLLOW_type_in_forInit3016);
+                    type();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    pushFollow(FOLLOW_variableDeclarators_in_forInit3018);
+                    variableDeclarators();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:768:4: expressionList
+                    {
+                    pushFollow(FOLLOW_expressionList_in_forInit3023);
+                    expressionList();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+            if ( state.backtracking==0 ) {
+
+                          this.localVariableLevel--;
+                      
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 94, forInit_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "forInit"
+
+
+    // $ANTLR start "forVarControl"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:771:1: forVarControl : ( variableModifier )* type Identifier ':' expression ;
+    public final void forVarControl() throws RecognitionException {
+        int forVarControl_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 95) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:772:2: ( ( variableModifier )* type Identifier ':' expression )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:772:4: ( variableModifier )* type Identifier ':' expression
+            {
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:772:4: ( variableModifier )*
+            loop128:
+            do {
+                int alt128=2;
+                int LA128_0 = input.LA(1);
+
+                if ( (LA128_0==49||LA128_0==71) ) {
+                    alt128=1;
+                }
+
+
+                switch (alt128) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: variableModifier
+            	    {
+            	    pushFollow(FOLLOW_variableModifier_in_forVarControl3035);
+            	    variableModifier();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop128;
+                }
+            } while (true);
+
+            pushFollow(FOLLOW_type_in_forVarControl3038);
+            type();
+
+            state._fsp--;
+            if (state.failed) return ;
+            match(input,Identifier,FOLLOW_Identifier_in_forVarControl3040); if (state.failed) return ;
+            match(input,74,FOLLOW_74_in_forVarControl3042); if (state.failed) return ;
+            pushFollow(FOLLOW_expression_in_forVarControl3044);
+            expression();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 95, forVarControl_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "forVarControl"
+
+
+    // $ANTLR start "forUpdate"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:775:1: forUpdate : expressionList ;
+    public final void forUpdate() throws RecognitionException {
+        int forUpdate_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 96) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:776:2: ( expressionList )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:776:4: expressionList
+            {
+            pushFollow(FOLLOW_expressionList_in_forUpdate3055);
+            expressionList();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 96, forUpdate_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "forUpdate"
+
+    public static class parExpression_return extends ParserRuleReturnScope {
+    };
+
+    // $ANTLR start "parExpression"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:781: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 ( state.backtracking>0 && alreadyParsedRule(input, 97) ) { return retval; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:782:2: ( '(' expression ')' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:782:4: '(' expression ')'
+            {
+            match(input,65,FOLLOW_65_in_parExpression3068); if (state.failed) return retval;
+            pushFollow(FOLLOW_expression_in_parExpression3070);
+            expression();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            match(input,66,FOLLOW_66_in_parExpression3072); if (state.failed) return retval;
+
+            }
+
+            retval.stop = input.LT(-1);
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 97, parExpression_StartIndex); }
+        }
+        return retval;
+    }
+    // $ANTLR end "parExpression"
+
+
+    // $ANTLR start "expressionList"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:785:1: expressionList : expression ( ',' expression )* ;
+    public final void expressionList() throws RecognitionException {
+        int expressionList_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 98) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:786:5: ( expression ( ',' expression )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:786:9: expression ( ',' expression )*
+            {
+            pushFollow(FOLLOW_expression_in_expressionList3089);
+            expression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:786:20: ( ',' expression )*
+            loop129:
+            do {
+                int alt129=2;
+                int LA129_0 = input.LA(1);
+
+                if ( (LA129_0==34) ) {
+                    alt129=1;
+                }
+
+
+                switch (alt129) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:786:21: ',' expression
+            	    {
+            	    match(input,34,FOLLOW_34_in_expressionList3092); if (state.failed) return ;
+            	    pushFollow(FOLLOW_expression_in_expressionList3094);
+            	    expression();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop129;
+                }
+            } while (true);
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 98, expressionList_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "expressionList"
+
+
+    // $ANTLR start "statementExpression"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:789:1: statementExpression : expression ;
+    public final void statementExpression() throws RecognitionException {
+        int statementExpression_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 99) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:790:2: ( expression )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:790:4: expression
+            {
+            pushFollow(FOLLOW_expression_in_statementExpression3110);
+            expression();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 99, statementExpression_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "statementExpression"
+
+
+    // $ANTLR start "constantExpression"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:793:1: constantExpression : expression ;
+    public final void constantExpression() throws RecognitionException {
+        int constantExpression_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 100) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:794:2: ( expression )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:794:4: expression
+            {
+            pushFollow(FOLLOW_expression_in_constantExpression3122);
+            expression();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 100, constantExpression_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "constantExpression"
+
+    public static class expression_return extends ParserRuleReturnScope {
+    };
+
+    // $ANTLR start "expression"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:797: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 ( state.backtracking>0 && alreadyParsedRule(input, 101) ) { return retval; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:798:2: ( conditionalExpression ( assignmentOperator expression )? )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:798:4: conditionalExpression ( assignmentOperator expression )?
+            {
+            pushFollow(FOLLOW_conditionalExpression_in_expression3134);
+            conditionalExpression();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:798:26: ( assignmentOperator expression )?
+            int alt130=2;
+            alt130 = dfa130.predict(input);
+            switch (alt130) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:798:27: assignmentOperator expression
+                    {
+                    pushFollow(FOLLOW_assignmentOperator_in_expression3137);
+                    assignmentOperator();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    pushFollow(FOLLOW_expression_in_expression3139);
+                    expression();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            retval.stop = input.LT(-1);
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 101, expression_StartIndex); }
+        }
+        return retval;
+    }
+    // $ANTLR end "expression"
+
+
+    // $ANTLR start "assignmentOperator"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:801:1: assignmentOperator : ( '=' | '+=' | '-=' | '*=' | '/=' | '&=' | '|=' | '^=' | '%=' | '<' '<' '=' | '>' '>' '=' | '>' '>' '>' '=' );
+    public final void assignmentOperator() throws RecognitionException {
+        int assignmentOperator_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 102) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:802:2: ( '=' | '+=' | '-=' | '*=' | '/=' | '&=' | '|=' | '^=' | '%=' | '<' '<' '=' | '>' '>' '=' | '>' '>' '>' '=' )
+            int alt131=12;
+            alt131 = dfa131.predict(input);
+            switch (alt131) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:802:4: '='
+                    {
+                    match(input,44,FOLLOW_44_in_assignmentOperator3153); if (state.failed) return ;
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:803:9: '+='
+                    {
+                    match(input,91,FOLLOW_91_in_assignmentOperator3163); if (state.failed) return ;
+
+                    }
+                    break;
+                case 3 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:804:9: '-='
+                    {
+                    match(input,92,FOLLOW_92_in_assignmentOperator3173); if (state.failed) return ;
+
+                    }
+                    break;
+                case 4 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:805:9: '*='
+                    {
+                    match(input,93,FOLLOW_93_in_assignmentOperator3183); if (state.failed) return ;
+
+                    }
+                    break;
+                case 5 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:806:9: '/='
+                    {
+                    match(input,94,FOLLOW_94_in_assignmentOperator3193); if (state.failed) return ;
+
+                    }
+                    break;
+                case 6 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:807:9: '&='
+                    {
+                    match(input,95,FOLLOW_95_in_assignmentOperator3203); if (state.failed) return ;
+
+                    }
+                    break;
+                case 7 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:808:9: '|='
+                    {
+                    match(input,96,FOLLOW_96_in_assignmentOperator3213); if (state.failed) return ;
+
+                    }
+                    break;
+                case 8 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:809:9: '^='
+                    {
+                    match(input,97,FOLLOW_97_in_assignmentOperator3223); if (state.failed) return ;
+
+                    }
+                    break;
+                case 9 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:810:9: '%='
+                    {
+                    match(input,98,FOLLOW_98_in_assignmentOperator3233); if (state.failed) return ;
+
+                    }
+                    break;
+                case 10 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:811:9: '<' '<' '='
+                    {
+                    match(input,33,FOLLOW_33_in_assignmentOperator3243); if (state.failed) return ;
+                    match(input,33,FOLLOW_33_in_assignmentOperator3245); if (state.failed) return ;
+                    match(input,44,FOLLOW_44_in_assignmentOperator3247); if (state.failed) return ;
+
+                    }
+                    break;
+                case 11 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:812:9: '>' '>' '='
+                    {
+                    match(input,35,FOLLOW_35_in_assignmentOperator3257); if (state.failed) return ;
+                    match(input,35,FOLLOW_35_in_assignmentOperator3259); if (state.failed) return ;
+                    match(input,44,FOLLOW_44_in_assignmentOperator3261); if (state.failed) return ;
+
+                    }
+                    break;
+                case 12 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:813:9: '>' '>' '>' '='
+                    {
+                    match(input,35,FOLLOW_35_in_assignmentOperator3271); if (state.failed) return ;
+                    match(input,35,FOLLOW_35_in_assignmentOperator3273); if (state.failed) return ;
+                    match(input,35,FOLLOW_35_in_assignmentOperator3275); if (state.failed) return ;
+                    match(input,44,FOLLOW_44_in_assignmentOperator3277); if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 102, assignmentOperator_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "assignmentOperator"
+
+
+    // $ANTLR start "conditionalExpression"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:816:1: conditionalExpression : conditionalOrExpression ( '?' expression ':' expression )? ;
+    public final void conditionalExpression() throws RecognitionException {
+        int conditionalExpression_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 103) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:817:5: ( conditionalOrExpression ( '?' expression ':' expression )? )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:817:9: conditionalOrExpression ( '?' expression ':' expression )?
+            {
+            pushFollow(FOLLOW_conditionalOrExpression_in_conditionalExpression3293);
+            conditionalOrExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:817:33: ( '?' expression ':' expression )?
+            int alt132=2;
+            alt132 = dfa132.predict(input);
+            switch (alt132) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:817:35: '?' expression ':' expression
+                    {
+                    match(input,63,FOLLOW_63_in_conditionalExpression3297); if (state.failed) return ;
+                    pushFollow(FOLLOW_expression_in_conditionalExpression3299);
+                    expression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    match(input,74,FOLLOW_74_in_conditionalExpression3301); if (state.failed) return ;
+                    pushFollow(FOLLOW_expression_in_conditionalExpression3303);
+                    expression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 103, conditionalExpression_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "conditionalExpression"
+
+
+    // $ANTLR start "conditionalOrExpression"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:820:1: conditionalOrExpression : conditionalAndExpression ( '||' conditionalAndExpression )* ;
+    public final void conditionalOrExpression() throws RecognitionException {
+        int conditionalOrExpression_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 104) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:821:5: ( conditionalAndExpression ( '||' conditionalAndExpression )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:821:9: conditionalAndExpression ( '||' conditionalAndExpression )*
+            {
+            pushFollow(FOLLOW_conditionalAndExpression_in_conditionalOrExpression3322);
+            conditionalAndExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:821:34: ( '||' conditionalAndExpression )*
+            loop133:
+            do {
+                int alt133=2;
+                alt133 = dfa133.predict(input);
+                switch (alt133) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:821:36: '||' conditionalAndExpression
+            	    {
+            	    match(input,99,FOLLOW_99_in_conditionalOrExpression3326); if (state.failed) return ;
+            	    pushFollow(FOLLOW_conditionalAndExpression_in_conditionalOrExpression3328);
+            	    conditionalAndExpression();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop133;
+                }
+            } while (true);
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 104, conditionalOrExpression_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "conditionalOrExpression"
+
+
+    // $ANTLR start "conditionalAndExpression"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:824:1: conditionalAndExpression : inclusiveOrExpression ( '&&' inclusiveOrExpression )* ;
+    public final void conditionalAndExpression() throws RecognitionException {
+        int conditionalAndExpression_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 105) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:825:5: ( inclusiveOrExpression ( '&&' inclusiveOrExpression )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:825:9: inclusiveOrExpression ( '&&' inclusiveOrExpression )*
+            {
+            pushFollow(FOLLOW_inclusiveOrExpression_in_conditionalAndExpression3347);
+            inclusiveOrExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:825:31: ( '&&' inclusiveOrExpression )*
+            loop134:
+            do {
+                int alt134=2;
+                alt134 = dfa134.predict(input);
+                switch (alt134) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:825:33: '&&' inclusiveOrExpression
+            	    {
+            	    match(input,100,FOLLOW_100_in_conditionalAndExpression3351); if (state.failed) return ;
+            	    pushFollow(FOLLOW_inclusiveOrExpression_in_conditionalAndExpression3353);
+            	    inclusiveOrExpression();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop134;
+                }
+            } while (true);
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 105, conditionalAndExpression_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "conditionalAndExpression"
+
+
+    // $ANTLR start "inclusiveOrExpression"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:828:1: inclusiveOrExpression : exclusiveOrExpression ( '|' exclusiveOrExpression )* ;
+    public final void inclusiveOrExpression() throws RecognitionException {
+        int inclusiveOrExpression_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 106) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:829:5: ( exclusiveOrExpression ( '|' exclusiveOrExpression )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:829:9: exclusiveOrExpression ( '|' exclusiveOrExpression )*
+            {
+            pushFollow(FOLLOW_exclusiveOrExpression_in_inclusiveOrExpression3372);
+            exclusiveOrExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:829:31: ( '|' exclusiveOrExpression )*
+            loop135:
+            do {
+                int alt135=2;
+                alt135 = dfa135.predict(input);
+                switch (alt135) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:829:33: '|' exclusiveOrExpression
+            	    {
+            	    match(input,101,FOLLOW_101_in_inclusiveOrExpression3376); if (state.failed) return ;
+            	    pushFollow(FOLLOW_exclusiveOrExpression_in_inclusiveOrExpression3378);
+            	    exclusiveOrExpression();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop135;
+                }
+            } while (true);
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 106, inclusiveOrExpression_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "inclusiveOrExpression"
+
+
+    // $ANTLR start "exclusiveOrExpression"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:832:1: exclusiveOrExpression : andExpression ( '^' andExpression )* ;
+    public final void exclusiveOrExpression() throws RecognitionException {
+        int exclusiveOrExpression_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 107) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:833:5: ( andExpression ( '^' andExpression )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:833:9: andExpression ( '^' andExpression )*
+            {
+            pushFollow(FOLLOW_andExpression_in_exclusiveOrExpression3397);
+            andExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:833:23: ( '^' andExpression )*
+            loop136:
+            do {
+                int alt136=2;
+                alt136 = dfa136.predict(input);
+                switch (alt136) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:833:25: '^' andExpression
+            	    {
+            	    match(input,102,FOLLOW_102_in_exclusiveOrExpression3401); if (state.failed) return ;
+            	    pushFollow(FOLLOW_andExpression_in_exclusiveOrExpression3403);
+            	    andExpression();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop136;
+                }
+            } while (true);
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 107, exclusiveOrExpression_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "exclusiveOrExpression"
+
+
+    // $ANTLR start "andExpression"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:836:1: andExpression : equalityExpression ( '&' equalityExpression )* ;
+    public final void andExpression() throws RecognitionException {
+        int andExpression_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 108) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:837:5: ( equalityExpression ( '&' equalityExpression )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:837:9: equalityExpression ( '&' equalityExpression )*
+            {
+            pushFollow(FOLLOW_equalityExpression_in_andExpression3422);
+            equalityExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:837:28: ( '&' equalityExpression )*
+            loop137:
+            do {
+                int alt137=2;
+                alt137 = dfa137.predict(input);
+                switch (alt137) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:837:30: '&' equalityExpression
+            	    {
+            	    match(input,36,FOLLOW_36_in_andExpression3426); if (state.failed) return ;
+            	    pushFollow(FOLLOW_equalityExpression_in_andExpression3428);
+            	    equalityExpression();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop137;
+                }
+            } while (true);
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 108, andExpression_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "andExpression"
+
+
+    // $ANTLR start "equalityExpression"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:840:1: equalityExpression : instanceOfExpression ( ( '==' | '!=' ) instanceOfExpression )* ;
+    public final void equalityExpression() throws RecognitionException {
+        int equalityExpression_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 109) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:841:5: ( instanceOfExpression ( ( '==' | '!=' ) instanceOfExpression )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:841:9: instanceOfExpression ( ( '==' | '!=' ) instanceOfExpression )*
+            {
+            pushFollow(FOLLOW_instanceOfExpression_in_equalityExpression3447);
+            instanceOfExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:841:30: ( ( '==' | '!=' ) instanceOfExpression )*
+            loop138:
+            do {
+                int alt138=2;
+                alt138 = dfa138.predict(input);
+                switch (alt138) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:841:32: ( '==' | '!=' ) instanceOfExpression
+            	    {
+            	    if ( (input.LA(1)>=103 && input.LA(1)<=104) ) {
+            	        input.consume();
+            	        state.errorRecovery=false;state.failed=false;
+            	    }
+            	    else {
+            	        if (state.backtracking>0) {state.failed=true; return ;}
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        throw mse;
+            	    }
+
+            	    pushFollow(FOLLOW_instanceOfExpression_in_equalityExpression3459);
+            	    instanceOfExpression();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop138;
+                }
+            } while (true);
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 109, equalityExpression_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "equalityExpression"
+
+
+    // $ANTLR start "instanceOfExpression"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:844:1: instanceOfExpression : relationalExpression ( 'instanceof' type )? ;
+    public final void instanceOfExpression() throws RecognitionException {
+        int instanceOfExpression_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 110) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:845:5: ( relationalExpression ( 'instanceof' type )? )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:845:9: relationalExpression ( 'instanceof' type )?
+            {
+            pushFollow(FOLLOW_relationalExpression_in_instanceOfExpression3478);
+            relationalExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:845:30: ( 'instanceof' type )?
+            int alt139=2;
+            alt139 = dfa139.predict(input);
+            switch (alt139) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:845:31: 'instanceof' type
+                    {
+                    match(input,105,FOLLOW_105_in_instanceOfExpression3481); if (state.failed) return ;
+                    pushFollow(FOLLOW_type_in_instanceOfExpression3483);
+                    type();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 110, instanceOfExpression_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "instanceOfExpression"
+
+
+    // $ANTLR start "relationalExpression"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:848:1: relationalExpression : shiftExpression ( relationalOp shiftExpression )* ;
+    public final void relationalExpression() throws RecognitionException {
+        int relationalExpression_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 111) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:849:5: ( shiftExpression ( relationalOp shiftExpression )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:849:9: shiftExpression ( relationalOp shiftExpression )*
+            {
+            pushFollow(FOLLOW_shiftExpression_in_relationalExpression3501);
+            shiftExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:849:25: ( relationalOp shiftExpression )*
+            loop140:
+            do {
+                int alt140=2;
+                alt140 = dfa140.predict(input);
+                switch (alt140) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:849:27: relationalOp shiftExpression
+            	    {
+            	    pushFollow(FOLLOW_relationalOp_in_relationalExpression3505);
+            	    relationalOp();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+            	    pushFollow(FOLLOW_shiftExpression_in_relationalExpression3507);
+            	    shiftExpression();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop140;
+                }
+            } while (true);
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 111, relationalExpression_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "relationalExpression"
+
+
+    // $ANTLR start "relationalOp"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:852:1: relationalOp : ( '<' '=' | '>' '=' | '<' | '>' ) ;
+    public final void relationalOp() throws RecognitionException {
+        int relationalOp_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 112) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:853:2: ( ( '<' '=' | '>' '=' | '<' | '>' ) )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:853:4: ( '<' '=' | '>' '=' | '<' | '>' )
+            {
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:853:4: ( '<' '=' | '>' '=' | '<' | '>' )
+            int alt141=4;
+            alt141 = dfa141.predict(input);
+            switch (alt141) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:853:5: '<' '='
+                    {
+                    match(input,33,FOLLOW_33_in_relationalOp3523); if (state.failed) return ;
+                    match(input,44,FOLLOW_44_in_relationalOp3525); if (state.failed) return ;
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:853:15: '>' '='
+                    {
+                    match(input,35,FOLLOW_35_in_relationalOp3529); if (state.failed) return ;
+                    match(input,44,FOLLOW_44_in_relationalOp3531); if (state.failed) return ;
+
+                    }
+                    break;
+                case 3 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:853:25: '<'
+                    {
+                    match(input,33,FOLLOW_33_in_relationalOp3535); if (state.failed) return ;
+
+                    }
+                    break;
+                case 4 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:853:31: '>'
+                    {
+                    match(input,35,FOLLOW_35_in_relationalOp3539); if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 112, relationalOp_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "relationalOp"
+
+
+    // $ANTLR start "shiftExpression"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:856:1: shiftExpression : additiveExpression ( shiftOp additiveExpression )* ;
+    public final void shiftExpression() throws RecognitionException {
+        int shiftExpression_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 113) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:857:5: ( additiveExpression ( shiftOp additiveExpression )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:857:9: additiveExpression ( shiftOp additiveExpression )*
+            {
+            pushFollow(FOLLOW_additiveExpression_in_shiftExpression3556);
+            additiveExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:857:28: ( shiftOp additiveExpression )*
+            loop142:
+            do {
+                int alt142=2;
+                alt142 = dfa142.predict(input);
+                switch (alt142) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:857:30: shiftOp additiveExpression
+            	    {
+            	    pushFollow(FOLLOW_shiftOp_in_shiftExpression3560);
+            	    shiftOp();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+            	    pushFollow(FOLLOW_additiveExpression_in_shiftExpression3562);
+            	    additiveExpression();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop142;
+                }
+            } while (true);
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 113, shiftExpression_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "shiftExpression"
+
+
+    // $ANTLR start "shiftOp"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:861:1: shiftOp : ( '<' '<' | '>' '>' '>' | '>' '>' ) ;
+    public final void shiftOp() throws RecognitionException {
+        int shiftOp_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 114) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:862:2: ( ( '<' '<' | '>' '>' '>' | '>' '>' ) )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:862:4: ( '<' '<' | '>' '>' '>' | '>' '>' )
+            {
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:862:4: ( '<' '<' | '>' '>' '>' | '>' '>' )
+            int alt143=3;
+            int LA143_0 = input.LA(1);
+
+            if ( (LA143_0==33) ) {
+                alt143=1;
+            }
+            else if ( (LA143_0==35) ) {
+                int LA143_2 = input.LA(2);
+
+                if ( (LA143_2==35) ) {
+                    int LA143_3 = input.LA(3);
+
+                    if ( (synpred215_Java()) ) {
+                        alt143=2;
+                    }
+                    else if ( (true) ) {
+                        alt143=3;
+                    }
+                    else {
+                        if (state.backtracking>0) {state.failed=true; return ;}
+                        NoViableAltException nvae =
+                            new NoViableAltException("", 143, 3, input);
+
+                        throw nvae;
+                    }
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 143, 2, input);
+
+                    throw nvae;
+                }
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 143, 0, input);
+
+                throw nvae;
+            }
+            switch (alt143) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:862:5: '<' '<'
+                    {
+                    match(input,33,FOLLOW_33_in_shiftOp3586); if (state.failed) return ;
+                    match(input,33,FOLLOW_33_in_shiftOp3588); if (state.failed) return ;
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:862:15: '>' '>' '>'
+                    {
+                    match(input,35,FOLLOW_35_in_shiftOp3592); if (state.failed) return ;
+                    match(input,35,FOLLOW_35_in_shiftOp3594); if (state.failed) return ;
+                    match(input,35,FOLLOW_35_in_shiftOp3596); if (state.failed) return ;
+
+                    }
+                    break;
+                case 3 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:862:29: '>' '>'
+                    {
+                    match(input,35,FOLLOW_35_in_shiftOp3600); if (state.failed) return ;
+                    match(input,35,FOLLOW_35_in_shiftOp3602); if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 114, shiftOp_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "shiftOp"
+
+
+    // $ANTLR start "additiveExpression"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:866:1: additiveExpression : multiplicativeExpression ( ( '+' | '-' ) multiplicativeExpression )* ;
+    public final void additiveExpression() throws RecognitionException {
+        int additiveExpression_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 115) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:867:5: ( multiplicativeExpression ( ( '+' | '-' ) multiplicativeExpression )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:867:9: multiplicativeExpression ( ( '+' | '-' ) multiplicativeExpression )*
+            {
+            pushFollow(FOLLOW_multiplicativeExpression_in_additiveExpression3620);
+            multiplicativeExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:867:34: ( ( '+' | '-' ) multiplicativeExpression )*
+            loop144:
+            do {
+                int alt144=2;
+                alt144 = dfa144.predict(input);
+                switch (alt144) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:867:36: ( '+' | '-' ) multiplicativeExpression
+            	    {
+            	    if ( (input.LA(1)>=106 && input.LA(1)<=107) ) {
+            	        input.consume();
+            	        state.errorRecovery=false;state.failed=false;
+            	    }
+            	    else {
+            	        if (state.backtracking>0) {state.failed=true; return ;}
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        throw mse;
+            	    }
+
+            	    pushFollow(FOLLOW_multiplicativeExpression_in_additiveExpression3632);
+            	    multiplicativeExpression();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop144;
+                }
+            } while (true);
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 115, additiveExpression_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "additiveExpression"
+
+
+    // $ANTLR start "multiplicativeExpression"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:870:1: multiplicativeExpression : unaryExpression ( ( '*' | '/' | '%' ) unaryExpression )* ;
+    public final void multiplicativeExpression() throws RecognitionException {
+        int multiplicativeExpression_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 116) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:871:5: ( unaryExpression ( ( '*' | '/' | '%' ) unaryExpression )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:871:9: unaryExpression ( ( '*' | '/' | '%' ) unaryExpression )*
+            {
+            pushFollow(FOLLOW_unaryExpression_in_multiplicativeExpression3651);
+            unaryExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:871:25: ( ( '*' | '/' | '%' ) unaryExpression )*
+            loop145:
+            do {
+                int alt145=2;
+                alt145 = dfa145.predict(input);
+                switch (alt145) {
+            	case 1 :
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:871:27: ( '*' | '/' | '%' ) unaryExpression
+            	    {
+            	    if ( input.LA(1)==29||(input.LA(1)>=108 && input.LA(1)<=109) ) {
+            	        input.consume();
+            	        state.errorRecovery=false;state.failed=false;
+            	    }
+            	    else {
+            	        if (state.backtracking>0) {state.failed=true; return ;}
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        throw mse;
+            	    }
+
+            	    pushFollow(FOLLOW_unaryExpression_in_multiplicativeExpression3669);
+            	    unaryExpression();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop145;
+                }
+            } while (true);
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 116, multiplicativeExpression_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "multiplicativeExpression"
+
+
+    // $ANTLR start "unaryExpression"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:874:1: unaryExpression : ( '+' unaryExpression | '-' unaryExpression | '++' primary | '--' primary | unaryExpressionNotPlusMinus );
+    public final void unaryExpression() throws RecognitionException {
+        int unaryExpression_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 117) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:875:5: ( '+' unaryExpression | '-' unaryExpression | '++' primary | '--' primary | unaryExpressionNotPlusMinus )
+            int alt146=5;
+            alt146 = dfa146.predict(input);
+            switch (alt146) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:875:9: '+' unaryExpression
+                    {
+                    match(input,106,FOLLOW_106_in_unaryExpression3689); if (state.failed) return ;
+                    pushFollow(FOLLOW_unaryExpression_in_unaryExpression3691);
+                    unaryExpression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:876:7: '-' unaryExpression
+                    {
+                    match(input,107,FOLLOW_107_in_unaryExpression3699); if (state.failed) return ;
+                    pushFollow(FOLLOW_unaryExpression_in_unaryExpression3701);
+                    unaryExpression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 3 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:877:9: '++' primary
+                    {
+                    match(input,110,FOLLOW_110_in_unaryExpression3711); if (state.failed) return ;
+                    pushFollow(FOLLOW_primary_in_unaryExpression3713);
+                    primary();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 4 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:878:9: '--' primary
+                    {
+                    match(input,111,FOLLOW_111_in_unaryExpression3723); if (state.failed) return ;
+                    pushFollow(FOLLOW_primary_in_unaryExpression3725);
+                    primary();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 5 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:879:9: unaryExpressionNotPlusMinus
+                    {
+                    pushFollow(FOLLOW_unaryExpressionNotPlusMinus_in_unaryExpression3735);
+                    unaryExpressionNotPlusMinus();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 117, unaryExpression_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "unaryExpression"
+
+
+    // $ANTLR start "unaryExpressionNotPlusMinus"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:882:1: unaryExpressionNotPlusMinus : ( '~' unaryExpression | '!' unaryExpression | castExpression | primary ( selector )* ( '++' | '--' )? );
+    public final void unaryExpressionNotPlusMinus() throws RecognitionException {
+        int unaryExpressionNotPlusMinus_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 118) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:883:5: ( '~' unaryExpression | '!' unaryExpression | castExpression | primary ( selector )* ( '++' | '--' )? )
+            int alt149=4;
+            alt149 = dfa149.predict(input);
+            switch (alt149) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:883:9: '~' unaryExpression
+                    {
+                    match(input,112,FOLLOW_112_in_unaryExpressionNotPlusMinus3754); if (state.failed) return ;
+                    pushFollow(FOLLOW_unaryExpression_in_unaryExpressionNotPlusMinus3756);
+                    unaryExpression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:884:8: '!' unaryExpression
+                    {
+                    match(input,113,FOLLOW_113_in_unaryExpressionNotPlusMinus3765); if (state.failed) return ;
+                    pushFollow(FOLLOW_unaryExpression_in_unaryExpressionNotPlusMinus3767);
+                    unaryExpression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 3 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:885:9: castExpression
+                    {
+                    pushFollow(FOLLOW_castExpression_in_unaryExpressionNotPlusMinus3777);
+                    castExpression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 4 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:886:9: primary ( selector )* ( '++' | '--' )?
+                    {
+                    pushFollow(FOLLOW_primary_in_unaryExpressionNotPlusMinus3787);
+                    primary();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:886:17: ( selector )*
+                    loop147:
+                    do {
+                        int alt147=2;
+                        alt147 = dfa147.predict(input);
+                        switch (alt147) {
+                    	case 1 :
+                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: selector
+                    	    {
+                    	    pushFollow(FOLLOW_selector_in_unaryExpressionNotPlusMinus3789);
+                    	    selector();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return ;
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop147;
+                        }
+                    } while (true);
+
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:886:27: ( '++' | '--' )?
+                    int alt148=2;
+                    alt148 = dfa148.predict(input);
+                    switch (alt148) {
+                        case 1 :
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:
+                            {
+                            if ( (input.LA(1)>=110 && input.LA(1)<=111) ) {
+                                input.consume();
+                                state.errorRecovery=false;state.failed=false;
+                            }
+                            else {
+                                if (state.backtracking>0) {state.failed=true; return ;}
+                                MismatchedSetException mse = new MismatchedSetException(null,input);
+                                throw mse;
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 118, unaryExpressionNotPlusMinus_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "unaryExpressionNotPlusMinus"
+
+
+    // $ANTLR start "castExpression"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:889:1: castExpression : ( '(' primitiveType ')' unaryExpression | '(' ( type | expression ) ')' unaryExpressionNotPlusMinus );
+    public final void castExpression() throws RecognitionException {
+        int castExpression_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 119) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:890:5: ( '(' primitiveType ')' unaryExpression | '(' ( type | expression ) ')' unaryExpressionNotPlusMinus )
+            int alt151=2;
+            alt151 = dfa151.predict(input);
+            switch (alt151) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:890:8: '(' primitiveType ')' unaryExpression
+                    {
+                    match(input,65,FOLLOW_65_in_castExpression3815); if (state.failed) return ;
+                    pushFollow(FOLLOW_primitiveType_in_castExpression3817);
+                    primitiveType();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    match(input,66,FOLLOW_66_in_castExpression3819); if (state.failed) return ;
+                    pushFollow(FOLLOW_unaryExpression_in_castExpression3821);
+                    unaryExpression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:891:8: '(' ( type | expression ) ')' unaryExpressionNotPlusMinus
+                    {
+                    match(input,65,FOLLOW_65_in_castExpression3830); if (state.failed) return ;
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:891:12: ( type | expression )
+                    int alt150=2;
+                    alt150 = dfa150.predict(input);
+                    switch (alt150) {
+                        case 1 :
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:891:13: type
+                            {
+                            pushFollow(FOLLOW_type_in_castExpression3833);
+                            type();
+
+                            state._fsp--;
+                            if (state.failed) return ;
+
+                            }
+                            break;
+                        case 2 :
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:891:20: expression
+                            {
+                            pushFollow(FOLLOW_expression_in_castExpression3837);
+                            expression();
+
+                            state._fsp--;
+                            if (state.failed) return ;
+
+                            }
+                            break;
+
+                    }
+
+                    match(input,66,FOLLOW_66_in_castExpression3840); if (state.failed) return ;
+                    pushFollow(FOLLOW_unaryExpressionNotPlusMinus_in_castExpression3842);
+                    unaryExpressionNotPlusMinus();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 119, castExpression_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "castExpression"
+
+
+    // $ANTLR start "primary"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:894: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 ( state.backtracking>0 && alreadyParsedRule(input, 120) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:895: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;
+            alt158 = dfa158.predict(input);
+            switch (alt158) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:895:7: parExpression
+                    {
+                    pushFollow(FOLLOW_parExpression_in_primary3859);
+                    parExpression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:896:9: nonWildcardTypeArguments ( explicitGenericInvocationSuffix | 'this' arguments )
+                    {
+                    pushFollow(FOLLOW_nonWildcardTypeArguments_in_primary3869);
+                    nonWildcardTypeArguments();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:897:9: ( explicitGenericInvocationSuffix | 'this' arguments )
+                    int alt152=2;
+                    int LA152_0 = input.LA(1);
+
+                    if ( (LA152_0==Identifier||LA152_0==64) ) {
+                        alt152=1;
+                    }
+                    else if ( (LA152_0==114) ) {
+                        alt152=2;
+                    }
+                    else {
+                        if (state.backtracking>0) {state.failed=true; return ;}
+                        NoViableAltException nvae =
+                            new NoViableAltException("", 152, 0, input);
+
+                        throw nvae;
+                    }
+                    switch (alt152) {
+                        case 1 :
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:897:10: explicitGenericInvocationSuffix
+                            {
+                            pushFollow(FOLLOW_explicitGenericInvocationSuffix_in_primary3880);
+                            explicitGenericInvocationSuffix();
+
+                            state._fsp--;
+                            if (state.failed) return ;
+
+                            }
+                            break;
+                        case 2 :
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:897:44: 'this' arguments
+                            {
+                            match(input,114,FOLLOW_114_in_primary3884); if (state.failed) return ;
+                            pushFollow(FOLLOW_arguments_in_primary3886);
+                            arguments();
+
+                            state._fsp--;
+                            if (state.failed) return ;
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:898:9: 'this' ( '.' Identifier )* ( identifierSuffix )?
+                    {
+                    match(input,114,FOLLOW_114_in_primary3897); if (state.failed) return ;
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:898:16: ( '.' Identifier )*
+                    loop153:
+                    do {
+                        int alt153=2;
+                        alt153 = dfa153.predict(input);
+                        switch (alt153) {
+                    	case 1 :
+                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:898:17: '.' Identifier
+                    	    {
+                    	    match(input,28,FOLLOW_28_in_primary3900); if (state.failed) return ;
+                    	    match(input,Identifier,FOLLOW_Identifier_in_primary3902); if (state.failed) return ;
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop153;
+                        }
+                    } while (true);
+
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:898:34: ( identifierSuffix )?
+                    int alt154=2;
+                    alt154 = dfa154.predict(input);
+                    switch (alt154) {
+                        case 1 :
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:898:35: identifierSuffix
+                            {
+                            pushFollow(FOLLOW_identifierSuffix_in_primary3907);
+                            identifierSuffix();
+
+                            state._fsp--;
+                            if (state.failed) return ;
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:899:9: 'super' superSuffix
+                    {
+                    match(input,64,FOLLOW_64_in_primary3919); if (state.failed) return ;
+                    pushFollow(FOLLOW_superSuffix_in_primary3921);
+                    superSuffix();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 5 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:900:9: literal
+                    {
+                    pushFollow(FOLLOW_literal_in_primary3931);
+                    literal();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 6 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:901:9: 'new' creator
+                    {
+                    match(input,115,FOLLOW_115_in_primary3941); if (state.failed) return ;
+                    pushFollow(FOLLOW_creator_in_primary3943);
+                    creator();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 7 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:902:9: i= Identifier ( '.' Identifier )* ( identifierSuffix )?
+                    {
+                    i=(Token)match(input,Identifier,FOLLOW_Identifier_in_primary3955); 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) );  
+                    }
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:902:126: ( '.' Identifier )*
+                    loop155:
+                    do {
+                        int alt155=2;
+                        alt155 = dfa155.predict(input);
+                        switch (alt155) {
+                    	case 1 :
+                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:902:127: '.' Identifier
+                    	    {
+                    	    match(input,28,FOLLOW_28_in_primary3960); if (state.failed) return ;
+                    	    match(input,Identifier,FOLLOW_Identifier_in_primary3962); if (state.failed) return ;
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop155;
+                        }
+                    } while (true);
+
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:902:144: ( identifierSuffix )?
+                    int alt156=2;
+                    alt156 = dfa156.predict(input);
+                    switch (alt156) {
+                        case 1 :
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:902:145: identifierSuffix
+                            {
+                            pushFollow(FOLLOW_identifierSuffix_in_primary3967);
+                            identifierSuffix();
+
+                            state._fsp--;
+                            if (state.failed) return ;
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+                case 8 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:903:9: primitiveType ( '[' ']' )* '.' 'class'
+                    {
+                    pushFollow(FOLLOW_primitiveType_in_primary3979);
+                    primitiveType();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:903:23: ( '[' ']' )*
+                    loop157:
+                    do {
+                        int alt157=2;
+                        int LA157_0 = input.LA(1);
+
+                        if ( (LA157_0==41) ) {
+                            alt157=1;
+                        }
+
+
+                        switch (alt157) {
+                    	case 1 :
+                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:903:24: '[' ']'
+                    	    {
+                    	    match(input,41,FOLLOW_41_in_primary3982); if (state.failed) return ;
+                    	    match(input,42,FOLLOW_42_in_primary3984); if (state.failed) return ;
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop157;
+                        }
+                    } while (true);
+
+                    match(input,28,FOLLOW_28_in_primary3988); if (state.failed) return ;
+                    match(input,30,FOLLOW_30_in_primary3990); if (state.failed) return ;
+
+                    }
+                    break;
+                case 9 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:904:9: 'void' '.' 'class'
+                    {
+                    match(input,40,FOLLOW_40_in_primary4000); if (state.failed) return ;
+                    match(input,28,FOLLOW_28_in_primary4002); if (state.failed) return ;
+                    match(input,30,FOLLOW_30_in_primary4004); if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 120, primary_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "primary"
+
+
+    // $ANTLR start "identifierSuffix"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:907: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 ( state.backtracking>0 && alreadyParsedRule(input, 121) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:908:2: ( ( '[' ']' )+ '.' 'class' | ( '[' expression ']' )+ | arguments | '.' 'class' | '.' explicitGenericInvocation | '.' 'this' | '.' 'super' arguments | '.' 'new' ( nonWildcardTypeArguments )? innerCreator )
+            int alt162=8;
+            alt162 = dfa162.predict(input);
+            switch (alt162) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:908:4: ( '[' ']' )+ '.' 'class'
+                    {
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:908:4: ( '[' ']' )+
+                    int cnt159=0;
+                    loop159:
+                    do {
+                        int alt159=2;
+                        int LA159_0 = input.LA(1);
+
+                        if ( (LA159_0==41) ) {
+                            alt159=1;
+                        }
+
+
+                        switch (alt159) {
+                    	case 1 :
+                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:908:5: '[' ']'
+                    	    {
+                    	    match(input,41,FOLLOW_41_in_identifierSuffix4016); if (state.failed) return ;
+                    	    match(input,42,FOLLOW_42_in_identifierSuffix4018); if (state.failed) return ;
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt159 >= 1 ) break loop159;
+                    	    if (state.backtracking>0) {state.failed=true; return ;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(159, input);
+                                throw eee;
+                        }
+                        cnt159++;
+                    } while (true);
+
+                    match(input,28,FOLLOW_28_in_identifierSuffix4022); if (state.failed) return ;
+                    match(input,30,FOLLOW_30_in_identifierSuffix4024); if (state.failed) return ;
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:909:4: ( '[' expression ']' )+
+                    {
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:909:4: ( '[' expression ']' )+
+                    int cnt160=0;
+                    loop160:
+                    do {
+                        int alt160=2;
+                        alt160 = dfa160.predict(input);
+                        switch (alt160) {
+                    	case 1 :
+                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:909:5: '[' expression ']'
+                    	    {
+                    	    match(input,41,FOLLOW_41_in_identifierSuffix4030); if (state.failed) return ;
+                    	    pushFollow(FOLLOW_expression_in_identifierSuffix4032);
+                    	    expression();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return ;
+                    	    match(input,42,FOLLOW_42_in_identifierSuffix4034); if (state.failed) return ;
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt160 >= 1 ) break loop160;
+                    	    if (state.backtracking>0) {state.failed=true; return ;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(160, input);
+                                throw eee;
+                        }
+                        cnt160++;
+                    } while (true);
+
+
+                    }
+                    break;
+                case 3 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:910:9: arguments
+                    {
+                    pushFollow(FOLLOW_arguments_in_identifierSuffix4047);
+                    arguments();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 4 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:911:9: '.' 'class'
+                    {
+                    match(input,28,FOLLOW_28_in_identifierSuffix4057); if (state.failed) return ;
+                    match(input,30,FOLLOW_30_in_identifierSuffix4059); if (state.failed) return ;
+
+                    }
+                    break;
+                case 5 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:912:9: '.' explicitGenericInvocation
+                    {
+                    match(input,28,FOLLOW_28_in_identifierSuffix4069); if (state.failed) return ;
+                    pushFollow(FOLLOW_explicitGenericInvocation_in_identifierSuffix4071);
+                    explicitGenericInvocation();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 6 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:913:9: '.' 'this'
+                    {
+                    match(input,28,FOLLOW_28_in_identifierSuffix4081); if (state.failed) return ;
+                    match(input,114,FOLLOW_114_in_identifierSuffix4083); if (state.failed) return ;
+
+                    }
+                    break;
+                case 7 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:914:9: '.' 'super' arguments
+                    {
+                    match(input,28,FOLLOW_28_in_identifierSuffix4093); if (state.failed) return ;
+                    match(input,64,FOLLOW_64_in_identifierSuffix4095); if (state.failed) return ;
+                    pushFollow(FOLLOW_arguments_in_identifierSuffix4097);
+                    arguments();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 8 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:915:9: '.' 'new' ( nonWildcardTypeArguments )? innerCreator
+                    {
+                    match(input,28,FOLLOW_28_in_identifierSuffix4107); if (state.failed) return ;
+                    match(input,115,FOLLOW_115_in_identifierSuffix4109); if (state.failed) return ;
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:915:19: ( nonWildcardTypeArguments )?
+                    int alt161=2;
+                    int LA161_0 = input.LA(1);
+
+                    if ( (LA161_0==33) ) {
+                        alt161=1;
+                    }
+                    switch (alt161) {
+                        case 1 :
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:915:20: nonWildcardTypeArguments
+                            {
+                            pushFollow(FOLLOW_nonWildcardTypeArguments_in_identifierSuffix4112);
+                            nonWildcardTypeArguments();
+
+                            state._fsp--;
+                            if (state.failed) return ;
+
+                            }
+                            break;
+
+                    }
+
+                    pushFollow(FOLLOW_innerCreator_in_identifierSuffix4116);
+                    innerCreator();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 121, identifierSuffix_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "identifierSuffix"
+
+
+    // $ANTLR start "creator"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:918:1: creator : ( nonWildcardTypeArguments )? createdName ( arrayCreatorRest | classCreatorRest ) ;
+    public final void creator() throws RecognitionException {
+        int creator_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 122) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:919:2: ( ( nonWildcardTypeArguments )? createdName ( arrayCreatorRest | classCreatorRest ) )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:919:4: ( nonWildcardTypeArguments )? createdName ( arrayCreatorRest | classCreatorRest )
+            {
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:919:4: ( nonWildcardTypeArguments )?
+            int alt163=2;
+            int LA163_0 = input.LA(1);
+
+            if ( (LA163_0==33) ) {
+                alt163=1;
+            }
+            switch (alt163) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: nonWildcardTypeArguments
+                    {
+                    pushFollow(FOLLOW_nonWildcardTypeArguments_in_creator4128);
+                    nonWildcardTypeArguments();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            pushFollow(FOLLOW_createdName_in_creator4131);
+            createdName();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:920:9: ( arrayCreatorRest | classCreatorRest )
+            int alt164=2;
+            int LA164_0 = input.LA(1);
+
+            if ( (LA164_0==41) ) {
+                alt164=1;
+            }
+            else if ( (LA164_0==65) ) {
+                alt164=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 164, 0, input);
+
+                throw nvae;
+            }
+            switch (alt164) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:920:10: arrayCreatorRest
+                    {
+                    pushFollow(FOLLOW_arrayCreatorRest_in_creator4142);
+                    arrayCreatorRest();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:920:29: classCreatorRest
+                    {
+                    pushFollow(FOLLOW_classCreatorRest_in_creator4146);
+                    classCreatorRest();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 122, creator_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "creator"
+
+
+    // $ANTLR start "createdName"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:923:1: createdName : ( Identifier ( typeArguments )? ( '.' Identifier ( typeArguments )? )* | primitiveType );
+    public final void createdName() throws RecognitionException {
+        int createdName_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 123) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:924:2: ( Identifier ( typeArguments )? ( '.' Identifier ( typeArguments )? )* | primitiveType )
+            int alt168=2;
+            int LA168_0 = input.LA(1);
+
+            if ( (LA168_0==Identifier) ) {
+                alt168=1;
+            }
+            else if ( ((LA168_0>=55 && LA168_0<=62)) ) {
+                alt168=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 168, 0, input);
+
+                throw nvae;
+            }
+            switch (alt168) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:924:4: Identifier ( typeArguments )? ( '.' Identifier ( typeArguments )? )*
+                    {
+                    match(input,Identifier,FOLLOW_Identifier_in_createdName4158); if (state.failed) return ;
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:924:15: ( typeArguments )?
+                    int alt165=2;
+                    int LA165_0 = input.LA(1);
+
+                    if ( (LA165_0==33) ) {
+                        alt165=1;
+                    }
+                    switch (alt165) {
+                        case 1 :
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: typeArguments
+                            {
+                            pushFollow(FOLLOW_typeArguments_in_createdName4160);
+                            typeArguments();
+
+                            state._fsp--;
+                            if (state.failed) return ;
+
+                            }
+                            break;
+
+                    }
+
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:925:9: ( '.' Identifier ( typeArguments )? )*
+                    loop167:
+                    do {
+                        int alt167=2;
+                        int LA167_0 = input.LA(1);
+
+                        if ( (LA167_0==28) ) {
+                            alt167=1;
+                        }
+
+
+                        switch (alt167) {
+                    	case 1 :
+                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:925:10: '.' Identifier ( typeArguments )?
+                    	    {
+                    	    match(input,28,FOLLOW_28_in_createdName4172); if (state.failed) return ;
+                    	    match(input,Identifier,FOLLOW_Identifier_in_createdName4174); if (state.failed) return ;
+                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:925:25: ( typeArguments )?
+                    	    int alt166=2;
+                    	    int LA166_0 = input.LA(1);
+
+                    	    if ( (LA166_0==33) ) {
+                    	        alt166=1;
+                    	    }
+                    	    switch (alt166) {
+                    	        case 1 :
+                    	            // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: typeArguments
+                    	            {
+                    	            pushFollow(FOLLOW_typeArguments_in_createdName4176);
+                    	            typeArguments();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return ;
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop167;
+                        }
+                    } while (true);
+
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:926:7: primitiveType
+                    {
+                    pushFollow(FOLLOW_primitiveType_in_createdName4187);
+                    primitiveType();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 123, createdName_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "createdName"
+
+
+    // $ANTLR start "innerCreator"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:929:1: innerCreator : Identifier classCreatorRest ;
+    public final void innerCreator() throws RecognitionException {
+        int innerCreator_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 124) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:930:2: ( Identifier classCreatorRest )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:930:4: Identifier classCreatorRest
+            {
+            match(input,Identifier,FOLLOW_Identifier_in_innerCreator4199); if (state.failed) return ;
+            pushFollow(FOLLOW_classCreatorRest_in_innerCreator4201);
+            classCreatorRest();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 124, innerCreator_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "innerCreator"
+
+
+    // $ANTLR start "arrayCreatorRest"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:933:1: arrayCreatorRest : '[' ( ']' ( '[' ']' )* arrayInitializer | expression ']' ( '[' expression ']' )* ( '[' ']' )* ) ;
+    public final void arrayCreatorRest() throws RecognitionException {
+        int arrayCreatorRest_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 125) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:934:2: ( '[' ( ']' ( '[' ']' )* arrayInitializer | expression ']' ( '[' expression ']' )* ( '[' ']' )* ) )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:934:4: '[' ( ']' ( '[' ']' )* arrayInitializer | expression ']' ( '[' expression ']' )* ( '[' ']' )* )
+            {
+            match(input,41,FOLLOW_41_in_arrayCreatorRest4212); if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:935:9: ( ']' ( '[' ']' )* arrayInitializer | expression ']' ( '[' expression ']' )* ( '[' ']' )* )
+            int alt172=2;
+            alt172 = dfa172.predict(input);
+            switch (alt172) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:935:13: ']' ( '[' ']' )* arrayInitializer
+                    {
+                    match(input,42,FOLLOW_42_in_arrayCreatorRest4226); if (state.failed) return ;
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:935:17: ( '[' ']' )*
+                    loop169:
+                    do {
+                        int alt169=2;
+                        int LA169_0 = input.LA(1);
+
+                        if ( (LA169_0==41) ) {
+                            alt169=1;
+                        }
+
+
+                        switch (alt169) {
+                    	case 1 :
+                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:935:18: '[' ']'
+                    	    {
+                    	    match(input,41,FOLLOW_41_in_arrayCreatorRest4229); if (state.failed) return ;
+                    	    match(input,42,FOLLOW_42_in_arrayCreatorRest4231); if (state.failed) return ;
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop169;
+                        }
+                    } while (true);
+
+                    pushFollow(FOLLOW_arrayInitializer_in_arrayCreatorRest4235);
+                    arrayInitializer();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:936:13: expression ']' ( '[' expression ']' )* ( '[' ']' )*
+                    {
+                    pushFollow(FOLLOW_expression_in_arrayCreatorRest4249);
+                    expression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    match(input,42,FOLLOW_42_in_arrayCreatorRest4251); if (state.failed) return ;
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:936:28: ( '[' expression ']' )*
+                    loop170:
+                    do {
+                        int alt170=2;
+                        alt170 = dfa170.predict(input);
+                        switch (alt170) {
+                    	case 1 :
+                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:936:29: '[' expression ']'
+                    	    {
+                    	    match(input,41,FOLLOW_41_in_arrayCreatorRest4254); if (state.failed) return ;
+                    	    pushFollow(FOLLOW_expression_in_arrayCreatorRest4256);
+                    	    expression();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return ;
+                    	    match(input,42,FOLLOW_42_in_arrayCreatorRest4258); if (state.failed) return ;
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop170;
+                        }
+                    } while (true);
+
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:936:50: ( '[' ']' )*
+                    loop171:
+                    do {
+                        int alt171=2;
+                        alt171 = dfa171.predict(input);
+                        switch (alt171) {
+                    	case 1 :
+                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:936:51: '[' ']'
+                    	    {
+                    	    match(input,41,FOLLOW_41_in_arrayCreatorRest4263); if (state.failed) return ;
+                    	    match(input,42,FOLLOW_42_in_arrayCreatorRest4265); if (state.failed) return ;
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop171;
+                        }
+                    } while (true);
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 125, arrayCreatorRest_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "arrayCreatorRest"
+
+
+    // $ANTLR start "classCreatorRest"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:940:1: classCreatorRest : arguments ( classBody )? ;
+    public final void classCreatorRest() throws RecognitionException {
+        int classCreatorRest_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 126) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:941:2: ( arguments ( classBody )? )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:941:4: arguments ( classBody )?
+            {
+            pushFollow(FOLLOW_arguments_in_classCreatorRest4288);
+            arguments();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:941:14: ( classBody )?
+            int alt173=2;
+            alt173 = dfa173.predict(input);
+            switch (alt173) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: classBody
+                    {
+                    pushFollow(FOLLOW_classBody_in_classCreatorRest4290);
+                    classBody();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 126, classCreatorRest_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "classCreatorRest"
+
+
+    // $ANTLR start "explicitGenericInvocation"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:944:1: explicitGenericInvocation : nonWildcardTypeArguments explicitGenericInvocationSuffix ;
+    public final void explicitGenericInvocation() throws RecognitionException {
+        int explicitGenericInvocation_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 127) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:945:2: ( nonWildcardTypeArguments explicitGenericInvocationSuffix )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:945:4: nonWildcardTypeArguments explicitGenericInvocationSuffix
+            {
+            pushFollow(FOLLOW_nonWildcardTypeArguments_in_explicitGenericInvocation4303);
+            nonWildcardTypeArguments();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_explicitGenericInvocationSuffix_in_explicitGenericInvocation4305);
+            explicitGenericInvocationSuffix();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 127, explicitGenericInvocation_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "explicitGenericInvocation"
+
+
+    // $ANTLR start "nonWildcardTypeArguments"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:948:1: nonWildcardTypeArguments : '<' typeList '>' ;
+    public final void nonWildcardTypeArguments() throws RecognitionException {
+        int nonWildcardTypeArguments_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 128) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:949:2: ( '<' typeList '>' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:949:4: '<' typeList '>'
+            {
+            match(input,33,FOLLOW_33_in_nonWildcardTypeArguments4317); if (state.failed) return ;
+            pushFollow(FOLLOW_typeList_in_nonWildcardTypeArguments4319);
+            typeList();
+
+            state._fsp--;
+            if (state.failed) return ;
+            match(input,35,FOLLOW_35_in_nonWildcardTypeArguments4321); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 128, nonWildcardTypeArguments_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "nonWildcardTypeArguments"
+
+
+    // $ANTLR start "explicitGenericInvocationSuffix"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:952:1: explicitGenericInvocationSuffix : ( 'super' superSuffix | Identifier arguments );
+    public final void explicitGenericInvocationSuffix() throws RecognitionException {
+        int explicitGenericInvocationSuffix_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 129) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:953:2: ( 'super' superSuffix | Identifier arguments )
+            int alt174=2;
+            int LA174_0 = input.LA(1);
+
+            if ( (LA174_0==64) ) {
+                alt174=1;
+            }
+            else if ( (LA174_0==Identifier) ) {
+                alt174=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 174, 0, input);
+
+                throw nvae;
+            }
+            switch (alt174) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:953:4: 'super' superSuffix
+                    {
+                    match(input,64,FOLLOW_64_in_explicitGenericInvocationSuffix4333); if (state.failed) return ;
+                    pushFollow(FOLLOW_superSuffix_in_explicitGenericInvocationSuffix4335);
+                    superSuffix();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:954:6: Identifier arguments
+                    {
+                    match(input,Identifier,FOLLOW_Identifier_in_explicitGenericInvocationSuffix4342); if (state.failed) return ;
+                    pushFollow(FOLLOW_arguments_in_explicitGenericInvocationSuffix4344);
+                    arguments();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 129, explicitGenericInvocationSuffix_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "explicitGenericInvocationSuffix"
+
+
+    // $ANTLR start "selector"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:957:1: selector : ( '.' Identifier ( arguments )? | '.' 'this' | '.' 'super' superSuffix | '.' 'new' ( nonWildcardTypeArguments )? innerCreator | '[' expression ']' );
+    public final void selector() throws RecognitionException {
+        int selector_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 130) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:958:2: ( '.' Identifier ( arguments )? | '.' 'this' | '.' 'super' superSuffix | '.' 'new' ( nonWildcardTypeArguments )? innerCreator | '[' expression ']' )
+            int alt177=5;
+            int LA177_0 = input.LA(1);
+
+            if ( (LA177_0==28) ) {
+                switch ( input.LA(2) ) {
+                case Identifier:
+                    {
+                    alt177=1;
+                    }
+                    break;
+                case 114:
+                    {
+                    alt177=2;
+                    }
+                    break;
+                case 64:
+                    {
+                    alt177=3;
+                    }
+                    break;
+                case 115:
+                    {
+                    alt177=4;
+                    }
+                    break;
+                default:
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 177, 1, input);
+
+                    throw nvae;
+                }
+
+            }
+            else if ( (LA177_0==41) ) {
+                alt177=5;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 177, 0, input);
+
+                throw nvae;
+            }
+            switch (alt177) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:958:4: '.' Identifier ( arguments )?
+                    {
+                    match(input,28,FOLLOW_28_in_selector4356); if (state.failed) return ;
+                    match(input,Identifier,FOLLOW_Identifier_in_selector4358); if (state.failed) return ;
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:958:19: ( arguments )?
+                    int alt175=2;
+                    alt175 = dfa175.predict(input);
+                    switch (alt175) {
+                        case 1 :
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:958:20: arguments
+                            {
+                            pushFollow(FOLLOW_arguments_in_selector4361);
+                            arguments();
+
+                            state._fsp--;
+                            if (state.failed) return ;
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:959:6: '.' 'this'
+                    {
+                    match(input,28,FOLLOW_28_in_selector4370); if (state.failed) return ;
+                    match(input,114,FOLLOW_114_in_selector4372); if (state.failed) return ;
+
+                    }
+                    break;
+                case 3 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:960:6: '.' 'super' superSuffix
+                    {
+                    match(input,28,FOLLOW_28_in_selector4379); if (state.failed) return ;
+                    match(input,64,FOLLOW_64_in_selector4381); if (state.failed) return ;
+                    pushFollow(FOLLOW_superSuffix_in_selector4383);
+                    superSuffix();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 4 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:961:6: '.' 'new' ( nonWildcardTypeArguments )? innerCreator
+                    {
+                    match(input,28,FOLLOW_28_in_selector4390); if (state.failed) return ;
+                    match(input,115,FOLLOW_115_in_selector4392); if (state.failed) return ;
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:961:16: ( nonWildcardTypeArguments )?
+                    int alt176=2;
+                    int LA176_0 = input.LA(1);
+
+                    if ( (LA176_0==33) ) {
+                        alt176=1;
+                    }
+                    switch (alt176) {
+                        case 1 :
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:961:17: nonWildcardTypeArguments
+                            {
+                            pushFollow(FOLLOW_nonWildcardTypeArguments_in_selector4395);
+                            nonWildcardTypeArguments();
+
+                            state._fsp--;
+                            if (state.failed) return ;
+
+                            }
+                            break;
+
+                    }
+
+                    pushFollow(FOLLOW_innerCreator_in_selector4399);
+                    innerCreator();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 5 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:962:6: '[' expression ']'
+                    {
+                    match(input,41,FOLLOW_41_in_selector4406); if (state.failed) return ;
+                    pushFollow(FOLLOW_expression_in_selector4408);
+                    expression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    match(input,42,FOLLOW_42_in_selector4410); if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 130, selector_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "selector"
+
+
+    // $ANTLR start "superSuffix"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:965:1: superSuffix : ( arguments | '.' Identifier ( arguments )? );
+    public final void superSuffix() throws RecognitionException {
+        int superSuffix_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 131) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:966:2: ( arguments | '.' Identifier ( arguments )? )
+            int alt179=2;
+            int LA179_0 = input.LA(1);
+
+            if ( (LA179_0==65) ) {
+                alt179=1;
+            }
+            else if ( (LA179_0==28) ) {
+                alt179=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 179, 0, input);
+
+                throw nvae;
+            }
+            switch (alt179) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:966:4: arguments
+                    {
+                    pushFollow(FOLLOW_arguments_in_superSuffix4422);
+                    arguments();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:967:6: '.' Identifier ( arguments )?
+                    {
+                    match(input,28,FOLLOW_28_in_superSuffix4429); if (state.failed) return ;
+                    match(input,Identifier,FOLLOW_Identifier_in_superSuffix4431); if (state.failed) return ;
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:967:21: ( arguments )?
+                    int alt178=2;
+                    alt178 = dfa178.predict(input);
+                    switch (alt178) {
+                        case 1 :
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:967:22: arguments
+                            {
+                            pushFollow(FOLLOW_arguments_in_superSuffix4434);
+                            arguments();
+
+                            state._fsp--;
+                            if (state.failed) return ;
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 131, superSuffix_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "superSuffix"
+
+
+    // $ANTLR start "arguments"
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:970:1: arguments : '(' ( expressionList )? ')' ;
+    public final void arguments() throws RecognitionException {
+        int arguments_StartIndex = input.index();
+        try {
+            if ( state.backtracking>0 && alreadyParsedRule(input, 132) ) { return ; }
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:971:2: ( '(' ( expressionList )? ')' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:971:4: '(' ( expressionList )? ')'
+            {
+            match(input,65,FOLLOW_65_in_arguments4450); if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:971:8: ( expressionList )?
+            int alt180=2;
+            alt180 = dfa180.predict(input);
+            switch (alt180) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: expressionList
+                    {
+                    pushFollow(FOLLOW_expressionList_in_arguments4452);
+                    expressionList();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            match(input,66,FOLLOW_66_in_arguments4455); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+            if ( state.backtracking>0 ) { memoize(input, 132, arguments_StartIndex); }
+        }
+        return ;
+    }
+    // $ANTLR end "arguments"
+
+    // $ANTLR start synpred1_Java
+    public final void synpred1_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:209:4: ( annotations )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:209:4: annotations
+        {
+        pushFollow(FOLLOW_annotations_in_synpred1_Java70);
+        annotations();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred1_Java
+
+    // $ANTLR start synpred38_Java
+    public final void synpred38_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:305:4: ( methodDeclaration )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:305:4: methodDeclaration
+        {
+        pushFollow(FOLLOW_methodDeclaration_in_synpred38_Java577);
+        methodDeclaration();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred38_Java
+
+    // $ANTLR start synpred39_Java
+    public final void synpred39_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:306:4: ( fieldDeclaration )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:306:4: fieldDeclaration
+        {
+        pushFollow(FOLLOW_fieldDeclaration_in_synpred39_Java582);
+        fieldDeclaration();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred39_Java
+
+    // $ANTLR start synpred85_Java
+    public final void synpred85_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:461:16: ( '.' Identifier )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:461:16: '.' Identifier
+        {
+        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_Java
+
+    // $ANTLR start synpred120_Java
+    public final void synpred120_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:551:4: ( annotation )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:551:4: annotation
+        {
+        pushFollow(FOLLOW_annotation_in_synpred120_Java1893);
+        annotation();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred120_Java
+
+    // $ANTLR start synpred135_Java
+    public final void synpred135_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:598:6: ( classDeclaration ( ';' )? )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:598:6: classDeclaration ( ';' )?
+        {
+        pushFollow(FOLLOW_classDeclaration_in_synpred135_Java2123);
+        classDeclaration();
+
+        state._fsp--;
+        if (state.failed) return ;
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:598:23: ( ';' )?
+        int alt196=2;
+        int LA196_0 = input.LA(1);
+
+        if ( (LA196_0==25) ) {
+            alt196=1;
+        }
+        switch (alt196) {
+            case 1 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: ';'
+                {
+                match(input,25,FOLLOW_25_in_synpred135_Java2125); if (state.failed) return ;
+
+                }
+                break;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred135_Java
+
+    // $ANTLR start synpred137_Java
+    public final void synpred137_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:599:6: ( interfaceDeclaration ( ';' )? )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:599:6: interfaceDeclaration ( ';' )?
+        {
+        pushFollow(FOLLOW_interfaceDeclaration_in_synpred137_Java2133);
+        interfaceDeclaration();
+
+        state._fsp--;
+        if (state.failed) return ;
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:599:27: ( ';' )?
+        int alt197=2;
+        int LA197_0 = input.LA(1);
+
+        if ( (LA197_0==25) ) {
+            alt197=1;
+        }
+        switch (alt197) {
+            case 1 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: ';'
+                {
+                match(input,25,FOLLOW_25_in_synpred137_Java2135); if (state.failed) return ;
+
+                }
+                break;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred137_Java
+
+    // $ANTLR start synpred139_Java
+    public final void synpred139_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:600:6: ( enumDeclaration ( ';' )? )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:600:6: enumDeclaration ( ';' )?
+        {
+        pushFollow(FOLLOW_enumDeclaration_in_synpred139_Java2143);
+        enumDeclaration();
+
+        state._fsp--;
+        if (state.failed) return ;
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:600:22: ( ';' )?
+        int alt198=2;
+        int LA198_0 = input.LA(1);
+
+        if ( (LA198_0==25) ) {
+            alt198=1;
+        }
+        switch (alt198) {
+            case 1 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: ';'
+                {
+                match(input,25,FOLLOW_25_in_synpred139_Java2145); if (state.failed) return ;
+
+                }
+                break;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred139_Java
+
+    // $ANTLR start synpred144_Java
+    public final void synpred144_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:634:4: ( localVariableDeclaration )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:634:4: localVariableDeclaration
+        {
+        pushFollow(FOLLOW_localVariableDeclaration_in_synpred144_Java2286);
+        localVariableDeclaration();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred144_Java
+
+    // $ANTLR start synpred145_Java
+    public final void synpred145_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:635:4: ( classOrInterfaceDeclaration )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:635:4: classOrInterfaceDeclaration
+        {
+        pushFollow(FOLLOW_classOrInterfaceDeclaration_in_synpred145_Java2291);
+        classOrInterfaceDeclaration();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred145_Java
+
+    // $ANTLR start synpred150_Java
+    public final void synpred150_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:668:52: ( 'else' statement )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:668:52: 'else' statement
+        {
+        match(input,76,FOLLOW_76_in_synpred150_Java2431); if (state.failed) return ;
+        pushFollow(FOLLOW_statement_in_synpred150_Java2433);
+        statement();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred150_Java
+
+    // $ANTLR start synpred155_Java
+    public final void synpred155_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:673:9: ( catches 'finally' block )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:673:9: catches 'finally' block
+        {
+        pushFollow(FOLLOW_catches_in_synpred155_Java2499);
+        catches();
+
+        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();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred155_Java
+
+    // $ANTLR start synpred156_Java
+    public final void synpred156_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:674:9: ( catches )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:674:9: catches
+        {
+        pushFollow(FOLLOW_catches_in_synpred156_Java2513);
+        catches();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred156_Java
+
+    // $ANTLR start synpred177_Java
+    public final void synpred177_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:745:4: ( 'case' constantExpression ':' )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:745:4: 'case' constantExpression ':'
+        {
+        match(input,90,FOLLOW_90_in_synpred177_Java2900); if (state.failed) return ;
+        pushFollow(FOLLOW_constantExpression_in_synpred177_Java2902);
+        constantExpression();
+
+        state._fsp--;
+        if (state.failed) return ;
+        match(input,74,FOLLOW_74_in_synpred177_Java2904); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred177_Java
+
+    // $ANTLR start synpred178_Java
+    public final void synpred178_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:746:6: ( 'case' enumConstantName ':' )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:746:6: 'case' enumConstantName ':'
+        {
+        match(input,90,FOLLOW_90_in_synpred178_Java2911); if (state.failed) return ;
+        pushFollow(FOLLOW_enumConstantName_in_synpred178_Java2913);
+        enumConstantName();
+
+        state._fsp--;
+        if (state.failed) return ;
+        match(input,74,FOLLOW_74_in_synpred178_Java2915); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred178_Java
+
+    // $ANTLR start synpred180_Java
+    public final void synpred180_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:756:4: ( forVarControl )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:756:4: forVarControl
+        {
+        pushFollow(FOLLOW_forVarControl_in_synpred180_Java2960);
+        forVarControl();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred180_Java
+
+    // $ANTLR start synpred185_Java
+    public final void synpred185_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:767:4: ( ( variableModifier )* type variableDeclarators )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:767:4: ( variableModifier )* type variableDeclarators
+        {
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:767:4: ( variableModifier )*
+        loop206:
+        do {
+            int alt206=2;
+            int LA206_0 = input.LA(1);
+
+            if ( (LA206_0==49||LA206_0==71) ) {
+                alt206=1;
+            }
+
+
+            switch (alt206) {
+        	case 1 :
+        	    // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: variableModifier
+        	    {
+        	    pushFollow(FOLLOW_variableModifier_in_synpred185_Java3013);
+        	    variableModifier();
+
+        	    state._fsp--;
+        	    if (state.failed) return ;
+
+        	    }
+        	    break;
+
+        	default :
+        	    break loop206;
+            }
+        } while (true);
+
+        pushFollow(FOLLOW_type_in_synpred185_Java3016);
+        type();
+
+        state._fsp--;
+        if (state.failed) return ;
+        pushFollow(FOLLOW_variableDeclarators_in_synpred185_Java3018);
+        variableDeclarators();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred185_Java
+
+    // $ANTLR start synpred188_Java
+    public final void synpred188_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:798:27: ( assignmentOperator expression )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:798:27: assignmentOperator expression
+        {
+        pushFollow(FOLLOW_assignmentOperator_in_synpred188_Java3137);
+        assignmentOperator();
+
+        state._fsp--;
+        if (state.failed) return ;
+        pushFollow(FOLLOW_expression_in_synpred188_Java3139);
+        expression();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred188_Java
+
+    // $ANTLR start synpred199_Java
+    public final void synpred199_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:812:9: ( '>' '>' '=' )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:812:9: '>' '>' '='
+        {
+        match(input,35,FOLLOW_35_in_synpred199_Java3257); if (state.failed) return ;
+        match(input,35,FOLLOW_35_in_synpred199_Java3259); if (state.failed) return ;
+        match(input,44,FOLLOW_44_in_synpred199_Java3261); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred199_Java
+
+    // $ANTLR start synpred209_Java
+    public final void synpred209_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:849:27: ( relationalOp shiftExpression )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:849:27: relationalOp shiftExpression
+        {
+        pushFollow(FOLLOW_relationalOp_in_synpred209_Java3505);
+        relationalOp();
+
+        state._fsp--;
+        if (state.failed) return ;
+        pushFollow(FOLLOW_shiftExpression_in_synpred209_Java3507);
+        shiftExpression();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred209_Java
+
+    // $ANTLR start synpred213_Java
+    public final void synpred213_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:857:30: ( shiftOp additiveExpression )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:857:30: shiftOp additiveExpression
+        {
+        pushFollow(FOLLOW_shiftOp_in_synpred213_Java3560);
+        shiftOp();
+
+        state._fsp--;
+        if (state.failed) return ;
+        pushFollow(FOLLOW_additiveExpression_in_synpred213_Java3562);
+        additiveExpression();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred213_Java
+
+    // $ANTLR start synpred215_Java
+    public final void synpred215_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:862:15: ( '>' '>' '>' )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:862:15: '>' '>' '>'
+        {
+        match(input,35,FOLLOW_35_in_synpred215_Java3592); if (state.failed) return ;
+        match(input,35,FOLLOW_35_in_synpred215_Java3594); if (state.failed) return ;
+        match(input,35,FOLLOW_35_in_synpred215_Java3596); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred215_Java
+
+    // $ANTLR start synpred227_Java
+    public final void synpred227_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:885:9: ( castExpression )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:885:9: castExpression
+        {
+        pushFollow(FOLLOW_castExpression_in_synpred227_Java3777);
+        castExpression();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred227_Java
+
+    // $ANTLR start synpred231_Java
+    public final void synpred231_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:890:8: ( '(' primitiveType ')' unaryExpression )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:890:8: '(' primitiveType ')' unaryExpression
+        {
+        match(input,65,FOLLOW_65_in_synpred231_Java3815); if (state.failed) return ;
+        pushFollow(FOLLOW_primitiveType_in_synpred231_Java3817);
+        primitiveType();
+
+        state._fsp--;
+        if (state.failed) return ;
+        match(input,66,FOLLOW_66_in_synpred231_Java3819); if (state.failed) return ;
+        pushFollow(FOLLOW_unaryExpression_in_synpred231_Java3821);
+        unaryExpression();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred231_Java
+
+    // $ANTLR start synpred232_Java
+    public final void synpred232_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:891:13: ( type )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:891:13: type
+        {
+        pushFollow(FOLLOW_type_in_synpred232_Java3833);
+        type();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred232_Java
+
+    // $ANTLR start synpred236_Java
+    public final void synpred236_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:898:17: ( '.' Identifier )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:898:17: '.' Identifier
+        {
+        match(input,28,FOLLOW_28_in_synpred236_Java3900); if (state.failed) return ;
+        match(input,Identifier,FOLLOW_Identifier_in_synpred236_Java3902); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred236_Java
+
+    // $ANTLR start synpred237_Java
+    public final void synpred237_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:898:35: ( identifierSuffix )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:898:35: identifierSuffix
+        {
+        pushFollow(FOLLOW_identifierSuffix_in_synpred237_Java3907);
+        identifierSuffix();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred237_Java
+
+    // $ANTLR start synpred242_Java
+    public final void synpred242_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:902:127: ( '.' Identifier )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:902:127: '.' Identifier
+        {
+        match(input,28,FOLLOW_28_in_synpred242_Java3960); if (state.failed) return ;
+        match(input,Identifier,FOLLOW_Identifier_in_synpred242_Java3962); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred242_Java
+
+    // $ANTLR start synpred243_Java
+    public final void synpred243_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:902:145: ( identifierSuffix )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:902:145: identifierSuffix
+        {
+        pushFollow(FOLLOW_identifierSuffix_in_synpred243_Java3967);
+        identifierSuffix();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred243_Java
+
+    // $ANTLR start synpred249_Java
+    public final void synpred249_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:909:5: ( '[' expression ']' )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:909:5: '[' expression ']'
+        {
+        match(input,41,FOLLOW_41_in_synpred249_Java4030); if (state.failed) return ;
+        pushFollow(FOLLOW_expression_in_synpred249_Java4032);
+        expression();
+
+        state._fsp--;
+        if (state.failed) return ;
+        match(input,42,FOLLOW_42_in_synpred249_Java4034); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred249_Java
+
+    // $ANTLR start synpred265_Java
+    public final void synpred265_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:936:29: ( '[' expression ']' )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:936:29: '[' expression ']'
+        {
+        match(input,41,FOLLOW_41_in_synpred265_Java4254); if (state.failed) return ;
+        pushFollow(FOLLOW_expression_in_synpred265_Java4256);
+        expression();
+
+        state._fsp--;
+        if (state.failed) return ;
+        match(input,42,FOLLOW_42_in_synpred265_Java4258); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred265_Java
+
+    // Delegated rules
+
+    public final boolean synpred199_Java() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred199_Java_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 synpred156_Java() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred156_Java_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 synpred265_Java() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred265_Java_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 synpred227_Java() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred227_Java_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 synpred38_Java() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred38_Java_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 synpred213_Java() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred213_Java_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 synpred249_Java() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred249_Java_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 synpred145_Java() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred145_Java_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 synpred135_Java() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred135_Java_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 synpred144_Java() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred144_Java_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 synpred178_Java() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred178_Java_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 synpred39_Java() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred39_Java_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 synpred155_Java() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred155_Java_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 synpred236_Java() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred236_Java_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 synpred85_Java() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred85_Java_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 synpred188_Java() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred188_Java_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 synpred185_Java() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred185_Java_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 synpred137_Java() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred137_Java_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 synpred139_Java() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred139_Java_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 synpred215_Java() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred215_Java_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 synpred120_Java() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred120_Java_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 synpred232_Java() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred232_Java_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 synpred180_Java() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred180_Java_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 synpred150_Java() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred150_Java_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 synpred231_Java() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred231_Java_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 synpred209_Java() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred209_Java_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 synpred243_Java() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred243_Java_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 synpred177_Java() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred177_Java_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 synpred1_Java() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred1_Java_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 synpred242_Java() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred242_Java_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 synpred237_Java() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred237_Java_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 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 "209: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 "210: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 211: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 212: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 "223: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 229: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 273: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 290: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 294: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 "297: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 300: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 "303: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 "330: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 331: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\163\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\43\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 "436: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\163\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\43\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 "442: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\163\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\43\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 442: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 "445: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\150\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\20\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 "474: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\150\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\20\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 474: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\150\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\20\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 "474: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\150\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\20\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 474: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\150\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\20\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 475: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 551: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 "555: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\163\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\42\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 "555: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 559: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\163\1\157\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\42\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\40\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 "567: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\163\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\42\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 "570: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\163\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\42\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 "577: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 "585: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 589: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 593: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 "596: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 "598: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 "599: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 "600: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 "601:32: ( ';' )?";
+        }
+    }
+    static final String DFA104_eotS =
+        "\64\uffff";
+    static final String DFA104_eofS =
+        "\64\uffff";
+    static final String DFA104_minS =
+        "\1\4\63\uffff";
+    static final String DFA104_maxS =
+        "\1\163\63\uffff";
+    static final String DFA104_acceptS =
+        "\1\uffff\1\2\1\1\61\uffff";
+    static final String DFA104_specialS =
+        "\64\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\7\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 630:8: ( blockStatement )*";
+        }
+    }
+    static final String DFA105_eotS =
+        "\165\uffff";
+    static final String DFA105_eofS =
+        "\165\uffff";
+    static final String DFA105_minS =
+        "\5\4\6\uffff\1\5\52\uffff\1\0\5\uffff\1\0\10\uffff\1\0\1\uffff"+
+        "\2\0\4\uffff\1\0\24\uffff\1\0\22\uffff";
+    static final String DFA105_maxS =
+        "\1\163\1\107\1\47\1\157\1\51\6\uffff\1\107\52\uffff\1\0\5\uffff"+
+        "\1\0\10\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\57\uffff\1\1\62\uffff";
+    static final String DFA105_specialS =
+        "\66\uffff\1\0\5\uffff\1\1\10\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\7\22\21\uffff\2\22\2\uffff\6\22",
+            "\1\102\1\5\25\uffff\1\5\2\uffff\1\5\10\uffff\1\5\5\uffff\4"+
+            "\5\1\74\5\5\10\102\10\uffff\1\66",
+            "\1\105\42\uffff\1\5",
+            "\1\102\24\uffff\1\22\2\uffff\1\107\1\22\3\uffff\1\115\1\uffff"+
+            "\2\22\4\uffff\1\110\2\uffff\1\22\22\uffff\1\22\1\uffff\1\22"+
+            "\10\uffff\1\22\20\uffff\25\22",
+            "\1\102\27\uffff\1\22\14\uffff\1\142",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\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 "633: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_54 = input.LA(1);
+
+                         
+                        int index105_54 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred144_Java()) ) {s = 66;}
+
+                        else if ( (synpred145_Java()) ) {s = 5;}
+
+                         
+                        input.seek(index105_54);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA105_60 = input.LA(1);
+
+                         
+                        int index105_60 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred144_Java()) ) {s = 66;}
+
+                        else if ( (synpred145_Java()) ) {s = 5;}
+
+                         
+                        input.seek(index105_60);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA105_69 = input.LA(1);
+
+                         
+                        int index105_69 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred144_Java()) ) {s = 66;}
+
+                        else if ( (synpred145_Java()) ) {s = 5;}
+
+                         
+                        input.seek(index105_69);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA105_71 = input.LA(1);
+
+                         
+                        int index105_71 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred144_Java()) ) {s = 66;}
+
+                        else if ( (true) ) {s = 18;}
+
+                         
+                        input.seek(index105_71);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA105_72 = input.LA(1);
+
+                         
+                        int index105_72 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred144_Java()) ) {s = 66;}
+
+                        else if ( (true) ) {s = 18;}
+
+                         
+                        input.seek(index105_72);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA105_77 = input.LA(1);
+
+                         
+                        int index105_77 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred144_Java()) ) {s = 66;}
+
+                        else if ( (true) ) {s = 18;}
+
+                         
+                        input.seek(index105_77);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA105_98 = input.LA(1);
+
+                         
+                        int index105_98 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred144_Java()) ) {s = 66;}
+
+                        else if ( (true) ) {s = 18;}
+
+                         
+                        input.seek(index105_98);
+                        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 =
+        "\100\uffff";
+    static final String DFA113_eofS =
+        "\100\uffff";
+    static final String DFA113_minS =
+        "\1\4\41\uffff\1\31\35\uffff";
+    static final String DFA113_maxS =
+        "\1\163\41\uffff\1\157\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\1\21\23\uffff\1\22\32\uffff";
+    static final String DFA113_specialS =
+        "\100\uffff}>";
+    static final String[] DFA113_transitionS = {
+            "\1\42\1\uffff\6\21\15\uffff\1\20\7\uffff\1\21\3\uffff\1\1\2"+
+            "\uffff\1\21\12\uffff\1\11\3\uffff\10\21\1\uffff\2\21\2\uffff"+
+            "\3\21\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\1\17\21\uffff\2\21\2\uffff\6"+
+            "\21",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\21\2\uffff\2\21\3\uffff\1\21\1\uffff\2\21\4\uffff\1\21"+
+            "\2\uffff\1\21\22\uffff\1\21\1\uffff\1\21\10\uffff\1\45\20\uffff"+
+            "\25\21",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    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 "665: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 | exitPointsStatement | ';' | 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\163\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\43\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 "679: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\163\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\43\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 "702:6: (e= expression ( ',' e= expression )* )?";
+        }
+    }
+    static final String DFA116_eotS =
+        "\72\uffff";
+    static final String DFA116_eofS =
+        "\1\1\71\uffff";
+    static final String DFA116_minS =
+        "\1\4\71\uffff";
+    static final String DFA116_maxS =
+        "\1\163\71\uffff";
+    static final String DFA116_acceptS =
+        "\1\uffff\1\2\67\uffff\1\1";
+    static final String DFA116_specialS =
+        "\72\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\16\1\1\71"+
+            "\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 725:16: ( catchClause )*";
+        }
+    }
+    static final String DFA119_eotS =
+        "\67\uffff";
+    static final String DFA119_eofS =
+        "\1\1\66\uffff";
+    static final String DFA119_minS =
+        "\1\4\66\uffff";
+    static final String DFA119_maxS =
+        "\1\163\66\uffff";
+    static final String DFA119_acceptS =
+        "\1\uffff\1\2\3\uffff\1\1\61\uffff";
+    static final String DFA119_specialS =
+        "\67\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\7\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 741: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\132\1\163\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\21\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\43\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 "744: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 ( (synpred177_Java()) ) {s = 3;}
+
+                        else if ( (synpred178_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\26\uffff\3\0\26\uffff\1\0\5\uffff";
+    static final String DFA125_maxS =
+        "\1\163\1\107\1\4\1\157\1\51\23\uffff\2\51\1\107\1\4\1\107\2\163"+
+        "\4\uffff\1\163\24\uffff\1\112\1\52\1\112\1\uffff\22\0\5\uffff\1"+
+        "\0\26\uffff\3\0\26\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\26\uffff\1\23\1\24\1\25"+
+        "\26\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\42\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\31\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\61\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\43\uffff\2\5\2\uffff\6\5",
+            "",
+            "",
+            "",
+            "",
+            "\1\152\1\uffff\6\5\25\uffff\1\5\6\uffff\1\5\3\uffff\1\5\12"+
+            "\uffff\10\153\1\154\2\5\2\uffff\3\5\43\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 "754: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 ( (synpred180_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 ( (synpred180_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 ( (synpred180_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 ( (synpred180_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 ( (synpred180_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 ( (synpred180_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 ( (synpred180_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 ( (synpred180_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 ( (synpred180_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 ( (synpred180_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 ( (synpred180_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 ( (synpred180_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 ( (synpred180_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 ( (synpred180_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 ( (synpred180_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 ( (synpred180_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 ( (synpred180_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 ( (synpred180_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 ( (synpred180_Java()) ) {s = 126;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index125_83);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 19 : 
+                        int LA125_106 = input.LA(1);
+
+                         
+                        int index125_106 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred180_Java()) ) {s = 126;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index125_106);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 20 : 
+                        int LA125_107 = input.LA(1);
+
+                         
+                        int index125_107 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred180_Java()) ) {s = 126;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index125_107);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 21 : 
+                        int LA125_108 = input.LA(1);
+
+                         
+                        int index125_108 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred180_Java()) ) {s = 126;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index125_108);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 22 : 
+                        int LA125_131 = input.LA(1);
+
+                         
+                        int index125_131 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred180_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\163\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\42\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 "757: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\163\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\43\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 "757: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\163\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\43\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 "757: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\163\2\uffff\1\157\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\42\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\31\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 "760: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 ( (synpred185_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 ( (synpred185_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 ( (synpred185_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 ( (synpred185_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\142\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\20\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 "798: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 ( (synpred188_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 ( (synpred188_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 ( (synpred188_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 ( (synpred188_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 ( (synpred188_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 ( (synpred188_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 ( (synpred188_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 ( (synpred188_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 ( (synpred188_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 ( (synpred188_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 ( (synpred188_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\142\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\56\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 "801: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 ( (synpred199_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\142\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\20\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 "817: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\143\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\20\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 821: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\144\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\20\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 825: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\145\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\20\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 829: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\146\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\20\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 833: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\146\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\20\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 837: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\150\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\20\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 841: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\151\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\20\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 "845: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\151\26\uffff\2\163\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\20\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\43\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\43\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 849: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 ( (synpred209_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\163\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\43\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\43\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 "853: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\151\2\163\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\20\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\43\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\43\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 857: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 ( (synpred213_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 ( (synpred213_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\153\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\20\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 867: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\155\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\20\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 871: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\163\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\43\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 "874: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\163\2\uffff\1\163\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\51\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\43\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 "882: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 ( (synpred227_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 ( (synpred227_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 ( (synpred227_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 ( (synpred227_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 ( (synpred227_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 ( (synpred227_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 ( (synpred227_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 ( (synpred227_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 ( (synpred227_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 ( (synpred227_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 ( (synpred227_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 ( (synpred227_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 ( (synpred227_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 ( (synpred227_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 ( (synpred227_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 ( (synpred227_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 ( (synpred227_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 ( (synpred227_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 ( (synpred227_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 ( (synpred227_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\157\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\20\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 886: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\157\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\20\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 "886: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\0\24\uffff";
+    static final String DFA151_maxS =
+        "\1\101\1\163\1\0\24\uffff";
+    static final String DFA151_acceptS =
+        "\3\uffff\1\2\22\uffff\1\1";
+    static final String DFA151_specialS =
+        "\2\uffff\1\0\24\uffff}>";
+    static final String[] DFA151_transitionS = {
+            "\1\1",
+            "\1\3\1\uffff\6\3\25\uffff\1\3\6\uffff\1\3\16\uffff\10\2\1"+
+            "\uffff\2\3\2\uffff\3\3\43\uffff\2\3\2\uffff\6\3",
+            "\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 "889: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_2 = input.LA(1);
+
+                         
+                        int index151_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred231_Java()) ) {s = 22;}
+
+                        else if ( (true) ) {s = 3;}
+
+                         
+                        input.seek(index151_2);
+                        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\163\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\43\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 "891: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 ( (synpred232_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 ( (synpred232_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\163\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\53\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 "894: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\157\2\uffff\1\163\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\20\uffff\25"+
+            "\1",
+            "",
+            "",
+            "\1\45\31\uffff\1\1\2\uffff\1\1\36\uffff\1\1\61\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 898: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 ( (synpred236_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\157\1\163\1\uffff\1\163\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\20\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\43\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\61\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 "898: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 ( (synpred237_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 ( (synpred237_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 ( (synpred237_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 ( (synpred237_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 ( (synpred237_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 ( (synpred237_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 ( (synpred237_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 ( (synpred237_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 ( (synpred237_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 ( (synpred237_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 ( (synpred237_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 ( (synpred237_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 ( (synpred237_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 ( (synpred237_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 ( (synpred237_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 ( (synpred237_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 ( (synpred237_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 ( (synpred237_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 ( (synpred237_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 ( (synpred237_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 ( (synpred237_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 ( (synpred237_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 ( (synpred237_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\157\2\uffff\1\163\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\20\uffff\25"+
+            "\1",
+            "",
+            "",
+            "\1\45\31\uffff\1\1\2\uffff\1\1\36\uffff\1\1\61\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 902: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 ( (synpred242_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\157\1\163\1\uffff\1\163\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\20\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\43\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\61\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 "902: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 ( (synpred243_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 ( (synpred243_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 ( (synpred243_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 ( (synpred243_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 ( (synpred243_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 ( (synpred243_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 ( (synpred243_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 ( (synpred243_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 ( (synpred243_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 ( (synpred243_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 ( (synpred243_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 ( (synpred243_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 ( (synpred243_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 ( (synpred243_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 ( (synpred243_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 ( (synpred243_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 ( (synpred243_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 ( (synpred243_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 ( (synpred243_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 ( (synpred243_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 ( (synpred243_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 ( (synpred243_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 ( (synpred243_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\163\1\uffff\1\163\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\43\uffff\2\5\2\uffff\6\5",
+            "",
+            "\1\31\2\uffff\1\35\36\uffff\1\33\61\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 "907: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\157\35\uffff\1\163\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\20\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\43\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 909: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 ( (synpred249_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 ( (synpred249_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 ( (synpred249_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 ( (synpred249_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 ( (synpred249_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 ( (synpred249_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 ( (synpred249_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 ( (synpred249_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 ( (synpred249_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 ( (synpred249_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 ( (synpred249_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 ( (synpred249_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 ( (synpred249_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 ( (synpred249_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 ( (synpred249_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 ( (synpred249_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 ( (synpred249_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 ( (synpred249_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 ( (synpred249_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 ( (synpred249_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\163\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\43\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 "935: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\157\1\163\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\20\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\43\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 936: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 ( (synpred265_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 ( (synpred265_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 ( (synpred265_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 ( (synpred265_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 ( (synpred265_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 ( (synpred265_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 ( (synpred265_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 ( (synpred265_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 ( (synpred265_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 ( (synpred265_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 ( (synpred265_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 ( (synpred265_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 ( (synpred265_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 ( (synpred265_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 ( (synpred265_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 ( (synpred265_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 ( (synpred265_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 ( (synpred265_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 ( (synpred265_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 ( (synpred265_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\157\35\uffff\1\163\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\20\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\43\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 936: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\157\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\20\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 "941: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\157\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\20\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 "958: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\157\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\20\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 "967: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\163\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\43\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 "971:8: ( expressionList )?";
+        }
+    }
+ 
+
+    public static final BitSet FOLLOW_annotations_in_compilationUnit70 = new BitSet(new long[]{0x007FE0804F000022L,0x0000000000000080L});
+    public static final BitSet FOLLOW_packageDeclaration_in_compilationUnit75 = new BitSet(new long[]{0x007FE0804E000022L,0x0000000000000080L});
+    public static final BitSet FOLLOW_importDeclaration_in_compilationUnit86 = new BitSet(new long[]{0x007FE0804E000022L,0x0000000000000080L});
+    public static final BitSet FOLLOW_typeDeclaration_in_compilationUnit97 = new BitSet(new long[]{0x007FE0804A000022L,0x0000000000000080L});
+    public static final BitSet FOLLOW_24_in_packageDeclaration109 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_qualifiedName_in_packageDeclaration111 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_25_in_packageDeclaration113 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_26_in_importDeclaration125 = new BitSet(new long[]{0x0000000008000010L});
+    public static final BitSet FOLLOW_27_in_importDeclaration127 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_Identifier_in_importDeclaration130 = new BitSet(new long[]{0x0000000012000000L});
+    public static final BitSet FOLLOW_28_in_importDeclaration133 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_Identifier_in_importDeclaration135 = new BitSet(new long[]{0x0000000012000000L});
+    public static final BitSet FOLLOW_28_in_importDeclaration140 = new BitSet(new long[]{0x0000000020000000L});
+    public static final BitSet FOLLOW_29_in_importDeclaration142 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_25_in_importDeclaration146 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_classOrInterfaceDeclaration_in_typeDeclaration158 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_25_in_typeDeclaration168 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_modifier_in_classOrInterfaceDeclaration180 = new BitSet(new long[]{0x007FE08048000020L,0x0000000000000080L});
+    public static final BitSet FOLLOW_classDeclaration_in_classOrInterfaceDeclaration184 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_interfaceDeclaration_in_classOrInterfaceDeclaration188 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_normalClassDeclaration_in_classDeclaration201 = new BitSet(new long[]{0x0000000000000002L});
+    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[]{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[]{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[]{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});
+    public static final BitSet FOLLOW_34_in_typeParameters287 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_typeParameter_in_typeParameters289 = new BitSet(new long[]{0x0000000C00000000L});
+    public static final BitSet FOLLOW_35_in_typeParameters293 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_Identifier_in_typeParameter304 = new BitSet(new long[]{0x0000000080000002L});
+    public static final BitSet FOLLOW_31_in_typeParameter307 = new BitSet(new long[]{0x7F80000000000010L});
+    public static final BitSet FOLLOW_bound_in_typeParameter309 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_type_in_bound324 = new BitSet(new long[]{0x0000001000000002L});
+    public static final BitSet FOLLOW_36_in_bound327 = new BitSet(new long[]{0x7F80000000000010L});
+    public static final BitSet FOLLOW_type_in_bound329 = new BitSet(new long[]{0x0000001000000002L});
+    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[]{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});
+    public static final BitSet FOLLOW_34_in_enumBody370 = new BitSet(new long[]{0x0000004002000000L});
+    public static final BitSet FOLLOW_enumBodyDeclarations_in_enumBody373 = new BitSet(new long[]{0x0000004000000000L});
+    public static final BitSet FOLLOW_38_in_enumBody376 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_enumConstant_in_enumConstants387 = new BitSet(new long[]{0x0000000400000002L});
+    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[]{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});
+    public static final BitSet FOLLOW_normalInterfaceDeclaration_in_interfaceDeclaration448 = new BitSet(new long[]{0x0000000000000002L});
+    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[]{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[]{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});
+    public static final BitSet FOLLOW_type_in_typeList497 = new BitSet(new long[]{0x0000000400000002L});
+    public static final BitSet FOLLOW_37_in_classBody511 = new BitSet(new long[]{0x7FFFE1E24A000030L,0x0000000000000080L});
+    public static final BitSet FOLLOW_classBodyDeclaration_in_classBody513 = new BitSet(new long[]{0x7FFFE1E24A000030L,0x0000000000000080L});
+    public static final BitSet FOLLOW_38_in_classBody516 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_37_in_interfaceBody528 = new BitSet(new long[]{0x7FFFE1C24A000030L,0x0000000000000080L});
+    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[]{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[]{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});
+    public static final BitSet FOLLOW_fieldDeclaration_in_memberDecl582 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_40_in_memberDecl587 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_Identifier_in_memberDecl589 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+    public static final BitSet FOLLOW_voidMethodDeclaratorRest_in_memberDecl591 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_Identifier_in_memberDecl596 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+    public static final BitSet FOLLOW_constructorDeclaratorRest_in_memberDecl598 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_interfaceDeclaration_in_memberDecl603 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_classDeclaration_in_memberDecl608 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_typeParameters_in_genericMethodOrConstructorDecl620 = new BitSet(new long[]{0x7F80010000000010L});
+    public static final BitSet FOLLOW_genericMethodOrConstructorRest_in_genericMethodOrConstructorDecl622 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_type_in_genericMethodOrConstructorRest635 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_40_in_genericMethodOrConstructorRest639 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_Identifier_in_genericMethodOrConstructorRest642 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+    public static final BitSet FOLLOW_methodDeclaratorRest_in_genericMethodOrConstructorRest644 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_Identifier_in_genericMethodOrConstructorRest649 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+    public static final BitSet FOLLOW_constructorDeclaratorRest_in_genericMethodOrConstructorRest651 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_type_in_methodDeclaration662 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_Identifier_in_methodDeclaration664 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+    public static final BitSet FOLLOW_methodDeclaratorRest_in_methodDeclaration666 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_type_in_fieldDeclaration677 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_variableDeclarators_in_fieldDeclaration679 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_25_in_fieldDeclaration681 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_modifier_in_interfaceBodyDeclaration694 = new BitSet(new long[]{0x7FFFE18248000030L,0x0000000000000080L});
+    public static final BitSet FOLLOW_interfaceMemberDecl_in_interfaceBodyDeclaration697 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_25_in_interfaceBodyDeclaration704 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_interfaceMethodOrFieldDecl_in_interfaceMemberDecl715 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_interfaceGenericMethodDecl_in_interfaceMemberDecl722 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_40_in_interfaceMemberDecl732 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_Identifier_in_interfaceMemberDecl734 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+    public static final BitSet FOLLOW_voidInterfaceMethodDeclaratorRest_in_interfaceMemberDecl736 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_interfaceDeclaration_in_interfaceMemberDecl746 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_classDeclaration_in_interfaceMemberDecl756 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_type_in_interfaceMethodOrFieldDecl768 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_Identifier_in_interfaceMethodOrFieldDecl770 = new BitSet(new long[]{0x0000120000000000L,0x0000000000000002L});
+    public static final BitSet FOLLOW_interfaceMethodOrFieldRest_in_interfaceMethodOrFieldDecl772 = new BitSet(new long[]{0x0000000000000002L});
+    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[]{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[]{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[]{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[]{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[]{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});
+    public static final BitSet FOLLOW_41_in_interfaceMethodDeclaratorRest935 = new BitSet(new long[]{0x0000040000000000L});
+    public static final BitSet FOLLOW_42_in_interfaceMethodDeclaratorRest937 = new BitSet(new long[]{0x00000A0002000000L});
+    public static final BitSet FOLLOW_43_in_interfaceMethodDeclaratorRest942 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_qualifiedNameList_in_interfaceMethodDeclaratorRest944 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_25_in_interfaceMethodDeclaratorRest948 = new BitSet(new long[]{0x0000000000000002L});
+    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[]{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[]{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[]{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[]{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});
+    public static final BitSet FOLLOW_44_in_variableDeclaratorRest1113 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC0000000073L});
+    public static final BitSet FOLLOW_variableInitializer_in_variableDeclaratorRest1115 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_44_in_variableDeclaratorRest1122 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC0000000073L});
+    public static final BitSet FOLLOW_variableInitializer_in_variableDeclaratorRest1124 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_constantDeclaratorRest_in_constantDeclaratorsRest1144 = new BitSet(new long[]{0x0000000400000002L});
+    public static final BitSet FOLLOW_34_in_constantDeclaratorsRest1147 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_constantDeclarator_in_constantDeclaratorsRest1149 = new BitSet(new long[]{0x0000000400000002L});
+    public static final BitSet FOLLOW_41_in_constantDeclaratorRest1166 = new BitSet(new long[]{0x0000040000000000L});
+    public static final BitSet FOLLOW_42_in_constantDeclaratorRest1168 = new BitSet(new long[]{0x0000120000000000L});
+    public static final BitSet FOLLOW_44_in_constantDeclaratorRest1172 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC0000000073L});
+    public static final BitSet FOLLOW_variableInitializer_in_constantDeclaratorRest1174 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_Identifier_in_variableDeclaratorId1186 = new BitSet(new long[]{0x0000020000000002L});
+    public static final BitSet FOLLOW_41_in_variableDeclaratorId1189 = new BitSet(new long[]{0x0000040000000000L});
+    public static final BitSet FOLLOW_42_in_variableDeclaratorId1191 = new BitSet(new long[]{0x0000020000000002L});
+    public static final BitSet FOLLOW_arrayInitializer_in_variableInitializer1204 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_expression_in_variableInitializer1214 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_37_in_arrayInitializer1226 = new BitSet(new long[]{0x7F80016200000FD0L,0x000FCC0000000073L});
+    public static final BitSet FOLLOW_variableInitializer_in_arrayInitializer1229 = new BitSet(new long[]{0x0000004400000000L});
+    public static final BitSet FOLLOW_34_in_arrayInitializer1232 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC0000000073L});
+    public static final BitSet FOLLOW_variableInitializer_in_arrayInitializer1234 = new BitSet(new long[]{0x0000004400000000L});
+    public static final BitSet FOLLOW_34_in_arrayInitializer1239 = new BitSet(new long[]{0x0000004000000000L});
+    public static final BitSet FOLLOW_38_in_arrayInitializer1246 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_annotation_in_modifier1262 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_45_in_modifier1272 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_46_in_modifier1282 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_47_in_modifier1292 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_27_in_modifier1302 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_48_in_modifier1312 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_49_in_modifier1322 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_50_in_modifier1332 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_51_in_modifier1342 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_52_in_modifier1352 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_53_in_modifier1362 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_54_in_modifier1372 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_Identifier_in_packageOrTypeName1386 = new BitSet(new long[]{0x0000000010000002L});
+    public static final BitSet FOLLOW_28_in_packageOrTypeName1389 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_Identifier_in_packageOrTypeName1391 = new BitSet(new long[]{0x0000000010000002L});
+    public static final BitSet FOLLOW_Identifier_in_enumConstantName1409 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_Identifier_in_typeName1425 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_packageOrTypeName_in_typeName1435 = new BitSet(new long[]{0x0000000010000000L});
+    public static final BitSet FOLLOW_28_in_typeName1437 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_Identifier_in_typeName1439 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_Identifier_in_type1450 = new BitSet(new long[]{0x0000020210000002L});
+    public static final BitSet FOLLOW_typeArguments_in_type1453 = new BitSet(new long[]{0x0000020010000002L});
+    public static final BitSet FOLLOW_28_in_type1458 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_Identifier_in_type1460 = new BitSet(new long[]{0x0000020210000002L});
+    public static final BitSet FOLLOW_typeArguments_in_type1463 = new BitSet(new long[]{0x0000020010000002L});
+    public static final BitSet FOLLOW_41_in_type1471 = new BitSet(new long[]{0x0000040000000000L});
+    public static final BitSet FOLLOW_42_in_type1473 = new BitSet(new long[]{0x0000020000000002L});
+    public static final BitSet FOLLOW_primitiveType_in_type1480 = new BitSet(new long[]{0x0000020000000002L});
+    public static final BitSet FOLLOW_41_in_type1483 = new BitSet(new long[]{0x0000040000000000L});
+    public static final BitSet FOLLOW_42_in_type1485 = new BitSet(new long[]{0x0000020000000002L});
+    public static final BitSet FOLLOW_set_in_primitiveType0 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_49_in_variableModifier1573 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_annotation_in_variableModifier1583 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_33_in_typeArguments1594 = new BitSet(new long[]{0xFF80000000000010L});
+    public static final BitSet FOLLOW_typeArgument_in_typeArguments1596 = new BitSet(new long[]{0x0000000C00000000L});
+    public static final BitSet FOLLOW_34_in_typeArguments1599 = new BitSet(new long[]{0xFF80000000000010L});
+    public static final BitSet FOLLOW_typeArgument_in_typeArguments1601 = new BitSet(new long[]{0x0000000C00000000L});
+    public static final BitSet FOLLOW_35_in_typeArguments1605 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_type_in_typeArgument1617 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_63_in_typeArgument1622 = new BitSet(new long[]{0x0000000080000002L,0x0000000000000001L});
+    public static final BitSet FOLLOW_set_in_typeArgument1625 = new BitSet(new long[]{0x7F80000000000010L});
+    public static final BitSet FOLLOW_type_in_typeArgument1633 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_qualifiedName_in_qualifiedNameList1647 = new BitSet(new long[]{0x0000000400000002L});
+    public static final BitSet FOLLOW_34_in_qualifiedNameList1650 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_qualifiedName_in_qualifiedNameList1652 = new BitSet(new long[]{0x0000000400000002L});
+    public static final BitSet FOLLOW_65_in_formalParameters1666 = new BitSet(new long[]{0x7F82000000000010L,0x0000000000000084L});
+    public static final BitSet FOLLOW_formalParameterDecls_in_formalParameters1668 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
+    public static final BitSet FOLLOW_66_in_formalParameters1671 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_variableModifier_in_formalParameterDecls1683 = new BitSet(new long[]{0x7F82000000000010L,0x0000000000000080L});
+    public static final BitSet FOLLOW_type_in_formalParameterDecls1686 = new BitSet(new long[]{0x0000000000000012L,0x0000000000000008L});
+    public static final BitSet FOLLOW_formalParameterDeclsRest_in_formalParameterDecls1688 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_variableDeclaratorId_in_formalParameterDeclsRest1701 = new BitSet(new long[]{0x0000000400000002L});
+    public static final BitSet FOLLOW_34_in_formalParameterDeclsRest1704 = new BitSet(new long[]{0x7F82000000000010L,0x0000000000000080L});
+    public static final BitSet FOLLOW_formalParameterDecls_in_formalParameterDeclsRest1706 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_67_in_formalParameterDeclsRest1715 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_variableDeclaratorId_in_formalParameterDeclsRest1717 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_block_in_methodBody1729 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_Identifier_in_qualifiedName1740 = new BitSet(new long[]{0x0000000010000002L});
+    public static final BitSet FOLLOW_28_in_qualifiedName1743 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_Identifier_in_qualifiedName1745 = new BitSet(new long[]{0x0000000010000002L});
+    public static final BitSet FOLLOW_integerLiteral_in_literal1762 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FloatingPointLiteral_in_literal1772 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_CharacterLiteral_in_literal1782 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_StringLiteral_in_literal1792 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_booleanLiteral_in_literal1802 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_68_in_literal1812 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_set_in_integerLiteral0 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_set_in_booleanLiteral0 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_annotation_in_annotations1893 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000080L});
+    public static final BitSet FOLLOW_71_in_annotation1905 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_annotationName_in_annotation1907 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000002L});
+    public static final BitSet FOLLOW_65_in_annotation1910 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC00000000F7L});
+    public static final BitSet FOLLOW_elementValuePairs_in_annotation1912 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
+    public static final BitSet FOLLOW_66_in_annotation1915 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_Identifier_in_annotationName1929 = new BitSet(new long[]{0x0000000010000002L});
+    public static final BitSet FOLLOW_28_in_annotationName1932 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_Identifier_in_annotationName1934 = new BitSet(new long[]{0x0000000010000002L});
+    public static final BitSet FOLLOW_elementValuePair_in_elementValuePairs1948 = new BitSet(new long[]{0x0000000400000002L});
+    public static final BitSet FOLLOW_34_in_elementValuePairs1951 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC00000000F3L});
+    public static final BitSet FOLLOW_elementValuePair_in_elementValuePairs1953 = new BitSet(new long[]{0x0000000400000002L});
+    public static final BitSet FOLLOW_Identifier_in_elementValuePair1968 = new BitSet(new long[]{0x0000100000000000L});
+    public static final BitSet FOLLOW_44_in_elementValuePair1970 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC00000000F3L});
+    public static final BitSet FOLLOW_elementValue_in_elementValuePair1974 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_conditionalExpression_in_elementValue1986 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_annotation_in_elementValue1993 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_elementValueArrayInitializer_in_elementValue2000 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_37_in_elementValueArrayInitializer2012 = new BitSet(new long[]{0x7F80016200000FD0L,0x000FCC00000000F3L});
+    public static final BitSet FOLLOW_elementValue_in_elementValueArrayInitializer2015 = new BitSet(new long[]{0x0000004400000000L});
+    public static final BitSet FOLLOW_34_in_elementValueArrayInitializer2018 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC00000000F3L});
+    public static final BitSet FOLLOW_elementValue_in_elementValueArrayInitializer2020 = new BitSet(new long[]{0x0000004400000000L});
+    public static final BitSet FOLLOW_38_in_elementValueArrayInitializer2027 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_71_in_annotationTypeDeclaration2039 = new BitSet(new long[]{0x0000008000000000L});
+    public static final BitSet FOLLOW_39_in_annotationTypeDeclaration2041 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_Identifier_in_annotationTypeDeclaration2043 = new BitSet(new long[]{0x0000002000000000L});
+    public static final BitSet FOLLOW_annotationTypeBody_in_annotationTypeDeclaration2045 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_37_in_annotationTypeBody2057 = new BitSet(new long[]{0x7FFFE0C048000030L,0x0000000000000080L});
+    public static final BitSet FOLLOW_annotationTypeElementDeclarations_in_annotationTypeBody2060 = new BitSet(new long[]{0x0000004000000000L});
+    public static final BitSet FOLLOW_38_in_annotationTypeBody2064 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_annotationTypeElementDeclaration_in_annotationTypeElementDeclarations2077 = new BitSet(new long[]{0x7FFFE08048000032L,0x0000000000000080L});
+    public static final BitSet FOLLOW_annotationTypeElementDeclaration_in_annotationTypeElementDeclarations2081 = new BitSet(new long[]{0x7FFFE08048000032L,0x0000000000000080L});
+    public static final BitSet FOLLOW_modifier_in_annotationTypeElementDeclaration2096 = new BitSet(new long[]{0x7FFFE08048000030L,0x0000000000000080L});
+    public static final BitSet FOLLOW_annotationTypeElementRest_in_annotationTypeElementDeclaration2100 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_type_in_annotationTypeElementRest2112 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_annotationMethodOrConstantRest_in_annotationTypeElementRest2114 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_25_in_annotationTypeElementRest2116 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_classDeclaration_in_annotationTypeElementRest2123 = new BitSet(new long[]{0x0000000002000002L});
+    public static final BitSet FOLLOW_25_in_annotationTypeElementRest2125 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_interfaceDeclaration_in_annotationTypeElementRest2133 = new BitSet(new long[]{0x0000000002000002L});
+    public static final BitSet FOLLOW_25_in_annotationTypeElementRest2135 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_enumDeclaration_in_annotationTypeElementRest2143 = new BitSet(new long[]{0x0000000002000002L});
+    public static final BitSet FOLLOW_25_in_annotationTypeElementRest2145 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_annotationTypeDeclaration_in_annotationTypeElementRest2153 = new BitSet(new long[]{0x0000000002000002L});
+    public static final BitSet FOLLOW_25_in_annotationTypeElementRest2155 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_annotationMethodRest_in_annotationMethodOrConstantRest2168 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_annotationConstantRest_in_annotationMethodOrConstantRest2175 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_Identifier_in_annotationMethodRest2188 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+    public static final BitSet FOLLOW_65_in_annotationMethodRest2190 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
+    public static final BitSet FOLLOW_66_in_annotationMethodRest2192 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000100L});
+    public static final BitSet FOLLOW_defaultValue_in_annotationMethodRest2195 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_variableDeclarators_in_annotationConstantRest2212 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_72_in_defaultValue2227 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC00000000F3L});
+    public static final BitSet FOLLOW_elementValue_in_defaultValue2229 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_37_in_block2269 = new BitSet(new long[]{0x7FFFE1E24A000FF0L,0x000FCC0001FDEAF3L});
+    public static final BitSet FOLLOW_blockStatement_in_block2271 = new BitSet(new long[]{0x7FFFE1E24A000FF0L,0x000FCC0001FDEAF3L});
+    public static final BitSet FOLLOW_38_in_block2274 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_localVariableDeclaration_in_blockStatement2286 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_classOrInterfaceDeclaration_in_blockStatement2291 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_statement_in_blockStatement2300 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_variableModifier_in_localVariableDeclaration2348 = new BitSet(new long[]{0x7F82000000000010L,0x0000000000000080L});
+    public static final BitSet FOLLOW_type_in_localVariableDeclaration2365 = new BitSet(new long[]{0x0000000000000010L});
+    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[]{0x7F80012200000FD0L,0x000FCC0000000073L});
+    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[]{0x7F80012200000FD0L,0x000FCC0000000073L});
+    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[]{0x7FFFE1A24A000FF0L,0x000FCC0001FDEAF3L});
+    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[]{0x7FFFE1A24A000FF0L,0x000FCC0001FDEAF3L});
+    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[]{0x7F82012202000FD0L,0x000FCC00000000F3L});
+    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[]{0x7FFFE1A24A000FF0L,0x000FCC0001FDEAF3L});
+    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[]{0x7FFFE1A24A000FF0L,0x000FCC0001FDEAF3L});
+    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[]{0x7FFFE1A24A000FF0L,0x000FCC0001FDEAF3L});
+    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[]{0x0000002008000000L});
+    public static final BitSet FOLLOW_block_in_statement2489 = new BitSet(new long[]{0x0000000000000000L,0x0000000002020000L});
+    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[]{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[]{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});
+    public static final BitSet FOLLOW_37_in_statement2545 = new BitSet(new long[]{0x0000004000000000L,0x0000000004000100L});
+    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[]{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[]{0x7F80012202000FD0L,0x000FCC0000000073L});
+    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[]{0x7F80012200000FD0L,0x000FCC0000000073L});
+    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});
+    public static final BitSet FOLLOW_Identifier_in_statement2596 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_25_in_statement2599 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_86_in_statement2607 = new BitSet(new long[]{0x0000000002000010L});
+    public static final BitSet FOLLOW_Identifier_in_statement2609 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_25_in_statement2612 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_modifyStatement_in_statement2625 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_exitPointsStatement_in_statement2633 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_25_in_statement2641 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_statementExpression_in_statement2649 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_25_in_statement2651 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_Identifier_in_statement2659 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_74_in_statement2661 = new BitSet(new long[]{0x7FFFE1A24A000FF0L,0x000FCC0001FDEAF3L});
+    public static final BitSet FOLLOW_statement_in_statement2663 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_87_in_modifyStatement2683 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+    public static final BitSet FOLLOW_parExpression_in_modifyStatement2685 = new BitSet(new long[]{0x0000002000000000L});
+    public static final BitSet FOLLOW_37_in_modifyStatement2692 = new BitSet(new long[]{0x7F80016200000FD0L,0x000FCC0000000073L});
+    public static final BitSet FOLLOW_expression_in_modifyStatement2700 = new BitSet(new long[]{0x0000004400000000L});
+    public static final BitSet FOLLOW_34_in_modifyStatement2713 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC0000000073L});
+    public static final BitSet FOLLOW_expression_in_modifyStatement2717 = new BitSet(new long[]{0x0000004400000000L});
+    public static final BitSet FOLLOW_38_in_modifyStatement2736 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_88_in_exitPointsStatement2775 = new BitSet(new long[]{0x0000020000000000L});
+    public static final BitSet FOLLOW_41_in_exitPointsStatement2777 = new BitSet(new long[]{0x0000000000000100L});
+    public static final BitSet FOLLOW_StringLiteral_in_exitPointsStatement2781 = new BitSet(new long[]{0x0000040000000000L});
+    public static final BitSet FOLLOW_42_in_exitPointsStatement2785 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_catchClause_in_catches2816 = new BitSet(new long[]{0x0000000000000002L,0x0000000002000000L});
+    public static final BitSet FOLLOW_catchClause_in_catches2819 = new BitSet(new long[]{0x0000000000000002L,0x0000000002000000L});
+    public static final BitSet FOLLOW_89_in_catchClause2833 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+    public static final BitSet FOLLOW_65_in_catchClause2835 = new BitSet(new long[]{0x7F82000000000010L,0x0000000000000080L});
+    public static final BitSet FOLLOW_formalParameter_in_catchClause2837 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
+    public static final BitSet FOLLOW_66_in_catchClause2839 = new BitSet(new long[]{0x0000002008000000L});
+    public static final BitSet FOLLOW_block_in_catchClause2841 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_variableModifier_in_formalParameter2852 = new BitSet(new long[]{0x7F82000000000010L,0x0000000000000080L});
+    public static final BitSet FOLLOW_type_in_formalParameter2855 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_variableDeclaratorId_in_formalParameter2857 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_switchBlockStatementGroup_in_switchBlockStatementGroups2871 = new BitSet(new long[]{0x0000000000000002L,0x0000000004000100L});
+    public static final BitSet FOLLOW_switchLabel_in_switchBlockStatementGroup2885 = new BitSet(new long[]{0x7FFFE1A24A000FF2L,0x000FCC0001FDEAF3L});
+    public static final BitSet FOLLOW_blockStatement_in_switchBlockStatementGroup2887 = new BitSet(new long[]{0x7FFFE1A24A000FF2L,0x000FCC0001FDEAF3L});
+    public static final BitSet FOLLOW_90_in_switchLabel2900 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC0000000073L});
+    public static final BitSet FOLLOW_constantExpression_in_switchLabel2902 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_74_in_switchLabel2904 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_90_in_switchLabel2911 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_enumConstantName_in_switchLabel2913 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_74_in_switchLabel2915 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_72_in_switchLabel2922 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_74_in_switchLabel2924 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_34_in_moreStatementExpressions2937 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC0000000073L});
+    public static final BitSet FOLLOW_statementExpression_in_moreStatementExpressions2939 = new BitSet(new long[]{0x0000000400000002L});
+    public static final BitSet FOLLOW_forVarControl_in_forControl2960 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_forInit_in_forControl2965 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_25_in_forControl2968 = new BitSet(new long[]{0x7F80012202000FD0L,0x000FCC0000000073L});
+    public static final BitSet FOLLOW_expression_in_forControl2970 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_25_in_forControl2973 = new BitSet(new long[]{0x7F82012200000FD2L,0x000FCC00000000F3L});
+    public static final BitSet FOLLOW_forUpdate_in_forControl2975 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_variableModifier_in_forInit3013 = new BitSet(new long[]{0x7F82000000000010L,0x0000000000000080L});
+    public static final BitSet FOLLOW_type_in_forInit3016 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_variableDeclarators_in_forInit3018 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_expressionList_in_forInit3023 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_variableModifier_in_forVarControl3035 = new BitSet(new long[]{0x7F82000000000010L,0x0000000000000080L});
+    public static final BitSet FOLLOW_type_in_forVarControl3038 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_Identifier_in_forVarControl3040 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_74_in_forVarControl3042 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC0000000073L});
+    public static final BitSet FOLLOW_expression_in_forVarControl3044 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_expressionList_in_forUpdate3055 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_65_in_parExpression3068 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC0000000073L});
+    public static final BitSet FOLLOW_expression_in_parExpression3070 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
+    public static final BitSet FOLLOW_66_in_parExpression3072 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_expression_in_expressionList3089 = new BitSet(new long[]{0x0000000400000002L});
+    public static final BitSet FOLLOW_34_in_expressionList3092 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC0000000073L});
+    public static final BitSet FOLLOW_expression_in_expressionList3094 = new BitSet(new long[]{0x0000000400000002L});
+    public static final BitSet FOLLOW_expression_in_statementExpression3110 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_expression_in_constantExpression3122 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_conditionalExpression_in_expression3134 = new BitSet(new long[]{0x0000100A00000002L,0x00000007F8000000L});
+    public static final BitSet FOLLOW_assignmentOperator_in_expression3137 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC0000000073L});
+    public static final BitSet FOLLOW_expression_in_expression3139 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_44_in_assignmentOperator3153 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_91_in_assignmentOperator3163 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_92_in_assignmentOperator3173 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_93_in_assignmentOperator3183 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_94_in_assignmentOperator3193 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_95_in_assignmentOperator3203 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_96_in_assignmentOperator3213 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_97_in_assignmentOperator3223 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_98_in_assignmentOperator3233 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_33_in_assignmentOperator3243 = new BitSet(new long[]{0x0000000200000000L});
+    public static final BitSet FOLLOW_33_in_assignmentOperator3245 = new BitSet(new long[]{0x0000100000000000L});
+    public static final BitSet FOLLOW_44_in_assignmentOperator3247 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_35_in_assignmentOperator3257 = new BitSet(new long[]{0x0000000800000000L});
+    public static final BitSet FOLLOW_35_in_assignmentOperator3259 = new BitSet(new long[]{0x0000100000000000L});
+    public static final BitSet FOLLOW_44_in_assignmentOperator3261 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_35_in_assignmentOperator3271 = new BitSet(new long[]{0x0000000800000000L});
+    public static final BitSet FOLLOW_35_in_assignmentOperator3273 = new BitSet(new long[]{0x0000000800000000L});
+    public static final BitSet FOLLOW_35_in_assignmentOperator3275 = new BitSet(new long[]{0x0000100000000000L});
+    public static final BitSet FOLLOW_44_in_assignmentOperator3277 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_conditionalOrExpression_in_conditionalExpression3293 = new BitSet(new long[]{0x8000000000000002L});
+    public static final BitSet FOLLOW_63_in_conditionalExpression3297 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC0000000073L});
+    public static final BitSet FOLLOW_expression_in_conditionalExpression3299 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_74_in_conditionalExpression3301 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC0000000073L});
+    public static final BitSet FOLLOW_expression_in_conditionalExpression3303 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_conditionalAndExpression_in_conditionalOrExpression3322 = new BitSet(new long[]{0x0000000000000002L,0x0000000800000000L});
+    public static final BitSet FOLLOW_99_in_conditionalOrExpression3326 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC0000000073L});
+    public static final BitSet FOLLOW_conditionalAndExpression_in_conditionalOrExpression3328 = new BitSet(new long[]{0x0000000000000002L,0x0000000800000000L});
+    public static final BitSet FOLLOW_inclusiveOrExpression_in_conditionalAndExpression3347 = new BitSet(new long[]{0x0000000000000002L,0x0000001000000000L});
+    public static final BitSet FOLLOW_100_in_conditionalAndExpression3351 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC0000000073L});
+    public static final BitSet FOLLOW_inclusiveOrExpression_in_conditionalAndExpression3353 = new BitSet(new long[]{0x0000000000000002L,0x0000001000000000L});
+    public static final BitSet FOLLOW_exclusiveOrExpression_in_inclusiveOrExpression3372 = new BitSet(new long[]{0x0000000000000002L,0x0000002000000000L});
+    public static final BitSet FOLLOW_101_in_inclusiveOrExpression3376 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC0000000073L});
+    public static final BitSet FOLLOW_exclusiveOrExpression_in_inclusiveOrExpression3378 = new BitSet(new long[]{0x0000000000000002L,0x0000002000000000L});
+    public static final BitSet FOLLOW_andExpression_in_exclusiveOrExpression3397 = new BitSet(new long[]{0x0000000000000002L,0x0000004000000000L});
+    public static final BitSet FOLLOW_102_in_exclusiveOrExpression3401 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC0000000073L});
+    public static final BitSet FOLLOW_andExpression_in_exclusiveOrExpression3403 = new BitSet(new long[]{0x0000000000000002L,0x0000004000000000L});
+    public static final BitSet FOLLOW_equalityExpression_in_andExpression3422 = new BitSet(new long[]{0x0000001000000002L});
+    public static final BitSet FOLLOW_36_in_andExpression3426 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC0000000073L});
+    public static final BitSet FOLLOW_equalityExpression_in_andExpression3428 = new BitSet(new long[]{0x0000001000000002L});
+    public static final BitSet FOLLOW_instanceOfExpression_in_equalityExpression3447 = new BitSet(new long[]{0x0000000000000002L,0x0000018000000000L});
+    public static final BitSet FOLLOW_set_in_equalityExpression3451 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC0000000073L});
+    public static final BitSet FOLLOW_instanceOfExpression_in_equalityExpression3459 = new BitSet(new long[]{0x0000000000000002L,0x0000018000000000L});
+    public static final BitSet FOLLOW_relationalExpression_in_instanceOfExpression3478 = new BitSet(new long[]{0x0000000000000002L,0x0000020000000000L});
+    public static final BitSet FOLLOW_105_in_instanceOfExpression3481 = new BitSet(new long[]{0x7F80000000000010L});
+    public static final BitSet FOLLOW_type_in_instanceOfExpression3483 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_shiftExpression_in_relationalExpression3501 = new BitSet(new long[]{0x0000000A00000002L});
+    public static final BitSet FOLLOW_relationalOp_in_relationalExpression3505 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC0000000073L});
+    public static final BitSet FOLLOW_shiftExpression_in_relationalExpression3507 = new BitSet(new long[]{0x0000000A00000002L});
+    public static final BitSet FOLLOW_33_in_relationalOp3523 = new BitSet(new long[]{0x0000100000000000L});
+    public static final BitSet FOLLOW_44_in_relationalOp3525 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_35_in_relationalOp3529 = new BitSet(new long[]{0x0000100000000000L});
+    public static final BitSet FOLLOW_44_in_relationalOp3531 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_33_in_relationalOp3535 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_35_in_relationalOp3539 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_additiveExpression_in_shiftExpression3556 = new BitSet(new long[]{0x0000000A00000002L});
+    public static final BitSet FOLLOW_shiftOp_in_shiftExpression3560 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC0000000073L});
+    public static final BitSet FOLLOW_additiveExpression_in_shiftExpression3562 = new BitSet(new long[]{0x0000000A00000002L});
+    public static final BitSet FOLLOW_33_in_shiftOp3586 = new BitSet(new long[]{0x0000000200000000L});
+    public static final BitSet FOLLOW_33_in_shiftOp3588 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_35_in_shiftOp3592 = new BitSet(new long[]{0x0000000800000000L});
+    public static final BitSet FOLLOW_35_in_shiftOp3594 = new BitSet(new long[]{0x0000000800000000L});
+    public static final BitSet FOLLOW_35_in_shiftOp3596 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_35_in_shiftOp3600 = new BitSet(new long[]{0x0000000800000000L});
+    public static final BitSet FOLLOW_35_in_shiftOp3602 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_multiplicativeExpression_in_additiveExpression3620 = new BitSet(new long[]{0x0000000000000002L,0x00000C0000000000L});
+    public static final BitSet FOLLOW_set_in_additiveExpression3624 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC0000000073L});
+    public static final BitSet FOLLOW_multiplicativeExpression_in_additiveExpression3632 = new BitSet(new long[]{0x0000000000000002L,0x00000C0000000000L});
+    public static final BitSet FOLLOW_unaryExpression_in_multiplicativeExpression3651 = new BitSet(new long[]{0x0000000020000002L,0x0000300000000000L});
+    public static final BitSet FOLLOW_set_in_multiplicativeExpression3655 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC0000000073L});
+    public static final BitSet FOLLOW_unaryExpression_in_multiplicativeExpression3669 = new BitSet(new long[]{0x0000000020000002L,0x0000300000000000L});
+    public static final BitSet FOLLOW_106_in_unaryExpression3689 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC0000000073L});
+    public static final BitSet FOLLOW_unaryExpression_in_unaryExpression3691 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_107_in_unaryExpression3699 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC0000000073L});
+    public static final BitSet FOLLOW_unaryExpression_in_unaryExpression3701 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_110_in_unaryExpression3711 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC0000000073L});
+    public static final BitSet FOLLOW_primary_in_unaryExpression3713 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_111_in_unaryExpression3723 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC0000000073L});
+    public static final BitSet FOLLOW_primary_in_unaryExpression3725 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_unaryExpressionNotPlusMinus_in_unaryExpression3735 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_112_in_unaryExpressionNotPlusMinus3754 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC0000000073L});
+    public static final BitSet FOLLOW_unaryExpression_in_unaryExpressionNotPlusMinus3756 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_113_in_unaryExpressionNotPlusMinus3765 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC0000000073L});
+    public static final BitSet FOLLOW_unaryExpression_in_unaryExpressionNotPlusMinus3767 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_castExpression_in_unaryExpressionNotPlusMinus3777 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_primary_in_unaryExpressionNotPlusMinus3787 = new BitSet(new long[]{0x0000020010000002L,0x0000C00000000000L});
+    public static final BitSet FOLLOW_selector_in_unaryExpressionNotPlusMinus3789 = new BitSet(new long[]{0x0000020010000002L,0x0000C00000000000L});
+    public static final BitSet FOLLOW_set_in_unaryExpressionNotPlusMinus3792 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_65_in_castExpression3815 = new BitSet(new long[]{0x7F80000000000010L});
+    public static final BitSet FOLLOW_primitiveType_in_castExpression3817 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
+    public static final BitSet FOLLOW_66_in_castExpression3819 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC0000000073L});
+    public static final BitSet FOLLOW_unaryExpression_in_castExpression3821 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_65_in_castExpression3830 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC0000000073L});
+    public static final BitSet FOLLOW_type_in_castExpression3833 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
+    public static final BitSet FOLLOW_expression_in_castExpression3837 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
+    public static final BitSet FOLLOW_66_in_castExpression3840 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC0000000073L});
+    public static final BitSet FOLLOW_unaryExpressionNotPlusMinus_in_castExpression3842 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_parExpression_in_primary3859 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_nonWildcardTypeArguments_in_primary3869 = new BitSet(new long[]{0x0000000000000010L,0x0004000000000001L});
+    public static final BitSet FOLLOW_explicitGenericInvocationSuffix_in_primary3880 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_114_in_primary3884 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+    public static final BitSet FOLLOW_arguments_in_primary3886 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_114_in_primary3897 = new BitSet(new long[]{0x0000020010000002L,0x0000000000000002L});
+    public static final BitSet FOLLOW_28_in_primary3900 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_Identifier_in_primary3902 = new BitSet(new long[]{0x0000020010000002L,0x0000000000000002L});
+    public static final BitSet FOLLOW_identifierSuffix_in_primary3907 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_64_in_primary3919 = new BitSet(new long[]{0x0000000010000000L,0x0000000000000002L});
+    public static final BitSet FOLLOW_superSuffix_in_primary3921 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_literal_in_primary3931 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_115_in_primary3941 = new BitSet(new long[]{0x7F80000200000010L});
+    public static final BitSet FOLLOW_creator_in_primary3943 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_Identifier_in_primary3955 = new BitSet(new long[]{0x0000020010000002L,0x0000000000000002L});
+    public static final BitSet FOLLOW_28_in_primary3960 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_Identifier_in_primary3962 = new BitSet(new long[]{0x0000020010000002L,0x0000000000000002L});
+    public static final BitSet FOLLOW_identifierSuffix_in_primary3967 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_primitiveType_in_primary3979 = new BitSet(new long[]{0x0000020010000000L});
+    public static final BitSet FOLLOW_41_in_primary3982 = new BitSet(new long[]{0x0000040000000000L});
+    public static final BitSet FOLLOW_42_in_primary3984 = new BitSet(new long[]{0x0000020010000000L});
+    public static final BitSet FOLLOW_28_in_primary3988 = new BitSet(new long[]{0x0000000040000000L});
+    public static final BitSet FOLLOW_30_in_primary3990 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_40_in_primary4000 = new BitSet(new long[]{0x0000000010000000L});
+    public static final BitSet FOLLOW_28_in_primary4002 = new BitSet(new long[]{0x0000000040000000L});
+    public static final BitSet FOLLOW_30_in_primary4004 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_41_in_identifierSuffix4016 = new BitSet(new long[]{0x0000040000000000L});
+    public static final BitSet FOLLOW_42_in_identifierSuffix4018 = new BitSet(new long[]{0x0000020010000000L});
+    public static final BitSet FOLLOW_28_in_identifierSuffix4022 = new BitSet(new long[]{0x0000000040000000L});
+    public static final BitSet FOLLOW_30_in_identifierSuffix4024 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_41_in_identifierSuffix4030 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC0000000073L});
+    public static final BitSet FOLLOW_expression_in_identifierSuffix4032 = new BitSet(new long[]{0x0000040000000000L});
+    public static final BitSet FOLLOW_42_in_identifierSuffix4034 = new BitSet(new long[]{0x0000020000000002L});
+    public static final BitSet FOLLOW_arguments_in_identifierSuffix4047 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_28_in_identifierSuffix4057 = new BitSet(new long[]{0x0000000040000000L});
+    public static final BitSet FOLLOW_30_in_identifierSuffix4059 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_28_in_identifierSuffix4069 = new BitSet(new long[]{0x0000000200000000L});
+    public static final BitSet FOLLOW_explicitGenericInvocation_in_identifierSuffix4071 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_28_in_identifierSuffix4081 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+    public static final BitSet FOLLOW_114_in_identifierSuffix4083 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_28_in_identifierSuffix4093 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
+    public static final BitSet FOLLOW_64_in_identifierSuffix4095 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+    public static final BitSet FOLLOW_arguments_in_identifierSuffix4097 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_28_in_identifierSuffix4107 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_115_in_identifierSuffix4109 = new BitSet(new long[]{0x0000000200000010L});
+    public static final BitSet FOLLOW_nonWildcardTypeArguments_in_identifierSuffix4112 = new BitSet(new long[]{0x0000000200000010L});
+    public static final BitSet FOLLOW_innerCreator_in_identifierSuffix4116 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_nonWildcardTypeArguments_in_creator4128 = new BitSet(new long[]{0x7F80000200000010L});
+    public static final BitSet FOLLOW_createdName_in_creator4131 = new BitSet(new long[]{0x0000020000000000L,0x0000000000000002L});
+    public static final BitSet FOLLOW_arrayCreatorRest_in_creator4142 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_classCreatorRest_in_creator4146 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_Identifier_in_createdName4158 = new BitSet(new long[]{0x0000000210000002L});
+    public static final BitSet FOLLOW_typeArguments_in_createdName4160 = new BitSet(new long[]{0x0000000010000002L});
+    public static final BitSet FOLLOW_28_in_createdName4172 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_Identifier_in_createdName4174 = new BitSet(new long[]{0x0000000210000002L});
+    public static final BitSet FOLLOW_typeArguments_in_createdName4176 = new BitSet(new long[]{0x0000000010000002L});
+    public static final BitSet FOLLOW_primitiveType_in_createdName4187 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_Identifier_in_innerCreator4199 = new BitSet(new long[]{0x0000020000000000L,0x0000000000000002L});
+    public static final BitSet FOLLOW_classCreatorRest_in_innerCreator4201 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_41_in_arrayCreatorRest4212 = new BitSet(new long[]{0x7F80052200000FD0L,0x000FCC0000000073L});
+    public static final BitSet FOLLOW_42_in_arrayCreatorRest4226 = new BitSet(new long[]{0x0000022000000000L});
+    public static final BitSet FOLLOW_41_in_arrayCreatorRest4229 = new BitSet(new long[]{0x0000040000000000L});
+    public static final BitSet FOLLOW_42_in_arrayCreatorRest4231 = new BitSet(new long[]{0x0000022000000000L});
+    public static final BitSet FOLLOW_arrayInitializer_in_arrayCreatorRest4235 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_expression_in_arrayCreatorRest4249 = new BitSet(new long[]{0x0000040000000000L});
+    public static final BitSet FOLLOW_42_in_arrayCreatorRest4251 = new BitSet(new long[]{0x0000020000000002L});
+    public static final BitSet FOLLOW_41_in_arrayCreatorRest4254 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC0000000073L});
+    public static final BitSet FOLLOW_expression_in_arrayCreatorRest4256 = new BitSet(new long[]{0x0000040000000000L});
+    public static final BitSet FOLLOW_42_in_arrayCreatorRest4258 = new BitSet(new long[]{0x0000020000000002L});
+    public static final BitSet FOLLOW_41_in_arrayCreatorRest4263 = new BitSet(new long[]{0x0000040000000000L});
+    public static final BitSet FOLLOW_42_in_arrayCreatorRest4265 = new BitSet(new long[]{0x0000020000000002L});
+    public static final BitSet FOLLOW_arguments_in_classCreatorRest4288 = new BitSet(new long[]{0x0000002380000002L});
+    public static final BitSet FOLLOW_classBody_in_classCreatorRest4290 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_nonWildcardTypeArguments_in_explicitGenericInvocation4303 = new BitSet(new long[]{0x0000000000000010L,0x0000000000000001L});
+    public static final BitSet FOLLOW_explicitGenericInvocationSuffix_in_explicitGenericInvocation4305 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_33_in_nonWildcardTypeArguments4317 = new BitSet(new long[]{0x7F80000000000010L});
+    public static final BitSet FOLLOW_typeList_in_nonWildcardTypeArguments4319 = new BitSet(new long[]{0x0000000800000000L});
+    public static final BitSet FOLLOW_35_in_nonWildcardTypeArguments4321 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_64_in_explicitGenericInvocationSuffix4333 = new BitSet(new long[]{0x0000000010000000L,0x0000000000000002L});
+    public static final BitSet FOLLOW_superSuffix_in_explicitGenericInvocationSuffix4335 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_Identifier_in_explicitGenericInvocationSuffix4342 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+    public static final BitSet FOLLOW_arguments_in_explicitGenericInvocationSuffix4344 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_28_in_selector4356 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_Identifier_in_selector4358 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000002L});
+    public static final BitSet FOLLOW_arguments_in_selector4361 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_28_in_selector4370 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+    public static final BitSet FOLLOW_114_in_selector4372 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_28_in_selector4379 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
+    public static final BitSet FOLLOW_64_in_selector4381 = new BitSet(new long[]{0x0000000010000000L,0x0000000000000002L});
+    public static final BitSet FOLLOW_superSuffix_in_selector4383 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_28_in_selector4390 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_115_in_selector4392 = new BitSet(new long[]{0x0000000200000010L});
+    public static final BitSet FOLLOW_nonWildcardTypeArguments_in_selector4395 = new BitSet(new long[]{0x0000000200000010L});
+    public static final BitSet FOLLOW_innerCreator_in_selector4399 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_41_in_selector4406 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC0000000073L});
+    public static final BitSet FOLLOW_expression_in_selector4408 = new BitSet(new long[]{0x0000040000000000L});
+    public static final BitSet FOLLOW_42_in_selector4410 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_arguments_in_superSuffix4422 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_28_in_superSuffix4429 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_Identifier_in_superSuffix4431 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000002L});
+    public static final BitSet FOLLOW_arguments_in_superSuffix4434 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_65_in_arguments4450 = new BitSet(new long[]{0x7F82012200000FD0L,0x000FCC00000000F7L});
+    public static final BitSet FOLLOW_expressionList_in_arguments4452 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
+    public static final BitSet FOLLOW_66_in_arguments4455 = 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,0x000FCC0001FDEAF3L});
+    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_90_in_synpred177_Java2900 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC0000000073L});
+    public static final BitSet FOLLOW_constantExpression_in_synpred177_Java2902 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_74_in_synpred177_Java2904 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_90_in_synpred178_Java2911 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_enumConstantName_in_synpred178_Java2913 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_74_in_synpred178_Java2915 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_forVarControl_in_synpred180_Java2960 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_variableModifier_in_synpred185_Java3013 = new BitSet(new long[]{0x7F82000000000010L,0x0000000000000080L});
+    public static final BitSet FOLLOW_type_in_synpred185_Java3016 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_variableDeclarators_in_synpred185_Java3018 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_assignmentOperator_in_synpred188_Java3137 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC0000000073L});
+    public static final BitSet FOLLOW_expression_in_synpred188_Java3139 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_35_in_synpred199_Java3257 = new BitSet(new long[]{0x0000000800000000L});
+    public static final BitSet FOLLOW_35_in_synpred199_Java3259 = new BitSet(new long[]{0x0000100000000000L});
+    public static final BitSet FOLLOW_44_in_synpred199_Java3261 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_relationalOp_in_synpred209_Java3505 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC0000000073L});
+    public static final BitSet FOLLOW_shiftExpression_in_synpred209_Java3507 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_shiftOp_in_synpred213_Java3560 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC0000000073L});
+    public static final BitSet FOLLOW_additiveExpression_in_synpred213_Java3562 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_35_in_synpred215_Java3592 = new BitSet(new long[]{0x0000000800000000L});
+    public static final BitSet FOLLOW_35_in_synpred215_Java3594 = new BitSet(new long[]{0x0000000800000000L});
+    public static final BitSet FOLLOW_35_in_synpred215_Java3596 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_castExpression_in_synpred227_Java3777 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_65_in_synpred231_Java3815 = new BitSet(new long[]{0x7F80000000000010L});
+    public static final BitSet FOLLOW_primitiveType_in_synpred231_Java3817 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
+    public static final BitSet FOLLOW_66_in_synpred231_Java3819 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC0000000073L});
+    public static final BitSet FOLLOW_unaryExpression_in_synpred231_Java3821 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_type_in_synpred232_Java3833 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_28_in_synpred236_Java3900 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_Identifier_in_synpred236_Java3902 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_identifierSuffix_in_synpred237_Java3907 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_28_in_synpred242_Java3960 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_Identifier_in_synpred242_Java3962 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_identifierSuffix_in_synpred243_Java3967 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_41_in_synpred249_Java4030 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC0000000073L});
+    public static final BitSet FOLLOW_expression_in_synpred249_Java4032 = new BitSet(new long[]{0x0000040000000000L});
+    public static final BitSet FOLLOW_42_in_synpred249_Java4034 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_41_in_synpred265_Java4254 = new BitSet(new long[]{0x7F80012200000FD0L,0x000FCC0000000073L});
+    public static final BitSet FOLLOW_expression_in_synpred265_Java4256 = new BitSet(new long[]{0x0000040000000000L});
+    public static final BitSet FOLLOW_42_in_synpred265_Java4258 = new BitSet(new long[]{0x0000000000000002L});
+
 }
\ No newline at end of file

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	2009-02-20 19:24:04 UTC (rev 25369)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g	2009-02-21 00:51:40 UTC (rev 25370)
@@ -1,1067 +1,1083 @@
-/** A Java 1.5 grammar for ANTLR v3 derived from the spec
- *
- *  This is a very close representation of the spec; the changes
- *  are comestic (remove left recursion) and also fixes (the spec
- *  isn't exactly perfect).  I have run this on the 1.4.2 source
- *  and some nasty looking enums from 1.5, but have not really
- *  tested for 1.5 compatibility.
- *
- *  I built this with: java -Xmx100M org.antlr.Tool java.g 
- *  and got two errors that are ok (for now):
- *  java.g:691:9: Decision can match input such as
- *    "'0'..'9'{'E', 'e'}{'+', '-'}'0'..'9'{'D', 'F', 'd', 'f'}"
- *    using multiple alternatives: 3, 4
- *  As a result, alternative(s) 4 were disabled for that input
- *  java.g:734:35: Decision can match input such as "{'$', 'A'..'Z',
- *    '_', 'a'..'z', '\u00C0'..'\u00D6', '\u00D8'..'\u00F6',
- *    '\u00F8'..'\u1FFF', '\u3040'..'\u318F', '\u3300'..'\u337F',
- *    '\u3400'..'\u3D2D', '\u4E00'..'\u9FFF', '\uF900'..'\uFAFF'}"
- *    using multiple alternatives: 1, 2
- *  As a result, alternative(s) 2 were disabled for that input
- *
- *  You can turn enum on/off as a keyword :)
- *
- *  Version 1.0 -- initial release July 5, 2006 (requires 3.0b2 or higher)
- *
- *  Primary author: Terence Parr, July 2006
- *
- *  Version 1.0.1 -- corrections by Koen Vanderkimpen & Marko van Dooren,
- *      October 25, 2006;
- *      fixed normalInterfaceDeclaration: now uses typeParameters instead
- *          of typeParameter (according to JLS, 3rd edition)
- *      fixed castExpression: no longer allows expression next to type
- *          (according to semantics in JLS, in contrast with syntax in JLS)
- *
- *  Version 1.0.2 -- Terence Parr, Nov 27, 2006
- *      java spec I built this from had some bizarre for-loop control.
- *          Looked weird and so I looked elsewhere...Yep, it's messed up.
- *          simplified.
- *
- *  Version 1.0.3 -- Chris Hogue, Feb 26, 2007
- *      Factored out an annotationName rule and used it in the annotation rule.
- *          Not sure why, but typeName wasn't recognizing references to inner
- *          annotations (e.g. @InterfaceName.InnerAnnotation())
- *      Factored out the elementValue section of an annotation reference.  Created 
- *          elementValuePair and elementValuePairs rules, then used them in the 
- *          annotation rule.  Allows it to recognize annotation references with 
- *          multiple, comma separated attributes.
- *      Updated elementValueArrayInitializer so that it allows multiple elements.
- *          (It was only allowing 0 or 1 element).
- *      Updated localVariableDeclaration to allow annotations.  Interestingly the JLS
- *          doesn't appear to indicate this is legal, but it does work as of at least
- *          JDK 1.5.0_06.
- *      Moved the Identifier portion of annotationTypeElementRest to annotationMethodRest.
- *          Because annotationConstantRest already references variableDeclarator which 
- *          has the Identifier portion in it, the parser would fail on constants in 
- *          annotation definitions because it expected two identifiers.  
- *      Added optional trailing ';' to the alternatives in annotationTypeElementRest.
- *          Wouldn't handle an inner interface that has a trailing ';'.
- *      Swapped the expression and type rule reference order in castExpression to 
- *          make it check for genericized casts first.  It was failing to recognize a
- *          statement like  "Class<Byte> TYPE = (Class<Byte>)...;" because it was seeing
- *          'Class<Byte' in the cast expression as a less than expression, then failing 
- *          on the '>'.
- *      Changed createdName to use typeArguments instead of nonWildcardTypeArguments.
- *          Again, JLS doesn't seem to allow this, but java.lang.Class has an example of
- *          of this construct.
- *      Changed the 'this' alternative in primary to allow 'identifierSuffix' rather than
- *          just 'arguments'.  The case it couldn't handle was a call to an explicit
- *          generic method invocation (e.g. this.<E>doSomething()).  Using identifierSuffix
- *          may be overly aggressive--perhaps should create a more constrained thisSuffix rule?
- * 		
- *  Version 1.0.4 -- Hiroaki Nakamura, May 3, 2007
- *
- *	Fixed formalParameterDecls, localVariableDeclaration, forInit,
- *	and forVarControl to use variableModifier* not 'final'? (annotation)?
- */
-grammar Java;
-options {k=2; backtrack=true; memoize=true;}
-
- at parser::header {
-	package org.drools.rule.builder.dialect.java.parser;
-	import java.util.Iterator;
-}
-
- at parser::members {
-	private List identifiers = new ArrayList();
-	public List getIdentifiers() { return identifiers; }
-	private List localDeclarations = new ArrayList();
-	public List getLocalDeclarations() { return localDeclarations; }
-	public static final CommonToken IGNORE_TOKEN = new CommonToken(null,0,99,0,0);
-	private List errors = new ArrayList();
-	private int localVariableLevel = 0;
-	private List modifyBlocks = new ArrayList();
-	public List getModifyBlocks() { return modifyBlocks; }
-	
-	private String source = "unknown";
-	
-	public void setSource(String source) {
-		this.source = source;
-	}
-	
-	public String getSource() {
-		return this.source;
-	}
-		
-	public void reportError(RecognitionException ex) {
-	        // if we've already reported an error and have not matched a token
-                // yet successfully, don't report any errors.
-                if ( state.errorRecovery ) {
-                        //System.err.print("[SPURIOUS] ");
-                        return;
-                }
-                state.errorRecovery = true;
-
-		errors.add( ex ); 
-	}
-     	
-     	/** return the raw RecognitionException errors */
-     	public List getErrors() {
-     		return errors;
-     	}
-     	
-     	/** Return a list of pretty strings summarising the errors */
-     	public List getErrorMessages() {
-     		List messages = new ArrayList();
- 		for ( Iterator errorIter = errors.iterator() ; errorIter.hasNext() ; ) {
-     	     		messages.add( createErrorMessage( (RecognitionException) errorIter.next() ) );
-     	     	}
-     	     	return messages;
-     	}
-     	
-     	/** return true if any parser errors were accumulated */
-     	public boolean hasErrors() {
-  		return ! errors.isEmpty();
-     	}
-     	
-     	/** This will take a RecognitionException, and create a sensible error message out of it */
-     	public String createErrorMessage(RecognitionException e)
-        {
-		StringBuffer message = new StringBuffer();		
-                message.append( source + ":"+e.line+":"+e.charPositionInLine+" ");
-                if ( e instanceof MismatchedTokenException ) {
-                        MismatchedTokenException mte = (MismatchedTokenException)e;
-                        message.append("mismatched token: "+
-                                                           e.token+
-                                                           "; expecting type "+
-                                                           tokenNames[mte.expecting]);
-                }
-                else if ( e instanceof MismatchedTreeNodeException ) {
-                        MismatchedTreeNodeException mtne = (MismatchedTreeNodeException)e;
-                        message.append("mismatched tree node: "+
-                                                           mtne.node+
-                                                           "; expecting type "+
-                                                           tokenNames[mtne.expecting]);
-                }
-                else if ( e instanceof NoViableAltException ) {
-                        NoViableAltException nvae = (NoViableAltException)e;
-			message.append( "Unexpected token '" + e.token.getText() + "'" );
-                        /*
-                        message.append("decision=<<"+nvae.grammarDecisionDescription+">>"+
-                                                           " state "+nvae.stateNumber+
-                                                           " (decision="+nvae.decisionNumber+
-                                                           ") no viable alt; token="+
-                                                           e.token);
-                                                           */
-                }
-                else if ( e instanceof EarlyExitException ) {
-                        EarlyExitException eee = (EarlyExitException)e;
-                        message.append("required (...)+ loop (decision="+
-                                                           eee.decisionNumber+
-                                                           ") did not match anything; token="+
-                                                           e.token);
-                }
-                else if ( e instanceof MismatchedSetException ) {
-                        MismatchedSetException mse = (MismatchedSetException)e;
-                        message.append("mismatched token '"+
-                                                           e.token+
-                                                           "' expecting set "+mse.expecting);
-                }
-                else if ( e instanceof MismatchedNotSetException ) {
-                        MismatchedNotSetException mse = (MismatchedNotSetException)e;
-                        message.append("mismatched token '"+
-                                                           e.token+
-                                                           "' expecting set "+mse.expecting);
-                }
-                else if ( e instanceof FailedPredicateException ) {
-                        FailedPredicateException fpe = (FailedPredicateException)e;
-                        message.append("rule "+fpe.ruleName+" failed predicate: {"+
-                                                           fpe.predicateText+"}?");
-		}
-               	return message.toString();
-        }   
-} 
-
- at lexer::header {
-	package org.drools.rule.builder.dialect.java.parser;
-}
-
- at lexer::members {
-	public static final CommonToken IGNORE_TOKEN = new CommonToken(null,0,99,0,0);
-	protected boolean enumIsKeyword = true;
-}
- 
-
-// starting point for parsing a java file
-compilationUnit
-	:	annotations?
-		packageDeclaration?
-        importDeclaration*
-        typeDeclaration*
-	;
-
-packageDeclaration
-	:	'package' qualifiedName ';'
-	;
-	
-importDeclaration
-	:	'import' 'static'? Identifier ('.' Identifier)* ('.' '*')? ';'
-	;
-	
-typeDeclaration
-	:	classOrInterfaceDeclaration
-    |   ';'
-	;
-	
-classOrInterfaceDeclaration
-	:	modifier* (classDeclaration | interfaceDeclaration)
-	;
-	
-classDeclaration
-	:	normalClassDeclaration
-    |   enumDeclaration
-	;
-	
-normalClassDeclaration
-	:	'class' Identifier (typeParameters)?
-        ('extends' type)?
-        ('implements' typeList)?
-        classBody
-	;
-	
-typeParameters
-	:	'<' typeParameter (',' typeParameter)* '>'
-	;
-
-typeParameter
-	:	Identifier ('extends' bound)?
-	;
-		
-bound
-	:	type ('&' type)*
-	;
-
-enumDeclaration
-	:	ENUM Identifier ('implements' typeList)? enumBody
-	;
-	
-enumBody
-	:	'{' enumConstants? ','? enumBodyDeclarations? '}'
-	;
-
-enumConstants
-	:	enumConstant (',' enumConstant)*
-	;
-	
-enumConstant
-	:	annotations? Identifier (arguments)? (classBody)?
-	;
-	
-enumBodyDeclarations
-	:	';' (classBodyDeclaration)*
-	;
-	
-interfaceDeclaration
-	:	normalInterfaceDeclaration
-		| annotationTypeDeclaration
-	;
-	
-normalInterfaceDeclaration
-	:	'interface' Identifier typeParameters? ('extends' typeList)? interfaceBody
-	;
-	
-typeList
-	:	type (',' type)*
-	;
-	
-classBody
-	:	'{' classBodyDeclaration* '}'
-	;
-	
-interfaceBody
-	:	'{' interfaceBodyDeclaration* '}'
-	;
-
-classBodyDeclaration
-	:	';'
-	|	'static'? block
-	|	modifier* memberDecl
-	;
-	
-memberDecl
-	:	genericMethodOrConstructorDecl
-	|	methodDeclaration
-	|	fieldDeclaration
-	|	'void' Identifier voidMethodDeclaratorRest
-	|	Identifier constructorDeclaratorRest
-	|	interfaceDeclaration
-	|	classDeclaration
-	;
-	
-genericMethodOrConstructorDecl
-	:	typeParameters genericMethodOrConstructorRest
-	;
-	
-genericMethodOrConstructorRest
-	:	(type | 'void') Identifier methodDeclaratorRest
-	|	Identifier constructorDeclaratorRest
-	;
-
-methodDeclaration
-	:	type Identifier methodDeclaratorRest
-	;
-
-fieldDeclaration
-	:	type variableDeclarators ';'
-	;
-		
-interfaceBodyDeclaration
-	:	modifier* interfaceMemberDecl
-	|   ';'
-	;
-
-interfaceMemberDecl
-	:	interfaceMethodOrFieldDecl
-	|   interfaceGenericMethodDecl
-    |   'void' Identifier voidInterfaceMethodDeclaratorRest
-    |   interfaceDeclaration
-    |   classDeclaration
-	;
-	
-interfaceMethodOrFieldDecl
-	:	type Identifier interfaceMethodOrFieldRest
-	;
-	
-interfaceMethodOrFieldRest
-	:	constantDeclaratorsRest ';'
-	|	interfaceMethodDeclaratorRest
-	;
-	
-methodDeclaratorRest
-	:	formalParameters ('[' ']')*
-        ('throws' qualifiedNameList)?
-        (   methodBody
-        |   ';'
-        )
-	;
-	
-voidMethodDeclaratorRest
-	:	formalParameters ('throws' qualifiedNameList)?
-        (   methodBody
-        |   ';'
-        )
-	;
-	
-interfaceMethodDeclaratorRest
-	:	formalParameters ('[' ']')* ('throws' qualifiedNameList)? ';'
-	;
-	
-interfaceGenericMethodDecl
-	:	typeParameters (type | 'void') Identifier
-        interfaceMethodDeclaratorRest
-	;
-	
-voidInterfaceMethodDeclaratorRest
-	:	formalParameters ('throws' qualifiedNameList)? ';'
-	;
-	
-constructorDeclaratorRest
-	:	formalParameters ('throws' qualifiedNameList)? methodBody
-	;
-
-constantDeclarator
-	:	Identifier constantDeclaratorRest
-	;
-	
-variableDeclarators
-	:	variableDeclarator (',' variableDeclarator)*
-	;
-
-variableDeclarator
-	scope {
-		JavaLocalDeclarationDescr.IdentifierDescr ident;
-	}
-	@init {
-		if( this.localVariableLevel == 1 ) { // we only want top level local vars
-			$variableDeclarator::ident = new JavaLocalDeclarationDescr.IdentifierDescr();
-		}
-	}
-	@after {
-	        if( this.localVariableLevel == 1 ) { // we only want top level local vars
-	        	$localVariableDeclaration::descr.addIdentifier( $variableDeclarator::ident );
-	        }
-	}
-	:	id=Identifier rest=variableDeclaratorRest 
-		{ 
-			if( this.localVariableLevel == 1 ) { // we only want top level local vars
-				$variableDeclarator::ident.setIdentifier( $id.text );
-				$variableDeclarator::ident.setStart( ((CommonToken)$id).getStartIndex() - 1 );
-				if( $rest.stop != null ) {
-   					$variableDeclarator::ident.setEnd( ((CommonToken)$rest.stop).getStopIndex() );
-				}
-			}
-		}
-	;
-	
-variableDeclaratorRest
-	:	('[' ']')+ ('=' variableInitializer)?
-	|	'=' variableInitializer
-	|
-	;
-	
-constantDeclaratorsRest
-    :   constantDeclaratorRest (',' constantDeclarator)*
-    ;
-
-constantDeclaratorRest
-	:	('[' ']')* '=' variableInitializer
-	;
-	
-variableDeclaratorId
-	:	Identifier ('[' ']')*
-	;
-
-variableInitializer
-	:	arrayInitializer
-    |   expression
-	;
-	
-arrayInitializer
-	:	'{' (variableInitializer (',' variableInitializer)* (',')? )? '}'
-	;
-
-modifier
-    :   annotation
-    |   'public'
-    |   'protected'
-    |   'private'
-    |   'static'
-    |   'abstract'
-    |   'final'
-    |   'native'
-    |   'synchronized'
-    |   'transient'
-    |   'volatile'
-    |   'strictfp'
-    ;
-
-packageOrTypeName
-	:	Identifier ('.' Identifier)*
-	;
-
-enumConstantName
-    :   Identifier
-    ;
-
-typeName
-	:   Identifier
-    |   packageOrTypeName '.' Identifier
-	;
-
-type
-	:	Identifier (typeArguments)? ('.' Identifier (typeArguments)? )* ('[' ']')*
-	|	primitiveType ('[' ']')*
-	;
-
-primitiveType
-    :   'boolean'
-    |	'char'
-    |	'byte'
-    |	'short'
-    |	'int'
-    |	'long'
-    |	'float'
-    |	'double'
-    ;
-
-variableModifier
-	:	'final'
-    |   annotation
-	;
-
-typeArguments
-	:	'<' typeArgument (',' typeArgument)* '>'
-	;
-	
-typeArgument
-	:	type
-	|	'?' (('extends' | 'super') type)?
-	;
-	
-qualifiedNameList
-	:	qualifiedName (',' qualifiedName)*
-	;
-	
-formalParameters
-	:	'(' formalParameterDecls? ')'
-	;
-	
-formalParameterDecls
-	:	variableModifier* type formalParameterDeclsRest?
-	;
-	
-formalParameterDeclsRest
-	:	variableDeclaratorId (',' formalParameterDecls)?
-	|   '...' variableDeclaratorId
-	;
-	
-methodBody
-	:	block
-	;
-
-qualifiedName
-	:	Identifier ('.' Identifier)*
-	;
-	
-literal	
-	:   integerLiteral
-    |   FloatingPointLiteral
-    |   CharacterLiteral
-    |   StringLiteral
-    |   booleanLiteral
-    |   'null'
-	;
-
-integerLiteral
-    :   HexLiteral
-    |   OctalLiteral
-    |   DecimalLiteral
-    ;
-
-booleanLiteral
-    :   'true'
-    |   'false'
-    ;
-
-// ANNOTATIONS
-
-annotations
-	:	annotation+
-	;
-
-annotation
-	:	'@' annotationName ('(' elementValuePairs? ')')?
-	;
-	
-annotationName
-	: Identifier ('.' Identifier)*
-	;
-	
-elementValuePairs
-	: elementValuePair (',' elementValuePair)*
-	;
-	
-elementValuePair
-	: (Identifier '=')? elementValue
-	;
-	
-elementValue
-	:	conditionalExpression
-	|   annotation
-	|   elementValueArrayInitializer
-	;
-	
-elementValueArrayInitializer
-	:	'{' (elementValue (',' elementValue )*)? '}'
-	;
-	
-annotationTypeDeclaration
-	:	'@' 'interface' Identifier annotationTypeBody
-	;
-	
-annotationTypeBody
-	:	'{' (annotationTypeElementDeclarations)? '}'
-	;
-	
-annotationTypeElementDeclarations
-	:	(annotationTypeElementDeclaration) (annotationTypeElementDeclaration)*
-	;
-	
-annotationTypeElementDeclaration
-	:	(modifier)* annotationTypeElementRest
-	;
-	
-annotationTypeElementRest
-	:	type annotationMethodOrConstantRest ';'
-	|   classDeclaration ';'?
-	|   interfaceDeclaration ';'?
-	|   enumDeclaration ';'?
-	|   annotationTypeDeclaration ';'?
-	;
-	
-annotationMethodOrConstantRest
-	:	annotationMethodRest
-	|   annotationConstantRest
-	;
-	
-annotationMethodRest
- 	:	Identifier '(' ')' (defaultValue)?
- 	;
- 	
-annotationConstantRest
- 	:	variableDeclarators
- 	;
- 	
-defaultValue
- 	:	'default' elementValue
- 	;
-
-// STATEMENTS / BLOCKS
-
-block
-        @init {
-            this.localVariableLevel++;
-        }
-        @after {
-            this.localVariableLevel--;
-        }
-	:	'{' blockStatement* '}'
-	;
-	
-blockStatement
-	:	localVariableDeclaration
-	|	classOrInterfaceDeclaration
-    	|	statement
-	;
-	
-localVariableDeclaration
-scope   {
-            JavaLocalDeclarationDescr descr;
-        }
-        @init {
-            $localVariableDeclaration::descr = new JavaLocalDeclarationDescr();
-        }
-        @after {
-            localDeclarations.add( $localVariableDeclaration::descr );
-        }
-	:	
-	( variableModifier 
-	    { 
-	        $localVariableDeclaration::descr.updateStart( ((CommonToken)$variableModifier.start).getStartIndex() - 1 ); 
-	        $localVariableDeclaration::descr.addModifier( $variableModifier.text ); 
-	    } 
-	)* 
-	type 
-	    { 
-	        $localVariableDeclaration::descr.updateStart( ((CommonToken)$type.start).getStartIndex() - 1 ); 
-	        $localVariableDeclaration::descr.setType( $type.text ); 
-	        $localVariableDeclaration::descr.setEnd( ((CommonToken)$type.stop).getStopIndex() ); 
-	    }
-	variableDeclarators ';'
-	;
-	
-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? ';'
-    // adding support to drools modify block
-    | modifyStatement
-    | ';'
-    | statementExpression ';'
-    | Identifier ':' statement
-	;
-	
-modifyStatement
-	@init {
-	    JavaModifyBlockDescr d = null;
-	}
-	: s='modify' parExpression 
-	{
-	    d = new JavaModifyBlockDescr( $parExpression.text );
-	    d.setStart( ((CommonToken)$s).getStartIndex() );
-	    this.modifyBlocks.add( d );
-	    
-	}
-	'{' ( e = expression { d.getExpressions().add( $e.text ); }
-	       (',' e=expression { d.getExpressions().add( $e.text ); } )*
-	    )? 
-	c='}' 
-        {
-            d.setEnd( ((CommonToken)$c).getStopIndex() ); 
-        }
-	;	
-	
-catches
-	:	catchClause (catchClause)*
-	;
-	
-catchClause
-	:	'catch' '(' formalParameter ')' block
-	;
-
-formalParameter
-	:	variableModifier* type variableDeclaratorId
-	;
-		
-switchBlockStatementGroups
-	:	(switchBlockStatementGroup)*
-	;
-	
-switchBlockStatementGroup
-	:	switchLabel blockStatement*
-	;
-	
-switchLabel
-	:	'case' constantExpression ':'
-	|   'case' enumConstantName ':'
-	|   'default' ':'
-	;
-	
-moreStatementExpressions
-	:	(',' statementExpression)*
-	;
-
-forControl
-options {k=3;} // be efficient for common case: for (ID ID : ID) ...
-	:	forVarControl
-	|	forInit? ';' expression? ';' forUpdate?
-	;
-
-forInit
-        @init {
-            this.localVariableLevel++;
-        }
-        @after {
-            this.localVariableLevel--;
-        }
-	:	variableModifier* type variableDeclarators
-	|	expressionList
-	;
-	
-forVarControl
-	:	variableModifier* type Identifier ':' expression
-	;
-
-forUpdate
-	:	expressionList
-	;
-
-// EXPRESSIONS
-
-parExpression
-	:	'(' expression ')'
-	;
-	
-expressionList
-    :   expression (',' expression)*
-    ;
-
-statementExpression
-	:	expression
-	;
-	
-constantExpression
-	:	expression
-	;
-	
-expression
-	:	conditionalExpression (assignmentOperator expression)?
-	;
-	
-assignmentOperator
-	:	'='
-    |   '+='
-    |   '-='
-    |   '*='
-    |   '/='
-    |   '&='
-    |   '|='
-    |   '^='
-    |   '%='
-    |   '<' '<' '='
-    |   '>' '>' '='
-    |   '>' '>' '>' '='
-	;
-
-conditionalExpression
-    :   conditionalOrExpression ( '?' expression ':' expression )?
-	;
-
-conditionalOrExpression
-    :   conditionalAndExpression ( '||' conditionalAndExpression )*
-	;
-
-conditionalAndExpression
-    :   inclusiveOrExpression ( '&&' inclusiveOrExpression )*
-	;
-
-inclusiveOrExpression
-    :   exclusiveOrExpression ( '|' exclusiveOrExpression )*
-	;
-
-exclusiveOrExpression
-    :   andExpression ( '^' andExpression )*
-	;
-
-andExpression
-    :   equalityExpression ( '&' equalityExpression )*
-	;
-
-equalityExpression
-    :   instanceOfExpression ( ('==' | '!=') instanceOfExpression )*
-	;
-
-instanceOfExpression
-    :   relationalExpression ('instanceof' type)?
-	;
-
-relationalExpression
-    :   shiftExpression ( relationalOp shiftExpression )*
-	;
-	
-relationalOp
-	:	('<' '=' | '>' '=' | '<' | '>')
-	;
-
-shiftExpression
-    :   additiveExpression ( shiftOp additiveExpression )*
-	;
-
-        // TODO: need a sem pred to check column on these >>>
-shiftOp
-	:	('<' '<' | '>' '>' '>' | '>' '>')
-	;
-
-
-additiveExpression
-    :   multiplicativeExpression ( ('+' | '-') multiplicativeExpression )*
-	;
-
-multiplicativeExpression
-    :   unaryExpression ( ( '*' | '/' | '%' ) unaryExpression )*
-	;
-	
-unaryExpression
-    :   '+' unaryExpression
-    |	'-' unaryExpression
-    |   '++' primary
-    |   '--' primary
-    |   unaryExpressionNotPlusMinus
-    ;
-
-unaryExpressionNotPlusMinus
-    :   '~' unaryExpression
-    | 	'!' unaryExpression
-    |   castExpression
-    |   primary selector* ('++'|'--')?
-    ;
-
-castExpression
-    :  '(' primitiveType ')' unaryExpression
-    |  '(' (type | expression) ')' unaryExpressionNotPlusMinus
-    ;
-
-primary
-    :	parExpression
-    |   nonWildcardTypeArguments
-        (explicitGenericInvocationSuffix | 'this' arguments)
-    |   'this' ('.' Identifier)* (identifierSuffix)?
-    |   'super' superSuffix
-    |   literal
-    |   'new' creator
-    |   i=Identifier { if( ! "(".equals( input.LT(1) == null ? "" : input.LT(1).getText() ) ) identifiers.add( $i.text );  } ('.' Identifier)* (identifierSuffix)?
-    |   primitiveType ('[' ']')* '.' 'class'
-    |   'void' '.' 'class'
-	;
-
-identifierSuffix
-	:	('[' ']')+ '.' 'class'
-	|	('[' expression ']')+ // can also be matched by selector, but do here
-    |   arguments
-    |   '.' 'class'
-    |   '.' explicitGenericInvocation
-    |   '.' 'this'
-    |   '.' 'super' arguments
-    |   '.' 'new' (nonWildcardTypeArguments)? innerCreator
-	;
-	
-creator
-	:	nonWildcardTypeArguments? createdName
-        (arrayCreatorRest | classCreatorRest)
-	;
-
-createdName
-	:	Identifier typeArguments?
-        ('.' Identifier typeArguments?)*
-    |	primitiveType
-	;
-	
-innerCreator
-	:	Identifier classCreatorRest
-	;
-
-arrayCreatorRest
-	:	'['
-        (   ']' ('[' ']')* arrayInitializer
-        |   expression ']' ('[' expression ']')* ('[' ']')*
-        )
-	;
-
-classCreatorRest
-	:	arguments classBody?
-	;
-	
-explicitGenericInvocation
-	:	nonWildcardTypeArguments explicitGenericInvocationSuffix
-	;
-	
-nonWildcardTypeArguments
-	:	'<' typeList '>'
-	;
-	
-explicitGenericInvocationSuffix
-	:	'super' superSuffix
-	|   Identifier arguments
-	;
-	
-selector
-	:	'.' Identifier (arguments)?
-	|   '.' 'this'
-	|   '.' 'super' superSuffix
-	|   '.' 'new' (nonWildcardTypeArguments)? innerCreator
-	|   '[' expression ']'
-	;
-	
-superSuffix
-	:	arguments
-	|   '.' Identifier (arguments)?
-    ;
-
-arguments
-	:	'(' expressionList? ')'
-	;
-
-// LEXER
-
-HexLiteral : '0' ('x'|'X') HexDigit+ IntegerTypeSuffix? ;
-
-DecimalLiteral : ('0' | '1'..'9' '0'..'9'*) IntegerTypeSuffix? ;
-
-OctalLiteral : '0' ('0'..'7')+ IntegerTypeSuffix? ;
-
-fragment
-HexDigit : ('0'..'9'|'a'..'f'|'A'..'F') ;
-
-fragment
-IntegerTypeSuffix : ('l'|'L') ;
-
-FloatingPointLiteral
-    :   ('0'..'9')+ '.' ('0'..'9')* Exponent? FloatTypeSuffix?
-    |   '.' ('0'..'9')+ Exponent? FloatTypeSuffix?
-    |   ('0'..'9')+ Exponent FloatTypeSuffix?
-    |   ('0'..'9')+ Exponent? FloatTypeSuffix
-	;
-
-fragment
-Exponent : ('e'|'E') ('+'|'-')? ('0'..'9')+ ;
-
-fragment
-FloatTypeSuffix : ('f'|'F'|'d'|'D') ;
-
-CharacterLiteral
-    :   '\'' ( EscapeSequence | ~('\''|'\\') ) '\''
-    ;
-
-StringLiteral
-    :  '"' ( EscapeSequence | ~('\\'|'"') )* '"'
-    ;
-
-fragment
-EscapeSequence
-    :   '\\' ('b'|'t'|'n'|'f'|'r'|'\"'|'\''|'\\')
-    |   UnicodeEscape
-    |   OctalEscape
-    ;
-
-fragment
-OctalEscape
-    :   '\\' ('0'..'3') ('0'..'7') ('0'..'7')
-    |   '\\' ('0'..'7') ('0'..'7')
-    |   '\\' ('0'..'7')
-    ;
-
-fragment
-UnicodeEscape
-    :   '\\' 'u' HexDigit HexDigit HexDigit HexDigit
-    ;
-
-ENUM:	'enum' {if ( !enumIsKeyword ) $type=Identifier;}
-	;
-	
-Identifier 
-    :   Letter (Letter|JavaIDDigit)*
-    ;
-
-/**I found this char range in JavaCC's grammar, but Letter and Digit overlap.
-   Still works, but...
- */
-fragment
-Letter
-    :  '\u0024' |
-       '\u0041'..'\u005a' |
-       '\u005f' |
-       '\u0061'..'\u007a' |
-       '\u00c0'..'\u00d6' |
-       '\u00d8'..'\u00f6' |
-       '\u00f8'..'\u00ff' |
-       '\u0100'..'\u1fff' |
-       '\u3040'..'\u318f' |
-       '\u3300'..'\u337f' |
-       '\u3400'..'\u3d2d' |
-       '\u4e00'..'\u9fff' |
-       '\uf900'..'\ufaff'
-    ;
-
-fragment
-JavaIDDigit
-    :  '\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'
-   ;
-
-WS  :  (' '|'\r'|'\t'|'\u000C'|'\n') {$channel=HIDDEN;}
-    ;
-
-COMMENT
-    :   '/*' ( options {greedy=false;} : . )* '*/' {$channel=HIDDEN;}
-    ;
-
-LINE_COMMENT
-    : '//' ~('\n'|'\r')* '\r'? '\n' {$channel=HIDDEN;}
-    ;
+/** A Java 1.5 grammar for ANTLR v3 derived from the spec
+ *
+ *  This is a very close representation of the spec; the changes
+ *  are comestic (remove left recursion) and also fixes (the spec
+ *  isn't exactly perfect).  I have run this on the 1.4.2 source
+ *  and some nasty looking enums from 1.5, but have not really
+ *  tested for 1.5 compatibility.
+ *
+ *  I built this with: java -Xmx100M org.antlr.Tool java.g 
+ *  and got two errors that are ok (for now):
+ *  java.g:691:9: Decision can match input such as
+ *    "'0'..'9'{'E', 'e'}{'+', '-'}'0'..'9'{'D', 'F', 'd', 'f'}"
+ *    using multiple alternatives: 3, 4
+ *  As a result, alternative(s) 4 were disabled for that input
+ *  java.g:734:35: Decision can match input such as "{'$', 'A'..'Z',
+ *    '_', 'a'..'z', '\u00C0'..'\u00D6', '\u00D8'..'\u00F6',
+ *    '\u00F8'..'\u1FFF', '\u3040'..'\u318F', '\u3300'..'\u337F',
+ *    '\u3400'..'\u3D2D', '\u4E00'..'\u9FFF', '\uF900'..'\uFAFF'}"
+ *    using multiple alternatives: 1, 2
+ *  As a result, alternative(s) 2 were disabled for that input
+ *
+ *  You can turn enum on/off as a keyword :)
+ *
+ *  Version 1.0 -- initial release July 5, 2006 (requires 3.0b2 or higher)
+ *
+ *  Primary author: Terence Parr, July 2006
+ *
+ *  Version 1.0.1 -- corrections by Koen Vanderkimpen & Marko van Dooren,
+ *      October 25, 2006;
+ *      fixed normalInterfaceDeclaration: now uses typeParameters instead
+ *          of typeParameter (according to JLS, 3rd edition)
+ *      fixed castExpression: no longer allows expression next to type
+ *          (according to semantics in JLS, in contrast with syntax in JLS)
+ *
+ *  Version 1.0.2 -- Terence Parr, Nov 27, 2006
+ *      java spec I built this from had some bizarre for-loop control.
+ *          Looked weird and so I looked elsewhere...Yep, it's messed up.
+ *          simplified.
+ *
+ *  Version 1.0.3 -- Chris Hogue, Feb 26, 2007
+ *      Factored out an annotationName rule and used it in the annotation rule.
+ *          Not sure why, but typeName wasn't recognizing references to inner
+ *          annotations (e.g. @InterfaceName.InnerAnnotation())
+ *      Factored out the elementValue section of an annotation reference.  Created 
+ *          elementValuePair and elementValuePairs rules, then used them in the 
+ *          annotation rule.  Allows it to recognize annotation references with 
+ *          multiple, comma separated attributes.
+ *      Updated elementValueArrayInitializer so that it allows multiple elements.
+ *          (It was only allowing 0 or 1 element).
+ *      Updated localVariableDeclaration to allow annotations.  Interestingly the JLS
+ *          doesn't appear to indicate this is legal, but it does work as of at least
+ *          JDK 1.5.0_06.
+ *      Moved the Identifier portion of annotationTypeElementRest to annotationMethodRest.
+ *          Because annotationConstantRest already references variableDeclarator which 
+ *          has the Identifier portion in it, the parser would fail on constants in 
+ *          annotation definitions because it expected two identifiers.  
+ *      Added optional trailing ';' to the alternatives in annotationTypeElementRest.
+ *          Wouldn't handle an inner interface that has a trailing ';'.
+ *      Swapped the expression and type rule reference order in castExpression to 
+ *          make it check for genericized casts first.  It was failing to recognize a
+ *          statement like  "Class<Byte> TYPE = (Class<Byte>)...;" because it was seeing
+ *          'Class<Byte' in the cast expression as a less than expression, then failing 
+ *          on the '>'.
+ *      Changed createdName to use typeArguments instead of nonWildcardTypeArguments.
+ *          Again, JLS doesn't seem to allow this, but java.lang.Class has an example of
+ *          of this construct.
+ *      Changed the 'this' alternative in primary to allow 'identifierSuffix' rather than
+ *          just 'arguments'.  The case it couldn't handle was a call to an explicit
+ *          generic method invocation (e.g. this.<E>doSomething()).  Using identifierSuffix
+ *          may be overly aggressive--perhaps should create a more constrained thisSuffix rule?
+ * 		
+ *  Version 1.0.4 -- Hiroaki Nakamura, May 3, 2007
+ *
+ *	Fixed formalParameterDecls, localVariableDeclaration, forInit,
+ *	and forVarControl to use variableModifier* not 'final'? (annotation)?
+ */
+grammar Java;
+options {k=2; backtrack=true; memoize=true;}
+
+ at parser::header {
+	package org.drools.rule.builder.dialect.java.parser;
+	import java.util.Iterator;
+}
+
+ at parser::members {
+	private List identifiers = new ArrayList();
+	public List getIdentifiers() { return identifiers; }
+	private List localDeclarations = new ArrayList();
+	public List getLocalDeclarations() { return localDeclarations; }
+	public static final CommonToken IGNORE_TOKEN = new CommonToken(null,0,99,0,0);
+	private List errors = new ArrayList();
+	private int localVariableLevel = 0;
+	private List modifyBlocks = new ArrayList();
+	public List getModifyBlocks() { return modifyBlocks; }
+	private List<JavaExitPointsDescr> exitPoints = new ArrayList<JavaExitPointsDescr>();
+	public List<JavaExitPointsDescr> getExitPoints() { return exitPoints; }
+	
+	private String source = "unknown";
+	
+	public void setSource(String source) {
+		this.source = source;
+	}
+	
+	public String getSource() {
+		return this.source;
+	}
+		
+	public void reportError(RecognitionException ex) {
+	        // if we've already reported an error and have not matched a token
+                // yet successfully, don't report any errors.
+                if ( state.errorRecovery ) {
+                        //System.err.print("[SPURIOUS] ");
+                        return;
+                }
+                state.errorRecovery = true;
+
+		errors.add( ex ); 
+	}
+     	
+     	/** return the raw RecognitionException errors */
+     	public List getErrors() {
+     		return errors;
+     	}
+     	
+     	/** Return a list of pretty strings summarising the errors */
+     	public List getErrorMessages() {
+     		List messages = new ArrayList();
+ 		for ( Iterator errorIter = errors.iterator() ; errorIter.hasNext() ; ) {
+     	     		messages.add( createErrorMessage( (RecognitionException) errorIter.next() ) );
+     	     	}
+     	     	return messages;
+     	}
+     	
+     	/** return true if any parser errors were accumulated */
+     	public boolean hasErrors() {
+  		return ! errors.isEmpty();
+     	}
+     	
+     	/** This will take a RecognitionException, and create a sensible error message out of it */
+     	public String createErrorMessage(RecognitionException e)
+        {
+		StringBuffer message = new StringBuffer();		
+                message.append( source + ":"+e.line+":"+e.charPositionInLine+" ");
+                if ( e instanceof MismatchedTokenException ) {
+                        MismatchedTokenException mte = (MismatchedTokenException)e;
+                        message.append("mismatched token: "+
+                                                           e.token+
+                                                           "; expecting type "+
+                                                           tokenNames[mte.expecting]);
+                }
+                else if ( e instanceof MismatchedTreeNodeException ) {
+                        MismatchedTreeNodeException mtne = (MismatchedTreeNodeException)e;
+                        message.append("mismatched tree node: "+
+                                                           mtne.node+
+                                                           "; expecting type "+
+                                                           tokenNames[mtne.expecting]);
+                }
+                else if ( e instanceof NoViableAltException ) {
+                        NoViableAltException nvae = (NoViableAltException)e;
+			message.append( "Unexpected token '" + e.token.getText() + "'" );
+                        /*
+                        message.append("decision=<<"+nvae.grammarDecisionDescription+">>"+
+                                                           " state "+nvae.stateNumber+
+                                                           " (decision="+nvae.decisionNumber+
+                                                           ") no viable alt; token="+
+                                                           e.token);
+                                                           */
+                }
+                else if ( e instanceof EarlyExitException ) {
+                        EarlyExitException eee = (EarlyExitException)e;
+                        message.append("required (...)+ loop (decision="+
+                                                           eee.decisionNumber+
+                                                           ") did not match anything; token="+
+                                                           e.token);
+                }
+                else if ( e instanceof MismatchedSetException ) {
+                        MismatchedSetException mse = (MismatchedSetException)e;
+                        message.append("mismatched token '"+
+                                                           e.token+
+                                                           "' expecting set "+mse.expecting);
+                }
+                else if ( e instanceof MismatchedNotSetException ) {
+                        MismatchedNotSetException mse = (MismatchedNotSetException)e;
+                        message.append("mismatched token '"+
+                                                           e.token+
+                                                           "' expecting set "+mse.expecting);
+                }
+                else if ( e instanceof FailedPredicateException ) {
+                        FailedPredicateException fpe = (FailedPredicateException)e;
+                        message.append("rule "+fpe.ruleName+" failed predicate: {"+
+                                                           fpe.predicateText+"}?");
+		}
+               	return message.toString();
+        }   
+} 
+
+ at lexer::header {
+	package org.drools.rule.builder.dialect.java.parser;
+}
+
+ at lexer::members {
+	public static final CommonToken IGNORE_TOKEN = new CommonToken(null,0,99,0,0);
+	protected boolean enumIsKeyword = true;
+}
+ 
+
+// starting point for parsing a java file
+compilationUnit
+	:	annotations?
+		packageDeclaration?
+        importDeclaration*
+        typeDeclaration*
+	;
+
+packageDeclaration
+	:	'package' qualifiedName ';'
+	;
+	
+importDeclaration
+	:	'import' 'static'? Identifier ('.' Identifier)* ('.' '*')? ';'
+	;
+	
+typeDeclaration
+	:	classOrInterfaceDeclaration
+    |   ';'
+	;
+	
+classOrInterfaceDeclaration
+	:	modifier* (classDeclaration | interfaceDeclaration)
+	;
+	
+classDeclaration
+	:	normalClassDeclaration
+    |   enumDeclaration
+	;
+	
+normalClassDeclaration
+	:	'class' Identifier (typeParameters)?
+        ('extends' type)?
+        ('implements' typeList)?
+        classBody
+	;
+	
+typeParameters
+	:	'<' typeParameter (',' typeParameter)* '>'
+	;
+
+typeParameter
+	:	Identifier ('extends' bound)?
+	;
+		
+bound
+	:	type ('&' type)*
+	;
+
+enumDeclaration
+	:	ENUM Identifier ('implements' typeList)? enumBody
+	;
+	
+enumBody
+	:	'{' enumConstants? ','? enumBodyDeclarations? '}'
+	;
+
+enumConstants
+	:	enumConstant (',' enumConstant)*
+	;
+	
+enumConstant
+	:	annotations? Identifier (arguments)? (classBody)?
+	;
+	
+enumBodyDeclarations
+	:	';' (classBodyDeclaration)*
+	;
+	
+interfaceDeclaration
+	:	normalInterfaceDeclaration
+		| annotationTypeDeclaration
+	;
+	
+normalInterfaceDeclaration
+	:	'interface' Identifier typeParameters? ('extends' typeList)? interfaceBody
+	;
+	
+typeList
+	:	type (',' type)*
+	;
+	
+classBody
+	:	'{' classBodyDeclaration* '}'
+	;
+	
+interfaceBody
+	:	'{' interfaceBodyDeclaration* '}'
+	;
+
+classBodyDeclaration
+	:	';'
+	|	'static'? block
+	|	modifier* memberDecl
+	;
+	
+memberDecl
+	:	genericMethodOrConstructorDecl
+	|	methodDeclaration
+	|	fieldDeclaration
+	|	'void' Identifier voidMethodDeclaratorRest
+	|	Identifier constructorDeclaratorRest
+	|	interfaceDeclaration
+	|	classDeclaration
+	;
+	
+genericMethodOrConstructorDecl
+	:	typeParameters genericMethodOrConstructorRest
+	;
+	
+genericMethodOrConstructorRest
+	:	(type | 'void') Identifier methodDeclaratorRest
+	|	Identifier constructorDeclaratorRest
+	;
+
+methodDeclaration
+	:	type Identifier methodDeclaratorRest
+	;
+
+fieldDeclaration
+	:	type variableDeclarators ';'
+	;
+		
+interfaceBodyDeclaration
+	:	modifier* interfaceMemberDecl
+	|   ';'
+	;
+
+interfaceMemberDecl
+	:	interfaceMethodOrFieldDecl
+	|   interfaceGenericMethodDecl
+    |   'void' Identifier voidInterfaceMethodDeclaratorRest
+    |   interfaceDeclaration
+    |   classDeclaration
+	;
+	
+interfaceMethodOrFieldDecl
+	:	type Identifier interfaceMethodOrFieldRest
+	;
+	
+interfaceMethodOrFieldRest
+	:	constantDeclaratorsRest ';'
+	|	interfaceMethodDeclaratorRest
+	;
+	
+methodDeclaratorRest
+	:	formalParameters ('[' ']')*
+        ('throws' qualifiedNameList)?
+        (   methodBody
+        |   ';'
+        )
+	;
+	
+voidMethodDeclaratorRest
+	:	formalParameters ('throws' qualifiedNameList)?
+        (   methodBody
+        |   ';'
+        )
+	;
+	
+interfaceMethodDeclaratorRest
+	:	formalParameters ('[' ']')* ('throws' qualifiedNameList)? ';'
+	;
+	
+interfaceGenericMethodDecl
+	:	typeParameters (type | 'void') Identifier
+        interfaceMethodDeclaratorRest
+	;
+	
+voidInterfaceMethodDeclaratorRest
+	:	formalParameters ('throws' qualifiedNameList)? ';'
+	;
+	
+constructorDeclaratorRest
+	:	formalParameters ('throws' qualifiedNameList)? methodBody
+	;
+
+constantDeclarator
+	:	Identifier constantDeclaratorRest
+	;
+	
+variableDeclarators
+	:	variableDeclarator (',' variableDeclarator)*
+	;
+
+variableDeclarator
+	scope {
+		JavaLocalDeclarationDescr.IdentifierDescr ident;
+	}
+	@init {
+		if( this.localVariableLevel == 1 ) { // we only want top level local vars
+			$variableDeclarator::ident = new JavaLocalDeclarationDescr.IdentifierDescr();
+		}
+	}
+	@after {
+	        if( this.localVariableLevel == 1 ) { // we only want top level local vars
+	        	$localVariableDeclaration::descr.addIdentifier( $variableDeclarator::ident );
+	        }
+	}
+	:	id=Identifier rest=variableDeclaratorRest 
+		{ 
+			if( this.localVariableLevel == 1 ) { // we only want top level local vars
+				$variableDeclarator::ident.setIdentifier( $id.text );
+				$variableDeclarator::ident.setStart( ((CommonToken)$id).getStartIndex() - 1 );
+				if( $rest.stop != null ) {
+   					$variableDeclarator::ident.setEnd( ((CommonToken)$rest.stop).getStopIndex() );
+				}
+			}
+		}
+	;
+	
+variableDeclaratorRest
+	:	('[' ']')+ ('=' variableInitializer)?
+	|	'=' variableInitializer
+	|
+	;
+	
+constantDeclaratorsRest
+    :   constantDeclaratorRest (',' constantDeclarator)*
+    ;
+
+constantDeclaratorRest
+	:	('[' ']')* '=' variableInitializer
+	;
+	
+variableDeclaratorId
+	:	Identifier ('[' ']')*
+	;
+
+variableInitializer
+	:	arrayInitializer
+    |   expression
+	;
+	
+arrayInitializer
+	:	'{' (variableInitializer (',' variableInitializer)* (',')? )? '}'
+	;
+
+modifier
+    :   annotation
+    |   'public'
+    |   'protected'
+    |   'private'
+    |   'static'
+    |   'abstract'
+    |   'final'
+    |   'native'
+    |   'synchronized'
+    |   'transient'
+    |   'volatile'
+    |   'strictfp'
+    ;
+
+packageOrTypeName
+	:	Identifier ('.' Identifier)*
+	;
+
+enumConstantName
+    :   Identifier
+    ;
+
+typeName
+	:   Identifier
+    |   packageOrTypeName '.' Identifier
+	;
+
+type
+	:	Identifier (typeArguments)? ('.' Identifier (typeArguments)? )* ('[' ']')*
+	|	primitiveType ('[' ']')*
+	;
+
+primitiveType
+    :   'boolean'
+    |	'char'
+    |	'byte'
+    |	'short'
+    |	'int'
+    |	'long'
+    |	'float'
+    |	'double'
+    ;
+
+variableModifier
+	:	'final'
+    |   annotation
+	;
+
+typeArguments
+	:	'<' typeArgument (',' typeArgument)* '>'
+	;
+	
+typeArgument
+	:	type
+	|	'?' (('extends' | 'super') type)?
+	;
+	
+qualifiedNameList
+	:	qualifiedName (',' qualifiedName)*
+	;
+	
+formalParameters
+	:	'(' formalParameterDecls? ')'
+	;
+	
+formalParameterDecls
+	:	variableModifier* type formalParameterDeclsRest?
+	;
+	
+formalParameterDeclsRest
+	:	variableDeclaratorId (',' formalParameterDecls)?
+	|   '...' variableDeclaratorId
+	;
+	
+methodBody
+	:	block
+	;
+
+qualifiedName
+	:	Identifier ('.' Identifier)*
+	;
+	
+literal	
+	:   integerLiteral
+    |   FloatingPointLiteral
+    |   CharacterLiteral
+    |   StringLiteral
+    |   booleanLiteral
+    |   'null'
+	;
+
+integerLiteral
+    :   HexLiteral
+    |   OctalLiteral
+    |   DecimalLiteral
+    ;
+
+booleanLiteral
+    :   'true'
+    |   'false'
+    ;
+
+// ANNOTATIONS
+
+annotations
+	:	annotation+
+	;
+
+annotation
+	:	'@' annotationName ('(' elementValuePairs? ')')?
+	;
+	
+annotationName
+	: Identifier ('.' Identifier)*
+	;
+	
+elementValuePairs
+	: elementValuePair (',' elementValuePair)*
+	;
+	
+elementValuePair
+	: (Identifier '=')? elementValue
+	;
+	
+elementValue
+	:	conditionalExpression
+	|   annotation
+	|   elementValueArrayInitializer
+	;
+	
+elementValueArrayInitializer
+	:	'{' (elementValue (',' elementValue )*)? '}'
+	;
+	
+annotationTypeDeclaration
+	:	'@' 'interface' Identifier annotationTypeBody
+	;
+	
+annotationTypeBody
+	:	'{' (annotationTypeElementDeclarations)? '}'
+	;
+	
+annotationTypeElementDeclarations
+	:	(annotationTypeElementDeclaration) (annotationTypeElementDeclaration)*
+	;
+	
+annotationTypeElementDeclaration
+	:	(modifier)* annotationTypeElementRest
+	;
+	
+annotationTypeElementRest
+	:	type annotationMethodOrConstantRest ';'
+	|   classDeclaration ';'?
+	|   interfaceDeclaration ';'?
+	|   enumDeclaration ';'?
+	|   annotationTypeDeclaration ';'?
+	;
+	
+annotationMethodOrConstantRest
+	:	annotationMethodRest
+	|   annotationConstantRest
+	;
+	
+annotationMethodRest
+ 	:	Identifier '(' ')' (defaultValue)?
+ 	;
+ 	
+annotationConstantRest
+ 	:	variableDeclarators
+ 	;
+ 	
+defaultValue
+ 	:	'default' elementValue
+ 	;
+
+// STATEMENTS / BLOCKS
+
+block
+        @init {
+            this.localVariableLevel++;
+        }
+        @after {
+            this.localVariableLevel--;
+        }
+	:	'{' blockStatement* '}'
+	;
+	
+blockStatement
+	:	localVariableDeclaration
+	|	classOrInterfaceDeclaration
+    	|	statement
+	;
+	
+localVariableDeclaration
+scope   {
+            JavaLocalDeclarationDescr descr;
+        }
+        @init {
+            $localVariableDeclaration::descr = new JavaLocalDeclarationDescr();
+        }
+        @after {
+            localDeclarations.add( $localVariableDeclaration::descr );
+        }
+	:	
+	( variableModifier 
+	    { 
+	        $localVariableDeclaration::descr.updateStart( ((CommonToken)$variableModifier.start).getStartIndex() - 1 ); 
+	        $localVariableDeclaration::descr.addModifier( $variableModifier.text ); 
+	    } 
+	)* 
+	type 
+	    { 
+	        $localVariableDeclaration::descr.updateStart( ((CommonToken)$type.start).getStartIndex() - 1 ); 
+	        $localVariableDeclaration::descr.setType( $type.text ); 
+	        $localVariableDeclaration::descr.setEnd( ((CommonToken)$type.stop).getStopIndex() ); 
+	    }
+	variableDeclarators ';'
+	;
+	
+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? ';'
+    // adding support to drools modify block
+    | modifyStatement
+    | exitPointsStatement
+    | ';'
+    | statementExpression ';'
+    | Identifier ':' statement
+	;
+	
+modifyStatement
+	@init {
+	    JavaModifyBlockDescr d = null;
+	}
+	: s='modify' parExpression 
+	{
+	    d = new JavaModifyBlockDescr( $parExpression.text );
+	    d.setStart( ((CommonToken)$s).getStartIndex() );
+	    this.modifyBlocks.add( d );
+	    
+	}
+	'{' ( e = expression { d.getExpressions().add( $e.text ); }
+	       (',' e=expression { d.getExpressions().add( $e.text ); } )*
+	    )? 
+	c='}' 
+        {
+            d.setEnd( ((CommonToken)$c).getStopIndex() ); 
+        }
+	;	
+	
+exitPointsStatement
+	@init {
+	    JavaExitPointsDescr d = null;
+	}
+        : s='exitPoints' '[' id=StringLiteral c=']' 
+        {
+	    d = new JavaExitPointsDescr( $id.text );
+	    d.setStart( ((CommonToken)$s).getStartIndex() );
+            d.setEnd( ((CommonToken)$c).getStopIndex() ); 
+	    this.exitPoints.add( d );
+        }
+        ;	
+	
+catches
+	:	catchClause (catchClause)*
+	;
+	
+catchClause
+	:	'catch' '(' formalParameter ')' block
+	;
+
+formalParameter
+	:	variableModifier* type variableDeclaratorId
+	;
+		
+switchBlockStatementGroups
+	:	(switchBlockStatementGroup)*
+	;
+	
+switchBlockStatementGroup
+	:	switchLabel blockStatement*
+	;
+	
+switchLabel
+	:	'case' constantExpression ':'
+	|   'case' enumConstantName ':'
+	|   'default' ':'
+	;
+	
+moreStatementExpressions
+	:	(',' statementExpression)*
+	;
+
+forControl
+options {k=3;} // be efficient for common case: for (ID ID : ID) ...
+	:	forVarControl
+	|	forInit? ';' expression? ';' forUpdate?
+	;
+
+forInit
+        @init {
+            this.localVariableLevel++;
+        }
+        @after {
+            this.localVariableLevel--;
+        }
+	:	variableModifier* type variableDeclarators
+	|	expressionList
+	;
+	
+forVarControl
+	:	variableModifier* type Identifier ':' expression
+	;
+
+forUpdate
+	:	expressionList
+	;
+
+// EXPRESSIONS
+
+parExpression
+	:	'(' expression ')'
+	;
+	
+expressionList
+    :   expression (',' expression)*
+    ;
+
+statementExpression
+	:	expression
+	;
+	
+constantExpression
+	:	expression
+	;
+	
+expression
+	:	conditionalExpression (assignmentOperator expression)?
+	;
+	
+assignmentOperator
+	:	'='
+    |   '+='
+    |   '-='
+    |   '*='
+    |   '/='
+    |   '&='
+    |   '|='
+    |   '^='
+    |   '%='
+    |   '<' '<' '='
+    |   '>' '>' '='
+    |   '>' '>' '>' '='
+	;
+
+conditionalExpression
+    :   conditionalOrExpression ( '?' expression ':' expression )?
+	;
+
+conditionalOrExpression
+    :   conditionalAndExpression ( '||' conditionalAndExpression )*
+	;
+
+conditionalAndExpression
+    :   inclusiveOrExpression ( '&&' inclusiveOrExpression )*
+	;
+
+inclusiveOrExpression
+    :   exclusiveOrExpression ( '|' exclusiveOrExpression )*
+	;
+
+exclusiveOrExpression
+    :   andExpression ( '^' andExpression )*
+	;
+
+andExpression
+    :   equalityExpression ( '&' equalityExpression )*
+	;
+
+equalityExpression
+    :   instanceOfExpression ( ('==' | '!=') instanceOfExpression )*
+	;
+
+instanceOfExpression
+    :   relationalExpression ('instanceof' type)?
+	;
+
+relationalExpression
+    :   shiftExpression ( relationalOp shiftExpression )*
+	;
+	
+relationalOp
+	:	('<' '=' | '>' '=' | '<' | '>')
+	;
+
+shiftExpression
+    :   additiveExpression ( shiftOp additiveExpression )*
+	;
+
+        // TODO: need a sem pred to check column on these >>>
+shiftOp
+	:	('<' '<' | '>' '>' '>' | '>' '>')
+	;
+
+
+additiveExpression
+    :   multiplicativeExpression ( ('+' | '-') multiplicativeExpression )*
+	;
+
+multiplicativeExpression
+    :   unaryExpression ( ( '*' | '/' | '%' ) unaryExpression )*
+	;
+	
+unaryExpression
+    :   '+' unaryExpression
+    |	'-' unaryExpression
+    |   '++' primary
+    |   '--' primary
+    |   unaryExpressionNotPlusMinus
+    ;
+
+unaryExpressionNotPlusMinus
+    :   '~' unaryExpression
+    | 	'!' unaryExpression
+    |   castExpression
+    |   primary selector* ('++'|'--')?
+    ;
+
+castExpression
+    :  '(' primitiveType ')' unaryExpression
+    |  '(' (type | expression) ')' unaryExpressionNotPlusMinus
+    ;
+
+primary
+    :	parExpression
+    |   nonWildcardTypeArguments
+        (explicitGenericInvocationSuffix | 'this' arguments)
+    |   'this' ('.' Identifier)* (identifierSuffix)?
+    |   'super' superSuffix
+    |   literal
+    |   'new' creator
+    |   i=Identifier { if( ! "(".equals( input.LT(1) == null ? "" : input.LT(1).getText() ) ) identifiers.add( $i.text );  } ('.' Identifier)* (identifierSuffix)?
+    |   primitiveType ('[' ']')* '.' 'class'
+    |   'void' '.' 'class'
+	;
+
+identifierSuffix
+	:	('[' ']')+ '.' 'class'
+	|	('[' expression ']')+ // can also be matched by selector, but do here
+    |   arguments
+    |   '.' 'class'
+    |   '.' explicitGenericInvocation
+    |   '.' 'this'
+    |   '.' 'super' arguments
+    |   '.' 'new' (nonWildcardTypeArguments)? innerCreator
+	;
+	
+creator
+	:	nonWildcardTypeArguments? createdName
+        (arrayCreatorRest | classCreatorRest)
+	;
+
+createdName
+	:	Identifier typeArguments?
+        ('.' Identifier typeArguments?)*
+    |	primitiveType
+	;
+	
+innerCreator
+	:	Identifier classCreatorRest
+	;
+
+arrayCreatorRest
+	:	'['
+        (   ']' ('[' ']')* arrayInitializer
+        |   expression ']' ('[' expression ']')* ('[' ']')*
+        )
+	;
+
+classCreatorRest
+	:	arguments classBody?
+	;
+	
+explicitGenericInvocation
+	:	nonWildcardTypeArguments explicitGenericInvocationSuffix
+	;
+	
+nonWildcardTypeArguments
+	:	'<' typeList '>'
+	;
+	
+explicitGenericInvocationSuffix
+	:	'super' superSuffix
+	|   Identifier arguments
+	;
+	
+selector
+	:	'.' Identifier (arguments)?
+	|   '.' 'this'
+	|   '.' 'super' superSuffix
+	|   '.' 'new' (nonWildcardTypeArguments)? innerCreator
+	|   '[' expression ']'
+	;
+	
+superSuffix
+	:	arguments
+	|   '.' Identifier (arguments)?
+    ;
+
+arguments
+	:	'(' expressionList? ')'
+	;
+
+// LEXER
+
+HexLiteral : '0' ('x'|'X') HexDigit+ IntegerTypeSuffix? ;
+
+DecimalLiteral : ('0' | '1'..'9' '0'..'9'*) IntegerTypeSuffix? ;
+
+OctalLiteral : '0' ('0'..'7')+ IntegerTypeSuffix? ;
+
+fragment
+HexDigit : ('0'..'9'|'a'..'f'|'A'..'F') ;
+
+fragment
+IntegerTypeSuffix : ('l'|'L') ;
+
+FloatingPointLiteral
+    :   ('0'..'9')+ '.' ('0'..'9')* Exponent? FloatTypeSuffix?
+    |   '.' ('0'..'9')+ Exponent? FloatTypeSuffix?
+    |   ('0'..'9')+ Exponent FloatTypeSuffix?
+    |   ('0'..'9')+ Exponent? FloatTypeSuffix
+	;
+
+fragment
+Exponent : ('e'|'E') ('+'|'-')? ('0'..'9')+ ;
+
+fragment
+FloatTypeSuffix : ('f'|'F'|'d'|'D') ;
+
+CharacterLiteral
+    :   '\'' ( EscapeSequence | ~('\''|'\\') ) '\''
+    ;
+
+StringLiteral
+    :  '"' ( EscapeSequence | ~('\\'|'"') )* '"'
+    ;
+
+fragment
+EscapeSequence
+    :   '\\' ('b'|'t'|'n'|'f'|'r'|'\"'|'\''|'\\')
+    |   UnicodeEscape
+    |   OctalEscape
+    ;
+
+fragment
+OctalEscape
+    :   '\\' ('0'..'3') ('0'..'7') ('0'..'7')
+    |   '\\' ('0'..'7') ('0'..'7')
+    |   '\\' ('0'..'7')
+    ;
+
+fragment
+UnicodeEscape
+    :   '\\' 'u' HexDigit HexDigit HexDigit HexDigit
+    ;
+
+ENUM:	'enum' {if ( !enumIsKeyword ) $type=Identifier;}
+	;
+	
+Identifier 
+    :   Letter (Letter|JavaIDDigit)*
+    ;
+
+/**I found this char range in JavaCC's grammar, but Letter and Digit overlap.
+   Still works, but...
+ */
+fragment
+Letter
+    :  '\u0024' |
+       '\u0041'..'\u005a' |
+       '\u005f' |
+       '\u0061'..'\u007a' |
+       '\u00c0'..'\u00d6' |
+       '\u00d8'..'\u00f6' |
+       '\u00f8'..'\u00ff' |
+       '\u0100'..'\u1fff' |
+       '\u3040'..'\u318f' |
+       '\u3300'..'\u337f' |
+       '\u3400'..'\u3d2d' |
+       '\u4e00'..'\u9fff' |
+       '\uf900'..'\ufaff'
+    ;
+
+fragment
+JavaIDDigit
+    :  '\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'
+   ;
+
+WS  :  (' '|'\r'|'\t'|'\u000C'|'\n') {$channel=HIDDEN;}
+    ;
+
+COMMENT
+    :   '/*' ( options {greedy=false;} : . )* '*/' {$channel=HIDDEN;}
+    ;
+
+LINE_COMMENT
+    : '//' ~('\n'|'\r')* '\r'? '\n' {$channel=HIDDEN;}
+    ;

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	2009-02-20 19:24:04 UTC (rev 25369)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/Tree2TestDRL.java	2009-02-21 00:51:40 UTC (rev 25370)
@@ -1,4 +1,4 @@
-// $ANTLR 3.1.1 src/main/resources/org/drools/lang/Tree2TestDRL.g 2009-02-11 15:20:23
+// $ANTLR 3.1.1 src/main/resources/org/drools/lang/Tree2TestDRL.g 2009-02-20 18:38:45
 
 	package org.drools.lang;
 

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/JavaConsequenceBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/JavaConsequenceBuilderTest.java	2009-02-20 19:24:04 UTC (rev 25369)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/JavaConsequenceBuilderTest.java	2009-02-21 00:51:40 UTC (rev 25370)
@@ -26,41 +26,76 @@
 
     protected void setUp() throws Exception {
         super.setUp();
-        
+    }
+
+    protected void tearDown() throws Exception {
+        super.tearDown();
+    }
+
+    private void setupTest(String consequence) {
         builder = new JavaConsequenceBuilder();
 
         Package pkg = new Package( "org.drools" );
         pkg.addImport( new ImportDeclaration( "org.drools.Cheese" ) );
-        
+
         PackageBuilderConfiguration conf = new PackageBuilderConfiguration();
-        PackageBuilder pkgBuilder = new PackageBuilder( pkg, conf );
+        PackageBuilder pkgBuilder = new PackageBuilder( pkg,
+                                                        conf );
 
-        String consequence = " System.out.println(\"this is a test\");\n " + " modify( $cheese ) { setPrice( 10 ), setAge( age ) }\n " + " System.out.println(\"we are done\");\n ";
-        ruleDescr = new RuleDescr( "test modify block" );
+        ruleDescr = new RuleDescr( "test consequence builder" );
         ruleDescr.setConsequence( consequence );
-        
+
         Rule rule = new Rule( ruleDescr.getName() );
-        rule.addPattern( new Pattern(0, new ClassObjectType(Cheese.class), "$cheese") );
+        rule.addPattern( new Pattern( 0,
+                                      new ClassObjectType( Cheese.class ),
+                                      "$cheese" ) );
 
         PackageRegistry pkgRegistry = pkgBuilder.getPackageRegistry( pkg.getName() );
         DialectCompiletimeRegistry reg = pkgBuilder.getPackageRegistry( pkg.getName() ).getDialectCompiletimeRegistry();
         context = new RuleBuildContext( pkgBuilder,
                                         ruleDescr,
                                         reg,
-                                        pkg,                                        
+                                        pkg,
                                         reg.getDialect( pkgRegistry.getDialect() ) );
         context.getBuildStack().push( rule.getLhs() );
     }
 
-    protected void tearDown() throws Exception {
-        super.tearDown();
+    public void testFixExitPointsReferences() {
+        String consequence = " System.out.println(\"this is a test\");\n " + 
+                             " exitPoints[\"foo\"].insert( new Cheese() );\n " + 
+                             " System.out.println(\"we are done with exitPoints\");\n ";
+        setupTest( consequence );
+        try {
+            JavaExprAnalyzer analyzer = new JavaExprAnalyzer();
+            JavaAnalysisResult analysis = (JavaAnalysisResult) analyzer.analyzeBlock( (String) ruleDescr.getConsequence(),
+                                                                                      new Set[]{} );
+
+            String fixed = builder.fixExitPointsReferences( context,
+                                                            analysis,
+                                                            (String) ruleDescr.getConsequence() );
+
+            String expected = " System.out.println(\"this is a test\");\n " + 
+                              " exitPoints.get(\"foo\").insert( new Cheese() );\n " + 
+                              " System.out.println(\"we are done with exitPoints\");\n ";
+
+            System.out.println( "=============================" );
+            System.out.println( ruleDescr.getConsequence() );
+            System.out.println( "=============================" );
+            System.out.println( fixed );
+
+            assertNotNull( context.getErrors().toString(),
+                           fixed );
+            assertEqualsIgnoreSpaces( expected,
+                                      fixed );
+        } catch ( RecognitionException e ) {
+            e.printStackTrace();
+        }
+
     }
 
-    public void testDummy() {}
-    
-    // this test requires mvel 1.2.19. Leaving it commented until mvel is released.
     public void testFixModifyBlocks() {
-
+        String consequence = " System.out.println(\"this is a test\");\n " + " modify( $cheese ) { setPrice( 10 ), setAge( age ) }\n " + " System.out.println(\"we are done\");\n ";
+        setupTest( consequence );
         try {
             JavaExprAnalyzer analyzer = new JavaExprAnalyzer();
             JavaAnalysisResult analysis = (JavaAnalysisResult) analyzer.analyzeBlock( (String) ruleDescr.getConsequence(),
@@ -69,22 +104,19 @@
             String fixed = builder.fixModifyBlocks( context,
                                                     analysis,
                                                     (String) ruleDescr.getConsequence() );
-            
-            String expected = " System.out.println(\"this is a test\");\n"+
-                              "{ org.drools.Cheese __obj__ = (org.drools.Cheese) ( $cheese );\n" +
-                              "modifyRetract( __obj__ );\n"+
-                              "__obj__.setPrice( 10 );\n"+
-                              "__obj__.setAge( age );\n"+
-                              "modifyInsert( __obj__ );}\n"+
-                              "System.out.println(\"we are done\");\n";
-            
-            assertNotNull( context.getErrors().toString(), fixed );
-            assertEqualsIgnoreSpaces( expected, fixed );
-//            System.out.println( "=============================" );
-//            System.out.println( ruleDescr.getConsequence() );
-//            System.out.println( "=============================" );
-//            System.out.println( fixed );
 
+            String expected = " System.out.println(\"this is a test\");\n" + "{ org.drools.Cheese __obj__ = (org.drools.Cheese) ( $cheese );\n" + "modifyRetract( __obj__ );\n" + "__obj__.setPrice( 10 );\n" + "__obj__.setAge( age );\n"
+                              + "modifyInsert( __obj__ );}\n" + "System.out.println(\"we are done\");\n";
+
+            assertNotNull( context.getErrors().toString(),
+                           fixed );
+            assertEqualsIgnoreSpaces( expected,
+                                      fixed );
+            //            System.out.println( "=============================" );
+            //            System.out.println( ruleDescr.getConsequence() );
+            //            System.out.println( "=============================" );
+            //            System.out.println( fixed );
+
         } catch ( RecognitionException e ) {
             e.printStackTrace();
         }
@@ -93,7 +125,10 @@
 
     private void assertEqualsIgnoreSpaces(String expected,
                                           String fixed) {
-        assertEquals( expected.replaceAll( "\\s+", "" ), fixed.replaceAll( "\\s+", "" ) );
+        assertEquals( expected.replaceAll( "\\s+",
+                                           "" ),
+                      fixed.replaceAll( "\\s+",
+                                        "" ) );
     }
 
 }




More information about the jboss-svn-commits mailing list