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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sat Feb 21 10:49:57 EST 2009


Author: tirelli
Date: 2009-02-21 10:49:56 -0500 (Sat, 21 Feb 2009)
New Revision: 25376

Added:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/parser/JavaBlockDescr.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/parser/JavaInterfacePointsDescr.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/conf/
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/conf/KnowledgeBaseConfigurationTest.java
Modified:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLParser.java
   labs/jbossrules/trunk/drools-compiler/src/main/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/AbstractJavaRuleBuilder.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/JavaModifyBlockDescr.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
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/MockWorkingMemory.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/DefaultKnowledgeHelper.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/SequentialKnowledgeHelper.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalWorkingMemory.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalWorkingMemoryActions.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/KnowledgeHelper.java
Log:
Adding support for exitPoints and entryPoints syntax in the consequence

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-21 10:38:15 UTC (rev 25375)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java	2009-02-21 15:49:56 UTC (rev 25376)
@@ -1,4 +1,4 @@
-// $ANTLR 3.1.1 src/main/resources/org/drools/lang/DRL.g 2009-02-20 18:38:43
+// $ANTLR 3.1.1 src/main/resources/org/drools/lang/DRL.g 2009-02-21 09:28:26
 
 	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-21 10:38:15 UTC (rev 25375)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLParser.java	2009-02-21 15:49:56 UTC (rev 25376)
@@ -1,4 +1,4 @@
-// $ANTLR 3.1.1 src/main/resources/org/drools/lang/DRL.g 2009-02-20 18:38:42
+// $ANTLR 3.1.1 src/main/resources/org/drools/lang/DRL.g 2009-02-21 09:28:25
 
 	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-21 10:38:15 UTC (rev 25375)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DescrBuilderTree.java	2009-02-21 15:49:56 UTC (rev 25376)
@@ -1,4 +1,4 @@
-// $ANTLR 3.1.1 src/main/resources/org/drools/lang/DescrBuilderTree.g 2009-02-20 18:38:43
+// $ANTLR 3.1.1 src/main/resources/org/drools/lang/DescrBuilderTree.g 2009-02-21 09:28:26
 
 	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-21 10:38:15 UTC (rev 25375)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapLexer.java	2009-02-21 15:49:56 UTC (rev 25376)
@@ -1,4 +1,4 @@
-// $ANTLR 3.1.1 src/main/resources/org/drools/lang/dsl/DSLMap.g 2009-02-20 18:38:47
+// $ANTLR 3.1.1 src/main/resources/org/drools/lang/dsl/DSLMap.g 2009-02-21 09:28:30
 
 	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-21 10:38:15 UTC (rev 25375)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapParser.java	2009-02-21 15:49:56 UTC (rev 25376)
@@ -1,4 +1,4 @@
-// $ANTLR 3.1.1 src/main/resources/org/drools/lang/dsl/DSLMap.g 2009-02-20 18:38:46
+// $ANTLR 3.1.1 src/main/resources/org/drools/lang/dsl/DSLMap.g 2009-02-21 09:28:29
 
 	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-21 10:38:15 UTC (rev 25375)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapWalker.java	2009-02-21 15:49:56 UTC (rev 25376)
@@ -1,4 +1,4 @@
-// $ANTLR 3.1.1 src/main/resources/org/drools/lang/dsl/DSLMapWalker.g 2009-02-20 18:38:47
+// $ANTLR 3.1.1 src/main/resources/org/drools/lang/dsl/DSLMapWalker.g 2009-02-21 09:28:30
 
 	package org.drools.lang.dsl;
 	

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/AbstractJavaRuleBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/AbstractJavaRuleBuilder.java	2009-02-21 10:38:15 UTC (rev 25375)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/AbstractJavaRuleBuilder.java	2009-02-21 15:49:56 UTC (rev 25376)
@@ -45,13 +45,13 @@
         return INVOKER_REGISTRY;
     }
 
-    public Map createVariableContext(final String className,
+    public Map<String,Object> createVariableContext(final String className,
                                      final String text,
                                      final RuleBuildContext context,
                                      final Declaration[] declarations,
                                      final Declaration[] localDeclarations,
                                      final String[] globals) {
-        final Map map = new HashMap();
+        final Map<String,Object> map = new HashMap<String,Object>();
 
         map.put("methodName",
                 className);
@@ -97,7 +97,7 @@
                     localDeclarationTypes);
         }
 
-        final List globalTypes = new ArrayList(globals.length);
+        final List<String> globalTypes = new ArrayList<String>(globals.length);
         for (int i = 0, length = globals.length; i < length; i++) {
             globalTypes.add((context.getPkg().getGlobals().get(globals[i])).replace('$',
                     '.'));

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-21 10:38:15 UTC (rev 25375)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaAnalysisResult.java	2009-02-21 15:49:56 UTC (rev 25376)
@@ -23,7 +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.JavaBlockDescr;
 import org.drools.rule.builder.dialect.java.parser.JavaLocalDeclarationDescr;
 
 /**
@@ -38,8 +38,7 @@
     private List identifiers = Collections.EMPTY_LIST;
     private Map localVariables = Collections.EMPTY_MAP;
     private List notBoundedIdentifiers = Collections.EMPTY_LIST;
-    private List modifyBlocks = Collections.EMPTY_LIST;
-    private List<JavaExitPointsDescr> exitPoints = Collections.emptyList();
+    private List<JavaBlockDescr> blocks = Collections.emptyList();
     
     public List[] getBoundIdentifiers() {
         return boundIdentifiers;
@@ -71,16 +70,10 @@
     public void setNotBoundedIdentifiers(List notBoundedIdentifiers) {
         this.notBoundedIdentifiers = notBoundedIdentifiers;
     }
-    public List getModifyBlocks() {
-        return modifyBlocks;
+    public List<JavaBlockDescr> getBlockDescrs() {
+        return blocks;
     }
-    public void setModifyBlocks(List modifyBlocks) {
-        this.modifyBlocks = modifyBlocks;
+    public void setBlockDescrs(List<JavaBlockDescr> blocks) {
+        this.blocks = blocks;
     }
-    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-21 10:38:15 UTC (rev 25375)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaConsequenceBuilder.java	2009-02-21 15:49:56 UTC (rev 25376)
@@ -19,11 +19,9 @@
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.Comparator;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.TreeSet;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -33,8 +31,10 @@
 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.JavaBlockDescr;
+import org.drools.rule.builder.dialect.java.parser.JavaInterfacePointsDescr;
 import org.drools.rule.builder.dialect.java.parser.JavaModifyBlockDescr;
+import org.drools.rule.builder.dialect.java.parser.JavaBlockDescr.BlockType;
 import org.drools.rule.builder.dialect.mvel.MVELDialect;
 import org.drools.spi.PatternExtractor;
 import org.drools.util.ClassUtils;
@@ -72,21 +72,17 @@
             return;
         }
 
-        String fixedConsequence = this.fixModifyBlocks( context,
-                                                        (JavaAnalysisResult) analysis,
-                                                        (String) ruleDescr.getConsequence() );
-        fixedConsequence = this.fixExitPointsReferences( context,
-                                                        (JavaAnalysisResult) analysis,
-                                                        fixedConsequence );
+        String fixedConsequence = this.fixBlockDescr( context,
+                                                      (JavaAnalysisResult) analysis,
+                                                      (String) ruleDescr.getConsequence() );
 
-
         if ( fixedConsequence == null ) {
             // not possible to rewrite the modify blocks
             return;
         }
         fixedConsequence = ((JavaDialect) context.getDialect()).getKnowledgeHelperFixer().fix( fixedConsequence );
 
-        final List[] usedIdentifiers = analysis.getBoundIdentifiers();
+        final List<String>[] usedIdentifiers = (List<String>[]) analysis.getBoundIdentifiers();
 
         final Declaration[] declarations = new Declaration[usedIdentifiers[0].size()];
 
@@ -95,12 +91,12 @@
                                                                                (String) usedIdentifiers[0].get( i ) );
         }
 
-        final Map map = createVariableContext( className,
-                                               null,
-                                               context,
-                                               declarations,
-                                               null,
-                                               (String[]) usedIdentifiers[1].toArray( new String[usedIdentifiers[1].size()] ) );
+        final Map<String, Object> map = createVariableContext( className,
+                                                               null,
+                                                               context,
+                                                               declarations,
+                                                               null,
+                                                               (String[]) usedIdentifiers[1].toArray( new String[usedIdentifiers[1].size()] ) );
         map.put( "text",
                  fixedConsequence );
 
@@ -140,139 +136,140 @@
         context.getBuildStack().pop();
     }
 
-    protected String fixModifyBlocks(final RuleBuildContext context,
-                                     final JavaAnalysisResult analysis,
-                                     final String originalCode) {
+    protected String fixBlockDescr(final RuleBuildContext context,
+                                   final JavaAnalysisResult analysis,
+                                   final String originalCode) {
         MVELDialect mvel = (MVELDialect) context.getDialect( "mvel" );
 
-        TreeSet blocks = new TreeSet( new Comparator() {
-            public int compare(Object o1,
-                               Object o2) {
-                JavaModifyBlockDescr d1 = (JavaModifyBlockDescr) o1;
-                JavaModifyBlockDescr d2 = (JavaModifyBlockDescr) o2;
-                return d1.getStart() - d2.getStart();
-            }
-        } );
+        // sorting exit points for correct order iteration
+        List<JavaBlockDescr> blocks = analysis.getBlockDescrs();
+        Collections.sort( blocks,
+                          new Comparator<JavaBlockDescr>() {
+                              public int compare(JavaBlockDescr o1,
+                                                 JavaBlockDescr o2) {
+                                  return o1.getStart() - o2.getStart();
+                              }
+                          } );
 
-        for ( Iterator it = analysis.getModifyBlocks().iterator(); it.hasNext(); ) {
-            blocks.add( it.next() );
-        }
-
         StringBuilder consequence = new StringBuilder();
         int lastAdded = 0;
-        for ( Iterator it = blocks.iterator(); it.hasNext(); ) {
-            JavaModifyBlockDescr d = (JavaModifyBlockDescr) it.next();
+        for ( JavaBlockDescr block : blocks ) {
             // adding chunk
             consequence.append( originalCode.substring( lastAdded,
-                                                        d.getStart() - 1 ) );
-            lastAdded = d.getEnd();
+                                                        block.getStart() - 1 ) );
+            lastAdded = block.getEnd();
 
-            Dialect.AnalysisResult mvelAnalysis = mvel.analyzeBlock( context,
-                                                                     context.getRuleDescr(),
-                                                                     mvel.getInterceptors(),
-                                                                     d.getModifyExpression(),
-                                                                     new Set[]{context.getDeclarationResolver().getDeclarations( context.getRule() ).keySet(), context.getPkg().getGlobals().keySet()},
-                                                                     null );
+            switch ( block.getType() ) {
+                case MODIFY :
+                    rewriteModify( context,
+                                   originalCode,
+                                   mvel,
+                                   consequence,
+                                   (JavaModifyBlockDescr) block );
+                    break;
+                case ENTRY :
+                case EXIT :
+                    rewriteInterfacePoint( originalCode,
+                                           consequence,
+                                           (JavaInterfacePointsDescr) block );
+                    break;
+            }
+        }
+        consequence.append( originalCode.substring( lastAdded ) );
 
-            final ExecutableStatement expr = (ExecutableStatement) mvel.compile( d.getModifyExpression(),
-                                                                                 mvelAnalysis,
-                                                                                 mvel.getInterceptors(),
-                                                                                 null,
-                                                                                 null,
-                                                                                 context );
+        return consequence.toString();
+    }
 
-            Class ret = expr.getKnownEgressType();
+    private void rewriteInterfacePoint(final String originalCode,
+                                       StringBuilder consequence,
+                                       JavaInterfacePointsDescr ep) {
+        // rewriting it for proper exitPoints access
+        consequence.append( "drools.get" );
+        if ( ep.getType() == BlockType.EXIT ) {
+            consequence.append( "ExitPoint( " );
+        } else {
+            consequence.append( "EntryPoint( " );
+        }
+        consequence.append( ep.getId() );
+        consequence.append( " )" );
 
-            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" ) );
+        // 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 ) );
+    }
 
-                return null;
-            }
-            String retString = ClassUtils.canonicalName( ret );
+    private void rewriteModify(final RuleBuildContext context,
+                               final String originalCode,
+                               MVELDialect mvel,
+                               StringBuilder consequence,
+                               JavaModifyBlockDescr d) {
+        Dialect.AnalysisResult mvelAnalysis = mvel.analyzeBlock( context,
+                                                                 context.getRuleDescr(),
+                                                                 mvel.getInterceptors(),
+                                                                 d.getModifyExpression(),
+                                                                 new Set[]{context.getDeclarationResolver().getDeclarations( context.getRule() ).keySet(), context.getPkg().getGlobals().keySet()},
+                                                                 null );
 
-            // adding modify expression
-            consequence.append( "{ " );
-            consequence.append( retString );
-            consequence.append( " __obj__ = (" );
-            consequence.append( retString );
-            consequence.append( ") " );
-            consequence.append( d.getModifyExpression() );
-            consequence.append( "; " );
-            // adding the modifyRetract call:
-            consequence.append( "modifyRetract( __obj__ ); " );
+        final ExecutableStatement expr = (ExecutableStatement) mvel.compile( d.getModifyExpression(),
+                                                                             mvelAnalysis,
+                                                                             mvel.getInterceptors(),
+                                                                             null,
+                                                                             null,
+                                                                             context );
 
-            // the following is a hack to preserve line breaks.
-            String originalBlock = originalCode.substring( d.getStart() - 1,
-                                                           d.getEnd() );
-            int end = originalBlock.indexOf( "{" );
-            addLineBreaks( consequence,
-                           originalBlock.substring( 0,
-                                                    end ) );
+        Class ret = expr.getKnownEgressType();
 
-            int start = end + 1;
-            // adding each of the expressions:
-            for ( Iterator exprIt = d.getExpressions().iterator(); exprIt.hasNext(); ) {
-                String exprStr = (String) exprIt.next();
-                end = originalBlock.indexOf( exprStr,
-                                             start );
-                addLineBreaks( consequence,
-                               originalBlock.substring( start,
-                                                        end ) );
-                consequence.append( "__obj__." );
-                consequence.append( exprStr );
-                consequence.append( "; " );
-                start = end + exprStr.length();
-            }
-            // adding the modifyInsert call:
-            addLineBreaks( consequence,
-                           originalBlock.substring( end ) );
-            consequence.append( "modifyInsert( __obj__ ); }" );
+        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" ) );
+
+            return;
         }
-        consequence.append( originalCode.substring( lastAdded ) );
+        String retString = ClassUtils.canonicalName( ret );
 
-        return consequence.toString();
-    }
+        // adding modify expression
+        consequence.append( "{ " );
+        consequence.append( retString );
+        consequence.append( " __obj__ = (" );
+        consequence.append( retString );
+        consequence.append( ") " );
+        consequence.append( d.getModifyExpression() );
+        consequence.append( "; " );
+        // adding the modifyRetract call:
+        consequence.append( "modifyRetract( __obj__ ); " );
 
-    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();
-            }
-        } );
+        // the following is a hack to preserve line breaks.
+        String originalBlock = originalCode.substring( d.getStart() - 1,
+                                                       d.getEnd() );
+        int end = originalBlock.indexOf( "{" );
+        addLineBreaks( consequence,
+                       originalBlock.substring( 0,
+                                                end ) );
 
-        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( "]" );
+        int start = end + 1;
+        // adding each of the expressions:
+        for ( String exprStr : d.getExpressions() ) {
+            end = originalBlock.indexOf( exprStr,
+                                         start );
             addLineBreaks( consequence,
-                           originalBlock.substring( 0,
+                           originalBlock.substring( start,
                                                     end ) );
+            consequence.append( "__obj__." );
+            consequence.append( exprStr );
+            consequence.append( "; " );
+            start = end + exprStr.length();
         }
-        consequence.append( originalCode.substring( lastAdded ) );
-
-        return consequence.toString();
+        // adding the modifyInsert call:
+        addLineBreaks( consequence,
+                       originalBlock.substring( end ) );
+        consequence.append( "modifyInsert( __obj__ ); }" );
     }
 
     /**

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-21 10:38:15 UTC (rev 25375)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaExprAnalyzer.java	2009-02-21 15:49:56 UTC (rev 25376)
@@ -99,8 +99,7 @@
                 result.addLocalVariable( ident.getIdentifier(), descr );
             }
         }
-        result.setModifyBlocks( parser.getModifyBlocks() );
-        result.setExitPoints( parser.getExitPoints() );
+        result.setBlockDescrs( parser.getBlockDescr() );
 
         return analyze( result,
                         availableIdentifiers );

Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/parser/JavaBlockDescr.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/parser/JavaBlockDescr.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/parser/JavaBlockDescr.java	2009-02-21 15:49:56 UTC (rev 25376)
@@ -0,0 +1,15 @@
+package org.drools.rule.builder.dialect.java.parser;
+
+public interface JavaBlockDescr {
+    
+    public static enum BlockType {
+        MODIFY, ENTRY, EXIT
+    }
+
+    public BlockType getType();
+
+    public int getStart();
+
+    public int getEnd();
+
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/parser/JavaInterfacePointsDescr.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/parser/JavaInterfacePointsDescr.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/parser/JavaInterfacePointsDescr.java	2009-02-21 15:49:56 UTC (rev 25376)
@@ -0,0 +1,61 @@
+/**
+ * 
+ */
+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 JavaInterfacePointsDescr implements JavaBlockDescr {
+    
+    private int start;
+    private int end;
+    private String id;
+    private BlockType type;
+    
+    public JavaInterfacePointsDescr( String id ) {
+        this.id = id;
+    }
+    
+    /* (non-Javadoc)
+     * @see org.drools.rule.builder.dialect.java.parser.JavaBlockDescr#getStart()
+     */
+    public int getStart() {
+        return start;
+    }
+    public void setStart(int start) {
+        this.start = start;
+    }
+    /* (non-Javadoc)
+     * @see org.drools.rule.builder.dialect.java.parser.JavaBlockDescr#getEnd()
+     */
+    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( type="+type+" start="+start+" end="+end+" id="+id+" )";
+    }
+
+    public BlockType getType() {
+        return type;
+    }
+
+    public void setType(BlockType type) {
+        this.type = type;
+    }
+
+}

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-21 10:38:15 UTC (rev 25375)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/parser/JavaLexer.java	2009-02-21 15:49:56 UTC (rev 25376)
@@ -1,4 +1,4 @@
-// $ANTLR 3.1.1 src/main/resources/org/drools/semantics/java/parser/Java.g 2009-02-20 18:38:50
+// $ANTLR 3.1.1 src/main/resources/org/drools/semantics/java/parser/Java.g 2009-02-21 09:28:32
 
 	package org.drools.rule.builder.dialect.java.parser;
 
@@ -110,6 +110,7 @@
     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 T__116=116;
     public static final int EOF=-1;
     public static final int T__53=53;
     public static final int T__32=32;
@@ -1493,10 +1494,10 @@
         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'
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:76:7: ( 'entryPoints' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:76:9: 'entryPoints'
             {
-            match("catch"); 
+            match("entryPoints"); 
 
 
             }
@@ -1514,10 +1515,10 @@
         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'
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:77:7: ( 'catch' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:77:9: 'catch'
             {
-            match("case"); 
+            match("catch"); 
 
 
             }
@@ -1535,10 +1536,10 @@
         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: '+='
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:78:7: ( 'case' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:78:9: 'case'
             {
-            match("+="); 
+            match("case"); 
 
 
             }
@@ -1556,10 +1557,10 @@
         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: '-='
+            // 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("-="); 
+            match("+="); 
 
 
             }
@@ -1577,10 +1578,10 @@
         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: '*='
+            // 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("*="); 
+            match("-="); 
 
 
             }
@@ -1598,10 +1599,10 @@
         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: '/='
+            // 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("/="); 
+            match("*="); 
 
 
             }
@@ -1619,10 +1620,10 @@
         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: '&='
+            // 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("&="); 
+            match("/="); 
 
 
             }
@@ -1640,10 +1641,10 @@
         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: '|='
+            // 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("|="); 
+            match("&="); 
 
 
             }
@@ -1661,10 +1662,10 @@
         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: '^='
+            // 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("^="); 
+            match("|="); 
 
 
             }
@@ -1682,10 +1683,10 @@
         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: '%='
+            // 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("%="); 
+            match("^="); 
 
 
             }
@@ -1703,10 +1704,10 @@
         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: '||'
+            // 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("||"); 
+            match("%="); 
 
 
             }
@@ -1724,10 +1725,10 @@
         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: '&&'
+            // 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("&&"); 
+            match("||"); 
 
 
             }
@@ -1745,11 +1746,12 @@
         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: '|'
+            // 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('|'); 
+            match("&&"); 
 
+
             }
 
             state.type = _type;
@@ -1765,10 +1767,10 @@
         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: '^'
+            // 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('^'); 
+            match('|'); 
 
             }
 
@@ -1785,12 +1787,11 @@
         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: '=='
+            // 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("=="); 
+            match('^'); 
 
-
             }
 
             state.type = _type;
@@ -1806,10 +1807,10 @@
         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: '!='
+            // 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("!="); 
+            match("=="); 
 
 
             }
@@ -1827,10 +1828,10 @@
         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'
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:92:8: ( '!=' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:92:10: '!='
             {
-            match("instanceof"); 
+            match("!="); 
 
 
             }
@@ -1848,11 +1849,12 @@
         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: '+'
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:93:8: ( 'instanceof' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:93:10: 'instanceof'
             {
-            match('+'); 
+            match("instanceof"); 
 
+
             }
 
             state.type = _type;
@@ -1868,10 +1870,10 @@
         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: '-'
+            // 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('-'); 
+            match('+'); 
 
             }
 
@@ -1888,10 +1890,10 @@
         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: '/'
+            // 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('/'); 
+            match('-'); 
 
             }
 
@@ -1908,10 +1910,10 @@
         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: '%'
+            // 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('%'); 
+            match('/'); 
 
             }
 
@@ -1928,12 +1930,11 @@
         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: '++'
+            // 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("++"); 
+            match('%'); 
 
-
             }
 
             state.type = _type;
@@ -1949,10 +1950,10 @@
         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: '--'
+            // 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("--"); 
+            match("++"); 
 
 
             }
@@ -1970,11 +1971,12 @@
         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: '~'
+            // 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('~'); 
+            match("--"); 
 
+
             }
 
             state.type = _type;
@@ -1990,10 +1992,10 @@
         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: '!'
+            // 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('!'); 
+            match('~'); 
 
             }
 
@@ -2010,12 +2012,11 @@
         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'
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:101:8: ( '!' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:101:10: '!'
             {
-            match("this"); 
+            match('!'); 
 
-
             }
 
             state.type = _type;
@@ -2031,10 +2032,10 @@
         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'
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:102:8: ( 'this' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:102:10: 'this'
             {
-            match("new"); 
+            match("this"); 
 
 
             }
@@ -2047,13 +2048,34 @@
     }
     // $ANTLR end "T__115"
 
+    // $ANTLR start "T__116"
+    public final void mT__116() throws RecognitionException {
+        try {
+            int _type = T__116;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:103:8: ( 'new' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:103:10: 'new'
+            {
+            match("new"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__116"
+
     // $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 )?
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:985:12: ( '0' ( 'x' | 'X' ) ( HexDigit )+ ( IntegerTypeSuffix )? )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:985:14: '0' ( 'x' | 'X' ) ( HexDigit )+ ( IntegerTypeSuffix )?
             {
             match('0'); 
             if ( input.LA(1)=='X'||input.LA(1)=='x' ) {
@@ -2065,7 +2087,7 @@
                 recover(mse);
                 throw mse;}
 
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:976:28: ( HexDigit )+
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:985:28: ( HexDigit )+
             int cnt1=0;
             loop1:
             do {
@@ -2079,7 +2101,7 @@
 
                 switch (alt1) {
             	case 1 :
-            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:976:28: HexDigit
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:985:28: HexDigit
             	    {
             	    mHexDigit(); 
 
@@ -2095,7 +2117,7 @@
                 cnt1++;
             } while (true);
 
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:976:38: ( IntegerTypeSuffix )?
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:985:38: ( IntegerTypeSuffix )?
             int alt2=2;
             int LA2_0 = input.LA(1);
 
@@ -2104,7 +2126,7 @@
             }
             switch (alt2) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:976:38: IntegerTypeSuffix
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:985:38: IntegerTypeSuffix
                     {
                     mIntegerTypeSuffix(); 
 
@@ -2129,10 +2151,10 @@
         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:987:16: ( ( '0' | '1' .. '9' ( '0' .. '9' )* ) ( IntegerTypeSuffix )? )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:987:18: ( '0' | '1' .. '9' ( '0' .. '9' )* ) ( IntegerTypeSuffix )?
             {
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:978:18: ( '0' | '1' .. '9' ( '0' .. '9' )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:987:18: ( '0' | '1' .. '9' ( '0' .. '9' )* )
             int alt4=2;
             int LA4_0 = input.LA(1);
 
@@ -2150,17 +2172,17 @@
             }
             switch (alt4) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:978:19: '0'
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:987:19: '0'
                     {
                     match('0'); 
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:978:25: '1' .. '9' ( '0' .. '9' )*
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:987:25: '1' .. '9' ( '0' .. '9' )*
                     {
                     matchRange('1','9'); 
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:978:34: ( '0' .. '9' )*
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:987:34: ( '0' .. '9' )*
                     loop3:
                     do {
                         int alt3=2;
@@ -2173,7 +2195,7 @@
 
                         switch (alt3) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:978:34: '0' .. '9'
+                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:987:34: '0' .. '9'
                     	    {
                     	    matchRange('0','9'); 
 
@@ -2191,7 +2213,7 @@
 
             }
 
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:978:45: ( IntegerTypeSuffix )?
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:987:45: ( IntegerTypeSuffix )?
             int alt5=2;
             int LA5_0 = input.LA(1);
 
@@ -2200,7 +2222,7 @@
             }
             switch (alt5) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:978:45: IntegerTypeSuffix
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:987:45: IntegerTypeSuffix
                     {
                     mIntegerTypeSuffix(); 
 
@@ -2225,11 +2247,11 @@
         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 )?
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:989:14: ( '0' ( '0' .. '7' )+ ( IntegerTypeSuffix )? )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:989:16: '0' ( '0' .. '7' )+ ( IntegerTypeSuffix )?
             {
             match('0'); 
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:980:20: ( '0' .. '7' )+
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:989:20: ( '0' .. '7' )+
             int cnt6=0;
             loop6:
             do {
@@ -2243,7 +2265,7 @@
 
                 switch (alt6) {
             	case 1 :
-            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:980:21: '0' .. '7'
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:989:21: '0' .. '7'
             	    {
             	    matchRange('0','7'); 
 
@@ -2259,7 +2281,7 @@
                 cnt6++;
             } while (true);
 
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:980:32: ( IntegerTypeSuffix )?
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:989:32: ( IntegerTypeSuffix )?
             int alt7=2;
             int LA7_0 = input.LA(1);
 
@@ -2268,7 +2290,7 @@
             }
             switch (alt7) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:980:32: IntegerTypeSuffix
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:989:32: IntegerTypeSuffix
                     {
                     mIntegerTypeSuffix(); 
 
@@ -2291,8 +2313,8 @@
     // $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' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:992:10: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:992: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();
@@ -2315,8 +2337,8 @@
     // $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' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:995:19: ( ( 'l' | 'L' ) )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:995:21: ( 'l' | 'L' )
             {
             if ( input.LA(1)=='L'||input.LA(1)=='l' ) {
                 input.consume();
@@ -2341,14 +2363,14 @@
         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 )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:998: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:998:9: ( '0' .. '9' )+ '.' ( '0' .. '9' )* ( Exponent )? ( FloatTypeSuffix )?
                     {
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:989:9: ( '0' .. '9' )+
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:998:9: ( '0' .. '9' )+
                     int cnt8=0;
                     loop8:
                     do {
@@ -2362,7 +2384,7 @@
 
                         switch (alt8) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:989:10: '0' .. '9'
+                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:998:10: '0' .. '9'
                     	    {
                     	    matchRange('0','9'); 
 
@@ -2379,7 +2401,7 @@
                     } while (true);
 
                     match('.'); 
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:989:25: ( '0' .. '9' )*
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:998:25: ( '0' .. '9' )*
                     loop9:
                     do {
                         int alt9=2;
@@ -2392,7 +2414,7 @@
 
                         switch (alt9) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:989:26: '0' .. '9'
+                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:998:26: '0' .. '9'
                     	    {
                     	    matchRange('0','9'); 
 
@@ -2404,7 +2426,7 @@
                         }
                     } while (true);
 
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:989:37: ( Exponent )?
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:998:37: ( Exponent )?
                     int alt10=2;
                     int LA10_0 = input.LA(1);
 
@@ -2413,7 +2435,7 @@
                     }
                     switch (alt10) {
                         case 1 :
-                            // src/main/resources/org/drools/semantics/java/parser/Java.g:989:37: Exponent
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:998:37: Exponent
                             {
                             mExponent(); 
 
@@ -2422,7 +2444,7 @@
 
                     }
 
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:989:47: ( FloatTypeSuffix )?
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:998:47: ( FloatTypeSuffix )?
                     int alt11=2;
                     int LA11_0 = input.LA(1);
 
@@ -2431,7 +2453,7 @@
                     }
                     switch (alt11) {
                         case 1 :
-                            // src/main/resources/org/drools/semantics/java/parser/Java.g:989:47: FloatTypeSuffix
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:998:47: FloatTypeSuffix
                             {
                             mFloatTypeSuffix(); 
 
@@ -2444,10 +2466,10 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:990:9: '.' ( '0' .. '9' )+ ( Exponent )? ( FloatTypeSuffix )?
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:999:9: '.' ( '0' .. '9' )+ ( Exponent )? ( FloatTypeSuffix )?
                     {
                     match('.'); 
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:990:13: ( '0' .. '9' )+
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:999:13: ( '0' .. '9' )+
                     int cnt12=0;
                     loop12:
                     do {
@@ -2461,7 +2483,7 @@
 
                         switch (alt12) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:990:14: '0' .. '9'
+                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:999:14: '0' .. '9'
                     	    {
                     	    matchRange('0','9'); 
 
@@ -2477,7 +2499,7 @@
                         cnt12++;
                     } while (true);
 
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:990:25: ( Exponent )?
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:999:25: ( Exponent )?
                     int alt13=2;
                     int LA13_0 = input.LA(1);
 
@@ -2486,7 +2508,7 @@
                     }
                     switch (alt13) {
                         case 1 :
-                            // src/main/resources/org/drools/semantics/java/parser/Java.g:990:25: Exponent
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:999:25: Exponent
                             {
                             mExponent(); 
 
@@ -2495,7 +2517,7 @@
 
                     }
 
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:990:35: ( FloatTypeSuffix )?
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:999:35: ( FloatTypeSuffix )?
                     int alt14=2;
                     int LA14_0 = input.LA(1);
 
@@ -2504,7 +2526,7 @@
                     }
                     switch (alt14) {
                         case 1 :
-                            // src/main/resources/org/drools/semantics/java/parser/Java.g:990:35: FloatTypeSuffix
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:999:35: FloatTypeSuffix
                             {
                             mFloatTypeSuffix(); 
 
@@ -2517,9 +2539,9 @@
                     }
                     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:1000:9: ( '0' .. '9' )+ Exponent ( FloatTypeSuffix )?
                     {
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:991:9: ( '0' .. '9' )+
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1000:9: ( '0' .. '9' )+
                     int cnt15=0;
                     loop15:
                     do {
@@ -2533,7 +2555,7 @@
 
                         switch (alt15) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:991:10: '0' .. '9'
+                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:1000:10: '0' .. '9'
                     	    {
                     	    matchRange('0','9'); 
 
@@ -2550,7 +2572,7 @@
                     } while (true);
 
                     mExponent(); 
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:991:30: ( FloatTypeSuffix )?
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1000:30: ( FloatTypeSuffix )?
                     int alt16=2;
                     int LA16_0 = input.LA(1);
 
@@ -2559,7 +2581,7 @@
                     }
                     switch (alt16) {
                         case 1 :
-                            // src/main/resources/org/drools/semantics/java/parser/Java.g:991:30: FloatTypeSuffix
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:1000:30: FloatTypeSuffix
                             {
                             mFloatTypeSuffix(); 
 
@@ -2572,9 +2594,9 @@
                     }
                     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:1001:9: ( '0' .. '9' )+ ( Exponent )? FloatTypeSuffix
                     {
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:992:9: ( '0' .. '9' )+
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1001:9: ( '0' .. '9' )+
                     int cnt17=0;
                     loop17:
                     do {
@@ -2588,7 +2610,7 @@
 
                         switch (alt17) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:992:10: '0' .. '9'
+                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:1001:10: '0' .. '9'
                     	    {
                     	    matchRange('0','9'); 
 
@@ -2604,7 +2626,7 @@
                         cnt17++;
                     } while (true);
 
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:992:21: ( Exponent )?
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1001:21: ( Exponent )?
                     int alt18=2;
                     int LA18_0 = input.LA(1);
 
@@ -2613,7 +2635,7 @@
                     }
                     switch (alt18) {
                         case 1 :
-                            // src/main/resources/org/drools/semantics/java/parser/Java.g:992:21: Exponent
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:1001:21: Exponent
                             {
                             mExponent(); 
 
@@ -2639,8 +2661,8 @@
     // $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' )+
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1005:10: ( ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+ )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1005:12: ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+
             {
             if ( input.LA(1)=='E'||input.LA(1)=='e' ) {
                 input.consume();
@@ -2651,7 +2673,7 @@
                 recover(mse);
                 throw mse;}
 
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:996:22: ( '+' | '-' )?
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1005:22: ( '+' | '-' )?
             int alt20=2;
             int LA20_0 = input.LA(1);
 
@@ -2677,7 +2699,7 @@
 
             }
 
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:996:33: ( '0' .. '9' )+
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1005:33: ( '0' .. '9' )+
             int cnt21=0;
             loop21:
             do {
@@ -2691,7 +2713,7 @@
 
                 switch (alt21) {
             	case 1 :
-            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:996:34: '0' .. '9'
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:1005:34: '0' .. '9'
             	    {
             	    matchRange('0','9'); 
 
@@ -2719,8 +2741,8 @@
     // $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' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1008:17: ( ( 'f' | 'F' | 'd' | 'D' ) )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1008:19: ( 'f' | 'F' | 'd' | 'D' )
             {
             if ( input.LA(1)=='D'||input.LA(1)=='F'||input.LA(1)=='d'||input.LA(1)=='f' ) {
                 input.consume();
@@ -2745,11 +2767,11 @@
         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 | ~ ( '\\'' | '\\\\' ) ) '\\''
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1011:5: ( '\\'' ( EscapeSequence | ~ ( '\\'' | '\\\\' ) ) '\\'' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1011:9: '\\'' ( EscapeSequence | ~ ( '\\'' | '\\\\' ) ) '\\''
             {
             match('\''); 
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:1002:14: ( EscapeSequence | ~ ( '\\'' | '\\\\' ) )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1011:14: ( EscapeSequence | ~ ( '\\'' | '\\\\' ) )
             int alt22=2;
             int LA22_0 = input.LA(1);
 
@@ -2767,14 +2789,14 @@
             }
             switch (alt22) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1002:16: EscapeSequence
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1011:16: EscapeSequence
                     {
                     mEscapeSequence(); 
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1002:33: ~ ( '\\'' | '\\\\' )
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1011:33: ~ ( '\\'' | '\\\\' )
                     {
                     if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                         input.consume();
@@ -2808,11 +2830,11 @@
         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 | ~ ( '\\\\' | '\"' ) )* '\"'
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1015:5: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1015:8: '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"'
             {
             match('\"'); 
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:1006:12: ( EscapeSequence | ~ ( '\\\\' | '\"' ) )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1015:12: ( EscapeSequence | ~ ( '\\\\' | '\"' ) )*
             loop23:
             do {
                 int alt23=3;
@@ -2828,14 +2850,14 @@
 
                 switch (alt23) {
             	case 1 :
-            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:1006:14: EscapeSequence
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:1015:14: EscapeSequence
             	    {
             	    mEscapeSequence(); 
 
             	    }
             	    break;
             	case 2 :
-            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:1006:31: ~ ( '\\\\' | '\"' )
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:1015:31: ~ ( '\\\\' | '\"' )
             	    {
             	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
             	        input.consume();
@@ -2870,7 +2892,7 @@
     // $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 )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1020:5: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | UnicodeEscape | OctalEscape )
             int alt24=3;
             int LA24_0 = input.LA(1);
 
@@ -2921,7 +2943,7 @@
             }
             switch (alt24) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1011:9: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' )
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1020: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' ) {
@@ -2937,14 +2959,14 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1012:9: UnicodeEscape
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1021:9: UnicodeEscape
                     {
                     mUnicodeEscape(); 
 
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1013:9: OctalEscape
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1022:9: OctalEscape
                     {
                     mOctalEscape(); 
 
@@ -2961,7 +2983,7 @@
     // $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' ) )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1027:5: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
             int alt25=3;
             int LA25_0 = input.LA(1);
 
@@ -2972,9 +2994,9 @@
                     int LA25_2 = input.LA(3);
 
                     if ( ((LA25_2>='0' && LA25_2<='7')) ) {
-                        int LA25_4 = input.LA(4);
+                        int LA25_5 = input.LA(4);
 
-                        if ( ((LA25_4>='0' && LA25_4<='7')) ) {
+                        if ( ((LA25_5>='0' && LA25_5<='7')) ) {
                             alt25=1;
                         }
                         else {
@@ -3007,25 +3029,25 @@
             }
             switch (alt25) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1018:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1027: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'
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1027:14: ( '0' .. '3' )
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1027: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'
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1027:25: ( '0' .. '7' )
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1027: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'
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1027:36: ( '0' .. '7' )
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1027:37: '0' .. '7'
                     {
                     matchRange('0','7'); 
 
@@ -3035,18 +3057,18 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1019:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1028: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'
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1028:14: ( '0' .. '7' )
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1028: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'
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1028:25: ( '0' .. '7' )
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1028:26: '0' .. '7'
                     {
                     matchRange('0','7'); 
 
@@ -3056,11 +3078,11 @@
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1020:9: '\\\\' ( '0' .. '7' )
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1029: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'
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1029:14: ( '0' .. '7' )
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1029:15: '0' .. '7'
                     {
                     matchRange('0','7'); 
 
@@ -3080,8 +3102,8 @@
     // $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
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1034:5: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1034:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit
             {
             match('\\'); 
             match('u'); 
@@ -3103,8 +3125,8 @@
         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'
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1037:5: ( 'enum' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1037:7: 'enum'
             {
             match("enum"); 
 
@@ -3125,11 +3147,11 @@
         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 )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1041:5: ( Letter ( Letter | JavaIDDigit )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1041:9: Letter ( Letter | JavaIDDigit )*
             {
             mLetter(); 
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:1032:16: ( Letter | JavaIDDigit )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1041:16: ( Letter | JavaIDDigit )*
             loop26:
             do {
                 int alt26=2;
@@ -3176,7 +3198,7 @@
     // $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:1049: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') ) {
@@ -3200,7 +3222,7 @@
     // $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:1066: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') ) {
@@ -3226,8 +3248,8 @@
         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' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1083:5: ( ( ' ' | '\\r' | '\\t' | '\\u000C' | '\\n' ) )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1083: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();
@@ -3255,12 +3277,12 @@
         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; } : . )* '*/'
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1087:5: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1087:9: '/*' ( options {greedy=false; } : . )* '*/'
             {
             match("/*"); 
 
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:1078:14: ( options {greedy=false; } : . )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1087:14: ( options {greedy=false; } : . )*
             loop27:
             do {
                 int alt27=2;
@@ -3285,7 +3307,7 @@
 
                 switch (alt27) {
             	case 1 :
-            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:1078:42: .
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:1087:42: .
             	    {
             	    matchAny(); 
 
@@ -3316,12 +3338,12 @@
         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'
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1091:5: ( '//' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1091:7: '//' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n'
             {
             match("//"); 
 
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:1082:12: (~ ( '\\n' | '\\r' ) )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1091:12: (~ ( '\\n' | '\\r' ) )*
             loop28:
             do {
                 int alt28=2;
@@ -3334,7 +3356,7 @@
 
                 switch (alt28) {
             	case 1 :
-            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:1082:12: ~ ( '\\n' | '\\r' )
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:1091: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();
@@ -3354,7 +3376,7 @@
                 }
             } while (true);
 
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:1082:26: ( '\\r' )?
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:1091:26: ( '\\r' )?
             int alt29=2;
             int LA29_0 = input.LA(1);
 
@@ -3363,7 +3385,7 @@
             }
             switch (alt29) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1082:26: '\\r'
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:1091:26: '\\r'
                     {
                     match('\r'); 
 
@@ -3386,8 +3408,8 @@
     // $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;
+        // 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 | T__116 | HexLiteral | DecimalLiteral | OctalLiteral | FloatingPointLiteral | CharacterLiteral | StringLiteral | ENUM | Identifier | WS | COMMENT | LINE_COMMENT!
  )
+        int alt30=104;
         alt30 = dfa30.predict(input);
         switch (alt30) {
             case 1 :
@@ -4035,78 +4057,85 @@
                 }
                 break;
             case 93 :
-                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:578: HexLiteral
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:578: T__116
                 {
-                mHexLiteral(); 
+                mT__116(); 
 
                 }
                 break;
             case 94 :
-                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:589: DecimalLiteral
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:585: HexLiteral
                 {
-                mDecimalLiteral(); 
+                mHexLiteral(); 
 
                 }
                 break;
             case 95 :
-                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:604: OctalLiteral
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:596: DecimalLiteral
                 {
-                mOctalLiteral(); 
+                mDecimalLiteral(); 
 
                 }
                 break;
             case 96 :
-                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:617: FloatingPointLiteral
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:611: OctalLiteral
                 {
-                mFloatingPointLiteral(); 
+                mOctalLiteral(); 
 
                 }
                 break;
             case 97 :
-                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:638: CharacterLiteral
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:624: FloatingPointLiteral
                 {
-                mCharacterLiteral(); 
+                mFloatingPointLiteral(); 
 
                 }
                 break;
             case 98 :
-                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:655: StringLiteral
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:645: CharacterLiteral
                 {
-                mStringLiteral(); 
+                mCharacterLiteral(); 
 
                 }
                 break;
             case 99 :
-                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:669: ENUM
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:662: StringLiteral
                 {
-                mENUM(); 
+                mStringLiteral(); 
 
                 }
                 break;
             case 100 :
-                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:674: Identifier
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:676: ENUM
                 {
-                mIdentifier(); 
+                mENUM(); 
 
                 }
                 break;
             case 101 :
-                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:685: WS
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:681: Identifier
                 {
-                mWS(); 
+                mIdentifier(); 
 
                 }
                 break;
             case 102 :
-                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:688: COMMENT
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:692: WS
                 {
-                mCOMMENT(); 
+                mWS(); 
 
                 }
                 break;
             case 103 :
-                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:696: LINE_COMMENT
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:695: COMMENT
                 {
+                mCOMMENT(); 
+
+                }
+                break;
+            case 104 :
+                // src/main/resources/org/drools/semantics/java/parser/Java.g:1:703: LINE_COMMENT
+                {
                 mLINE_COMMENT(); 
 
                 }
@@ -4175,62 +4204,64 @@
             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 );";
+            return "997: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";
+        "\7\56\3\uffff\3\56\2\uffff\15\56\1\u00a5\4\56\24\uffff\1\u00aa\1"+
+        "\uffff\1\166\5\56\1\u00b2\1\56\1\uffff\26\56\1\u00ca\5\56\1\u00d0"+
+        "\2\56\1\u00d3\5\56\1\uffff\4\56\1\uffff\7\56\1\uffff\10\56\1\u00ec"+
+        "\2\56\1\u00ef\2\56\1\u00f2\1\56\1\u00f4\1\u00f5\2\56\1\u00f8\1\56"+
+        "\1\u00fa\1\uffff\5\56\1\uffff\1\56\1\u0101\1\uffff\1\56\1\u0103"+
+        "\1\56\1\u0105\20\56\1\u0116\1\u0117\1\56\1\u0119\1\uffff\1\56\1"+
+        "\u011b\1\uffff\2\56\1\uffff\1\56\2\uffff\1\56\1\u0121\1\uffff\1"+
+        "\56\1\uffff\2\56\1\u0126\1\u0127\1\u0128\1\56\1\uffff\1\56\1\uffff"+
+        "\1\u012b\1\uffff\2\56\1\u012e\3\56\1\u0132\2\56\1\u0135\3\56\1\u0139"+
+        "\2\56\2\uffff\1\u013c\1\uffff\1\56\1\uffff\4\56\1\u0142\1\uffff"+
+        "\2\56\1\u0145\1\56\3\uffff\1\u0147\1\56\1\uffff\1\u0149\1\56\1\uffff"+
+        "\1\u014b\1\u014c\1\u014d\1\uffff\1\56\1\u014f\1\uffff\3\56\1\uffff"+
+        "\2\56\1\uffff\1\56\1\u0156\3\56\1\uffff\2\56\1\uffff\1\u015c\1\uffff"+
+        "\1\u015d\1\uffff\1\u015e\3\uffff\1\56\1\uffff\3\56\1\u0163\1\56"+
+        "\1\u0165\1\uffff\2\56\1\u0168\1\56\1\u016a\3\uffff\1\u016b\1\56"+
+        "\1\u016d\1\56\1\uffff\1\56\1\uffff\2\56\1\uffff\1\u0172\2\uffff"+
+        "\1\u0173\1\uffff\1\u0174\1\56\1\u0176\1\56\3\uffff\1\56\1\uffff"+
+        "\1\u0179\1\u017a\2\uffff";
     static final String DFA30_eofS =
-        "\u0171\uffff";
+        "\u017b\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\141\1\156\1\163\1\151\1\163\1\164\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";
+        "\1\162\1\145\1\164\1\163\1\162\1\164\1\143\2\145\1\164\1\145\1\162"+
+        "\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\1\44\1\171\2\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\1\uffff\1\120\2\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\157\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\151\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\156\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\164\1\uffff\1\44\2\uffff\1\44\1\uffff\1\44\1\145\1\44\1\163\3"+
+        "\uffff\1\144\1\uffff\2\44\2\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"+
@@ -4241,47 +4272,48 @@
         "\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";
+        "\164\1\143\2\145\1\164\1\145\1\162\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\1\ufaff\1\171\2\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\1\uffff\1"+
+        "\120\2\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\157\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\151\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\156\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\164\1\uffff\1\ufaff\2\uffff\1\ufaff\1\uffff\1\ufaff\1\145"+
+        "\1\ufaff\1\163\3\uffff\1\144\1\uffff\2\ufaff\2\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";
+        "\22\1\23\10\uffff\1\50\1\52\1\53\1\60\1\63\12\uffff\1\132\2\uffff"+
+        "\1\142\1\143\1\145\1\146\13\uffff\1\54\1\141\1\5\1\107\1\6\7\uffff"+
+        "\1\111\1\116\1\15\3\uffff\1\121\1\25\22\uffff\1\105\1\130\1\124"+
+        "\1\106\1\131\1\125\1\110\1\147\1\150\1\126\1\112\1\115\1\117\1\113"+
+        "\1\120\1\114\1\127\1\122\1\133\1\136\1\uffff\1\137\10\uffff\1\64"+
+        "\45\uffff\1\70\4\uffff\1\140\7\uffff\1\44\27\uffff\1\71\5\uffff"+
+        "\1\66\2\uffff\1\135\30\uffff\1\41\2\uffff\1\104\2\uffff\1\65\1\uffff"+
+        "\1\144\1\21\2\uffff\1\134\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\103\5\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\5\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\5\uffff\1\72\1\40\1\61\4\uffff\1\37\1\uffff\1\77\2"+
+        "\uffff\1\36\1\uffff\1\31\1\27\1\uffff\1\20\4\uffff\1\35\1\11\1\123"+
+        "\1\uffff\1\101\2\uffff\1\102\1\34";
     static final String DFA30_specialS =
-        "\u0171\uffff}>";
+        "\u017b\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"+
@@ -4364,16 +4396,15 @@
             "\1\u008a\1\u0089",
             "\1\u008c\12\uffff\1\u008b",
             "\1\u008d",
-            "\1\u008e",
+            "\1\u008e\1\u008f",
             "",
             "",
             "",
-            "\1\u008f\2\uffff\1\u0090",
-            "\1\u0092\10\uffff\1\u0091",
-            "\1\u0093\23\uffff\1\u0094\3\uffff\1\u0095",
+            "\1\u0090\2\uffff\1\u0091",
+            "\1\u0093\10\uffff\1\u0092",
+            "\1\u0094\23\uffff\1\u0095\3\uffff\1\u0096",
             "",
             "",
-            "\1\u0096",
             "\1\u0097",
             "\1\u0098",
             "\1\u0099",
@@ -4386,14 +4417,15 @@
             "\1\u00a0",
             "\1\u00a1",
             "\1\u00a2",
+            "\1\u00a3",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\24"+
-            "\56\1\u00a3\5\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08"+
+            "\56\1\u00a4\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\u00a9",
             "",
             "",
             "",
@@ -4417,18 +4449,17 @@
             "\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\u00ae",
+            "\1\u00b0\2\uffff\1\u00af",
             "\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\1\u00b1\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\u00b3",
             "\1\u00b4",
             "\1\u00b5",
             "\1\u00b6",
@@ -4449,68 +4480,71 @@
             "\1\u00c5",
             "\1\u00c6",
             "\1\u00c7",
+            "\1\u00c8",
+            "\1\u00c9",
             "\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\u00ce",
+            "\1\u00cf",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32"+
             "\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
             "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
             "\u5200\56\u5900\uffff\u0200\56",
-            "\1\u00cf",
-            "\1\u00d0",
+            "\1\u00d1",
+            "\1\u00d2",
             "\1\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\u00ea",
+            "\1\u00eb",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32"+
             "\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
             "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
             "\u5200\56\u5900\uffff\u0200\56",
-            "\1\u00eb",
-            "\1\u00ec",
+            "\1\u00ed",
+            "\1\u00ee",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32"+
             "\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
             "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
             "\u5200\56\u5900\uffff\u0200\56",
-            "\1\u00ee",
-            "\1\u00ef",
+            "\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"+
@@ -4519,43 +4553,40 @@
             "\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\u00f6",
+            "\1\u00f7",
             "\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\u00f9",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32"+
             "\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
             "\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\u00fe",
+            "\1\u00ff",
             "",
-            "\1\u00fd",
+            "\1\u0100",
             "\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\u0102",
             "\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\u0104",
             "\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",
@@ -4569,6 +4600,9 @@
             "\1\u0110",
             "\1\u0111",
             "\1\u0112",
+            "\1\u0113",
+            "\1\u0114",
+            "\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"+
@@ -4577,35 +4611,36 @@
             "\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\u0118",
             "\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\u011a",
             "\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\u011c",
+            "\1\u011d",
             "",
+            "\1\u011e",
             "",
             "",
-            "\1\u011b",
+            "\1\u011f",
             "\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\1\u0120\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\u0122",
             "",
-            "\1\u011f",
-            "\1\u0120",
+            "\1\u0123",
+            "\1\u0124",
             "\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\1\u0125\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"+
@@ -4616,22 +4651,15 @@
             "\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\u0129",
             "",
-            "\1\u0126",
+            "\1\u012a",
             "",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32"+
             "\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
             "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
             "\u5200\56\u5900\uffff\u0200\56",
             "",
-            "\1\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"+
@@ -4640,11 +4668,11 @@
             "\u5200\56\u5900\uffff\u0200\56",
             "\1\u012f",
             "\1\u0130",
+            "\1\u0131",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32"+
             "\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
             "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
             "\u5200\56\u5900\uffff\u0200\56",
-            "\1\u0132",
             "\1\u0133",
             "\1\u0134",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32"+
@@ -4653,44 +4681,52 @@
             "\u5200\56\u5900\uffff\u0200\56",
             "\1\u0136",
             "\1\u0137",
-            "",
-            "",
+            "\1\u0138",
             "\1\56\13\uffff\12\56\7\uffff\32\56\4\uffff\1\56\1\uffff\32"+
             "\56\105\uffff\27\56\1\uffff\37\56\1\uffff\u1f08\56\u1040\uffff"+
             "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
             "\u5200\56\u5900\uffff\u0200\56",
+            "\1\u013a",
+            "\1\u013b",
             "",
-            "\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\u013d",
+            "",
             "\1\u013e",
             "\1\u013f",
+            "\1\u0140",
+            "\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\u0141",
             "",
+            "\1\u0143",
+            "\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\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\u0148",
             "",
             "\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\u014a",
             "",
             "\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"+
@@ -4705,29 +4741,30 @@
             "\u0150\56\u0170\uffff\u0080\56\u0080\uffff\u092e\56\u10d2\uffff"+
             "\u5200\56\u5900\uffff\u0200\56",
             "",
-            "\1\u0149",
+            "\1\u014e",
             "\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\u0150",
+            "\1\u0151",
+            "\1\u0152",
             "",
-            "\1\u014e",
-            "\1\u014f",
+            "\1\u0153",
+            "\1\u0154",
             "",
-            "\1\u0150",
+            "\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\u0152",
-            "\1\u0153",
+            "\1\u0157",
+            "\1\u0158",
+            "\1\u0159",
             "",
-            "\1\u0154",
-            "\1\u0155",
+            "\1\u015a",
+            "\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"+
@@ -4746,27 +4783,28 @@
             "",
             "",
             "",
-            "\1\u0159",
+            "\1\u015f",
             "",
-            "\1\u015a",
-            "\1\u015b",
-            "\1\u015c",
+            "\1\u0160",
+            "\1\u0161",
+            "\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\u015e",
+            "\1\u0164",
             "\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\u0166",
+            "\1\u0167",
             "\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\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"+
@@ -4778,16 +4816,17 @@
             "\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\u016c",
             "\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\u016e",
             "",
-            "\1\u0168",
+            "\1\u016f",
             "",
-            "\1\u0169",
+            "\1\u0170",
+            "\1\u0171",
             "",
             "\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"+
@@ -4804,20 +4843,26 @@
             "\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\u0175",
             "\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\u0177",
             "",
             "",
             "",
-            "\1\u016f",
+            "\1\u0178",
             "",
             "\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",
+            "",
             ""
     };
 
@@ -4851,7 +4896,7 @@
             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 );";
+            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 | T__116 | HexLiteral | DecimalLiteral | OctalLiteral | FloatingPointLiteral | CharacterLiteral | StringLiteral | ENUM | Identifier | WS | COMMENT | LINE_COMMENT );";
         }
     }
  

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/parser/JavaModifyBlockDescr.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/parser/JavaModifyBlockDescr.java	2009-02-21 10:38:15 UTC (rev 25375)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/parser/JavaModifyBlockDescr.java	2009-02-21 15:49:56 UTC (rev 25376)
@@ -12,15 +12,15 @@
  * 
  * @author etirelli
  */
-public class JavaModifyBlockDescr {
+public class JavaModifyBlockDescr implements JavaBlockDescr {
     private int start;
     private int end;
     private String modifyExpression;
-    private List expressions;
+    private List<String> expressions;
     
     public JavaModifyBlockDescr( String modifyExpression ) {
         this.modifyExpression = modifyExpression;
-        this.expressions = new ArrayList();
+        this.expressions = new ArrayList<String>();
     }
     
     public int getStart() {
@@ -41,10 +41,10 @@
     public void setModifyExpression(String modifyExpression) {
         this.modifyExpression = modifyExpression;
     }
-    public List getExpressions() {
+    public List<String> getExpressions() {
         return expressions;
     }
-    public void setExpressions(List expressions) {
+    public void setExpressions(List<String> expressions) {
         this.expressions = expressions;
     }
     
@@ -52,4 +52,8 @@
         return "ModifyBlock( start="+start+" end="+end+" expression="+modifyExpression+" )";
     }
 
+    public BlockType getType() {
+        return BlockType.MODIFY;
+    }
+
 }

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-21 10:38:15 UTC (rev 25375)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/parser/JavaParser.java	2009-02-21 15:49:56 UTC (rev 25376)
@@ -1,4 +1,4 @@
-// $ANTLR 3.1.1 src/main/resources/org/drools/semantics/java/parser/Java.g 2009-02-20 18:38:48
+// $ANTLR 3.1.1 src/main/resources/org/drools/semantics/java/parser/Java.g 2009-02-21 09:28:31
 
 	package org.drools.rule.builder.dialect.java.parser;
 	import java.util.Iterator;
@@ -88,7 +88,7 @@
  */
 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'"
+        "<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'", "'entryPoints'", "'catch'", "'case'", "'+='", "'-='", "'*='", "'/='", "'&='", "'|='", "'^='", "'%='", "'||'", "'&&'", "'|'", "'^'", "'=='", "'!='", "'instanceof'", "'+'", "'-'", "'/'", "'%'", "'++'", "'--'", "'~'", "'!'", "'this'", "'new'"
     };
     public static final int T__42=42;
     public static final int HexDigit=12;
@@ -191,6 +191,7 @@
     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 T__116=116;
     public static final int EOF=-1;
     public static final int T__53=53;
     public static final int T__32=32;
@@ -213,7 +214,7 @@
         }
         public JavaParser(TokenStream input, RecognizerSharedState state) {
             super(input, state);
-            this.state.ruleMemo = new HashMap[409+1];
+            this.state.ruleMemo = new HashMap[410+1];
              
              
         }
@@ -230,10 +231,8 @@
     	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 List<JavaBlockDescr> blocks = new ArrayList<JavaBlockDescr>();
+    	public List<JavaBlockDescr> getBlockDescr() { return blocks; }
     	
     	private String source = "unknown";
     	
@@ -336,15 +335,15 @@
 
 
     // $ANTLR start "compilationUnit"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:208:1: compilationUnit : ( annotations )? ( packageDeclaration )? ( importDeclaration )* ( typeDeclaration )* ;
+    // 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 ; }
-            // 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:207:2: ( ( annotations )? ( packageDeclaration )? ( importDeclaration )* ( typeDeclaration )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:207:4: ( annotations )? ( packageDeclaration )? ( importDeclaration )* ( typeDeclaration )*
             {
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:209:4: ( annotations )?
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:207:4: ( annotations )?
             int alt1=2;
             alt1 = dfa1.predict(input);
             switch (alt1) {
@@ -362,7 +361,7 @@
 
             }
 
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:210:3: ( packageDeclaration )?
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:208:3: ( packageDeclaration )?
             int alt2=2;
             alt2 = dfa2.predict(input);
             switch (alt2) {
@@ -380,7 +379,7 @@
 
             }
 
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:211:9: ( importDeclaration )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:209:9: ( importDeclaration )*
             loop3:
             do {
                 int alt3=2;
@@ -403,7 +402,7 @@
                 }
             } while (true);
 
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:212:9: ( typeDeclaration )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:210:9: ( typeDeclaration )*
             loop4:
             do {
                 int alt4=2;
@@ -443,13 +442,13 @@
 
 
     // $ANTLR start "packageDeclaration"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:215:1: packageDeclaration : 'package' qualifiedName ';' ;
+    // 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 ; }
-            // 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 ';'
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:214:2: ( 'package' qualifiedName ';' )
+            // 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);
@@ -475,16 +474,16 @@
 
 
     // $ANTLR start "importDeclaration"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:219:1: importDeclaration : 'import' ( 'static' )? Identifier ( '.' Identifier )* ( '.' '*' )? ';' ;
+    // 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 ; }
-            // 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 )* ( '.' '*' )? ';'
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:218:2: ( 'import' ( 'static' )? Identifier ( '.' Identifier )* ( '.' '*' )? ';' )
+            // 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 ;
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:220:13: ( 'static' )?
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:218:13: ( 'static' )?
             int alt5=2;
             int LA5_0 = input.LA(1);
 
@@ -503,7 +502,7 @@
             }
 
             match(input,Identifier,FOLLOW_Identifier_in_importDeclaration130); if (state.failed) return ;
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:220:34: ( '.' Identifier )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:218:34: ( '.' Identifier )*
             loop6:
             do {
                 int alt6=2;
@@ -522,7 +521,7 @@
 
                 switch (alt6) {
             	case 1 :
-            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:220:35: '.' Identifier
+            	    // 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 ;
@@ -535,7 +534,7 @@
                 }
             } while (true);
 
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:220:52: ( '.' '*' )?
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:218:52: ( '.' '*' )?
             int alt7=2;
             int LA7_0 = input.LA(1);
 
@@ -544,7 +543,7 @@
             }
             switch (alt7) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:220:53: '.' '*'
+                    // 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 ;
@@ -572,17 +571,17 @@
 
 
     // $ANTLR start "typeDeclaration"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:223:1: typeDeclaration : ( classOrInterfaceDeclaration | ';' );
+    // 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 ; }
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:224:2: ( classOrInterfaceDeclaration | ';' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:222: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
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:222:4: classOrInterfaceDeclaration
                     {
                     pushFollow(FOLLOW_classOrInterfaceDeclaration_in_typeDeclaration158);
                     classOrInterfaceDeclaration();
@@ -593,7 +592,7 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:225:9: ';'
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:223:9: ';'
                     {
                     match(input,25,FOLLOW_25_in_typeDeclaration168); if (state.failed) return ;
 
@@ -615,15 +614,15 @@
 
 
     // $ANTLR start "classOrInterfaceDeclaration"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:228:1: classOrInterfaceDeclaration : ( modifier )* ( classDeclaration | interfaceDeclaration ) ;
+    // 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 ; }
-            // 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:227:2: ( ( modifier )* ( classDeclaration | interfaceDeclaration ) )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:227:4: ( modifier )* ( classDeclaration | interfaceDeclaration )
             {
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:229:4: ( modifier )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:227:4: ( modifier )*
             loop9:
             do {
                 int alt9=2;
@@ -646,7 +645,7 @@
                 }
             } while (true);
 
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:229:14: ( classDeclaration | interfaceDeclaration )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:227:14: ( classDeclaration | interfaceDeclaration )
             int alt10=2;
             int LA10_0 = input.LA(1);
 
@@ -665,7 +664,7 @@
             }
             switch (alt10) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:229:15: classDeclaration
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:227:15: classDeclaration
                     {
                     pushFollow(FOLLOW_classDeclaration_in_classOrInterfaceDeclaration184);
                     classDeclaration();
@@ -676,7 +675,7 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:229:34: interfaceDeclaration
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:227:34: interfaceDeclaration
                     {
                     pushFollow(FOLLOW_interfaceDeclaration_in_classOrInterfaceDeclaration188);
                     interfaceDeclaration();
@@ -706,12 +705,12 @@
 
 
     // $ANTLR start "classDeclaration"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:232:1: classDeclaration : ( normalClassDeclaration | enumDeclaration );
+    // 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 ; }
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:233:2: ( normalClassDeclaration | enumDeclaration )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:231:2: ( normalClassDeclaration | enumDeclaration )
             int alt11=2;
             int LA11_0 = input.LA(1);
 
@@ -730,7 +729,7 @@
             }
             switch (alt11) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:233:4: normalClassDeclaration
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:231:4: normalClassDeclaration
                     {
                     pushFollow(FOLLOW_normalClassDeclaration_in_classDeclaration201);
                     normalClassDeclaration();
@@ -741,7 +740,7 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:234:9: enumDeclaration
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:232:9: enumDeclaration
                     {
                     pushFollow(FOLLOW_enumDeclaration_in_classDeclaration211);
                     enumDeclaration();
@@ -767,17 +766,17 @@
 
 
     // $ANTLR start "normalClassDeclaration"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:237:1: normalClassDeclaration : 'class' Identifier ( typeParameters )? ( 'extends' type )? ( 'implements' typeList )? classBody ;
+    // 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 ; }
-            // 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
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:236:2: ( 'class' Identifier ( typeParameters )? ( 'extends' type )? ( 'implements' typeList )? classBody )
+            // 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 ;
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:238:23: ( typeParameters )?
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:236:23: ( typeParameters )?
             int alt12=2;
             int LA12_0 = input.LA(1);
 
@@ -786,7 +785,7 @@
             }
             switch (alt12) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:238:24: typeParameters
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:236:24: typeParameters
                     {
                     pushFollow(FOLLOW_typeParameters_in_normalClassDeclaration228);
                     typeParameters();
@@ -799,7 +798,7 @@
 
             }
 
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:239:9: ( 'extends' type )?
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:237:9: ( 'extends' type )?
             int alt13=2;
             int LA13_0 = input.LA(1);
 
@@ -808,7 +807,7 @@
             }
             switch (alt13) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:239:10: 'extends' type
+                    // 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);
@@ -822,7 +821,7 @@
 
             }
 
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:240:9: ( 'implements' typeList )?
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:238:9: ( 'implements' typeList )?
             int alt14=2;
             int LA14_0 = input.LA(1);
 
@@ -831,7 +830,7 @@
             }
             switch (alt14) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:240:10: 'implements' typeList
+                    // 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);
@@ -867,13 +866,13 @@
 
 
     // $ANTLR start "typeParameters"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:244:1: typeParameters : '<' typeParameter ( ',' typeParameter )* '>' ;
+    // 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 ; }
-            // 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 )* '>'
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:243:2: ( '<' typeParameter ( ',' typeParameter )* '>' )
+            // 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);
@@ -881,7 +880,7 @@
 
             state._fsp--;
             if (state.failed) return ;
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:245:22: ( ',' typeParameter )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:243:22: ( ',' typeParameter )*
             loop15:
             do {
                 int alt15=2;
@@ -894,7 +893,7 @@
 
                 switch (alt15) {
             	case 1 :
-            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:245:23: ',' typeParameter
+            	    // 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);
@@ -929,16 +928,16 @@
 
 
     // $ANTLR start "typeParameter"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:248:1: typeParameter : Identifier ( 'extends' bound )? ;
+    // 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 ; }
-            // 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 )?
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:247:2: ( Identifier ( 'extends' bound )? )
+            // 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 ;
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:249:15: ( 'extends' bound )?
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:247:15: ( 'extends' bound )?
             int alt16=2;
             int LA16_0 = input.LA(1);
 
@@ -947,7 +946,7 @@
             }
             switch (alt16) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:249:16: 'extends' bound
+                    // 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);
@@ -978,20 +977,20 @@
 
 
     // $ANTLR start "bound"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:252:1: bound : type ( '&' type )* ;
+    // 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 ; }
-            // 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 )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:251:2: ( type ( '&' type )* )
+            // 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 ;
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:253:9: ( '&' type )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:251:9: ( '&' type )*
             loop17:
             do {
                 int alt17=2;
@@ -1004,7 +1003,7 @@
 
                 switch (alt17) {
             	case 1 :
-            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:253:10: '&' type
+            	    // 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);
@@ -1038,17 +1037,17 @@
 
 
     // $ANTLR start "enumDeclaration"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:256:1: enumDeclaration : ENUM Identifier ( 'implements' typeList )? enumBody ;
+    // 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 ; }
-            // 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
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:255:2: ( ENUM Identifier ( 'implements' typeList )? enumBody )
+            // 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 ;
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:257:20: ( 'implements' typeList )?
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:255:20: ( 'implements' typeList )?
             int alt18=2;
             int LA18_0 = input.LA(1);
 
@@ -1057,7 +1056,7 @@
             }
             switch (alt18) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:257:21: 'implements' typeList
+                    // 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);
@@ -1093,16 +1092,16 @@
 
 
     // $ANTLR start "enumBody"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:260:1: enumBody : '{' ( enumConstants )? ( ',' )? ( enumBodyDeclarations )? '}' ;
+    // 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 ; }
-            // 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 )? '}'
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:259:2: ( '{' ( enumConstants )? ( ',' )? ( enumBodyDeclarations )? '}' )
+            // 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 ;
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:261:8: ( enumConstants )?
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:259:8: ( enumConstants )?
             int alt19=2;
             int LA19_0 = input.LA(1);
 
@@ -1124,7 +1123,7 @@
 
             }
 
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:261:23: ( ',' )?
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:259:23: ( ',' )?
             int alt20=2;
             int LA20_0 = input.LA(1);
 
@@ -1142,7 +1141,7 @@
 
             }
 
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:261:28: ( enumBodyDeclarations )?
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:259:28: ( enumBodyDeclarations )?
             int alt21=2;
             int LA21_0 = input.LA(1);
 
@@ -1182,20 +1181,20 @@
 
 
     // $ANTLR start "enumConstants"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:264:1: enumConstants : enumConstant ( ',' enumConstant )* ;
+    // 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 ; }
-            // 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 )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:263:2: ( enumConstant ( ',' enumConstant )* )
+            // 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 ;
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:265:17: ( ',' enumConstant )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:263:17: ( ',' enumConstant )*
             loop22:
             do {
                 int alt22=2;
@@ -1214,7 +1213,7 @@
 
                 switch (alt22) {
             	case 1 :
-            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:265:18: ',' enumConstant
+            	    // 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);
@@ -1248,15 +1247,15 @@
 
 
     // $ANTLR start "enumConstant"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:268:1: enumConstant : ( annotations )? Identifier ( arguments )? ( classBody )? ;
+    // 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 ; }
-            // 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:267:2: ( ( annotations )? Identifier ( arguments )? ( classBody )? )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:267:4: ( annotations )? Identifier ( arguments )? ( classBody )?
             {
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:269:4: ( annotations )?
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:267:4: ( annotations )?
             int alt23=2;
             int LA23_0 = input.LA(1);
 
@@ -1279,7 +1278,7 @@
             }
 
             match(input,Identifier,FOLLOW_Identifier_in_enumConstant409); if (state.failed) return ;
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:269:28: ( arguments )?
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:267:28: ( arguments )?
             int alt24=2;
             int LA24_0 = input.LA(1);
 
@@ -1288,7 +1287,7 @@
             }
             switch (alt24) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:269:29: arguments
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:267:29: arguments
                     {
                     pushFollow(FOLLOW_arguments_in_enumConstant412);
                     arguments();
@@ -1301,7 +1300,7 @@
 
             }
 
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:269:41: ( classBody )?
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:267:41: ( classBody )?
             int alt25=2;
             int LA25_0 = input.LA(1);
 
@@ -1310,7 +1309,7 @@
             }
             switch (alt25) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:269:42: classBody
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:267:42: classBody
                     {
                     pushFollow(FOLLOW_classBody_in_enumConstant417);
                     classBody();
@@ -1340,23 +1339,23 @@
 
 
     // $ANTLR start "enumBodyDeclarations"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:272:1: enumBodyDeclarations : ';' ( classBodyDeclaration )* ;
+    // 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 ; }
-            // 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 )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:271:2: ( ';' ( classBodyDeclaration )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:271: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 )*
+            // 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 :
-            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:273:9: classBodyDeclaration
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:271:9: classBodyDeclaration
             	    {
             	    pushFollow(FOLLOW_classBodyDeclaration_in_enumBodyDeclarations434);
             	    classBodyDeclaration();
@@ -1389,12 +1388,12 @@
 
 
     // $ANTLR start "interfaceDeclaration"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:276:1: interfaceDeclaration : ( normalInterfaceDeclaration | annotationTypeDeclaration );
+    // 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 ; }
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:277:2: ( normalInterfaceDeclaration | annotationTypeDeclaration )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:275:2: ( normalInterfaceDeclaration | annotationTypeDeclaration )
             int alt27=2;
             int LA27_0 = input.LA(1);
 
@@ -1413,7 +1412,7 @@
             }
             switch (alt27) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:277:4: normalInterfaceDeclaration
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:275:4: normalInterfaceDeclaration
                     {
                     pushFollow(FOLLOW_normalInterfaceDeclaration_in_interfaceDeclaration448);
                     normalInterfaceDeclaration();
@@ -1424,7 +1423,7 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:278:5: annotationTypeDeclaration
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:276:5: annotationTypeDeclaration
                     {
                     pushFollow(FOLLOW_annotationTypeDeclaration_in_interfaceDeclaration454);
                     annotationTypeDeclaration();
@@ -1450,17 +1449,17 @@
 
 
     // $ANTLR start "normalInterfaceDeclaration"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:281:1: normalInterfaceDeclaration : 'interface' Identifier ( typeParameters )? ( 'extends' typeList )? interfaceBody ;
+    // 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 ; }
-            // 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
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:280:2: ( 'interface' Identifier ( typeParameters )? ( 'extends' typeList )? interfaceBody )
+            // 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 ;
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:282:27: ( typeParameters )?
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:280:27: ( typeParameters )?
             int alt28=2;
             int LA28_0 = input.LA(1);
 
@@ -1482,7 +1481,7 @@
 
             }
 
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:282:43: ( 'extends' typeList )?
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:280:43: ( 'extends' typeList )?
             int alt29=2;
             int LA29_0 = input.LA(1);
 
@@ -1491,7 +1490,7 @@
             }
             switch (alt29) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:282:44: 'extends' typeList
+                    // 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);
@@ -1527,20 +1526,20 @@
 
 
     // $ANTLR start "typeList"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:285:1: typeList : type ( ',' type )* ;
+    // 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 ; }
-            // 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 )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:284:2: ( type ( ',' type )* )
+            // 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 ;
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:286:9: ( ',' type )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:284:9: ( ',' type )*
             loop30:
             do {
                 int alt30=2;
@@ -1553,7 +1552,7 @@
 
                 switch (alt30) {
             	case 1 :
-            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:286:10: ',' type
+            	    // 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);
@@ -1587,16 +1586,16 @@
 
 
     // $ANTLR start "classBody"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:289:1: classBody : '{' ( classBodyDeclaration )* '}' ;
+    // 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 ; }
-            // 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 )* '}'
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:288:2: ( '{' ( classBodyDeclaration )* '}' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:288: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 )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:288:8: ( classBodyDeclaration )*
             loop31:
             do {
                 int alt31=2;
@@ -1637,16 +1636,16 @@
 
 
     // $ANTLR start "interfaceBody"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:293:1: interfaceBody : '{' ( interfaceBodyDeclaration )* '}' ;
+    // 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 ; }
-            // 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 )* '}'
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:292:2: ( '{' ( interfaceBodyDeclaration )* '}' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:292: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 )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:292:8: ( interfaceBodyDeclaration )*
             loop32:
             do {
                 int alt32=2;
@@ -1687,26 +1686,26 @@
 
 
     // $ANTLR start "classBodyDeclaration"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:297:1: classBodyDeclaration : ( ';' | ( 'static' )? block | ( modifier )* memberDecl );
+    // 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 ; }
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:298:2: ( ';' | ( 'static' )? block | ( modifier )* memberDecl )
+            // 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 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:298:4: ';'
+                    // 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 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:299:4: ( 'static' )? block
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:297:4: ( 'static' )? block
                     {
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:299:4: ( 'static' )?
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:297:4: ( 'static' )?
                     int alt33=2;
                     int LA33_0 = input.LA(1);
 
@@ -1733,9 +1732,9 @@
                     }
                     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:298:4: ( modifier )* memberDecl
                     {
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:300:4: ( modifier )*
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:298:4: ( modifier )*
                     loop34:
                     do {
                         int alt34=2;
@@ -1782,17 +1781,17 @@
 
 
     // $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 );
+    // 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 ; }
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:304:2: ( genericMethodOrConstructorDecl | methodDeclaration | fieldDeclaration | 'void' Identifier voidMethodDeclaratorRest | Identifier constructorDeclaratorRest | interfaceDeclaration | classDeclaration )
+            // 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 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:304:4: genericMethodOrConstructorDecl
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:302:4: genericMethodOrConstructorDecl
                     {
                     pushFollow(FOLLOW_genericMethodOrConstructorDecl_in_memberDecl572);
                     genericMethodOrConstructorDecl();
@@ -1803,7 +1802,7 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:305:4: methodDeclaration
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:303:4: methodDeclaration
                     {
                     pushFollow(FOLLOW_methodDeclaration_in_memberDecl577);
                     methodDeclaration();
@@ -1814,7 +1813,7 @@
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:306:4: fieldDeclaration
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:304:4: fieldDeclaration
                     {
                     pushFollow(FOLLOW_fieldDeclaration_in_memberDecl582);
                     fieldDeclaration();
@@ -1825,7 +1824,7 @@
                     }
                     break;
                 case 4 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:307:4: 'void' Identifier voidMethodDeclaratorRest
+                    // 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 ;
@@ -1838,7 +1837,7 @@
                     }
                     break;
                 case 5 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:308:4: Identifier constructorDeclaratorRest
+                    // 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);
@@ -1850,7 +1849,7 @@
                     }
                     break;
                 case 6 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:309:4: interfaceDeclaration
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:307:4: interfaceDeclaration
                     {
                     pushFollow(FOLLOW_interfaceDeclaration_in_memberDecl603);
                     interfaceDeclaration();
@@ -1861,7 +1860,7 @@
                     }
                     break;
                 case 7 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:310:4: classDeclaration
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:308:4: classDeclaration
                     {
                     pushFollow(FOLLOW_classDeclaration_in_memberDecl608);
                     classDeclaration();
@@ -1887,13 +1886,13 @@
 
 
     // $ANTLR start "genericMethodOrConstructorDecl"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:313:1: genericMethodOrConstructorDecl : typeParameters genericMethodOrConstructorRest ;
+    // 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 ; }
-            // 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
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:312:2: ( typeParameters genericMethodOrConstructorRest )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:312:4: typeParameters genericMethodOrConstructorRest
             {
             pushFollow(FOLLOW_typeParameters_in_genericMethodOrConstructorDecl620);
             typeParameters();
@@ -1922,12 +1921,12 @@
 
 
     // $ANTLR start "genericMethodOrConstructorRest"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:317:1: genericMethodOrConstructorRest : ( ( type | 'void' ) Identifier methodDeclaratorRest | Identifier constructorDeclaratorRest );
+    // 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 ; }
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:318:2: ( ( type | 'void' ) Identifier methodDeclaratorRest | Identifier constructorDeclaratorRest )
+            // 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);
 
@@ -1960,9 +1959,9 @@
             }
             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:316:4: ( type | 'void' ) Identifier methodDeclaratorRest
                     {
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:318:4: ( type | 'void' )
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:316:4: ( type | 'void' )
                     int alt37=2;
                     int LA37_0 = input.LA(1);
 
@@ -1981,7 +1980,7 @@
                     }
                     switch (alt37) {
                         case 1 :
-                            // src/main/resources/org/drools/semantics/java/parser/Java.g:318:5: type
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:316:5: type
                             {
                             pushFollow(FOLLOW_type_in_genericMethodOrConstructorRest635);
                             type();
@@ -1992,7 +1991,7 @@
                             }
                             break;
                         case 2 :
-                            // src/main/resources/org/drools/semantics/java/parser/Java.g:318:12: 'void'
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:316:12: 'void'
                             {
                             match(input,40,FOLLOW_40_in_genericMethodOrConstructorRest639); if (state.failed) return ;
 
@@ -2011,7 +2010,7 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:319:4: Identifier constructorDeclaratorRest
+                    // 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);
@@ -2038,13 +2037,13 @@
 
 
     // $ANTLR start "methodDeclaration"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:322:1: methodDeclaration : type Identifier methodDeclaratorRest ;
+    // 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 ; }
-            // 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
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:321:2: ( type Identifier methodDeclaratorRest )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:321:4: type Identifier methodDeclaratorRest
             {
             pushFollow(FOLLOW_type_in_methodDeclaration662);
             type();
@@ -2074,13 +2073,13 @@
 
 
     // $ANTLR start "fieldDeclaration"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:326:1: fieldDeclaration : type variableDeclarators ';' ;
+    // 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 ; }
-            // 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 ';'
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:325:2: ( type variableDeclarators ';' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:325:4: type variableDeclarators ';'
             {
             pushFollow(FOLLOW_type_in_fieldDeclaration677);
             type();
@@ -2110,19 +2109,19 @@
 
 
     // $ANTLR start "interfaceBodyDeclaration"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:330:1: interfaceBodyDeclaration : ( ( modifier )* interfaceMemberDecl | ';' );
+    // 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 ; }
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:331:2: ( ( modifier )* interfaceMemberDecl | ';' )
+            // 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 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:331:4: ( modifier )* interfaceMemberDecl
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:329:4: ( modifier )* interfaceMemberDecl
                     {
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:331:4: ( modifier )*
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:329:4: ( modifier )*
                     loop39:
                     do {
                         int alt39=2;
@@ -2154,7 +2153,7 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:332:6: ';'
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:330:6: ';'
                     {
                     match(input,25,FOLLOW_25_in_interfaceBodyDeclaration704); if (state.failed) return ;
 
@@ -2176,12 +2175,12 @@
 
 
     // $ANTLR start "interfaceMemberDecl"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:335:1: interfaceMemberDecl : ( interfaceMethodOrFieldDecl | interfaceGenericMethodDecl | 'void' Identifier voidInterfaceMethodDeclaratorRest | interfaceDeclaration | classDeclaration );
+    // 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 ; }
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:336:2: ( interfaceMethodOrFieldDecl | interfaceGenericMethodDecl | 'void' Identifier voidInterfaceMethodDeclaratorRest | interfaceDeclaration | classDeclaration )
+            // 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:
@@ -2229,7 +2228,7 @@
 
             switch (alt41) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:336:4: interfaceMethodOrFieldDecl
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:334:4: interfaceMethodOrFieldDecl
                     {
                     pushFollow(FOLLOW_interfaceMethodOrFieldDecl_in_interfaceMemberDecl715);
                     interfaceMethodOrFieldDecl();
@@ -2240,7 +2239,7 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:337:6: interfaceGenericMethodDecl
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:335:6: interfaceGenericMethodDecl
                     {
                     pushFollow(FOLLOW_interfaceGenericMethodDecl_in_interfaceMemberDecl722);
                     interfaceGenericMethodDecl();
@@ -2251,7 +2250,7 @@
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:338:9: 'void' Identifier voidInterfaceMethodDeclaratorRest
+                    // 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 ;
@@ -2264,7 +2263,7 @@
                     }
                     break;
                 case 4 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:339:9: interfaceDeclaration
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:337:9: interfaceDeclaration
                     {
                     pushFollow(FOLLOW_interfaceDeclaration_in_interfaceMemberDecl746);
                     interfaceDeclaration();
@@ -2275,7 +2274,7 @@
                     }
                     break;
                 case 5 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:340:9: classDeclaration
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:338:9: classDeclaration
                     {
                     pushFollow(FOLLOW_classDeclaration_in_interfaceMemberDecl756);
                     classDeclaration();
@@ -2301,13 +2300,13 @@
 
 
     // $ANTLR start "interfaceMethodOrFieldDecl"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:343:1: interfaceMethodOrFieldDecl : type Identifier interfaceMethodOrFieldRest ;
+    // 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 ; }
-            // 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
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:342:2: ( type Identifier interfaceMethodOrFieldRest )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:342:4: type Identifier interfaceMethodOrFieldRest
             {
             pushFollow(FOLLOW_type_in_interfaceMethodOrFieldDecl768);
             type();
@@ -2337,12 +2336,12 @@
 
 
     // $ANTLR start "interfaceMethodOrFieldRest"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:347:1: interfaceMethodOrFieldRest : ( constantDeclaratorsRest ';' | interfaceMethodDeclaratorRest );
+    // 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 ; }
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:348:2: ( constantDeclaratorsRest ';' | interfaceMethodDeclaratorRest )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:346:2: ( constantDeclaratorsRest ';' | interfaceMethodDeclaratorRest )
             int alt42=2;
             int LA42_0 = input.LA(1);
 
@@ -2361,7 +2360,7 @@
             }
             switch (alt42) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:348:4: constantDeclaratorsRest ';'
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:346:4: constantDeclaratorsRest ';'
                     {
                     pushFollow(FOLLOW_constantDeclaratorsRest_in_interfaceMethodOrFieldRest784);
                     constantDeclaratorsRest();
@@ -2373,7 +2372,7 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:349:4: interfaceMethodDeclaratorRest
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:347:4: interfaceMethodDeclaratorRest
                     {
                     pushFollow(FOLLOW_interfaceMethodDeclaratorRest_in_interfaceMethodOrFieldRest791);
                     interfaceMethodDeclaratorRest();
@@ -2399,20 +2398,20 @@
 
 
     // $ANTLR start "methodDeclaratorRest"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:352:1: methodDeclaratorRest : formalParameters ( '[' ']' )* ( 'throws' qualifiedNameList )? ( methodBody | ';' ) ;
+    // 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 ; }
-            // 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 | ';' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:351:2: ( formalParameters ( '[' ']' )* ( 'throws' qualifiedNameList )? ( methodBody | ';' ) )
+            // 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 ;
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:353:21: ( '[' ']' )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:351:21: ( '[' ']' )*
             loop43:
             do {
                 int alt43=2;
@@ -2425,7 +2424,7 @@
 
                 switch (alt43) {
             	case 1 :
-            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:353:22: '[' ']'
+            	    // 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 ;
@@ -2438,7 +2437,7 @@
                 }
             } while (true);
 
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:354:9: ( 'throws' qualifiedNameList )?
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:352:9: ( 'throws' qualifiedNameList )?
             int alt44=2;
             int LA44_0 = input.LA(1);
 
@@ -2447,7 +2446,7 @@
             }
             switch (alt44) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:354:10: 'throws' qualifiedNameList
+                    // 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);
@@ -2461,7 +2460,7 @@
 
             }
 
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:355:9: ( methodBody | ';' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:353:9: ( methodBody | ';' )
             int alt45=2;
             int LA45_0 = input.LA(1);
 
@@ -2480,7 +2479,7 @@
             }
             switch (alt45) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:355:13: methodBody
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:353:13: methodBody
                     {
                     pushFollow(FOLLOW_methodBody_in_methodDeclaratorRest839);
                     methodBody();
@@ -2491,7 +2490,7 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:356:13: ';'
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:354:13: ';'
                     {
                     match(input,25,FOLLOW_25_in_methodDeclaratorRest853); if (state.failed) return ;
 
@@ -2517,20 +2516,20 @@
 
 
     // $ANTLR start "voidMethodDeclaratorRest"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:360:1: voidMethodDeclaratorRest : formalParameters ( 'throws' qualifiedNameList )? ( methodBody | ';' ) ;
+    // 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 ; }
-            // 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 | ';' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:359:2: ( formalParameters ( 'throws' qualifiedNameList )? ( methodBody | ';' ) )
+            // 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 ;
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:361:21: ( 'throws' qualifiedNameList )?
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:359:21: ( 'throws' qualifiedNameList )?
             int alt46=2;
             int LA46_0 = input.LA(1);
 
@@ -2539,7 +2538,7 @@
             }
             switch (alt46) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:361:22: 'throws' qualifiedNameList
+                    // 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);
@@ -2553,7 +2552,7 @@
 
             }
 
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:362:9: ( methodBody | ';' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:360:9: ( methodBody | ';' )
             int alt47=2;
             int LA47_0 = input.LA(1);
 
@@ -2572,7 +2571,7 @@
             }
             switch (alt47) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:362:13: methodBody
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:360:13: methodBody
                     {
                     pushFollow(FOLLOW_methodBody_in_voidMethodDeclaratorRest896);
                     methodBody();
@@ -2583,7 +2582,7 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:363:13: ';'
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:361:13: ';'
                     {
                     match(input,25,FOLLOW_25_in_voidMethodDeclaratorRest910); if (state.failed) return ;
 
@@ -2609,20 +2608,20 @@
 
 
     // $ANTLR start "interfaceMethodDeclaratorRest"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:367:1: interfaceMethodDeclaratorRest : formalParameters ( '[' ']' )* ( 'throws' qualifiedNameList )? ';' ;
+    // 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 ; }
-            // 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 )? ';'
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:366:2: ( formalParameters ( '[' ']' )* ( 'throws' qualifiedNameList )? ';' )
+            // 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 ;
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:368:21: ( '[' ']' )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:366:21: ( '[' ']' )*
             loop48:
             do {
                 int alt48=2;
@@ -2635,7 +2634,7 @@
 
                 switch (alt48) {
             	case 1 :
-            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:368:22: '[' ']'
+            	    // 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 ;
@@ -2648,7 +2647,7 @@
                 }
             } while (true);
 
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:368:32: ( 'throws' qualifiedNameList )?
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:366:32: ( 'throws' qualifiedNameList )?
             int alt49=2;
             int LA49_0 = input.LA(1);
 
@@ -2657,7 +2656,7 @@
             }
             switch (alt49) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:368:33: 'throws' qualifiedNameList
+                    // 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);
@@ -2689,20 +2688,20 @@
 
 
     // $ANTLR start "interfaceGenericMethodDecl"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:371:1: interfaceGenericMethodDecl : typeParameters ( type | 'void' ) Identifier interfaceMethodDeclaratorRest ;
+    // 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 ; }
-            // 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
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:370:2: ( typeParameters ( type | 'void' ) Identifier interfaceMethodDeclaratorRest )
+            // 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 ;
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:372:19: ( type | 'void' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:370:19: ( type | 'void' )
             int alt50=2;
             int LA50_0 = input.LA(1);
 
@@ -2721,7 +2720,7 @@
             }
             switch (alt50) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:372:20: type
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:370:20: type
                     {
                     pushFollow(FOLLOW_type_in_interfaceGenericMethodDecl963);
                     type();
@@ -2732,7 +2731,7 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:372:27: 'void'
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:370:27: 'void'
                     {
                     match(input,40,FOLLOW_40_in_interfaceGenericMethodDecl967); if (state.failed) return ;
 
@@ -2764,20 +2763,20 @@
 
 
     // $ANTLR start "voidInterfaceMethodDeclaratorRest"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:376:1: voidInterfaceMethodDeclaratorRest : formalParameters ( 'throws' qualifiedNameList )? ';' ;
+    // 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 ; }
-            // 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 )? ';'
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:375:2: ( formalParameters ( 'throws' qualifiedNameList )? ';' )
+            // 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 ;
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:377:21: ( 'throws' qualifiedNameList )?
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:375:21: ( 'throws' qualifiedNameList )?
             int alt51=2;
             int LA51_0 = input.LA(1);
 
@@ -2786,7 +2785,7 @@
             }
             switch (alt51) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:377:22: 'throws' qualifiedNameList
+                    // 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);
@@ -2818,20 +2817,20 @@
 
 
     // $ANTLR start "constructorDeclaratorRest"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:380:1: constructorDeclaratorRest : formalParameters ( 'throws' qualifiedNameList )? methodBody ;
+    // 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 ; }
-            // 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
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:379:2: ( formalParameters ( 'throws' qualifiedNameList )? methodBody )
+            // 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 ;
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:381:21: ( 'throws' qualifiedNameList )?
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:379:21: ( 'throws' qualifiedNameList )?
             int alt52=2;
             int LA52_0 = input.LA(1);
 
@@ -2840,7 +2839,7 @@
             }
             switch (alt52) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:381:22: 'throws' qualifiedNameList
+                    // 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);
@@ -2876,13 +2875,13 @@
 
 
     // $ANTLR start "constantDeclarator"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:384:1: constantDeclarator : Identifier constantDeclaratorRest ;
+    // 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 ; }
-            // 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
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:383:2: ( Identifier constantDeclaratorRest )
+            // 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);
@@ -2907,20 +2906,20 @@
 
 
     // $ANTLR start "variableDeclarators"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:388:1: variableDeclarators : variableDeclarator ( ',' variableDeclarator )* ;
+    // 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 ; }
-            // 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 )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:387:2: ( variableDeclarator ( ',' variableDeclarator )* )
+            // 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 ;
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:389:23: ( ',' variableDeclarator )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:387:23: ( ',' variableDeclarator )*
             loop53:
             do {
                 int alt53=2;
@@ -2933,7 +2932,7 @@
 
                 switch (alt53) {
             	case 1 :
-            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:389:24: ',' variableDeclarator
+            	    // 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);
@@ -2972,7 +2971,7 @@
 
 
     // $ANTLR start "variableDeclarator"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:392:1: variableDeclarator : id= Identifier rest= variableDeclaratorRest ;
+    // 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();
@@ -2987,8 +2986,8 @@
         	
         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
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:404:2: (id= Identifier rest= variableDeclaratorRest )
+            // 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);
@@ -3034,14 +3033,14 @@
     };
 
     // $ANTLR start "variableDeclaratorRest"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:418:1: variableDeclaratorRest : ( ( '[' ']' )+ ( '=' variableInitializer )? | '=' variableInitializer | );
+    // 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; }
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:419:2: ( ( '[' ']' )+ ( '=' variableInitializer )? | '=' variableInitializer | )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:417:2: ( ( '[' ']' )+ ( '=' variableInitializer )? | '=' variableInitializer | )
             int alt56=3;
             switch ( input.LA(1) ) {
             case 41:
@@ -3071,9 +3070,9 @@
 
             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:417:4: ( '[' ']' )+ ( '=' variableInitializer )?
                     {
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:419:4: ( '[' ']' )+
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:417:4: ( '[' ']' )+
                     int cnt54=0;
                     loop54:
                     do {
@@ -3087,7 +3086,7 @@
 
                         switch (alt54) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:419:5: '[' ']'
+                    	    // 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;
@@ -3105,7 +3104,7 @@
                         cnt54++;
                     } while (true);
 
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:419:15: ( '=' variableInitializer )?
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:417:15: ( '=' variableInitializer )?
                     int alt55=2;
                     int LA55_0 = input.LA(1);
 
@@ -3114,7 +3113,7 @@
                     }
                     switch (alt55) {
                         case 1 :
-                            // src/main/resources/org/drools/semantics/java/parser/Java.g:419:16: '=' variableInitializer
+                            // 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);
@@ -3132,7 +3131,7 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:420:4: '=' variableInitializer
+                    // 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);
@@ -3144,7 +3143,7 @@
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:422:2: 
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:420:2: 
                     {
                     }
                     break;
@@ -3166,20 +3165,20 @@
 
 
     // $ANTLR start "constantDeclaratorsRest"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:424:1: constantDeclaratorsRest : constantDeclaratorRest ( ',' constantDeclarator )* ;
+    // 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 ; }
-            // 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 )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:423:5: ( constantDeclaratorRest ( ',' constantDeclarator )* )
+            // 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 ;
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:425:32: ( ',' constantDeclarator )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:423:32: ( ',' constantDeclarator )*
             loop57:
             do {
                 int alt57=2;
@@ -3192,7 +3191,7 @@
 
                 switch (alt57) {
             	case 1 :
-            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:425:33: ',' constantDeclarator
+            	    // 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);
@@ -3226,15 +3225,15 @@
 
 
     // $ANTLR start "constantDeclaratorRest"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:428:1: constantDeclaratorRest : ( '[' ']' )* '=' variableInitializer ;
+    // 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 ; }
-            // 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:427:2: ( ( '[' ']' )* '=' variableInitializer )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:427:4: ( '[' ']' )* '=' variableInitializer
             {
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:429:4: ( '[' ']' )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:427:4: ( '[' ']' )*
             loop58:
             do {
                 int alt58=2;
@@ -3247,7 +3246,7 @@
 
                 switch (alt58) {
             	case 1 :
-            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:429:5: '[' ']'
+            	    // 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 ;
@@ -3283,16 +3282,16 @@
 
 
     // $ANTLR start "variableDeclaratorId"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:432:1: variableDeclaratorId : Identifier ( '[' ']' )* ;
+    // 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 ; }
-            // 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 ( '[' ']' )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:431:2: ( Identifier ( '[' ']' )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:431: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: ( '[' ']' )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:431:15: ( '[' ']' )*
             loop59:
             do {
                 int alt59=2;
@@ -3305,7 +3304,7 @@
 
                 switch (alt59) {
             	case 1 :
-            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:433:16: '[' ']'
+            	    // 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 ;
@@ -3335,17 +3334,17 @@
 
 
     // $ANTLR start "variableInitializer"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:436:1: variableInitializer : ( arrayInitializer | expression );
+    // 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 ; }
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:437:2: ( arrayInitializer | expression )
+            // 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 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:437:4: arrayInitializer
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:435:4: arrayInitializer
                     {
                     pushFollow(FOLLOW_arrayInitializer_in_variableInitializer1204);
                     arrayInitializer();
@@ -3356,7 +3355,7 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:438:9: expression
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:436:9: expression
                     {
                     pushFollow(FOLLOW_expression_in_variableInitializer1214);
                     expression();
@@ -3382,35 +3381,35 @@
 
 
     // $ANTLR start "arrayInitializer"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:441:1: arrayInitializer : '{' ( variableInitializer ( ',' variableInitializer )* ( ',' )? )? '}' ;
+    // 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 ; }
-            // 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 )* ( ',' )? )? '}'
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:440:2: ( '{' ( variableInitializer ( ',' variableInitializer )* ( ',' )? )? '}' )
+            // 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 ;
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:442:8: ( variableInitializer ( ',' variableInitializer )* ( ',' )? )?
+            // 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 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:442:9: variableInitializer ( ',' variableInitializer )* ( ',' )?
+                    // 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 ;
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:442:29: ( ',' variableInitializer )*
+                    // 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 :
-                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:442:30: ',' variableInitializer
+                    	    // 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);
@@ -3427,7 +3426,7 @@
                         }
                     } while (true);
 
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:442:56: ( ',' )?
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:440:56: ( ',' )?
                     int alt62=2;
                     int LA62_0 = input.LA(1);
 
@@ -3436,7 +3435,7 @@
                     }
                     switch (alt62) {
                         case 1 :
-                            // src/main/resources/org/drools/semantics/java/parser/Java.g:442:57: ','
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:440:57: ','
                             {
                             match(input,34,FOLLOW_34_in_arrayInitializer1239); if (state.failed) return ;
 
@@ -3469,17 +3468,17 @@
 
 
     // $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' );
+    // 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 ; }
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:446:5: ( annotation | 'public' | 'protected' | 'private' | 'static' | 'abstract' | 'final' | 'native' | 'synchronized' | 'transient' | 'volatile' | 'strictfp' )
+            // 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 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:446:9: annotation
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:444:9: annotation
                     {
                     pushFollow(FOLLOW_annotation_in_modifier1262);
                     annotation();
@@ -3490,77 +3489,77 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:447:9: 'public'
+                    // 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 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:448:9: 'protected'
+                    // 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 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:449:9: 'private'
+                    // 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 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:450:9: 'static'
+                    // 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 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:451:9: 'abstract'
+                    // 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 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:452:9: 'final'
+                    // 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 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:453:9: 'native'
+                    // 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 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:454:9: 'synchronized'
+                    // 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 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:455:9: 'transient'
+                    // 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 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:456:9: 'volatile'
+                    // 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 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:457:9: 'strictfp'
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:455:9: 'strictfp'
                     {
                     match(input,54,FOLLOW_54_in_modifier1372); if (state.failed) return ;
 
@@ -3582,16 +3581,16 @@
 
 
     // $ANTLR start "packageOrTypeName"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:460:1: packageOrTypeName : Identifier ( '.' Identifier )* ;
+    // 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 ; }
-            // 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 )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:459:2: ( Identifier ( '.' Identifier )* )
+            // 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 ;
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:461:15: ( '.' Identifier )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:459:15: ( '.' Identifier )*
             loop65:
             do {
                 int alt65=2;
@@ -3616,7 +3615,7 @@
 
                 switch (alt65) {
             	case 1 :
-            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:461:16: '.' Identifier
+            	    // 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 ;
@@ -3646,13 +3645,13 @@
 
 
     // $ANTLR start "enumConstantName"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:464:1: enumConstantName : Identifier ;
+    // 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 ; }
-            // 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
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:463:5: ( Identifier )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:463:9: Identifier
             {
             match(input,Identifier,FOLLOW_Identifier_in_enumConstantName1409); if (state.failed) return ;
 
@@ -3672,24 +3671,24 @@
 
 
     // $ANTLR start "typeName"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:468:1: typeName : ( Identifier | packageOrTypeName '.' Identifier );
+    // 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 ; }
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:469:2: ( Identifier | packageOrTypeName '.' Identifier )
+            // 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) ) {
+                if ( (LA66_1==28) ) {
+                    alt66=2;
+                }
+                else if ( (LA66_1==EOF) ) {
                     alt66=1;
                 }
-                else if ( (LA66_1==28) ) {
-                    alt66=2;
-                }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
@@ -3707,14 +3706,14 @@
             }
             switch (alt66) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:469:6: Identifier
+                    // 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 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:470:9: packageOrTypeName '.' Identifier
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:468:9: packageOrTypeName '.' Identifier
                     {
                     pushFollow(FOLLOW_packageOrTypeName_in_typeName1435);
                     packageOrTypeName();
@@ -3744,14 +3743,14 @@
     };
 
     // $ANTLR start "type"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:473:1: type : ( Identifier ( typeArguments )? ( '.' Identifier ( typeArguments )? )* ( '[' ']' )* | primitiveType ( '[' ']' )* );
+    // 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; }
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:474:2: ( Identifier ( typeArguments )? ( '.' Identifier ( typeArguments )? )* ( '[' ']' )* | primitiveType ( '[' ']' )* )
+            // 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);
 
@@ -3770,15 +3769,15 @@
             }
             switch (alt72) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:474:4: Identifier ( typeArguments )? ( '.' Identifier ( typeArguments )? )* ( '[' ']' )*
+                    // 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;
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:474:15: ( typeArguments )?
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:472: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
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:472:16: typeArguments
                             {
                             pushFollow(FOLLOW_typeArguments_in_type1453);
                             typeArguments();
@@ -3791,23 +3790,23 @@
 
                     }
 
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:474:32: ( '.' Identifier ( typeArguments )? )*
+                    // 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 :
-                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:474:33: '.' Identifier ( typeArguments )?
+                    	    // 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;
-                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:474:48: ( typeArguments )?
+                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:472: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
+                    	            // src/main/resources/org/drools/semantics/java/parser/Java.g:472:49: typeArguments
                     	            {
                     	            pushFollow(FOLLOW_typeArguments_in_type1463);
                     	            typeArguments();
@@ -3829,14 +3828,14 @@
                         }
                     } while (true);
 
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:474:68: ( '[' ']' )*
+                    // 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 :
-                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:474:69: '[' ']'
+                    	    // 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;
@@ -3853,21 +3852,21 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:475:4: primitiveType ( '[' ']' )*
+                    // 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;
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:475:18: ( '[' ']' )*
+                    // 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 :
-                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:475:19: '[' ']'
+                    	    // 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;
@@ -3901,12 +3900,12 @@
 
 
     // $ANTLR start "primitiveType"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:478:1: primitiveType : ( 'boolean' | 'char' | 'byte' | 'short' | 'int' | 'long' | 'float' | 'double' );
+    // 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 ; }
-            // 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:477: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) ) {
@@ -3938,14 +3937,14 @@
     };
 
     // $ANTLR start "variableModifier"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:489:1: variableModifier : ( 'final' | annotation );
+    // 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; }
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:490:2: ( 'final' | annotation )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:488:2: ( 'final' | annotation )
             int alt73=2;
             int LA73_0 = input.LA(1);
 
@@ -3964,14 +3963,14 @@
             }
             switch (alt73) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:490:4: 'final'
+                    // 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 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:491:9: annotation
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:489:9: annotation
                     {
                     pushFollow(FOLLOW_annotation_in_variableModifier1583);
                     annotation();
@@ -3999,13 +3998,13 @@
 
 
     // $ANTLR start "typeArguments"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:494:1: typeArguments : '<' typeArgument ( ',' typeArgument )* '>' ;
+    // 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 ; }
-            // 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 )* '>'
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:493:2: ( '<' typeArgument ( ',' typeArgument )* '>' )
+            // 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);
@@ -4013,7 +4012,7 @@
 
             state._fsp--;
             if (state.failed) return ;
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:495:21: ( ',' typeArgument )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:493:21: ( ',' typeArgument )*
             loop74:
             do {
                 int alt74=2;
@@ -4026,7 +4025,7 @@
 
                 switch (alt74) {
             	case 1 :
-            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:495:22: ',' typeArgument
+            	    // 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);
@@ -4061,12 +4060,12 @@
 
 
     // $ANTLR start "typeArgument"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:498:1: typeArgument : ( type | '?' ( ( 'extends' | 'super' ) type )? );
+    // 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 ; }
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:499:2: ( type | '?' ( ( 'extends' | 'super' ) type )? )
+            // 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);
 
@@ -4085,7 +4084,7 @@
             }
             switch (alt76) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:499:4: type
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:497:4: type
                     {
                     pushFollow(FOLLOW_type_in_typeArgument1617);
                     type();
@@ -4096,10 +4095,10 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:500:4: '?' ( ( 'extends' | 'super' ) type )?
+                    // 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 ;
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:500:8: ( ( 'extends' | 'super' ) type )?
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:498:8: ( ( 'extends' | 'super' ) type )?
                     int alt75=2;
                     int LA75_0 = input.LA(1);
 
@@ -4108,7 +4107,7 @@
                     }
                     switch (alt75) {
                         case 1 :
-                            // src/main/resources/org/drools/semantics/java/parser/Java.g:500:9: ( 'extends' | 'super' ) type
+                            // 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();
@@ -4150,20 +4149,20 @@
 
 
     // $ANTLR start "qualifiedNameList"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:503:1: qualifiedNameList : qualifiedName ( ',' qualifiedName )* ;
+    // 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 ; }
-            // 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 )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:502:2: ( qualifiedName ( ',' qualifiedName )* )
+            // 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 ;
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:504:18: ( ',' qualifiedName )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:502:18: ( ',' qualifiedName )*
             loop77:
             do {
                 int alt77=2;
@@ -4176,7 +4175,7 @@
 
                 switch (alt77) {
             	case 1 :
-            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:504:19: ',' qualifiedName
+            	    // 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);
@@ -4210,16 +4209,16 @@
 
 
     // $ANTLR start "formalParameters"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:507:1: formalParameters : '(' ( formalParameterDecls )? ')' ;
+    // 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 ; }
-            // 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 )? ')'
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:506:2: ( '(' ( formalParameterDecls )? ')' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:506: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 )?
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:506:8: ( formalParameterDecls )?
             int alt78=2;
             int LA78_0 = input.LA(1);
 
@@ -4259,15 +4258,15 @@
 
 
     // $ANTLR start "formalParameterDecls"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:511:1: formalParameterDecls : ( variableModifier )* type ( formalParameterDeclsRest )? ;
+    // 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 ; }
-            // 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:510:2: ( ( variableModifier )* type ( formalParameterDeclsRest )? )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:510:4: ( variableModifier )* type ( formalParameterDeclsRest )?
             {
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:512:4: ( variableModifier )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:510:4: ( variableModifier )*
             loop79:
             do {
                 int alt79=2;
@@ -4301,7 +4300,7 @@
 
             state._fsp--;
             if (state.failed) return ;
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:512:27: ( formalParameterDeclsRest )?
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:510:27: ( formalParameterDeclsRest )?
             int alt80=2;
             int LA80_0 = input.LA(1);
 
@@ -4340,12 +4339,12 @@
 
 
     // $ANTLR start "formalParameterDeclsRest"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:515:1: formalParameterDeclsRest : ( variableDeclaratorId ( ',' formalParameterDecls )? | '...' variableDeclaratorId );
+    // 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 ; }
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:516:2: ( variableDeclaratorId ( ',' formalParameterDecls )? | '...' variableDeclaratorId )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:514:2: ( variableDeclaratorId ( ',' formalParameterDecls )? | '...' variableDeclaratorId )
             int alt82=2;
             int LA82_0 = input.LA(1);
 
@@ -4364,14 +4363,14 @@
             }
             switch (alt82) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:516:4: variableDeclaratorId ( ',' formalParameterDecls )?
+                    // 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 ;
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:516:25: ( ',' formalParameterDecls )?
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:514:25: ( ',' formalParameterDecls )?
                     int alt81=2;
                     int LA81_0 = input.LA(1);
 
@@ -4380,7 +4379,7 @@
                     }
                     switch (alt81) {
                         case 1 :
-                            // src/main/resources/org/drools/semantics/java/parser/Java.g:516:26: ',' formalParameterDecls
+                            // 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);
@@ -4398,7 +4397,7 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:517:6: '...' variableDeclaratorId
+                    // 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);
@@ -4425,13 +4424,13 @@
 
 
     // $ANTLR start "methodBody"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:520:1: methodBody : block ;
+    // 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 ; }
-            // 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
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:519:2: ( block )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:519:4: block
             {
             pushFollow(FOLLOW_block_in_methodBody1729);
             block();
@@ -4455,16 +4454,16 @@
 
 
     // $ANTLR start "qualifiedName"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:524:1: qualifiedName : Identifier ( '.' Identifier )* ;
+    // 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 ; }
-            // 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 )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:523:2: ( Identifier ( '.' Identifier )* )
+            // 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 ;
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:525:15: ( '.' Identifier )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:523:15: ( '.' Identifier )*
             loop83:
             do {
                 int alt83=2;
@@ -4477,7 +4476,7 @@
 
                 switch (alt83) {
             	case 1 :
-            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:525:16: '.' Identifier
+            	    // 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 ;
@@ -4507,12 +4506,12 @@
 
 
     // $ANTLR start "literal"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:528:1: literal : ( integerLiteral | FloatingPointLiteral | CharacterLiteral | StringLiteral | booleanLiteral | 'null' );
+    // 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 ; }
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:529:2: ( integerLiteral | FloatingPointLiteral | CharacterLiteral | StringLiteral | booleanLiteral | 'null' )
+            // 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:
@@ -4558,7 +4557,7 @@
 
             switch (alt84) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:529:6: integerLiteral
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:527:6: integerLiteral
                     {
                     pushFollow(FOLLOW_integerLiteral_in_literal1762);
                     integerLiteral();
@@ -4569,28 +4568,28 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:530:9: FloatingPointLiteral
+                    // 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 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:531:9: CharacterLiteral
+                    // 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 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:532:9: StringLiteral
+                    // 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 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:533:9: booleanLiteral
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:531:9: booleanLiteral
                     {
                     pushFollow(FOLLOW_booleanLiteral_in_literal1802);
                     booleanLiteral();
@@ -4601,7 +4600,7 @@
                     }
                     break;
                 case 6 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:534:9: 'null'
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:532:9: 'null'
                     {
                     match(input,68,FOLLOW_68_in_literal1812); if (state.failed) return ;
 
@@ -4623,12 +4622,12 @@
 
 
     // $ANTLR start "integerLiteral"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:537:1: integerLiteral : ( HexLiteral | OctalLiteral | DecimalLiteral );
+    // 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 ; }
-            // 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:536:5: ( HexLiteral | OctalLiteral | DecimalLiteral )
             // src/main/resources/org/drools/semantics/java/parser/Java.g:
             {
             if ( (input.LA(1)>=HexLiteral && input.LA(1)<=DecimalLiteral) ) {
@@ -4658,12 +4657,12 @@
 
 
     // $ANTLR start "booleanLiteral"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:543:1: booleanLiteral : ( 'true' | 'false' );
+    // 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 ; }
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:544:5: ( 'true' | 'false' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:542:5: ( 'true' | 'false' )
             // src/main/resources/org/drools/semantics/java/parser/Java.g:
             {
             if ( (input.LA(1)>=69 && input.LA(1)<=70) ) {
@@ -4693,15 +4692,15 @@
 
 
     // $ANTLR start "annotations"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:550:1: annotations : ( annotation )+ ;
+    // 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 ; }
-            // 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:549:2: ( ( annotation )+ )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:549:4: ( annotation )+
             {
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:551:4: ( annotation )+
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:549:4: ( annotation )+
             int cnt85=0;
             loop85:
             do {
@@ -4747,13 +4746,13 @@
 
 
     // $ANTLR start "annotation"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:554:1: annotation : '@' annotationName ( '(' ( elementValuePairs )? ')' )? ;
+    // 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 ; }
-            // 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 )? ')' )?
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:553:2: ( '@' annotationName ( '(' ( elementValuePairs )? ')' )? )
+            // 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);
@@ -4761,15 +4760,15 @@
 
             state._fsp--;
             if (state.failed) return ;
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:555:23: ( '(' ( elementValuePairs )? ')' )?
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:553: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 )? ')'
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:553: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 )?
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:553:28: ( elementValuePairs )?
                     int alt86=2;
                     alt86 = dfa86.predict(input);
                     switch (alt86) {
@@ -4811,23 +4810,23 @@
 
 
     // $ANTLR start "annotationName"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:558:1: annotationName : Identifier ( '.' Identifier )* ;
+    // 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 ; }
-            // 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 )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:557:2: ( Identifier ( '.' Identifier )* )
+            // 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 ;
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:559:15: ( '.' Identifier )*
+            // 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 :
-            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:559:16: '.' Identifier
+            	    // 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 ;
@@ -4857,20 +4856,20 @@
 
 
     // $ANTLR start "elementValuePairs"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:562:1: elementValuePairs : elementValuePair ( ',' elementValuePair )* ;
+    // 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 ; }
-            // 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 )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:561:2: ( elementValuePair ( ',' elementValuePair )* )
+            // 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 ;
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:563:21: ( ',' elementValuePair )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:561:21: ( ',' elementValuePair )*
             loop89:
             do {
                 int alt89=2;
@@ -4883,7 +4882,7 @@
 
                 switch (alt89) {
             	case 1 :
-            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:563:22: ',' elementValuePair
+            	    // 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);
@@ -4917,20 +4916,20 @@
 
 
     // $ANTLR start "elementValuePair"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:566:1: elementValuePair : ( Identifier '=' )? elementValue ;
+    // 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 ; }
-            // 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:565:2: ( ( Identifier '=' )? elementValue )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:565:4: ( Identifier '=' )? elementValue
             {
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:567:4: ( Identifier '=' )?
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:565: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 '='
+                    // 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 ;
@@ -4962,17 +4961,17 @@
 
 
     // $ANTLR start "elementValue"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:570:1: elementValue : ( conditionalExpression | annotation | elementValueArrayInitializer );
+    // 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 ; }
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:571:2: ( conditionalExpression | annotation | elementValueArrayInitializer )
+            // 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 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:571:4: conditionalExpression
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:569:4: conditionalExpression
                     {
                     pushFollow(FOLLOW_conditionalExpression_in_elementValue1986);
                     conditionalExpression();
@@ -4983,7 +4982,7 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:572:6: annotation
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:570:6: annotation
                     {
                     pushFollow(FOLLOW_annotation_in_elementValue1993);
                     annotation();
@@ -4994,7 +4993,7 @@
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:573:6: elementValueArrayInitializer
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:571:6: elementValueArrayInitializer
                     {
                     pushFollow(FOLLOW_elementValueArrayInitializer_in_elementValue2000);
                     elementValueArrayInitializer();
@@ -5020,28 +5019,28 @@
 
 
     // $ANTLR start "elementValueArrayInitializer"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:576:1: elementValueArrayInitializer : '{' ( elementValue ( ',' elementValue )* )? '}' ;
+    // 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 ; }
-            // 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 )* )? '}'
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:575:2: ( '{' ( elementValue ( ',' elementValue )* )? '}' )
+            // 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 ;
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:577:8: ( elementValue ( ',' elementValue )* )?
+            // 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 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:577:9: elementValue ( ',' elementValue )*
+                    // 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 ;
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:577:22: ( ',' elementValue )*
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:575:22: ( ',' elementValue )*
                     loop92:
                     do {
                         int alt92=2;
@@ -5054,7 +5053,7 @@
 
                         switch (alt92) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:577:23: ',' elementValue
+                    	    // 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);
@@ -5095,13 +5094,13 @@
 
 
     // $ANTLR start "annotationTypeDeclaration"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:580:1: annotationTypeDeclaration : '@' 'interface' Identifier annotationTypeBody ;
+    // 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 ; }
-            // 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
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:579:2: ( '@' 'interface' Identifier annotationTypeBody )
+            // 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 ;
@@ -5128,21 +5127,21 @@
 
 
     // $ANTLR start "annotationTypeBody"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:584:1: annotationTypeBody : '{' ( annotationTypeElementDeclarations )? '}' ;
+    // 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 ; }
-            // 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 )? '}'
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:583:2: ( '{' ( annotationTypeElementDeclarations )? '}' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:583: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 )?
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:583: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
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:583:9: annotationTypeElementDeclarations
                     {
                     pushFollow(FOLLOW_annotationTypeElementDeclarations_in_annotationTypeBody2060);
                     annotationTypeElementDeclarations();
@@ -5173,16 +5172,16 @@
 
 
     // $ANTLR start "annotationTypeElementDeclarations"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:588:1: annotationTypeElementDeclarations : ( annotationTypeElementDeclaration ) ( annotationTypeElementDeclaration )* ;
+    // 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 ; }
-            // 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:587:2: ( ( annotationTypeElementDeclaration ) ( annotationTypeElementDeclaration )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:587: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
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:587:4: ( annotationTypeElementDeclaration )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:587:5: annotationTypeElementDeclaration
             {
             pushFollow(FOLLOW_annotationTypeElementDeclaration_in_annotationTypeElementDeclarations2077);
             annotationTypeElementDeclaration();
@@ -5192,14 +5191,14 @@
 
             }
 
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:589:39: ( annotationTypeElementDeclaration )*
+            // 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 :
-            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:589:40: annotationTypeElementDeclaration
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:587:40: annotationTypeElementDeclaration
             	    {
             	    pushFollow(FOLLOW_annotationTypeElementDeclaration_in_annotationTypeElementDeclarations2081);
             	    annotationTypeElementDeclaration();
@@ -5232,22 +5231,22 @@
 
 
     // $ANTLR start "annotationTypeElementDeclaration"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:592:1: annotationTypeElementDeclaration : ( modifier )* annotationTypeElementRest ;
+    // 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 ; }
-            // 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:591:2: ( ( modifier )* annotationTypeElementRest )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:591:4: ( modifier )* annotationTypeElementRest
             {
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:593:4: ( modifier )*
+            // 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 :
-            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:593:5: modifier
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:591:5: modifier
             	    {
             	    pushFollow(FOLLOW_modifier_in_annotationTypeElementDeclaration2096);
             	    modifier();
@@ -5285,17 +5284,17 @@
 
 
     // $ANTLR start "annotationTypeElementRest"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:596:1: annotationTypeElementRest : ( type annotationMethodOrConstantRest ';' | classDeclaration ( ';' )? | interfaceDeclaration ( ';' )? | enumDeclaration ( ';' )? | annotationTypeDeclaration ( ';' )? );
+    // 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 ; }
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:597:2: ( type annotationMethodOrConstantRest ';' | classDeclaration ( ';' )? | interfaceDeclaration ( ';' )? | enumDeclaration ( ';' )? | annotationTypeDeclaration ( ';' )? )
+            // 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 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:597:4: type annotationMethodOrConstantRest ';'
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:595:4: type annotationMethodOrConstantRest ';'
                     {
                     pushFollow(FOLLOW_type_in_annotationTypeElementRest2112);
                     type();
@@ -5312,14 +5311,14 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:598:6: classDeclaration ( ';' )?
+                    // 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 ;
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:598:23: ( ';' )?
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:596:23: ( ';' )?
                     int alt97=2;
                     alt97 = dfa97.predict(input);
                     switch (alt97) {
@@ -5337,14 +5336,14 @@
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:599:6: interfaceDeclaration ( ';' )?
+                    // 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 ;
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:599:27: ( ';' )?
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:597:27: ( ';' )?
                     int alt98=2;
                     alt98 = dfa98.predict(input);
                     switch (alt98) {
@@ -5362,14 +5361,14 @@
                     }
                     break;
                 case 4 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:600:6: enumDeclaration ( ';' )?
+                    // 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 ;
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:600:22: ( ';' )?
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:598:22: ( ';' )?
                     int alt99=2;
                     alt99 = dfa99.predict(input);
                     switch (alt99) {
@@ -5387,14 +5386,14 @@
                     }
                     break;
                 case 5 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:601:6: annotationTypeDeclaration ( ';' )?
+                    // 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 ;
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:601:32: ( ';' )?
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:599:32: ( ';' )?
                     int alt100=2;
                     alt100 = dfa100.predict(input);
                     switch (alt100) {
@@ -5427,12 +5426,12 @@
 
 
     // $ANTLR start "annotationMethodOrConstantRest"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:604:1: annotationMethodOrConstantRest : ( annotationMethodRest | annotationConstantRest );
+    // 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 ; }
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:605:2: ( annotationMethodRest | annotationConstantRest )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:603:2: ( annotationMethodRest | annotationConstantRest )
             int alt102=2;
             int LA102_0 = input.LA(1);
 
@@ -5462,7 +5461,7 @@
             }
             switch (alt102) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:605:4: annotationMethodRest
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:603:4: annotationMethodRest
                     {
                     pushFollow(FOLLOW_annotationMethodRest_in_annotationMethodOrConstantRest2168);
                     annotationMethodRest();
@@ -5473,7 +5472,7 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:606:6: annotationConstantRest
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:604:6: annotationConstantRest
                     {
                     pushFollow(FOLLOW_annotationConstantRest_in_annotationMethodOrConstantRest2175);
                     annotationConstantRest();
@@ -5499,18 +5498,18 @@
 
 
     // $ANTLR start "annotationMethodRest"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:609:1: annotationMethodRest : Identifier '(' ')' ( defaultValue )? ;
+    // 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 ; }
-            // 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 )?
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:608:3: ( Identifier '(' ')' ( defaultValue )? )
+            // 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 ;
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:610:24: ( defaultValue )?
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:608:24: ( defaultValue )?
             int alt103=2;
             int LA103_0 = input.LA(1);
 
@@ -5519,7 +5518,7 @@
             }
             switch (alt103) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:610:25: defaultValue
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:608:25: defaultValue
                     {
                     pushFollow(FOLLOW_defaultValue_in_annotationMethodRest2195);
                     defaultValue();
@@ -5549,13 +5548,13 @@
 
 
     // $ANTLR start "annotationConstantRest"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:613:1: annotationConstantRest : variableDeclarators ;
+    // 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 ; }
-            // 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
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:612:3: ( variableDeclarators )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:612:5: variableDeclarators
             {
             pushFollow(FOLLOW_variableDeclarators_in_annotationConstantRest2212);
             variableDeclarators();
@@ -5579,13 +5578,13 @@
 
 
     // $ANTLR start "defaultValue"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:617:1: defaultValue : 'default' elementValue ;
+    // 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 ; }
-            // 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
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:616:3: ( 'default' elementValue )
+            // 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);
@@ -5610,7 +5609,7 @@
 
 
     // $ANTLR start "block"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:623:1: block : '{' ( blockStatement )* '}' ;
+    // 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();
 
@@ -5618,11 +5617,11 @@
                 
         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 )* '}'
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:628:2: ( '{' ( blockStatement )* '}' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:628: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 )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:628:8: ( blockStatement )*
             loop104:
             do {
                 int alt104=2;
@@ -5668,17 +5667,17 @@
 
 
     // $ANTLR start "blockStatement"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:633:1: blockStatement : ( localVariableDeclaration | classOrInterfaceDeclaration | statement );
+    // 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 ; }
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:634:2: ( localVariableDeclaration | classOrInterfaceDeclaration | statement )
+            // 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 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:634:4: localVariableDeclaration
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:632:4: localVariableDeclaration
                     {
                     pushFollow(FOLLOW_localVariableDeclaration_in_blockStatement2286);
                     localVariableDeclaration();
@@ -5689,7 +5688,7 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:635:4: classOrInterfaceDeclaration
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:633:4: classOrInterfaceDeclaration
                     {
                     pushFollow(FOLLOW_classOrInterfaceDeclaration_in_blockStatement2291);
                     classOrInterfaceDeclaration();
@@ -5700,7 +5699,7 @@
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:636:8: statement
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:634:8: statement
                     {
                     pushFollow(FOLLOW_statement_in_blockStatement2300);
                     statement();
@@ -5731,7 +5730,7 @@
 
 
     // $ANTLR start "localVariableDeclaration"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:639:1: localVariableDeclaration : ( variableModifier )* type variableDeclarators ';' ;
+    // 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();
@@ -5745,10 +5744,10 @@
                 
         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:647:2: ( ( variableModifier )* type variableDeclarators ';' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:648:2: ( variableModifier )* type variableDeclarators ';'
             {
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:650:2: ( variableModifier )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:648:2: ( variableModifier )*
             loop106:
             do {
                 int alt106=2;
@@ -5761,7 +5760,7 @@
 
                 switch (alt106) {
             	case 1 :
-            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:650:4: variableModifier
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:648:4: variableModifier
             	    {
             	    pushFollow(FOLLOW_variableModifier_in_localVariableDeclaration2348);
             	    variableModifier1=variableModifier();
@@ -5824,17 +5823,17 @@
 
 
     // $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 );
+    // 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 | 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 )
+            // 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 | 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
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:664:4: block
                     {
                     pushFollow(FOLLOW_block_in_statement2390);
                     block();
@@ -5845,7 +5844,7 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:667:7: 'assert' expression ( ':' expression )? ';'
+                    // 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);
@@ -5853,7 +5852,7 @@
 
                     state._fsp--;
                     if (state.failed) return ;
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:667:27: ( ':' expression )?
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:665:27: ( ':' expression )?
                     int alt107=2;
                     int LA107_0 = input.LA(1);
 
@@ -5862,7 +5861,7 @@
                     }
                     switch (alt107) {
                         case 1 :
-                            // src/main/resources/org/drools/semantics/java/parser/Java.g:667:28: ':' expression
+                            // 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);
@@ -5881,7 +5880,7 @@
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:668:7: 'if' parExpression statement ( options {k=1; } : 'else' statement )?
+                    // 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);
@@ -5894,7 +5893,7 @@
 
                     state._fsp--;
                     if (state.failed) return ;
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:668:36: ( options {k=1; } : 'else' statement )?
+                    // 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);
 
@@ -5907,7 +5906,7 @@
                     }
                     switch (alt108) {
                         case 1 :
-                            // src/main/resources/org/drools/semantics/java/parser/Java.g:668:52: 'else' statement
+                            // 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);
@@ -5925,7 +5924,7 @@
                     }
                     break;
                 case 4 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:669:7: 'for' '(' forControl ')' statement
+                    // 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 ;
@@ -5944,7 +5943,7 @@
                     }
                     break;
                 case 5 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:670:7: 'while' parExpression statement
+                    // 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);
@@ -5961,7 +5960,7 @@
                     }
                     break;
                 case 6 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:671:7: 'do' statement 'while' parExpression ';'
+                    // 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);
@@ -5980,7 +5979,7 @@
                     }
                     break;
                 case 7 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:672:7: 'try' block ( catches 'finally' block | catches | 'finally' block )
+                    // 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);
@@ -5988,11 +5987,11 @@
 
                     state._fsp--;
                     if (state.failed) return ;
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:673:7: ( catches 'finally' block | catches | 'finally' block )
+                    // 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==89) ) {
+                    if ( (LA109_0==90) ) {
                         int LA109_1 = input.LA(2);
 
                         if ( (LA109_1==65) ) {
@@ -6032,7 +6031,7 @@
                     }
                     switch (alt109) {
                         case 1 :
-                            // 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:671:9: catches 'finally' block
                             {
                             pushFollow(FOLLOW_catches_in_statement2499);
                             catches();
@@ -6049,7 +6048,7 @@
                             }
                             break;
                         case 2 :
-                            // src/main/resources/org/drools/semantics/java/parser/Java.g:674:9: catches
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:672:9: catches
                             {
                             pushFollow(FOLLOW_catches_in_statement2513);
                             catches();
@@ -6060,7 +6059,7 @@
                             }
                             break;
                         case 3 :
-                            // src/main/resources/org/drools/semantics/java/parser/Java.g:675:9: 'finally' block
+                            // 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);
@@ -6078,7 +6077,7 @@
                     }
                     break;
                 case 8 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:677:7: 'switch' parExpression '{' switchBlockStatementGroups '}'
+                    // 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);
@@ -6097,7 +6096,7 @@
                     }
                     break;
                 case 9 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:678:7: 'synchronized' parExpression block
+                    // 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);
@@ -6114,10 +6113,10 @@
                     }
                     break;
                 case 10 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:679:7: 'return' ( expression )? ';'
+                    // 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 ;
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:679:16: ( expression )?
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:677:16: ( expression )?
                     int alt110=2;
                     alt110 = dfa110.predict(input);
                     switch (alt110) {
@@ -6140,7 +6139,7 @@
                     }
                     break;
                 case 11 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:680:7: 'throw' expression ';'
+                    // 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);
@@ -6153,10 +6152,10 @@
                     }
                     break;
                 case 12 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:681:7: 'break' ( Identifier )? ';'
+                    // 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 ;
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:681:15: ( Identifier )?
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:679:15: ( Identifier )?
                     int alt111=2;
                     int LA111_0 = input.LA(1);
 
@@ -6179,10 +6178,10 @@
                     }
                     break;
                 case 13 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:682:7: 'continue' ( Identifier )? ';'
+                    // 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 ;
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:682:18: ( Identifier )?
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:680:18: ( Identifier )?
                     int alt112=2;
                     int LA112_0 = input.LA(1);
 
@@ -6205,7 +6204,7 @@
                     }
                     break;
                 case 14 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:684:7: modifyStatement
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:682:7: modifyStatement
                     {
                     pushFollow(FOLLOW_modifyStatement_in_statement2625);
                     modifyStatement();
@@ -6216,7 +6215,7 @@
                     }
                     break;
                 case 15 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:685:7: exitPointsStatement
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:683:7: exitPointsStatement
                     {
                     pushFollow(FOLLOW_exitPointsStatement_in_statement2633);
                     exitPointsStatement();
@@ -6227,14 +6226,14 @@
                     }
                     break;
                 case 16 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:686:7: ';'
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:684: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 ';'
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:685:7: statementExpression ';'
                     {
                     pushFollow(FOLLOW_statementExpression_in_statement2649);
                     statementExpression();
@@ -6246,7 +6245,7 @@
                     }
                     break;
                 case 18 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:688:7: Identifier ':' statement
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:686: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 ;
@@ -6274,7 +6273,7 @@
 
 
     // $ANTLR start "modifyStatement"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:691:1: modifyStatement : s= 'modify' parExpression '{' (e= expression ( ',' e= expression )* )? c= '}' ;
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:689:1: modifyStatement : s= 'modify' parExpression '{' (e= expression ( ',' e= expression )* )? c= '}' ;
     public final void modifyStatement() throws RecognitionException {
         int modifyStatement_StartIndex = input.index();
         Token s=null;
@@ -6289,8 +6288,8 @@
         	
         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= '}'
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:693:2: (s= 'modify' parExpression '{' (e= expression ( ',' e= expression )* )? c= '}' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:693: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);
@@ -6302,17 +6301,17 @@
 
               	    d = new JavaModifyBlockDescr( (parExpression3!=null?input.toString(parExpression3.start,parExpression3.stop):null) );
               	    d.setStart( ((CommonToken)s).getStartIndex() );
-              	    this.modifyBlocks.add( d );
+              	    this.blocks.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 )* )?
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:700: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 )*
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:700:8: e= expression ( ',' e= expression )*
                     {
                     pushFollow(FOLLOW_expression_in_modifyStatement2700);
                     e=expression();
@@ -6322,7 +6321,7 @@
                     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 )*
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:701:9: ( ',' e= expression )*
                     loop114:
                     do {
                         int alt114=2;
@@ -6335,7 +6334,7 @@
 
                         switch (alt114) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:703:10: ',' e= expression
+                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:701:10: ',' e= expression
                     	    {
                     	    match(input,34,FOLLOW_34_in_modifyStatement2713); if (state.failed) return ;
                     	    pushFollow(FOLLOW_expression_in_modifyStatement2717);
@@ -6384,7 +6383,7 @@
 
 
     // $ANTLR start "exitPointsStatement"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:711:1: exitPointsStatement : s= 'exitPoints' '[' id= StringLiteral c= ']' ;
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:709:1: exitPointsStatement : (s= 'exitPoints' '[' id= StringLiteral c= ']' | s= 'entryPoints' '[' id= StringLiteral c= ']' ) ;
     public final void exitPointsStatement() throws RecognitionException {
         int exitPointsStatement_StartIndex = input.index();
         Token s=null;
@@ -6392,28 +6391,75 @@
         Token c=null;
 
 
-        	    JavaExitPointsDescr d = null;
+        	    JavaInterfacePointsDescr 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= ']'
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:713:9: ( (s= 'exitPoints' '[' id= StringLiteral c= ']' | s= 'entryPoints' '[' id= StringLiteral c= ']' ) )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:714:9: (s= 'exitPoints' '[' id= StringLiteral c= ']' | s= 'entryPoints' '[' 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 ) {
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:714:9: (s= 'exitPoints' '[' id= StringLiteral c= ']' | s= 'entryPoints' '[' id= StringLiteral c= ']' )
+            int alt116=2;
+            int LA116_0 = input.LA(1);
 
-              	    d = new JavaExitPointsDescr( (id!=null?id.getText():null) );
-              	    d.setStart( ((CommonToken)s).getStartIndex() );
-                          d.setEnd( ((CommonToken)c).getStopIndex() ); 
-              	    this.exitPoints.add( d );
-                      
+            if ( (LA116_0==88) ) {
+                alt116=1;
             }
+            else if ( (LA116_0==89) ) {
+                alt116=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 116, 0, input);
 
+                throw nvae;
             }
+            switch (alt116) {
+                case 1 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:714:11: s= 'exitPoints' '[' id= StringLiteral c= ']'
+                    {
+                    s=(Token)match(input,88,FOLLOW_88_in_exitPointsStatement2786); if (state.failed) return ;
+                    match(input,41,FOLLOW_41_in_exitPointsStatement2788); if (state.failed) return ;
+                    id=(Token)match(input,StringLiteral,FOLLOW_StringLiteral_in_exitPointsStatement2792); if (state.failed) return ;
+                    c=(Token)match(input,42,FOLLOW_42_in_exitPointsStatement2796); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
 
+                      	    d = new JavaInterfacePointsDescr( (id!=null?id.getText():null) );
+                      	    d.setType( JavaBlockDescr.BlockType.EXIT );
+                      	    d.setStart( ((CommonToken)s).getStartIndex() );
+                                  d.setEnd( ((CommonToken)c).getStopIndex() ); 
+                      	    this.blocks.add( d );
+                              
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:722:12: s= 'entryPoints' '[' id= StringLiteral c= ']'
+                    {
+                    s=(Token)match(input,89,FOLLOW_89_in_exitPointsStatement2822); if (state.failed) return ;
+                    match(input,41,FOLLOW_41_in_exitPointsStatement2824); if (state.failed) return ;
+                    id=(Token)match(input,StringLiteral,FOLLOW_StringLiteral_in_exitPointsStatement2828); if (state.failed) return ;
+                    c=(Token)match(input,42,FOLLOW_42_in_exitPointsStatement2832); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+
+                      	    d = new JavaInterfacePointsDescr( (id!=null?id.getText():null) );
+                      	    d.setType( JavaBlockDescr.BlockType.ENTRY );
+                      	    d.setStart( ((CommonToken)s).getStartIndex() );
+                                  d.setEnd( ((CommonToken)c).getStopIndex() ); 
+                      	    this.blocks.add( d );
+                              
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
         }
         catch (RecognitionException re) {
             reportError(re);
@@ -6428,29 +6474,29 @@
 
 
     // $ANTLR start "catches"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:724:1: catches : catchClause ( catchClause )* ;
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:733: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 )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:734:2: ( catchClause ( catchClause )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:734:4: catchClause ( catchClause )*
             {
-            pushFollow(FOLLOW_catchClause_in_catches2816);
+            pushFollow(FOLLOW_catchClause_in_catches2873);
             catchClause();
 
             state._fsp--;
             if (state.failed) return ;
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:725:16: ( catchClause )*
-            loop116:
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:734:16: ( catchClause )*
+            loop117:
             do {
-                int alt116=2;
-                alt116 = dfa116.predict(input);
-                switch (alt116) {
+                int alt117=2;
+                alt117 = dfa117.predict(input);
+                switch (alt117) {
             	case 1 :
-            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:725:17: catchClause
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:734:17: catchClause
             	    {
-            	    pushFollow(FOLLOW_catchClause_in_catches2819);
+            	    pushFollow(FOLLOW_catchClause_in_catches2876);
             	    catchClause();
 
             	    state._fsp--;
@@ -6460,7 +6506,7 @@
             	    break;
 
             	default :
-            	    break loop116;
+            	    break loop117;
                 }
             } while (true);
 
@@ -6481,23 +6527,23 @@
 
 
     // $ANTLR start "catchClause"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:728:1: catchClause : 'catch' '(' formalParameter ')' block ;
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:737: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
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:738:2: ( 'catch' '(' formalParameter ')' block )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:738: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);
+            match(input,90,FOLLOW_90_in_catchClause2890); if (state.failed) return ;
+            match(input,65,FOLLOW_65_in_catchClause2892); if (state.failed) return ;
+            pushFollow(FOLLOW_formalParameter_in_catchClause2894);
             formalParameter();
 
             state._fsp--;
             if (state.failed) return ;
-            match(input,66,FOLLOW_66_in_catchClause2839); if (state.failed) return ;
-            pushFollow(FOLLOW_block_in_catchClause2841);
+            match(input,66,FOLLOW_66_in_catchClause2896); if (state.failed) return ;
+            pushFollow(FOLLOW_block_in_catchClause2898);
             block();
 
             state._fsp--;
@@ -6519,30 +6565,30 @@
 
 
     // $ANTLR start "formalParameter"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:732:1: formalParameter : ( variableModifier )* type variableDeclaratorId ;
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:741: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:742:2: ( ( variableModifier )* type variableDeclaratorId )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:742:4: ( variableModifier )* type variableDeclaratorId
             {
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:733:4: ( variableModifier )*
-            loop117:
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:742:4: ( variableModifier )*
+            loop118:
             do {
-                int alt117=2;
-                int LA117_0 = input.LA(1);
+                int alt118=2;
+                int LA118_0 = input.LA(1);
 
-                if ( (LA117_0==49||LA117_0==71) ) {
-                    alt117=1;
+                if ( (LA118_0==49||LA118_0==71) ) {
+                    alt118=1;
                 }
 
 
-                switch (alt117) {
+                switch (alt118) {
             	case 1 :
             	    // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: variableModifier
             	    {
-            	    pushFollow(FOLLOW_variableModifier_in_formalParameter2852);
+            	    pushFollow(FOLLOW_variableModifier_in_formalParameter2909);
             	    variableModifier();
 
             	    state._fsp--;
@@ -6552,16 +6598,16 @@
             	    break;
 
             	default :
-            	    break loop117;
+            	    break loop118;
                 }
             } while (true);
 
-            pushFollow(FOLLOW_type_in_formalParameter2855);
+            pushFollow(FOLLOW_type_in_formalParameter2912);
             type();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FOLLOW_variableDeclaratorId_in_formalParameter2857);
+            pushFollow(FOLLOW_variableDeclaratorId_in_formalParameter2914);
             variableDeclaratorId();
 
             state._fsp--;
@@ -6583,30 +6629,30 @@
 
 
     // $ANTLR start "switchBlockStatementGroups"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:736:1: switchBlockStatementGroups : ( switchBlockStatementGroup )* ;
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:745: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:746:2: ( ( switchBlockStatementGroup )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:746:4: ( switchBlockStatementGroup )*
             {
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:737:4: ( switchBlockStatementGroup )*
-            loop118:
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:746:4: ( switchBlockStatementGroup )*
+            loop119:
             do {
-                int alt118=2;
-                int LA118_0 = input.LA(1);
+                int alt119=2;
+                int LA119_0 = input.LA(1);
 
-                if ( (LA118_0==72||LA118_0==90) ) {
-                    alt118=1;
+                if ( (LA119_0==72||LA119_0==91) ) {
+                    alt119=1;
                 }
 
 
-                switch (alt118) {
+                switch (alt119) {
             	case 1 :
-            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:737:5: switchBlockStatementGroup
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:746:5: switchBlockStatementGroup
             	    {
-            	    pushFollow(FOLLOW_switchBlockStatementGroup_in_switchBlockStatementGroups2871);
+            	    pushFollow(FOLLOW_switchBlockStatementGroup_in_switchBlockStatementGroups2928);
             	    switchBlockStatementGroup();
 
             	    state._fsp--;
@@ -6616,7 +6662,7 @@
             	    break;
 
             	default :
-            	    break loop118;
+            	    break loop119;
                 }
             } while (true);
 
@@ -6637,29 +6683,29 @@
 
 
     // $ANTLR start "switchBlockStatementGroup"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:740:1: switchBlockStatementGroup : switchLabel ( blockStatement )* ;
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:749: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 )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:750:2: ( switchLabel ( blockStatement )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:750:4: switchLabel ( blockStatement )*
             {
-            pushFollow(FOLLOW_switchLabel_in_switchBlockStatementGroup2885);
+            pushFollow(FOLLOW_switchLabel_in_switchBlockStatementGroup2942);
             switchLabel();
 
             state._fsp--;
             if (state.failed) return ;
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:741:16: ( blockStatement )*
-            loop119:
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:750:16: ( blockStatement )*
+            loop120:
             do {
-                int alt119=2;
-                alt119 = dfa119.predict(input);
-                switch (alt119) {
+                int alt120=2;
+                alt120 = dfa120.predict(input);
+                switch (alt120) {
             	case 1 :
             	    // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: blockStatement
             	    {
-            	    pushFollow(FOLLOW_blockStatement_in_switchBlockStatementGroup2887);
+            	    pushFollow(FOLLOW_blockStatement_in_switchBlockStatementGroup2944);
             	    blockStatement();
 
             	    state._fsp--;
@@ -6669,7 +6715,7 @@
             	    break;
 
             	default :
-            	    break loop119;
+            	    break loop120;
                 }
             } while (true);
 
@@ -6690,46 +6736,46 @@
 
 
     // $ANTLR start "switchLabel"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:744:1: switchLabel : ( 'case' constantExpression ':' | 'case' enumConstantName ':' | 'default' ':' );
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:753: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) {
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:754:2: ( 'case' constantExpression ':' | 'case' enumConstantName ':' | 'default' ':' )
+            int alt121=3;
+            alt121 = dfa121.predict(input);
+            switch (alt121) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:745:4: 'case' constantExpression ':'
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:754:4: 'case' constantExpression ':'
                     {
-                    match(input,90,FOLLOW_90_in_switchLabel2900); if (state.failed) return ;
-                    pushFollow(FOLLOW_constantExpression_in_switchLabel2902);
+                    match(input,91,FOLLOW_91_in_switchLabel2957); if (state.failed) return ;
+                    pushFollow(FOLLOW_constantExpression_in_switchLabel2959);
                     constantExpression();
 
                     state._fsp--;
                     if (state.failed) return ;
-                    match(input,74,FOLLOW_74_in_switchLabel2904); if (state.failed) return ;
+                    match(input,74,FOLLOW_74_in_switchLabel2961); if (state.failed) return ;
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:746:6: 'case' enumConstantName ':'
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:755:6: 'case' enumConstantName ':'
                     {
-                    match(input,90,FOLLOW_90_in_switchLabel2911); if (state.failed) return ;
-                    pushFollow(FOLLOW_enumConstantName_in_switchLabel2913);
+                    match(input,91,FOLLOW_91_in_switchLabel2968); if (state.failed) return ;
+                    pushFollow(FOLLOW_enumConstantName_in_switchLabel2970);
                     enumConstantName();
 
                     state._fsp--;
                     if (state.failed) return ;
-                    match(input,74,FOLLOW_74_in_switchLabel2915); if (state.failed) return ;
+                    match(input,74,FOLLOW_74_in_switchLabel2972); if (state.failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:747:6: 'default' ':'
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:756:6: 'default' ':'
                     {
-                    match(input,72,FOLLOW_72_in_switchLabel2922); if (state.failed) return ;
-                    match(input,74,FOLLOW_74_in_switchLabel2924); if (state.failed) return ;
+                    match(input,72,FOLLOW_72_in_switchLabel2979); if (state.failed) return ;
+                    match(input,74,FOLLOW_74_in_switchLabel2981); if (state.failed) return ;
 
                     }
                     break;
@@ -6749,31 +6795,31 @@
 
 
     // $ANTLR start "moreStatementExpressions"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:750:1: moreStatementExpressions : ( ',' statementExpression )* ;
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:759: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:760:2: ( ( ',' statementExpression )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:760:4: ( ',' statementExpression )*
             {
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:751:4: ( ',' statementExpression )*
-            loop121:
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:760:4: ( ',' statementExpression )*
+            loop122:
             do {
-                int alt121=2;
-                int LA121_0 = input.LA(1);
+                int alt122=2;
+                int LA122_0 = input.LA(1);
 
-                if ( (LA121_0==34) ) {
-                    alt121=1;
+                if ( (LA122_0==34) ) {
+                    alt122=1;
                 }
 
 
-                switch (alt121) {
+                switch (alt122) {
             	case 1 :
-            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:751:5: ',' statementExpression
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:760:5: ',' statementExpression
             	    {
-            	    match(input,34,FOLLOW_34_in_moreStatementExpressions2937); if (state.failed) return ;
-            	    pushFollow(FOLLOW_statementExpression_in_moreStatementExpressions2939);
+            	    match(input,34,FOLLOW_34_in_moreStatementExpressions2994); if (state.failed) return ;
+            	    pushFollow(FOLLOW_statementExpression_in_moreStatementExpressions2996);
             	    statementExpression();
 
             	    state._fsp--;
@@ -6783,7 +6829,7 @@
             	    break;
 
             	default :
-            	    break loop121;
+            	    break loop122;
                 }
             } while (true);
 
@@ -6804,19 +6850,19 @@
 
 
     // $ANTLR start "forControl"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:754:1: forControl options {k=3; } : ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:763: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) {
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:765:2: ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? )
+            int alt126=2;
+            alt126 = dfa126.predict(input);
+            switch (alt126) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:756:4: forVarControl
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:765:4: forVarControl
                     {
-                    pushFollow(FOLLOW_forVarControl_in_forControl2960);
+                    pushFollow(FOLLOW_forVarControl_in_forControl3017);
                     forVarControl();
 
                     state._fsp--;
@@ -6825,16 +6871,16 @@
                     }
                     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:766: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) {
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:766:4: ( forInit )?
+                    int alt123=2;
+                    alt123 = dfa123.predict(input);
+                    switch (alt123) {
                         case 1 :
                             // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: forInit
                             {
-                            pushFollow(FOLLOW_forInit_in_forControl2965);
+                            pushFollow(FOLLOW_forInit_in_forControl3022);
                             forInit();
 
                             state._fsp--;
@@ -6845,15 +6891,15 @@
 
                     }
 
-                    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) {
+                    match(input,25,FOLLOW_25_in_forControl3025); if (state.failed) return ;
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:766:17: ( expression )?
+                    int alt124=2;
+                    alt124 = dfa124.predict(input);
+                    switch (alt124) {
                         case 1 :
                             // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: expression
                             {
-                            pushFollow(FOLLOW_expression_in_forControl2970);
+                            pushFollow(FOLLOW_expression_in_forControl3027);
                             expression();
 
                             state._fsp--;
@@ -6864,15 +6910,15 @@
 
                     }
 
-                    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) {
+                    match(input,25,FOLLOW_25_in_forControl3030); if (state.failed) return ;
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:766:33: ( forUpdate )?
+                    int alt125=2;
+                    alt125 = dfa125.predict(input);
+                    switch (alt125) {
                         case 1 :
                             // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: forUpdate
                             {
-                            pushFollow(FOLLOW_forUpdate_in_forControl2975);
+                            pushFollow(FOLLOW_forUpdate_in_forControl3032);
                             forUpdate();
 
                             state._fsp--;
@@ -6902,7 +6948,7 @@
 
 
     // $ANTLR start "forInit"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:760:1: forInit : ( ( variableModifier )* type variableDeclarators | expressionList );
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:769:1: forInit : ( ( variableModifier )* type variableDeclarators | expressionList );
     public final void forInit() throws RecognitionException {
         int forInit_StartIndex = input.index();
 
@@ -6910,29 +6956,29 @@
                 
         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) {
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:776:2: ( ( variableModifier )* type variableDeclarators | expressionList )
+            int alt128=2;
+            alt128 = dfa128.predict(input);
+            switch (alt128) {
                 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:776:4: ( variableModifier )* type variableDeclarators
                     {
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:767:4: ( variableModifier )*
-                    loop126:
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:776:4: ( variableModifier )*
+                    loop127:
                     do {
-                        int alt126=2;
-                        int LA126_0 = input.LA(1);
+                        int alt127=2;
+                        int LA127_0 = input.LA(1);
 
-                        if ( (LA126_0==49||LA126_0==71) ) {
-                            alt126=1;
+                        if ( (LA127_0==49||LA127_0==71) ) {
+                            alt127=1;
                         }
 
 
-                        switch (alt126) {
+                        switch (alt127) {
                     	case 1 :
                     	    // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: variableModifier
                     	    {
-                    	    pushFollow(FOLLOW_variableModifier_in_forInit3013);
+                    	    pushFollow(FOLLOW_variableModifier_in_forInit3070);
                     	    variableModifier();
 
                     	    state._fsp--;
@@ -6942,16 +6988,16 @@
                     	    break;
 
                     	default :
-                    	    break loop126;
+                    	    break loop127;
                         }
                     } while (true);
 
-                    pushFollow(FOLLOW_type_in_forInit3016);
+                    pushFollow(FOLLOW_type_in_forInit3073);
                     type();
 
                     state._fsp--;
                     if (state.failed) return ;
-                    pushFollow(FOLLOW_variableDeclarators_in_forInit3018);
+                    pushFollow(FOLLOW_variableDeclarators_in_forInit3075);
                     variableDeclarators();
 
                     state._fsp--;
@@ -6960,9 +7006,9 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:768:4: expressionList
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:777:4: expressionList
                     {
-                    pushFollow(FOLLOW_expressionList_in_forInit3023);
+                    pushFollow(FOLLOW_expressionList_in_forInit3080);
                     expressionList();
 
                     state._fsp--;
@@ -6991,30 +7037,30 @@
 
 
     // $ANTLR start "forVarControl"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:771:1: forVarControl : ( variableModifier )* type Identifier ':' expression ;
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:780: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:781:2: ( ( variableModifier )* type Identifier ':' expression )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:781:4: ( variableModifier )* type Identifier ':' expression
             {
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:772:4: ( variableModifier )*
-            loop128:
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:781:4: ( variableModifier )*
+            loop129:
             do {
-                int alt128=2;
-                int LA128_0 = input.LA(1);
+                int alt129=2;
+                int LA129_0 = input.LA(1);
 
-                if ( (LA128_0==49||LA128_0==71) ) {
-                    alt128=1;
+                if ( (LA129_0==49||LA129_0==71) ) {
+                    alt129=1;
                 }
 
 
-                switch (alt128) {
+                switch (alt129) {
             	case 1 :
             	    // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: variableModifier
             	    {
-            	    pushFollow(FOLLOW_variableModifier_in_forVarControl3035);
+            	    pushFollow(FOLLOW_variableModifier_in_forVarControl3092);
             	    variableModifier();
 
             	    state._fsp--;
@@ -7024,18 +7070,18 @@
             	    break;
 
             	default :
-            	    break loop128;
+            	    break loop129;
                 }
             } while (true);
 
-            pushFollow(FOLLOW_type_in_forVarControl3038);
+            pushFollow(FOLLOW_type_in_forVarControl3095);
             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);
+            match(input,Identifier,FOLLOW_Identifier_in_forVarControl3097); if (state.failed) return ;
+            match(input,74,FOLLOW_74_in_forVarControl3099); if (state.failed) return ;
+            pushFollow(FOLLOW_expression_in_forVarControl3101);
             expression();
 
             state._fsp--;
@@ -7057,15 +7103,15 @@
 
 
     // $ANTLR start "forUpdate"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:775:1: forUpdate : expressionList ;
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:784: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
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:785:2: ( expressionList )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:785:4: expressionList
             {
-            pushFollow(FOLLOW_expressionList_in_forUpdate3055);
+            pushFollow(FOLLOW_expressionList_in_forUpdate3112);
             expressionList();
 
             state._fsp--;
@@ -7089,23 +7135,23 @@
     };
 
     // $ANTLR start "parExpression"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:781:1: parExpression : '(' expression ')' ;
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:790: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 ')'
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:791:2: ( '(' expression ')' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:791:4: '(' expression ')'
             {
-            match(input,65,FOLLOW_65_in_parExpression3068); if (state.failed) return retval;
-            pushFollow(FOLLOW_expression_in_parExpression3070);
+            match(input,65,FOLLOW_65_in_parExpression3125); if (state.failed) return retval;
+            pushFollow(FOLLOW_expression_in_parExpression3127);
             expression();
 
             state._fsp--;
             if (state.failed) return retval;
-            match(input,66,FOLLOW_66_in_parExpression3072); if (state.failed) return retval;
+            match(input,66,FOLLOW_66_in_parExpression3129); if (state.failed) return retval;
 
             }
 
@@ -7125,36 +7171,36 @@
 
 
     // $ANTLR start "expressionList"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:785:1: expressionList : expression ( ',' expression )* ;
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:794: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 )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:795:5: ( expression ( ',' expression )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:795:9: expression ( ',' expression )*
             {
-            pushFollow(FOLLOW_expression_in_expressionList3089);
+            pushFollow(FOLLOW_expression_in_expressionList3146);
             expression();
 
             state._fsp--;
             if (state.failed) return ;
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:786:20: ( ',' expression )*
-            loop129:
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:795:20: ( ',' expression )*
+            loop130:
             do {
-                int alt129=2;
-                int LA129_0 = input.LA(1);
+                int alt130=2;
+                int LA130_0 = input.LA(1);
 
-                if ( (LA129_0==34) ) {
-                    alt129=1;
+                if ( (LA130_0==34) ) {
+                    alt130=1;
                 }
 
 
-                switch (alt129) {
+                switch (alt130) {
             	case 1 :
-            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:786:21: ',' expression
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:795:21: ',' expression
             	    {
-            	    match(input,34,FOLLOW_34_in_expressionList3092); if (state.failed) return ;
-            	    pushFollow(FOLLOW_expression_in_expressionList3094);
+            	    match(input,34,FOLLOW_34_in_expressionList3149); if (state.failed) return ;
+            	    pushFollow(FOLLOW_expression_in_expressionList3151);
             	    expression();
 
             	    state._fsp--;
@@ -7164,7 +7210,7 @@
             	    break;
 
             	default :
-            	    break loop129;
+            	    break loop130;
                 }
             } while (true);
 
@@ -7185,15 +7231,15 @@
 
 
     // $ANTLR start "statementExpression"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:789:1: statementExpression : expression ;
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:798: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
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:799:2: ( expression )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:799:4: expression
             {
-            pushFollow(FOLLOW_expression_in_statementExpression3110);
+            pushFollow(FOLLOW_expression_in_statementExpression3167);
             expression();
 
             state._fsp--;
@@ -7215,15 +7261,15 @@
 
 
     // $ANTLR start "constantExpression"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:793:1: constantExpression : expression ;
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:802: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
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:803:2: ( expression )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:803:4: expression
             {
-            pushFollow(FOLLOW_expression_in_constantExpression3122);
+            pushFollow(FOLLOW_expression_in_constantExpression3179);
             expression();
 
             state._fsp--;
@@ -7247,34 +7293,34 @@
     };
 
     // $ANTLR start "expression"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:797:1: expression : conditionalExpression ( assignmentOperator expression )? ;
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:806: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 )?
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:807:2: ( conditionalExpression ( assignmentOperator expression )? )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:807:4: conditionalExpression ( assignmentOperator expression )?
             {
-            pushFollow(FOLLOW_conditionalExpression_in_expression3134);
+            pushFollow(FOLLOW_conditionalExpression_in_expression3191);
             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) {
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:807:26: ( assignmentOperator expression )?
+            int alt131=2;
+            alt131 = dfa131.predict(input);
+            switch (alt131) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:798:27: assignmentOperator expression
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:807:27: assignmentOperator expression
                     {
-                    pushFollow(FOLLOW_assignmentOperator_in_expression3137);
+                    pushFollow(FOLLOW_assignmentOperator_in_expression3194);
                     assignmentOperator();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    pushFollow(FOLLOW_expression_in_expression3139);
+                    pushFollow(FOLLOW_expression_in_expression3196);
                     expression();
 
                     state._fsp--;
@@ -7304,103 +7350,103 @@
 
 
     // $ANTLR start "assignmentOperator"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:801:1: assignmentOperator : ( '=' | '+=' | '-=' | '*=' | '/=' | '&=' | '|=' | '^=' | '%=' | '<' '<' '=' | '>' '>' '=' | '>' '>' '>' '=' );
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:810: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) {
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:811:2: ( '=' | '+=' | '-=' | '*=' | '/=' | '&=' | '|=' | '^=' | '%=' | '<' '<' '=' | '>' '>' '=' | '>' '>' '>' '=' )
+            int alt132=12;
+            alt132 = dfa132.predict(input);
+            switch (alt132) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:802:4: '='
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:811:4: '='
                     {
-                    match(input,44,FOLLOW_44_in_assignmentOperator3153); if (state.failed) return ;
+                    match(input,44,FOLLOW_44_in_assignmentOperator3210); if (state.failed) return ;
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:803:9: '+='
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:812:9: '+='
                     {
-                    match(input,91,FOLLOW_91_in_assignmentOperator3163); if (state.failed) return ;
+                    match(input,92,FOLLOW_92_in_assignmentOperator3220); if (state.failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:804:9: '-='
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:813:9: '-='
                     {
-                    match(input,92,FOLLOW_92_in_assignmentOperator3173); if (state.failed) return ;
+                    match(input,93,FOLLOW_93_in_assignmentOperator3230); if (state.failed) return ;
 
                     }
                     break;
                 case 4 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:805:9: '*='
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:814:9: '*='
                     {
-                    match(input,93,FOLLOW_93_in_assignmentOperator3183); if (state.failed) return ;
+                    match(input,94,FOLLOW_94_in_assignmentOperator3240); if (state.failed) return ;
 
                     }
                     break;
                 case 5 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:806:9: '/='
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:815:9: '/='
                     {
-                    match(input,94,FOLLOW_94_in_assignmentOperator3193); if (state.failed) return ;
+                    match(input,95,FOLLOW_95_in_assignmentOperator3250); if (state.failed) return ;
 
                     }
                     break;
                 case 6 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:807:9: '&='
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:816:9: '&='
                     {
-                    match(input,95,FOLLOW_95_in_assignmentOperator3203); if (state.failed) return ;
+                    match(input,96,FOLLOW_96_in_assignmentOperator3260); if (state.failed) return ;
 
                     }
                     break;
                 case 7 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:808:9: '|='
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:817:9: '|='
                     {
-                    match(input,96,FOLLOW_96_in_assignmentOperator3213); if (state.failed) return ;
+                    match(input,97,FOLLOW_97_in_assignmentOperator3270); if (state.failed) return ;
 
                     }
                     break;
                 case 8 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:809:9: '^='
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:818:9: '^='
                     {
-                    match(input,97,FOLLOW_97_in_assignmentOperator3223); if (state.failed) return ;
+                    match(input,98,FOLLOW_98_in_assignmentOperator3280); if (state.failed) return ;
 
                     }
                     break;
                 case 9 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:810:9: '%='
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:819:9: '%='
                     {
-                    match(input,98,FOLLOW_98_in_assignmentOperator3233); if (state.failed) return ;
+                    match(input,99,FOLLOW_99_in_assignmentOperator3290); if (state.failed) return ;
 
                     }
                     break;
                 case 10 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:811:9: '<' '<' '='
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:820: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 ;
+                    match(input,33,FOLLOW_33_in_assignmentOperator3300); if (state.failed) return ;
+                    match(input,33,FOLLOW_33_in_assignmentOperator3302); if (state.failed) return ;
+                    match(input,44,FOLLOW_44_in_assignmentOperator3304); if (state.failed) return ;
 
                     }
                     break;
                 case 11 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:812:9: '>' '>' '='
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:821: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 ;
+                    match(input,35,FOLLOW_35_in_assignmentOperator3314); if (state.failed) return ;
+                    match(input,35,FOLLOW_35_in_assignmentOperator3316); if (state.failed) return ;
+                    match(input,44,FOLLOW_44_in_assignmentOperator3318); if (state.failed) return ;
 
                     }
                     break;
                 case 12 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:813:9: '>' '>' '>' '='
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:822: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 ;
+                    match(input,35,FOLLOW_35_in_assignmentOperator3328); if (state.failed) return ;
+                    match(input,35,FOLLOW_35_in_assignmentOperator3330); if (state.failed) return ;
+                    match(input,35,FOLLOW_35_in_assignmentOperator3332); if (state.failed) return ;
+                    match(input,44,FOLLOW_44_in_assignmentOperator3334); if (state.failed) return ;
 
                     }
                     break;
@@ -7420,34 +7466,34 @@
 
 
     // $ANTLR start "conditionalExpression"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:816:1: conditionalExpression : conditionalOrExpression ( '?' expression ':' expression )? ;
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:825: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 )?
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:826:5: ( conditionalOrExpression ( '?' expression ':' expression )? )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:826:9: conditionalOrExpression ( '?' expression ':' expression )?
             {
-            pushFollow(FOLLOW_conditionalOrExpression_in_conditionalExpression3293);
+            pushFollow(FOLLOW_conditionalOrExpression_in_conditionalExpression3350);
             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) {
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:826:33: ( '?' expression ':' expression )?
+            int alt133=2;
+            alt133 = dfa133.predict(input);
+            switch (alt133) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:817:35: '?' expression ':' expression
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:826:35: '?' expression ':' expression
                     {
-                    match(input,63,FOLLOW_63_in_conditionalExpression3297); if (state.failed) return ;
-                    pushFollow(FOLLOW_expression_in_conditionalExpression3299);
+                    match(input,63,FOLLOW_63_in_conditionalExpression3354); if (state.failed) return ;
+                    pushFollow(FOLLOW_expression_in_conditionalExpression3356);
                     expression();
 
                     state._fsp--;
                     if (state.failed) return ;
-                    match(input,74,FOLLOW_74_in_conditionalExpression3301); if (state.failed) return ;
-                    pushFollow(FOLLOW_expression_in_conditionalExpression3303);
+                    match(input,74,FOLLOW_74_in_conditionalExpression3358); if (state.failed) return ;
+                    pushFollow(FOLLOW_expression_in_conditionalExpression3360);
                     expression();
 
                     state._fsp--;
@@ -7475,30 +7521,30 @@
 
 
     // $ANTLR start "conditionalOrExpression"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:820:1: conditionalOrExpression : conditionalAndExpression ( '||' conditionalAndExpression )* ;
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:829: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 )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:830:5: ( conditionalAndExpression ( '||' conditionalAndExpression )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:830:9: conditionalAndExpression ( '||' conditionalAndExpression )*
             {
-            pushFollow(FOLLOW_conditionalAndExpression_in_conditionalOrExpression3322);
+            pushFollow(FOLLOW_conditionalAndExpression_in_conditionalOrExpression3379);
             conditionalAndExpression();
 
             state._fsp--;
             if (state.failed) return ;
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:821:34: ( '||' conditionalAndExpression )*
-            loop133:
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:830:34: ( '||' conditionalAndExpression )*
+            loop134:
             do {
-                int alt133=2;
-                alt133 = dfa133.predict(input);
-                switch (alt133) {
+                int alt134=2;
+                alt134 = dfa134.predict(input);
+                switch (alt134) {
             	case 1 :
-            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:821:36: '||' conditionalAndExpression
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:830:36: '||' conditionalAndExpression
             	    {
-            	    match(input,99,FOLLOW_99_in_conditionalOrExpression3326); if (state.failed) return ;
-            	    pushFollow(FOLLOW_conditionalAndExpression_in_conditionalOrExpression3328);
+            	    match(input,100,FOLLOW_100_in_conditionalOrExpression3383); if (state.failed) return ;
+            	    pushFollow(FOLLOW_conditionalAndExpression_in_conditionalOrExpression3385);
             	    conditionalAndExpression();
 
             	    state._fsp--;
@@ -7508,7 +7554,7 @@
             	    break;
 
             	default :
-            	    break loop133;
+            	    break loop134;
                 }
             } while (true);
 
@@ -7529,30 +7575,30 @@
 
 
     // $ANTLR start "conditionalAndExpression"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:824:1: conditionalAndExpression : inclusiveOrExpression ( '&&' inclusiveOrExpression )* ;
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:833: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 )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:834:5: ( inclusiveOrExpression ( '&&' inclusiveOrExpression )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:834:9: inclusiveOrExpression ( '&&' inclusiveOrExpression )*
             {
-            pushFollow(FOLLOW_inclusiveOrExpression_in_conditionalAndExpression3347);
+            pushFollow(FOLLOW_inclusiveOrExpression_in_conditionalAndExpression3404);
             inclusiveOrExpression();
 
             state._fsp--;
             if (state.failed) return ;
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:825:31: ( '&&' inclusiveOrExpression )*
-            loop134:
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:834:31: ( '&&' inclusiveOrExpression )*
+            loop135:
             do {
-                int alt134=2;
-                alt134 = dfa134.predict(input);
-                switch (alt134) {
+                int alt135=2;
+                alt135 = dfa135.predict(input);
+                switch (alt135) {
             	case 1 :
-            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:825:33: '&&' inclusiveOrExpression
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:834:33: '&&' inclusiveOrExpression
             	    {
-            	    match(input,100,FOLLOW_100_in_conditionalAndExpression3351); if (state.failed) return ;
-            	    pushFollow(FOLLOW_inclusiveOrExpression_in_conditionalAndExpression3353);
+            	    match(input,101,FOLLOW_101_in_conditionalAndExpression3408); if (state.failed) return ;
+            	    pushFollow(FOLLOW_inclusiveOrExpression_in_conditionalAndExpression3410);
             	    inclusiveOrExpression();
 
             	    state._fsp--;
@@ -7562,7 +7608,7 @@
             	    break;
 
             	default :
-            	    break loop134;
+            	    break loop135;
                 }
             } while (true);
 
@@ -7583,30 +7629,30 @@
 
 
     // $ANTLR start "inclusiveOrExpression"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:828:1: inclusiveOrExpression : exclusiveOrExpression ( '|' exclusiveOrExpression )* ;
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:837: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 )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:838:5: ( exclusiveOrExpression ( '|' exclusiveOrExpression )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:838:9: exclusiveOrExpression ( '|' exclusiveOrExpression )*
             {
-            pushFollow(FOLLOW_exclusiveOrExpression_in_inclusiveOrExpression3372);
+            pushFollow(FOLLOW_exclusiveOrExpression_in_inclusiveOrExpression3429);
             exclusiveOrExpression();
 
             state._fsp--;
             if (state.failed) return ;
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:829:31: ( '|' exclusiveOrExpression )*
-            loop135:
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:838:31: ( '|' exclusiveOrExpression )*
+            loop136:
             do {
-                int alt135=2;
-                alt135 = dfa135.predict(input);
-                switch (alt135) {
+                int alt136=2;
+                alt136 = dfa136.predict(input);
+                switch (alt136) {
             	case 1 :
-            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:829:33: '|' exclusiveOrExpression
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:838:33: '|' exclusiveOrExpression
             	    {
-            	    match(input,101,FOLLOW_101_in_inclusiveOrExpression3376); if (state.failed) return ;
-            	    pushFollow(FOLLOW_exclusiveOrExpression_in_inclusiveOrExpression3378);
+            	    match(input,102,FOLLOW_102_in_inclusiveOrExpression3433); if (state.failed) return ;
+            	    pushFollow(FOLLOW_exclusiveOrExpression_in_inclusiveOrExpression3435);
             	    exclusiveOrExpression();
 
             	    state._fsp--;
@@ -7616,7 +7662,7 @@
             	    break;
 
             	default :
-            	    break loop135;
+            	    break loop136;
                 }
             } while (true);
 
@@ -7637,30 +7683,30 @@
 
 
     // $ANTLR start "exclusiveOrExpression"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:832:1: exclusiveOrExpression : andExpression ( '^' andExpression )* ;
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:841: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 )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:842:5: ( andExpression ( '^' andExpression )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:842:9: andExpression ( '^' andExpression )*
             {
-            pushFollow(FOLLOW_andExpression_in_exclusiveOrExpression3397);
+            pushFollow(FOLLOW_andExpression_in_exclusiveOrExpression3454);
             andExpression();
 
             state._fsp--;
             if (state.failed) return ;
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:833:23: ( '^' andExpression )*
-            loop136:
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:842:23: ( '^' andExpression )*
+            loop137:
             do {
-                int alt136=2;
-                alt136 = dfa136.predict(input);
-                switch (alt136) {
+                int alt137=2;
+                alt137 = dfa137.predict(input);
+                switch (alt137) {
             	case 1 :
-            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:833:25: '^' andExpression
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:842:25: '^' andExpression
             	    {
-            	    match(input,102,FOLLOW_102_in_exclusiveOrExpression3401); if (state.failed) return ;
-            	    pushFollow(FOLLOW_andExpression_in_exclusiveOrExpression3403);
+            	    match(input,103,FOLLOW_103_in_exclusiveOrExpression3458); if (state.failed) return ;
+            	    pushFollow(FOLLOW_andExpression_in_exclusiveOrExpression3460);
             	    andExpression();
 
             	    state._fsp--;
@@ -7670,7 +7716,7 @@
             	    break;
 
             	default :
-            	    break loop136;
+            	    break loop137;
                 }
             } while (true);
 
@@ -7691,30 +7737,30 @@
 
 
     // $ANTLR start "andExpression"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:836:1: andExpression : equalityExpression ( '&' equalityExpression )* ;
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:845: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 )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:846:5: ( equalityExpression ( '&' equalityExpression )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:846:9: equalityExpression ( '&' equalityExpression )*
             {
-            pushFollow(FOLLOW_equalityExpression_in_andExpression3422);
+            pushFollow(FOLLOW_equalityExpression_in_andExpression3479);
             equalityExpression();
 
             state._fsp--;
             if (state.failed) return ;
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:837:28: ( '&' equalityExpression )*
-            loop137:
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:846:28: ( '&' equalityExpression )*
+            loop138:
             do {
-                int alt137=2;
-                alt137 = dfa137.predict(input);
-                switch (alt137) {
+                int alt138=2;
+                alt138 = dfa138.predict(input);
+                switch (alt138) {
             	case 1 :
-            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:837:30: '&' equalityExpression
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:846:30: '&' equalityExpression
             	    {
-            	    match(input,36,FOLLOW_36_in_andExpression3426); if (state.failed) return ;
-            	    pushFollow(FOLLOW_equalityExpression_in_andExpression3428);
+            	    match(input,36,FOLLOW_36_in_andExpression3483); if (state.failed) return ;
+            	    pushFollow(FOLLOW_equalityExpression_in_andExpression3485);
             	    equalityExpression();
 
             	    state._fsp--;
@@ -7724,7 +7770,7 @@
             	    break;
 
             	default :
-            	    break loop137;
+            	    break loop138;
                 }
             } while (true);
 
@@ -7745,29 +7791,29 @@
 
 
     // $ANTLR start "equalityExpression"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:840:1: equalityExpression : instanceOfExpression ( ( '==' | '!=' ) instanceOfExpression )* ;
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:849: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 )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:850:5: ( instanceOfExpression ( ( '==' | '!=' ) instanceOfExpression )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:850:9: instanceOfExpression ( ( '==' | '!=' ) instanceOfExpression )*
             {
-            pushFollow(FOLLOW_instanceOfExpression_in_equalityExpression3447);
+            pushFollow(FOLLOW_instanceOfExpression_in_equalityExpression3504);
             instanceOfExpression();
 
             state._fsp--;
             if (state.failed) return ;
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:841:30: ( ( '==' | '!=' ) instanceOfExpression )*
-            loop138:
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:850:30: ( ( '==' | '!=' ) instanceOfExpression )*
+            loop139:
             do {
-                int alt138=2;
-                alt138 = dfa138.predict(input);
-                switch (alt138) {
+                int alt139=2;
+                alt139 = dfa139.predict(input);
+                switch (alt139) {
             	case 1 :
-            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:841:32: ( '==' | '!=' ) instanceOfExpression
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:850:32: ( '==' | '!=' ) instanceOfExpression
             	    {
-            	    if ( (input.LA(1)>=103 && input.LA(1)<=104) ) {
+            	    if ( (input.LA(1)>=104 && input.LA(1)<=105) ) {
             	        input.consume();
             	        state.errorRecovery=false;state.failed=false;
             	    }
@@ -7777,7 +7823,7 @@
             	        throw mse;
             	    }
 
-            	    pushFollow(FOLLOW_instanceOfExpression_in_equalityExpression3459);
+            	    pushFollow(FOLLOW_instanceOfExpression_in_equalityExpression3516);
             	    instanceOfExpression();
 
             	    state._fsp--;
@@ -7787,7 +7833,7 @@
             	    break;
 
             	default :
-            	    break loop138;
+            	    break loop139;
                 }
             } while (true);
 
@@ -7808,28 +7854,28 @@
 
 
     // $ANTLR start "instanceOfExpression"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:844:1: instanceOfExpression : relationalExpression ( 'instanceof' type )? ;
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:853: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 )?
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:854:5: ( relationalExpression ( 'instanceof' type )? )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:854:9: relationalExpression ( 'instanceof' type )?
             {
-            pushFollow(FOLLOW_relationalExpression_in_instanceOfExpression3478);
+            pushFollow(FOLLOW_relationalExpression_in_instanceOfExpression3535);
             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) {
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:854:30: ( 'instanceof' type )?
+            int alt140=2;
+            alt140 = dfa140.predict(input);
+            switch (alt140) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:845:31: 'instanceof' type
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:854:31: 'instanceof' type
                     {
-                    match(input,105,FOLLOW_105_in_instanceOfExpression3481); if (state.failed) return ;
-                    pushFollow(FOLLOW_type_in_instanceOfExpression3483);
+                    match(input,106,FOLLOW_106_in_instanceOfExpression3538); if (state.failed) return ;
+                    pushFollow(FOLLOW_type_in_instanceOfExpression3540);
                     type();
 
                     state._fsp--;
@@ -7857,34 +7903,34 @@
 
 
     // $ANTLR start "relationalExpression"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:848:1: relationalExpression : shiftExpression ( relationalOp shiftExpression )* ;
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:857: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 )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:858:5: ( shiftExpression ( relationalOp shiftExpression )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:858:9: shiftExpression ( relationalOp shiftExpression )*
             {
-            pushFollow(FOLLOW_shiftExpression_in_relationalExpression3501);
+            pushFollow(FOLLOW_shiftExpression_in_relationalExpression3558);
             shiftExpression();
 
             state._fsp--;
             if (state.failed) return ;
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:849:25: ( relationalOp shiftExpression )*
-            loop140:
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:858:25: ( relationalOp shiftExpression )*
+            loop141:
             do {
-                int alt140=2;
-                alt140 = dfa140.predict(input);
-                switch (alt140) {
+                int alt141=2;
+                alt141 = dfa141.predict(input);
+                switch (alt141) {
             	case 1 :
-            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:849:27: relationalOp shiftExpression
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:858:27: relationalOp shiftExpression
             	    {
-            	    pushFollow(FOLLOW_relationalOp_in_relationalExpression3505);
+            	    pushFollow(FOLLOW_relationalOp_in_relationalExpression3562);
             	    relationalOp();
 
             	    state._fsp--;
             	    if (state.failed) return ;
-            	    pushFollow(FOLLOW_shiftExpression_in_relationalExpression3507);
+            	    pushFollow(FOLLOW_shiftExpression_in_relationalExpression3564);
             	    shiftExpression();
 
             	    state._fsp--;
@@ -7894,7 +7940,7 @@
             	    break;
 
             	default :
-            	    break loop140;
+            	    break loop141;
                 }
             } while (true);
 
@@ -7915,45 +7961,45 @@
 
 
     // $ANTLR start "relationalOp"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:852:1: relationalOp : ( '<' '=' | '>' '=' | '<' | '>' ) ;
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:861: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:862:2: ( ( '<' '=' | '>' '=' | '<' | '>' ) )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:862:4: ( '<' '=' | '>' '=' | '<' | '>' )
             {
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:853:4: ( '<' '=' | '>' '=' | '<' | '>' )
-            int alt141=4;
-            alt141 = dfa141.predict(input);
-            switch (alt141) {
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:862:4: ( '<' '=' | '>' '=' | '<' | '>' )
+            int alt142=4;
+            alt142 = dfa142.predict(input);
+            switch (alt142) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:853:5: '<' '='
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:862:5: '<' '='
                     {
-                    match(input,33,FOLLOW_33_in_relationalOp3523); if (state.failed) return ;
-                    match(input,44,FOLLOW_44_in_relationalOp3525); if (state.failed) return ;
+                    match(input,33,FOLLOW_33_in_relationalOp3580); if (state.failed) return ;
+                    match(input,44,FOLLOW_44_in_relationalOp3582); if (state.failed) return ;
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:853:15: '>' '='
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:862:15: '>' '='
                     {
-                    match(input,35,FOLLOW_35_in_relationalOp3529); if (state.failed) return ;
-                    match(input,44,FOLLOW_44_in_relationalOp3531); if (state.failed) return ;
+                    match(input,35,FOLLOW_35_in_relationalOp3586); if (state.failed) return ;
+                    match(input,44,FOLLOW_44_in_relationalOp3588); if (state.failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:853:25: '<'
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:862:25: '<'
                     {
-                    match(input,33,FOLLOW_33_in_relationalOp3535); if (state.failed) return ;
+                    match(input,33,FOLLOW_33_in_relationalOp3592); if (state.failed) return ;
 
                     }
                     break;
                 case 4 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:853:31: '>'
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:862:31: '>'
                     {
-                    match(input,35,FOLLOW_35_in_relationalOp3539); if (state.failed) return ;
+                    match(input,35,FOLLOW_35_in_relationalOp3596); if (state.failed) return ;
 
                     }
                     break;
@@ -7977,34 +8023,34 @@
 
 
     // $ANTLR start "shiftExpression"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:856:1: shiftExpression : additiveExpression ( shiftOp additiveExpression )* ;
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:865: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 )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:866:5: ( additiveExpression ( shiftOp additiveExpression )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:866:9: additiveExpression ( shiftOp additiveExpression )*
             {
-            pushFollow(FOLLOW_additiveExpression_in_shiftExpression3556);
+            pushFollow(FOLLOW_additiveExpression_in_shiftExpression3613);
             additiveExpression();
 
             state._fsp--;
             if (state.failed) return ;
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:857:28: ( shiftOp additiveExpression )*
-            loop142:
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:866:28: ( shiftOp additiveExpression )*
+            loop143:
             do {
-                int alt142=2;
-                alt142 = dfa142.predict(input);
-                switch (alt142) {
+                int alt143=2;
+                alt143 = dfa143.predict(input);
+                switch (alt143) {
             	case 1 :
-            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:857:30: shiftOp additiveExpression
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:866:30: shiftOp additiveExpression
             	    {
-            	    pushFollow(FOLLOW_shiftOp_in_shiftExpression3560);
+            	    pushFollow(FOLLOW_shiftOp_in_shiftExpression3617);
             	    shiftOp();
 
             	    state._fsp--;
             	    if (state.failed) return ;
-            	    pushFollow(FOLLOW_additiveExpression_in_shiftExpression3562);
+            	    pushFollow(FOLLOW_additiveExpression_in_shiftExpression3619);
             	    additiveExpression();
 
             	    state._fsp--;
@@ -8014,7 +8060,7 @@
             	    break;
 
             	default :
-            	    break loop142;
+            	    break loop143;
                 }
             } while (true);
 
@@ -8035,37 +8081,37 @@
 
 
     // $ANTLR start "shiftOp"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:861:1: shiftOp : ( '<' '<' | '>' '>' '>' | '>' '>' ) ;
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:870: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:871:2: ( ( '<' '<' | '>' '>' '>' | '>' '>' ) )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:871:4: ( '<' '<' | '>' '>' '>' | '>' '>' )
             {
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:862:4: ( '<' '<' | '>' '>' '>' | '>' '>' )
-            int alt143=3;
-            int LA143_0 = input.LA(1);
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:871:4: ( '<' '<' | '>' '>' '>' | '>' '>' )
+            int alt144=3;
+            int LA144_0 = input.LA(1);
 
-            if ( (LA143_0==33) ) {
-                alt143=1;
+            if ( (LA144_0==33) ) {
+                alt144=1;
             }
-            else if ( (LA143_0==35) ) {
-                int LA143_2 = input.LA(2);
+            else if ( (LA144_0==35) ) {
+                int LA144_2 = input.LA(2);
 
-                if ( (LA143_2==35) ) {
-                    int LA143_3 = input.LA(3);
+                if ( (LA144_2==35) ) {
+                    int LA144_3 = input.LA(3);
 
-                    if ( (synpred215_Java()) ) {
-                        alt143=2;
+                    if ( (synpred216_Java()) ) {
+                        alt144=2;
                     }
                     else if ( (true) ) {
-                        alt143=3;
+                        alt144=3;
                     }
                     else {
                         if (state.backtracking>0) {state.failed=true; return ;}
                         NoViableAltException nvae =
-                            new NoViableAltException("", 143, 3, input);
+                            new NoViableAltException("", 144, 3, input);
 
                         throw nvae;
                     }
@@ -8073,7 +8119,7 @@
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 143, 2, input);
+                        new NoViableAltException("", 144, 2, input);
 
                     throw nvae;
                 }
@@ -8081,33 +8127,33 @@
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 143, 0, input);
+                    new NoViableAltException("", 144, 0, input);
 
                 throw nvae;
             }
-            switch (alt143) {
+            switch (alt144) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:862:5: '<' '<'
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:871:5: '<' '<'
                     {
-                    match(input,33,FOLLOW_33_in_shiftOp3586); if (state.failed) return ;
-                    match(input,33,FOLLOW_33_in_shiftOp3588); if (state.failed) return ;
+                    match(input,33,FOLLOW_33_in_shiftOp3643); if (state.failed) return ;
+                    match(input,33,FOLLOW_33_in_shiftOp3645); if (state.failed) return ;
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:862:15: '>' '>' '>'
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:871: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 ;
+                    match(input,35,FOLLOW_35_in_shiftOp3649); if (state.failed) return ;
+                    match(input,35,FOLLOW_35_in_shiftOp3651); if (state.failed) return ;
+                    match(input,35,FOLLOW_35_in_shiftOp3653); if (state.failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:862:29: '>' '>'
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:871:29: '>' '>'
                     {
-                    match(input,35,FOLLOW_35_in_shiftOp3600); if (state.failed) return ;
-                    match(input,35,FOLLOW_35_in_shiftOp3602); if (state.failed) return ;
+                    match(input,35,FOLLOW_35_in_shiftOp3657); if (state.failed) return ;
+                    match(input,35,FOLLOW_35_in_shiftOp3659); if (state.failed) return ;
 
                     }
                     break;
@@ -8131,29 +8177,29 @@
 
 
     // $ANTLR start "additiveExpression"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:866:1: additiveExpression : multiplicativeExpression ( ( '+' | '-' ) multiplicativeExpression )* ;
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:875: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 )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:876:5: ( multiplicativeExpression ( ( '+' | '-' ) multiplicativeExpression )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:876:9: multiplicativeExpression ( ( '+' | '-' ) multiplicativeExpression )*
             {
-            pushFollow(FOLLOW_multiplicativeExpression_in_additiveExpression3620);
+            pushFollow(FOLLOW_multiplicativeExpression_in_additiveExpression3677);
             multiplicativeExpression();
 
             state._fsp--;
             if (state.failed) return ;
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:867:34: ( ( '+' | '-' ) multiplicativeExpression )*
-            loop144:
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:876:34: ( ( '+' | '-' ) multiplicativeExpression )*
+            loop145:
             do {
-                int alt144=2;
-                alt144 = dfa144.predict(input);
-                switch (alt144) {
+                int alt145=2;
+                alt145 = dfa145.predict(input);
+                switch (alt145) {
             	case 1 :
-            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:867:36: ( '+' | '-' ) multiplicativeExpression
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:876:36: ( '+' | '-' ) multiplicativeExpression
             	    {
-            	    if ( (input.LA(1)>=106 && input.LA(1)<=107) ) {
+            	    if ( (input.LA(1)>=107 && input.LA(1)<=108) ) {
             	        input.consume();
             	        state.errorRecovery=false;state.failed=false;
             	    }
@@ -8163,7 +8209,7 @@
             	        throw mse;
             	    }
 
-            	    pushFollow(FOLLOW_multiplicativeExpression_in_additiveExpression3632);
+            	    pushFollow(FOLLOW_multiplicativeExpression_in_additiveExpression3689);
             	    multiplicativeExpression();
 
             	    state._fsp--;
@@ -8173,7 +8219,7 @@
             	    break;
 
             	default :
-            	    break loop144;
+            	    break loop145;
                 }
             } while (true);
 
@@ -8194,29 +8240,29 @@
 
 
     // $ANTLR start "multiplicativeExpression"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:870:1: multiplicativeExpression : unaryExpression ( ( '*' | '/' | '%' ) unaryExpression )* ;
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:879: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 )*
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:880:5: ( unaryExpression ( ( '*' | '/' | '%' ) unaryExpression )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:880:9: unaryExpression ( ( '*' | '/' | '%' ) unaryExpression )*
             {
-            pushFollow(FOLLOW_unaryExpression_in_multiplicativeExpression3651);
+            pushFollow(FOLLOW_unaryExpression_in_multiplicativeExpression3708);
             unaryExpression();
 
             state._fsp--;
             if (state.failed) return ;
-            // src/main/resources/org/drools/semantics/java/parser/Java.g:871:25: ( ( '*' | '/' | '%' ) unaryExpression )*
-            loop145:
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:880:25: ( ( '*' | '/' | '%' ) unaryExpression )*
+            loop146:
             do {
-                int alt145=2;
-                alt145 = dfa145.predict(input);
-                switch (alt145) {
+                int alt146=2;
+                alt146 = dfa146.predict(input);
+                switch (alt146) {
             	case 1 :
-            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:871:27: ( '*' | '/' | '%' ) unaryExpression
+            	    // src/main/resources/org/drools/semantics/java/parser/Java.g:880:27: ( '*' | '/' | '%' ) unaryExpression
             	    {
-            	    if ( input.LA(1)==29||(input.LA(1)>=108 && input.LA(1)<=109) ) {
+            	    if ( input.LA(1)==29||(input.LA(1)>=109 && input.LA(1)<=110) ) {
             	        input.consume();
             	        state.errorRecovery=false;state.failed=false;
             	    }
@@ -8226,7 +8272,7 @@
             	        throw mse;
             	    }
 
-            	    pushFollow(FOLLOW_unaryExpression_in_multiplicativeExpression3669);
+            	    pushFollow(FOLLOW_unaryExpression_in_multiplicativeExpression3726);
             	    unaryExpression();
 
             	    state._fsp--;
@@ -8236,7 +8282,7 @@
             	    break;
 
             	default :
-            	    break loop145;
+            	    break loop146;
                 }
             } while (true);
 
@@ -8257,20 +8303,20 @@
 
 
     // $ANTLR start "unaryExpression"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:874:1: unaryExpression : ( '+' unaryExpression | '-' unaryExpression | '++' primary | '--' primary | unaryExpressionNotPlusMinus );
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:883: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) {
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:884:5: ( '+' unaryExpression | '-' unaryExpression | '++' primary | '--' primary | unaryExpressionNotPlusMinus )
+            int alt147=5;
+            alt147 = dfa147.predict(input);
+            switch (alt147) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:875:9: '+' unaryExpression
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:884:9: '+' unaryExpression
                     {
-                    match(input,106,FOLLOW_106_in_unaryExpression3689); if (state.failed) return ;
-                    pushFollow(FOLLOW_unaryExpression_in_unaryExpression3691);
+                    match(input,107,FOLLOW_107_in_unaryExpression3746); if (state.failed) return ;
+                    pushFollow(FOLLOW_unaryExpression_in_unaryExpression3748);
                     unaryExpression();
 
                     state._fsp--;
@@ -8279,10 +8325,10 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:876:7: '-' unaryExpression
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:885:7: '-' unaryExpression
                     {
-                    match(input,107,FOLLOW_107_in_unaryExpression3699); if (state.failed) return ;
-                    pushFollow(FOLLOW_unaryExpression_in_unaryExpression3701);
+                    match(input,108,FOLLOW_108_in_unaryExpression3756); if (state.failed) return ;
+                    pushFollow(FOLLOW_unaryExpression_in_unaryExpression3758);
                     unaryExpression();
 
                     state._fsp--;
@@ -8291,10 +8337,10 @@
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:877:9: '++' primary
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:886:9: '++' primary
                     {
-                    match(input,110,FOLLOW_110_in_unaryExpression3711); if (state.failed) return ;
-                    pushFollow(FOLLOW_primary_in_unaryExpression3713);
+                    match(input,111,FOLLOW_111_in_unaryExpression3768); if (state.failed) return ;
+                    pushFollow(FOLLOW_primary_in_unaryExpression3770);
                     primary();
 
                     state._fsp--;
@@ -8303,10 +8349,10 @@
                     }
                     break;
                 case 4 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:878:9: '--' primary
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:887:9: '--' primary
                     {
-                    match(input,111,FOLLOW_111_in_unaryExpression3723); if (state.failed) return ;
-                    pushFollow(FOLLOW_primary_in_unaryExpression3725);
+                    match(input,112,FOLLOW_112_in_unaryExpression3780); if (state.failed) return ;
+                    pushFollow(FOLLOW_primary_in_unaryExpression3782);
                     primary();
 
                     state._fsp--;
@@ -8315,9 +8361,9 @@
                     }
                     break;
                 case 5 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:879:9: unaryExpressionNotPlusMinus
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:888:9: unaryExpressionNotPlusMinus
                     {
-                    pushFollow(FOLLOW_unaryExpressionNotPlusMinus_in_unaryExpression3735);
+                    pushFollow(FOLLOW_unaryExpressionNotPlusMinus_in_unaryExpression3792);
                     unaryExpressionNotPlusMinus();
 
                     state._fsp--;
@@ -8341,20 +8387,20 @@
 
 
     // $ANTLR start "unaryExpressionNotPlusMinus"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:882:1: unaryExpressionNotPlusMinus : ( '~' unaryExpression | '!' unaryExpression | castExpression | primary ( selector )* ( '++' | '--' )? );
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:891: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) {
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:892:5: ( '~' unaryExpression | '!' unaryExpression | castExpression | primary ( selector )* ( '++' | '--' )? )
+            int alt150=4;
+            alt150 = dfa150.predict(input);
+            switch (alt150) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:883:9: '~' unaryExpression
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:892:9: '~' unaryExpression
                     {
-                    match(input,112,FOLLOW_112_in_unaryExpressionNotPlusMinus3754); if (state.failed) return ;
-                    pushFollow(FOLLOW_unaryExpression_in_unaryExpressionNotPlusMinus3756);
+                    match(input,113,FOLLOW_113_in_unaryExpressionNotPlusMinus3811); if (state.failed) return ;
+                    pushFollow(FOLLOW_unaryExpression_in_unaryExpressionNotPlusMinus3813);
                     unaryExpression();
 
                     state._fsp--;
@@ -8363,10 +8409,10 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:884:8: '!' unaryExpression
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:893:8: '!' unaryExpression
                     {
-                    match(input,113,FOLLOW_113_in_unaryExpressionNotPlusMinus3765); if (state.failed) return ;
-                    pushFollow(FOLLOW_unaryExpression_in_unaryExpressionNotPlusMinus3767);
+                    match(input,114,FOLLOW_114_in_unaryExpressionNotPlusMinus3822); if (state.failed) return ;
+                    pushFollow(FOLLOW_unaryExpression_in_unaryExpressionNotPlusMinus3824);
                     unaryExpression();
 
                     state._fsp--;
@@ -8375,9 +8421,9 @@
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:885:9: castExpression
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:894:9: castExpression
                     {
-                    pushFollow(FOLLOW_castExpression_in_unaryExpressionNotPlusMinus3777);
+                    pushFollow(FOLLOW_castExpression_in_unaryExpressionNotPlusMinus3834);
                     castExpression();
 
                     state._fsp--;
@@ -8386,23 +8432,23 @@
                     }
                     break;
                 case 4 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:886:9: primary ( selector )* ( '++' | '--' )?
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:895:9: primary ( selector )* ( '++' | '--' )?
                     {
-                    pushFollow(FOLLOW_primary_in_unaryExpressionNotPlusMinus3787);
+                    pushFollow(FOLLOW_primary_in_unaryExpressionNotPlusMinus3844);
                     primary();
 
                     state._fsp--;
                     if (state.failed) return ;
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:886:17: ( selector )*
-                    loop147:
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:895:17: ( selector )*
+                    loop148:
                     do {
-                        int alt147=2;
-                        alt147 = dfa147.predict(input);
-                        switch (alt147) {
+                        int alt148=2;
+                        alt148 = dfa148.predict(input);
+                        switch (alt148) {
                     	case 1 :
                     	    // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: selector
                     	    {
-                    	    pushFollow(FOLLOW_selector_in_unaryExpressionNotPlusMinus3789);
+                    	    pushFollow(FOLLOW_selector_in_unaryExpressionNotPlusMinus3846);
                     	    selector();
 
                     	    state._fsp--;
@@ -8412,18 +8458,18 @@
                     	    break;
 
                     	default :
-                    	    break loop147;
+                    	    break loop148;
                         }
                     } while (true);
 
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:886:27: ( '++' | '--' )?
-                    int alt148=2;
-                    alt148 = dfa148.predict(input);
-                    switch (alt148) {
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:895:27: ( '++' | '--' )?
+                    int alt149=2;
+                    alt149 = dfa149.predict(input);
+                    switch (alt149) {
                         case 1 :
                             // src/main/resources/org/drools/semantics/java/parser/Java.g:
                             {
-                            if ( (input.LA(1)>=110 && input.LA(1)<=111) ) {
+                            if ( (input.LA(1)>=111 && input.LA(1)<=112) ) {
                                 input.consume();
                                 state.errorRecovery=false;state.failed=false;
                             }
@@ -8458,26 +8504,26 @@
 
 
     // $ANTLR start "castExpression"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:889:1: castExpression : ( '(' primitiveType ')' unaryExpression | '(' ( type | expression ) ')' unaryExpressionNotPlusMinus );
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:898: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) {
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:899:5: ( '(' primitiveType ')' unaryExpression | '(' ( type | expression ) ')' unaryExpressionNotPlusMinus )
+            int alt152=2;
+            alt152 = dfa152.predict(input);
+            switch (alt152) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:890:8: '(' primitiveType ')' unaryExpression
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:899:8: '(' primitiveType ')' unaryExpression
                     {
-                    match(input,65,FOLLOW_65_in_castExpression3815); if (state.failed) return ;
-                    pushFollow(FOLLOW_primitiveType_in_castExpression3817);
+                    match(input,65,FOLLOW_65_in_castExpression3872); if (state.failed) return ;
+                    pushFollow(FOLLOW_primitiveType_in_castExpression3874);
                     primitiveType();
 
                     state._fsp--;
                     if (state.failed) return ;
-                    match(input,66,FOLLOW_66_in_castExpression3819); if (state.failed) return ;
-                    pushFollow(FOLLOW_unaryExpression_in_castExpression3821);
+                    match(input,66,FOLLOW_66_in_castExpression3876); if (state.failed) return ;
+                    pushFollow(FOLLOW_unaryExpression_in_castExpression3878);
                     unaryExpression();
 
                     state._fsp--;
@@ -8486,17 +8532,17 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:891:8: '(' ( type | expression ) ')' unaryExpressionNotPlusMinus
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:900: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) {
+                    match(input,65,FOLLOW_65_in_castExpression3887); if (state.failed) return ;
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:900:12: ( type | expression )
+                    int alt151=2;
+                    alt151 = dfa151.predict(input);
+                    switch (alt151) {
                         case 1 :
-                            // src/main/resources/org/drools/semantics/java/parser/Java.g:891:13: type
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:900:13: type
                             {
-                            pushFollow(FOLLOW_type_in_castExpression3833);
+                            pushFollow(FOLLOW_type_in_castExpression3890);
                             type();
 
                             state._fsp--;
@@ -8505,9 +8551,9 @@
                             }
                             break;
                         case 2 :
-                            // src/main/resources/org/drools/semantics/java/parser/Java.g:891:20: expression
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:900:20: expression
                             {
-                            pushFollow(FOLLOW_expression_in_castExpression3837);
+                            pushFollow(FOLLOW_expression_in_castExpression3894);
                             expression();
 
                             state._fsp--;
@@ -8518,8 +8564,8 @@
 
                     }
 
-                    match(input,66,FOLLOW_66_in_castExpression3840); if (state.failed) return ;
-                    pushFollow(FOLLOW_unaryExpressionNotPlusMinus_in_castExpression3842);
+                    match(input,66,FOLLOW_66_in_castExpression3897); if (state.failed) return ;
+                    pushFollow(FOLLOW_unaryExpressionNotPlusMinus_in_castExpression3899);
                     unaryExpressionNotPlusMinus();
 
                     state._fsp--;
@@ -8543,21 +8589,21 @@
 
 
     // $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' );
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:903: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) {
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:904:5: ( parExpression | nonWildcardTypeArguments ( explicitGenericInvocationSuffix | 'this' arguments ) | 'this' ( '.' Identifier )* ( identifierSuffix )? | 'super' superSuffix | literal | 'new' creator | i= Identifier ( '.' Identifier )* ( identifierSuffix )? | primitiveType ( '[' ']' )* '.' 'class' | 'void' '.' 'class' )
+            int alt159=9;
+            alt159 = dfa159.predict(input);
+            switch (alt159) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:895:7: parExpression
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:904:7: parExpression
                     {
-                    pushFollow(FOLLOW_parExpression_in_primary3859);
+                    pushFollow(FOLLOW_parExpression_in_primary3916);
                     parExpression();
 
                     state._fsp--;
@@ -8566,35 +8612,35 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:896:9: nonWildcardTypeArguments ( explicitGenericInvocationSuffix | 'this' arguments )
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:905:9: nonWildcardTypeArguments ( explicitGenericInvocationSuffix | 'this' arguments )
                     {
-                    pushFollow(FOLLOW_nonWildcardTypeArguments_in_primary3869);
+                    pushFollow(FOLLOW_nonWildcardTypeArguments_in_primary3926);
                     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);
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:906:9: ( explicitGenericInvocationSuffix | 'this' arguments )
+                    int alt153=2;
+                    int LA153_0 = input.LA(1);
 
-                    if ( (LA152_0==Identifier||LA152_0==64) ) {
-                        alt152=1;
+                    if ( (LA153_0==Identifier||LA153_0==64) ) {
+                        alt153=1;
                     }
-                    else if ( (LA152_0==114) ) {
-                        alt152=2;
+                    else if ( (LA153_0==115) ) {
+                        alt153=2;
                     }
                     else {
                         if (state.backtracking>0) {state.failed=true; return ;}
                         NoViableAltException nvae =
-                            new NoViableAltException("", 152, 0, input);
+                            new NoViableAltException("", 153, 0, input);
 
                         throw nvae;
                     }
-                    switch (alt152) {
+                    switch (alt153) {
                         case 1 :
-                            // src/main/resources/org/drools/semantics/java/parser/Java.g:897:10: explicitGenericInvocationSuffix
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:906:10: explicitGenericInvocationSuffix
                             {
-                            pushFollow(FOLLOW_explicitGenericInvocationSuffix_in_primary3880);
+                            pushFollow(FOLLOW_explicitGenericInvocationSuffix_in_primary3937);
                             explicitGenericInvocationSuffix();
 
                             state._fsp--;
@@ -8603,10 +8649,10 @@
                             }
                             break;
                         case 2 :
-                            // src/main/resources/org/drools/semantics/java/parser/Java.g:897:44: 'this' arguments
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:906:44: 'this' arguments
                             {
-                            match(input,114,FOLLOW_114_in_primary3884); if (state.failed) return ;
-                            pushFollow(FOLLOW_arguments_in_primary3886);
+                            match(input,115,FOLLOW_115_in_primary3941); if (state.failed) return ;
+                            pushFollow(FOLLOW_arguments_in_primary3943);
                             arguments();
 
                             state._fsp--;
@@ -8621,37 +8667,37 @@
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:898:9: 'this' ( '.' Identifier )* ( identifierSuffix )?
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:907: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:
+                    match(input,115,FOLLOW_115_in_primary3954); if (state.failed) return ;
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:907:16: ( '.' Identifier )*
+                    loop154:
                     do {
-                        int alt153=2;
-                        alt153 = dfa153.predict(input);
-                        switch (alt153) {
+                        int alt154=2;
+                        alt154 = dfa154.predict(input);
+                        switch (alt154) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:898:17: '.' Identifier
+                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:907:17: '.' Identifier
                     	    {
-                    	    match(input,28,FOLLOW_28_in_primary3900); if (state.failed) return ;
-                    	    match(input,Identifier,FOLLOW_Identifier_in_primary3902); if (state.failed) return ;
+                    	    match(input,28,FOLLOW_28_in_primary3957); if (state.failed) return ;
+                    	    match(input,Identifier,FOLLOW_Identifier_in_primary3959); if (state.failed) return ;
 
                     	    }
                     	    break;
 
                     	default :
-                    	    break loop153;
+                    	    break loop154;
                         }
                     } while (true);
 
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:898:34: ( identifierSuffix )?
-                    int alt154=2;
-                    alt154 = dfa154.predict(input);
-                    switch (alt154) {
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:907:34: ( identifierSuffix )?
+                    int alt155=2;
+                    alt155 = dfa155.predict(input);
+                    switch (alt155) {
                         case 1 :
-                            // src/main/resources/org/drools/semantics/java/parser/Java.g:898:35: identifierSuffix
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:907:35: identifierSuffix
                             {
-                            pushFollow(FOLLOW_identifierSuffix_in_primary3907);
+                            pushFollow(FOLLOW_identifierSuffix_in_primary3964);
                             identifierSuffix();
 
                             state._fsp--;
@@ -8666,10 +8712,10 @@
                     }
                     break;
                 case 4 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:899:9: 'super' superSuffix
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:908:9: 'super' superSuffix
                     {
-                    match(input,64,FOLLOW_64_in_primary3919); if (state.failed) return ;
-                    pushFollow(FOLLOW_superSuffix_in_primary3921);
+                    match(input,64,FOLLOW_64_in_primary3976); if (state.failed) return ;
+                    pushFollow(FOLLOW_superSuffix_in_primary3978);
                     superSuffix();
 
                     state._fsp--;
@@ -8678,9 +8724,9 @@
                     }
                     break;
                 case 5 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:900:9: literal
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:909:9: literal
                     {
-                    pushFollow(FOLLOW_literal_in_primary3931);
+                    pushFollow(FOLLOW_literal_in_primary3988);
                     literal();
 
                     state._fsp--;
@@ -8689,10 +8735,10 @@
                     }
                     break;
                 case 6 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:901:9: 'new' creator
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:910:9: 'new' creator
                     {
-                    match(input,115,FOLLOW_115_in_primary3941); if (state.failed) return ;
-                    pushFollow(FOLLOW_creator_in_primary3943);
+                    match(input,116,FOLLOW_116_in_primary3998); if (state.failed) return ;
+                    pushFollow(FOLLOW_creator_in_primary4000);
                     creator();
 
                     state._fsp--;
@@ -8701,40 +8747,40 @@
                     }
                     break;
                 case 7 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:902:9: i= Identifier ( '.' Identifier )* ( identifierSuffix )?
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:911:9: i= Identifier ( '.' Identifier )* ( identifierSuffix )?
                     {
-                    i=(Token)match(input,Identifier,FOLLOW_Identifier_in_primary3955); if (state.failed) return ;
+                    i=(Token)match(input,Identifier,FOLLOW_Identifier_in_primary4012); 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:
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:911:126: ( '.' Identifier )*
+                    loop156:
                     do {
-                        int alt155=2;
-                        alt155 = dfa155.predict(input);
-                        switch (alt155) {
+                        int alt156=2;
+                        alt156 = dfa156.predict(input);
+                        switch (alt156) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:902:127: '.' Identifier
+                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:911:127: '.' Identifier
                     	    {
-                    	    match(input,28,FOLLOW_28_in_primary3960); if (state.failed) return ;
-                    	    match(input,Identifier,FOLLOW_Identifier_in_primary3962); if (state.failed) return ;
+                    	    match(input,28,FOLLOW_28_in_primary4017); if (state.failed) return ;
+                    	    match(input,Identifier,FOLLOW_Identifier_in_primary4019); if (state.failed) return ;
 
                     	    }
                     	    break;
 
                     	default :
-                    	    break loop155;
+                    	    break loop156;
                         }
                     } while (true);
 
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:902:144: ( identifierSuffix )?
-                    int alt156=2;
-                    alt156 = dfa156.predict(input);
-                    switch (alt156) {
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:911:144: ( identifierSuffix )?
+                    int alt157=2;
+                    alt157 = dfa157.predict(input);
+                    switch (alt157) {
                         case 1 :
-                            // src/main/resources/org/drools/semantics/java/parser/Java.g:902:145: identifierSuffix
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:911:145: identifierSuffix
                             {
-                            pushFollow(FOLLOW_identifierSuffix_in_primary3967);
+                            pushFollow(FOLLOW_identifierSuffix_in_primary4024);
                             identifierSuffix();
 
                             state._fsp--;
@@ -8749,50 +8795,50 @@
                     }
                     break;
                 case 8 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:903:9: primitiveType ( '[' ']' )* '.' 'class'
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:912:9: primitiveType ( '[' ']' )* '.' 'class'
                     {
-                    pushFollow(FOLLOW_primitiveType_in_primary3979);
+                    pushFollow(FOLLOW_primitiveType_in_primary4036);
                     primitiveType();
 
                     state._fsp--;
                     if (state.failed) return ;
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:903:23: ( '[' ']' )*
-                    loop157:
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:912:23: ( '[' ']' )*
+                    loop158:
                     do {
-                        int alt157=2;
-                        int LA157_0 = input.LA(1);
+                        int alt158=2;
+                        int LA158_0 = input.LA(1);
 
-                        if ( (LA157_0==41) ) {
-                            alt157=1;
+                        if ( (LA158_0==41) ) {
+                            alt158=1;
                         }
 
 
-                        switch (alt157) {
+                        switch (alt158) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:903:24: '[' ']'
+                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:912:24: '[' ']'
                     	    {
-                    	    match(input,41,FOLLOW_41_in_primary3982); if (state.failed) return ;
-                    	    match(input,42,FOLLOW_42_in_primary3984); if (state.failed) return ;
+                    	    match(input,41,FOLLOW_41_in_primary4039); if (state.failed) return ;
+                    	    match(input,42,FOLLOW_42_in_primary4041); if (state.failed) return ;
 
                     	    }
                     	    break;
 
                     	default :
-                    	    break loop157;
+                    	    break loop158;
                         }
                     } while (true);
 
-                    match(input,28,FOLLOW_28_in_primary3988); if (state.failed) return ;
-                    match(input,30,FOLLOW_30_in_primary3990); if (state.failed) return ;
+                    match(input,28,FOLLOW_28_in_primary4045); if (state.failed) return ;
+                    match(input,30,FOLLOW_30_in_primary4047); if (state.failed) return ;
 
                     }
                     break;
                 case 9 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:904:9: 'void' '.' 'class'
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:913: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 ;
+                    match(input,40,FOLLOW_40_in_primary4057); if (state.failed) return ;
+                    match(input,28,FOLLOW_28_in_primary4059); if (state.failed) return ;
+                    match(input,30,FOLLOW_30_in_primary4061); if (state.failed) return ;
 
                     }
                     break;
@@ -8812,96 +8858,96 @@
 
 
     // $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 );
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:916: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) {
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:917:2: ( ( '[' ']' )+ '.' 'class' | ( '[' expression ']' )+ | arguments | '.' 'class' | '.' explicitGenericInvocation | '.' 'this' | '.' 'super' arguments | '.' 'new' ( nonWildcardTypeArguments )? innerCreator )
+            int alt163=8;
+            alt163 = dfa163.predict(input);
+            switch (alt163) {
                 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:917:4: ( '[' ']' )+ '.' 'class'
                     {
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:908:4: ( '[' ']' )+
-                    int cnt159=0;
-                    loop159:
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:917:4: ( '[' ']' )+
+                    int cnt160=0;
+                    loop160:
                     do {
-                        int alt159=2;
-                        int LA159_0 = input.LA(1);
+                        int alt160=2;
+                        int LA160_0 = input.LA(1);
 
-                        if ( (LA159_0==41) ) {
-                            alt159=1;
+                        if ( (LA160_0==41) ) {
+                            alt160=1;
                         }
 
 
-                        switch (alt159) {
+                        switch (alt160) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:908:5: '[' ']'
+                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:917:5: '[' ']'
                     	    {
-                    	    match(input,41,FOLLOW_41_in_identifierSuffix4016); if (state.failed) return ;
-                    	    match(input,42,FOLLOW_42_in_identifierSuffix4018); if (state.failed) return ;
+                    	    match(input,41,FOLLOW_41_in_identifierSuffix4073); if (state.failed) return ;
+                    	    match(input,42,FOLLOW_42_in_identifierSuffix4075); if (state.failed) return ;
 
                     	    }
                     	    break;
 
                     	default :
-                    	    if ( cnt159 >= 1 ) break loop159;
+                    	    if ( cnt160 >= 1 ) break loop160;
                     	    if (state.backtracking>0) {state.failed=true; return ;}
                                 EarlyExitException eee =
-                                    new EarlyExitException(159, input);
+                                    new EarlyExitException(160, input);
                                 throw eee;
                         }
-                        cnt159++;
+                        cnt160++;
                     } while (true);
 
-                    match(input,28,FOLLOW_28_in_identifierSuffix4022); if (state.failed) return ;
-                    match(input,30,FOLLOW_30_in_identifierSuffix4024); if (state.failed) return ;
+                    match(input,28,FOLLOW_28_in_identifierSuffix4079); if (state.failed) return ;
+                    match(input,30,FOLLOW_30_in_identifierSuffix4081); 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:918:4: ( '[' expression ']' )+
                     {
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:909:4: ( '[' expression ']' )+
-                    int cnt160=0;
-                    loop160:
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:918:4: ( '[' expression ']' )+
+                    int cnt161=0;
+                    loop161:
                     do {
-                        int alt160=2;
-                        alt160 = dfa160.predict(input);
-                        switch (alt160) {
+                        int alt161=2;
+                        alt161 = dfa161.predict(input);
+                        switch (alt161) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:909:5: '[' expression ']'
+                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:918:5: '[' expression ']'
                     	    {
-                    	    match(input,41,FOLLOW_41_in_identifierSuffix4030); if (state.failed) return ;
-                    	    pushFollow(FOLLOW_expression_in_identifierSuffix4032);
+                    	    match(input,41,FOLLOW_41_in_identifierSuffix4087); if (state.failed) return ;
+                    	    pushFollow(FOLLOW_expression_in_identifierSuffix4089);
                     	    expression();
 
                     	    state._fsp--;
                     	    if (state.failed) return ;
-                    	    match(input,42,FOLLOW_42_in_identifierSuffix4034); if (state.failed) return ;
+                    	    match(input,42,FOLLOW_42_in_identifierSuffix4091); if (state.failed) return ;
 
                     	    }
                     	    break;
 
                     	default :
-                    	    if ( cnt160 >= 1 ) break loop160;
+                    	    if ( cnt161 >= 1 ) break loop161;
                     	    if (state.backtracking>0) {state.failed=true; return ;}
                                 EarlyExitException eee =
-                                    new EarlyExitException(160, input);
+                                    new EarlyExitException(161, input);
                                 throw eee;
                         }
-                        cnt160++;
+                        cnt161++;
                     } while (true);
 
 
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:910:9: arguments
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:919:9: arguments
                     {
-                    pushFollow(FOLLOW_arguments_in_identifierSuffix4047);
+                    pushFollow(FOLLOW_arguments_in_identifierSuffix4104);
                     arguments();
 
                     state._fsp--;
@@ -8910,18 +8956,18 @@
                     }
                     break;
                 case 4 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:911:9: '.' 'class'
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:920:9: '.' 'class'
                     {
-                    match(input,28,FOLLOW_28_in_identifierSuffix4057); if (state.failed) return ;
-                    match(input,30,FOLLOW_30_in_identifierSuffix4059); if (state.failed) return ;
+                    match(input,28,FOLLOW_28_in_identifierSuffix4114); if (state.failed) return ;
+                    match(input,30,FOLLOW_30_in_identifierSuffix4116); if (state.failed) return ;
 
                     }
                     break;
                 case 5 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:912:9: '.' explicitGenericInvocation
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:921:9: '.' explicitGenericInvocation
                     {
-                    match(input,28,FOLLOW_28_in_identifierSuffix4069); if (state.failed) return ;
-                    pushFollow(FOLLOW_explicitGenericInvocation_in_identifierSuffix4071);
+                    match(input,28,FOLLOW_28_in_identifierSuffix4126); if (state.failed) return ;
+                    pushFollow(FOLLOW_explicitGenericInvocation_in_identifierSuffix4128);
                     explicitGenericInvocation();
 
                     state._fsp--;
@@ -8930,19 +8976,19 @@
                     }
                     break;
                 case 6 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:913:9: '.' 'this'
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:922:9: '.' 'this'
                     {
-                    match(input,28,FOLLOW_28_in_identifierSuffix4081); if (state.failed) return ;
-                    match(input,114,FOLLOW_114_in_identifierSuffix4083); if (state.failed) return ;
+                    match(input,28,FOLLOW_28_in_identifierSuffix4138); if (state.failed) return ;
+                    match(input,115,FOLLOW_115_in_identifierSuffix4140); if (state.failed) return ;
 
                     }
                     break;
                 case 7 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:914:9: '.' 'super' arguments
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:923: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);
+                    match(input,28,FOLLOW_28_in_identifierSuffix4150); if (state.failed) return ;
+                    match(input,64,FOLLOW_64_in_identifierSuffix4152); if (state.failed) return ;
+                    pushFollow(FOLLOW_arguments_in_identifierSuffix4154);
                     arguments();
 
                     state._fsp--;
@@ -8951,22 +8997,22 @@
                     }
                     break;
                 case 8 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:915:9: '.' 'new' ( nonWildcardTypeArguments )? innerCreator
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:924: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);
+                    match(input,28,FOLLOW_28_in_identifierSuffix4164); if (state.failed) return ;
+                    match(input,116,FOLLOW_116_in_identifierSuffix4166); if (state.failed) return ;
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:924:19: ( nonWildcardTypeArguments )?
+                    int alt162=2;
+                    int LA162_0 = input.LA(1);
 
-                    if ( (LA161_0==33) ) {
-                        alt161=1;
+                    if ( (LA162_0==33) ) {
+                        alt162=1;
                     }
-                    switch (alt161) {
+                    switch (alt162) {
                         case 1 :
-                            // src/main/resources/org/drools/semantics/java/parser/Java.g:915:20: nonWildcardTypeArguments
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:924:20: nonWildcardTypeArguments
                             {
-                            pushFollow(FOLLOW_nonWildcardTypeArguments_in_identifierSuffix4112);
+                            pushFollow(FOLLOW_nonWildcardTypeArguments_in_identifierSuffix4169);
                             nonWildcardTypeArguments();
 
                             state._fsp--;
@@ -8977,7 +9023,7 @@
 
                     }
 
-                    pushFollow(FOLLOW_innerCreator_in_identifierSuffix4116);
+                    pushFollow(FOLLOW_innerCreator_in_identifierSuffix4173);
                     innerCreator();
 
                     state._fsp--;
@@ -9001,26 +9047,26 @@
 
 
     // $ANTLR start "creator"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:918:1: creator : ( nonWildcardTypeArguments )? createdName ( arrayCreatorRest | classCreatorRest ) ;
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:927: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:928:2: ( ( nonWildcardTypeArguments )? createdName ( arrayCreatorRest | classCreatorRest ) )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:928: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);
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:928:4: ( nonWildcardTypeArguments )?
+            int alt164=2;
+            int LA164_0 = input.LA(1);
 
-            if ( (LA163_0==33) ) {
-                alt163=1;
+            if ( (LA164_0==33) ) {
+                alt164=1;
             }
-            switch (alt163) {
+            switch (alt164) {
                 case 1 :
                     // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: nonWildcardTypeArguments
                     {
-                    pushFollow(FOLLOW_nonWildcardTypeArguments_in_creator4128);
+                    pushFollow(FOLLOW_nonWildcardTypeArguments_in_creator4185);
                     nonWildcardTypeArguments();
 
                     state._fsp--;
@@ -9031,33 +9077,33 @@
 
             }
 
-            pushFollow(FOLLOW_createdName_in_creator4131);
+            pushFollow(FOLLOW_createdName_in_creator4188);
             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);
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:929:9: ( arrayCreatorRest | classCreatorRest )
+            int alt165=2;
+            int LA165_0 = input.LA(1);
 
-            if ( (LA164_0==41) ) {
-                alt164=1;
+            if ( (LA165_0==41) ) {
+                alt165=1;
             }
-            else if ( (LA164_0==65) ) {
-                alt164=2;
+            else if ( (LA165_0==65) ) {
+                alt165=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 164, 0, input);
+                    new NoViableAltException("", 165, 0, input);
 
                 throw nvae;
             }
-            switch (alt164) {
+            switch (alt165) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:920:10: arrayCreatorRest
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:929:10: arrayCreatorRest
                     {
-                    pushFollow(FOLLOW_arrayCreatorRest_in_creator4142);
+                    pushFollow(FOLLOW_arrayCreatorRest_in_creator4199);
                     arrayCreatorRest();
 
                     state._fsp--;
@@ -9066,9 +9112,9 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:920:29: classCreatorRest
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:929:29: classCreatorRest
                     {
-                    pushFollow(FOLLOW_classCreatorRest_in_creator4146);
+                    pushFollow(FOLLOW_classCreatorRest_in_creator4203);
                     classCreatorRest();
 
                     state._fsp--;
@@ -9096,45 +9142,45 @@
 
 
     // $ANTLR start "createdName"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:923:1: createdName : ( Identifier ( typeArguments )? ( '.' Identifier ( typeArguments )? )* | primitiveType );
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:932: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);
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:933:2: ( Identifier ( typeArguments )? ( '.' Identifier ( typeArguments )? )* | primitiveType )
+            int alt169=2;
+            int LA169_0 = input.LA(1);
 
-            if ( (LA168_0==Identifier) ) {
-                alt168=1;
+            if ( (LA169_0==Identifier) ) {
+                alt169=1;
             }
-            else if ( ((LA168_0>=55 && LA168_0<=62)) ) {
-                alt168=2;
+            else if ( ((LA169_0>=55 && LA169_0<=62)) ) {
+                alt169=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 168, 0, input);
+                    new NoViableAltException("", 169, 0, input);
 
                 throw nvae;
             }
-            switch (alt168) {
+            switch (alt169) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:924:4: Identifier ( typeArguments )? ( '.' Identifier ( typeArguments )? )*
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:933: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);
+                    match(input,Identifier,FOLLOW_Identifier_in_createdName4215); if (state.failed) return ;
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:933:15: ( typeArguments )?
+                    int alt166=2;
+                    int LA166_0 = input.LA(1);
 
-                    if ( (LA165_0==33) ) {
-                        alt165=1;
+                    if ( (LA166_0==33) ) {
+                        alt166=1;
                     }
-                    switch (alt165) {
+                    switch (alt166) {
                         case 1 :
                             // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: typeArguments
                             {
-                            pushFollow(FOLLOW_typeArguments_in_createdName4160);
+                            pushFollow(FOLLOW_typeArguments_in_createdName4217);
                             typeArguments();
 
                             state._fsp--;
@@ -9145,35 +9191,35 @@
 
                     }
 
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:925:9: ( '.' Identifier ( typeArguments )? )*
-                    loop167:
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:934:9: ( '.' Identifier ( typeArguments )? )*
+                    loop168:
                     do {
-                        int alt167=2;
-                        int LA167_0 = input.LA(1);
+                        int alt168=2;
+                        int LA168_0 = input.LA(1);
 
-                        if ( (LA167_0==28) ) {
-                            alt167=1;
+                        if ( (LA168_0==28) ) {
+                            alt168=1;
                         }
 
 
-                        switch (alt167) {
+                        switch (alt168) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:925:10: '.' Identifier ( typeArguments )?
+                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:934: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);
+                    	    match(input,28,FOLLOW_28_in_createdName4229); if (state.failed) return ;
+                    	    match(input,Identifier,FOLLOW_Identifier_in_createdName4231); if (state.failed) return ;
+                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:934:25: ( typeArguments )?
+                    	    int alt167=2;
+                    	    int LA167_0 = input.LA(1);
 
-                    	    if ( (LA166_0==33) ) {
-                    	        alt166=1;
+                    	    if ( (LA167_0==33) ) {
+                    	        alt167=1;
                     	    }
-                    	    switch (alt166) {
+                    	    switch (alt167) {
                     	        case 1 :
                     	            // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: typeArguments
                     	            {
-                    	            pushFollow(FOLLOW_typeArguments_in_createdName4176);
+                    	            pushFollow(FOLLOW_typeArguments_in_createdName4233);
                     	            typeArguments();
 
                     	            state._fsp--;
@@ -9189,7 +9235,7 @@
                     	    break;
 
                     	default :
-                    	    break loop167;
+                    	    break loop168;
                         }
                     } while (true);
 
@@ -9197,9 +9243,9 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:926:7: primitiveType
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:935:7: primitiveType
                     {
-                    pushFollow(FOLLOW_primitiveType_in_createdName4187);
+                    pushFollow(FOLLOW_primitiveType_in_createdName4244);
                     primitiveType();
 
                     state._fsp--;
@@ -9223,16 +9269,16 @@
 
 
     // $ANTLR start "innerCreator"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:929:1: innerCreator : Identifier classCreatorRest ;
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:938: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
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:939:2: ( Identifier classCreatorRest )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:939:4: Identifier classCreatorRest
             {
-            match(input,Identifier,FOLLOW_Identifier_in_innerCreator4199); if (state.failed) return ;
-            pushFollow(FOLLOW_classCreatorRest_in_innerCreator4201);
+            match(input,Identifier,FOLLOW_Identifier_in_innerCreator4256); if (state.failed) return ;
+            pushFollow(FOLLOW_classCreatorRest_in_innerCreator4258);
             classCreatorRest();
 
             state._fsp--;
@@ -9254,50 +9300,50 @@
 
 
     // $ANTLR start "arrayCreatorRest"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:933:1: arrayCreatorRest : '[' ( ']' ( '[' ']' )* arrayInitializer | expression ']' ( '[' expression ']' )* ( '[' ']' )* ) ;
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:942: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 ']' )* ( '[' ']' )* )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:943:2: ( '[' ( ']' ( '[' ']' )* arrayInitializer | expression ']' ( '[' expression ']' )* ( '[' ']' )* ) )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:943: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) {
+            match(input,41,FOLLOW_41_in_arrayCreatorRest4269); if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:944:9: ( ']' ( '[' ']' )* arrayInitializer | expression ']' ( '[' expression ']' )* ( '[' ']' )* )
+            int alt173=2;
+            alt173 = dfa173.predict(input);
+            switch (alt173) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:935:13: ']' ( '[' ']' )* arrayInitializer
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:944: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:
+                    match(input,42,FOLLOW_42_in_arrayCreatorRest4283); if (state.failed) return ;
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:944:17: ( '[' ']' )*
+                    loop170:
                     do {
-                        int alt169=2;
-                        int LA169_0 = input.LA(1);
+                        int alt170=2;
+                        int LA170_0 = input.LA(1);
 
-                        if ( (LA169_0==41) ) {
-                            alt169=1;
+                        if ( (LA170_0==41) ) {
+                            alt170=1;
                         }
 
 
-                        switch (alt169) {
+                        switch (alt170) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:935:18: '[' ']'
+                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:944:18: '[' ']'
                     	    {
-                    	    match(input,41,FOLLOW_41_in_arrayCreatorRest4229); if (state.failed) return ;
-                    	    match(input,42,FOLLOW_42_in_arrayCreatorRest4231); if (state.failed) return ;
+                    	    match(input,41,FOLLOW_41_in_arrayCreatorRest4286); if (state.failed) return ;
+                    	    match(input,42,FOLLOW_42_in_arrayCreatorRest4288); if (state.failed) return ;
 
                     	    }
                     	    break;
 
                     	default :
-                    	    break loop169;
+                    	    break loop170;
                         }
                     } while (true);
 
-                    pushFollow(FOLLOW_arrayInitializer_in_arrayCreatorRest4235);
+                    pushFollow(FOLLOW_arrayInitializer_in_arrayCreatorRest4292);
                     arrayInitializer();
 
                     state._fsp--;
@@ -9306,56 +9352,56 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:936:13: expression ']' ( '[' expression ']' )* ( '[' ']' )*
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:945:13: expression ']' ( '[' expression ']' )* ( '[' ']' )*
                     {
-                    pushFollow(FOLLOW_expression_in_arrayCreatorRest4249);
+                    pushFollow(FOLLOW_expression_in_arrayCreatorRest4306);
                     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:
+                    match(input,42,FOLLOW_42_in_arrayCreatorRest4308); if (state.failed) return ;
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:945:28: ( '[' expression ']' )*
+                    loop171:
                     do {
-                        int alt170=2;
-                        alt170 = dfa170.predict(input);
-                        switch (alt170) {
+                        int alt171=2;
+                        alt171 = dfa171.predict(input);
+                        switch (alt171) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:936:29: '[' expression ']'
+                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:945:29: '[' expression ']'
                     	    {
-                    	    match(input,41,FOLLOW_41_in_arrayCreatorRest4254); if (state.failed) return ;
-                    	    pushFollow(FOLLOW_expression_in_arrayCreatorRest4256);
+                    	    match(input,41,FOLLOW_41_in_arrayCreatorRest4311); if (state.failed) return ;
+                    	    pushFollow(FOLLOW_expression_in_arrayCreatorRest4313);
                     	    expression();
 
                     	    state._fsp--;
                     	    if (state.failed) return ;
-                    	    match(input,42,FOLLOW_42_in_arrayCreatorRest4258); if (state.failed) return ;
+                    	    match(input,42,FOLLOW_42_in_arrayCreatorRest4315); if (state.failed) return ;
 
                     	    }
                     	    break;
 
                     	default :
-                    	    break loop170;
+                    	    break loop171;
                         }
                     } while (true);
 
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:936:50: ( '[' ']' )*
-                    loop171:
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:945:50: ( '[' ']' )*
+                    loop172:
                     do {
-                        int alt171=2;
-                        alt171 = dfa171.predict(input);
-                        switch (alt171) {
+                        int alt172=2;
+                        alt172 = dfa172.predict(input);
+                        switch (alt172) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:936:51: '[' ']'
+                    	    // src/main/resources/org/drools/semantics/java/parser/Java.g:945:51: '[' ']'
                     	    {
-                    	    match(input,41,FOLLOW_41_in_arrayCreatorRest4263); if (state.failed) return ;
-                    	    match(input,42,FOLLOW_42_in_arrayCreatorRest4265); if (state.failed) return ;
+                    	    match(input,41,FOLLOW_41_in_arrayCreatorRest4320); if (state.failed) return ;
+                    	    match(input,42,FOLLOW_42_in_arrayCreatorRest4322); if (state.failed) return ;
 
                     	    }
                     	    break;
 
                     	default :
-                    	    break loop171;
+                    	    break loop172;
                         }
                     } while (true);
 
@@ -9382,27 +9428,27 @@
 
 
     // $ANTLR start "classCreatorRest"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:940:1: classCreatorRest : arguments ( classBody )? ;
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:949: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 )?
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:950:2: ( arguments ( classBody )? )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:950:4: arguments ( classBody )?
             {
-            pushFollow(FOLLOW_arguments_in_classCreatorRest4288);
+            pushFollow(FOLLOW_arguments_in_classCreatorRest4345);
             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) {
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:950:14: ( classBody )?
+            int alt174=2;
+            alt174 = dfa174.predict(input);
+            switch (alt174) {
                 case 1 :
                     // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: classBody
                     {
-                    pushFollow(FOLLOW_classBody_in_classCreatorRest4290);
+                    pushFollow(FOLLOW_classBody_in_classCreatorRest4347);
                     classBody();
 
                     state._fsp--;
@@ -9430,20 +9476,20 @@
 
 
     // $ANTLR start "explicitGenericInvocation"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:944:1: explicitGenericInvocation : nonWildcardTypeArguments explicitGenericInvocationSuffix ;
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:953: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
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:954:2: ( nonWildcardTypeArguments explicitGenericInvocationSuffix )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:954:4: nonWildcardTypeArguments explicitGenericInvocationSuffix
             {
-            pushFollow(FOLLOW_nonWildcardTypeArguments_in_explicitGenericInvocation4303);
+            pushFollow(FOLLOW_nonWildcardTypeArguments_in_explicitGenericInvocation4360);
             nonWildcardTypeArguments();
 
             state._fsp--;
             if (state.failed) return ;
-            pushFollow(FOLLOW_explicitGenericInvocationSuffix_in_explicitGenericInvocation4305);
+            pushFollow(FOLLOW_explicitGenericInvocationSuffix_in_explicitGenericInvocation4362);
             explicitGenericInvocationSuffix();
 
             state._fsp--;
@@ -9465,21 +9511,21 @@
 
 
     // $ANTLR start "nonWildcardTypeArguments"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:948:1: nonWildcardTypeArguments : '<' typeList '>' ;
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:957: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 '>'
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:958:2: ( '<' typeList '>' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:958:4: '<' typeList '>'
             {
-            match(input,33,FOLLOW_33_in_nonWildcardTypeArguments4317); if (state.failed) return ;
-            pushFollow(FOLLOW_typeList_in_nonWildcardTypeArguments4319);
+            match(input,33,FOLLOW_33_in_nonWildcardTypeArguments4374); if (state.failed) return ;
+            pushFollow(FOLLOW_typeList_in_nonWildcardTypeArguments4376);
             typeList();
 
             state._fsp--;
             if (state.failed) return ;
-            match(input,35,FOLLOW_35_in_nonWildcardTypeArguments4321); if (state.failed) return ;
+            match(input,35,FOLLOW_35_in_nonWildcardTypeArguments4378); if (state.failed) return ;
 
             }
 
@@ -9497,34 +9543,34 @@
 
 
     // $ANTLR start "explicitGenericInvocationSuffix"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:952:1: explicitGenericInvocationSuffix : ( 'super' superSuffix | Identifier arguments );
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:961: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);
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:962:2: ( 'super' superSuffix | Identifier arguments )
+            int alt175=2;
+            int LA175_0 = input.LA(1);
 
-            if ( (LA174_0==64) ) {
-                alt174=1;
+            if ( (LA175_0==64) ) {
+                alt175=1;
             }
-            else if ( (LA174_0==Identifier) ) {
-                alt174=2;
+            else if ( (LA175_0==Identifier) ) {
+                alt175=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 174, 0, input);
+                    new NoViableAltException("", 175, 0, input);
 
                 throw nvae;
             }
-            switch (alt174) {
+            switch (alt175) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:953:4: 'super' superSuffix
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:962:4: 'super' superSuffix
                     {
-                    match(input,64,FOLLOW_64_in_explicitGenericInvocationSuffix4333); if (state.failed) return ;
-                    pushFollow(FOLLOW_superSuffix_in_explicitGenericInvocationSuffix4335);
+                    match(input,64,FOLLOW_64_in_explicitGenericInvocationSuffix4390); if (state.failed) return ;
+                    pushFollow(FOLLOW_superSuffix_in_explicitGenericInvocationSuffix4392);
                     superSuffix();
 
                     state._fsp--;
@@ -9533,10 +9579,10 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:954:6: Identifier arguments
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:963:6: Identifier arguments
                     {
-                    match(input,Identifier,FOLLOW_Identifier_in_explicitGenericInvocationSuffix4342); if (state.failed) return ;
-                    pushFollow(FOLLOW_arguments_in_explicitGenericInvocationSuffix4344);
+                    match(input,Identifier,FOLLOW_Identifier_in_explicitGenericInvocationSuffix4399); if (state.failed) return ;
+                    pushFollow(FOLLOW_arguments_in_explicitGenericInvocationSuffix4401);
                     arguments();
 
                     state._fsp--;
@@ -9560,70 +9606,70 @@
 
 
     // $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 ']' );
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:966: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);
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:967:2: ( '.' Identifier ( arguments )? | '.' 'this' | '.' 'super' superSuffix | '.' 'new' ( nonWildcardTypeArguments )? innerCreator | '[' expression ']' )
+            int alt178=5;
+            int LA178_0 = input.LA(1);
 
-            if ( (LA177_0==28) ) {
+            if ( (LA178_0==28) ) {
                 switch ( input.LA(2) ) {
                 case Identifier:
                     {
-                    alt177=1;
+                    alt178=1;
                     }
                     break;
-                case 114:
+                case 115:
                     {
-                    alt177=2;
+                    alt178=2;
                     }
                     break;
                 case 64:
                     {
-                    alt177=3;
+                    alt178=3;
                     }
                     break;
-                case 115:
+                case 116:
                     {
-                    alt177=4;
+                    alt178=4;
                     }
                     break;
                 default:
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 177, 1, input);
+                        new NoViableAltException("", 178, 1, input);
 
                     throw nvae;
                 }
 
             }
-            else if ( (LA177_0==41) ) {
-                alt177=5;
+            else if ( (LA178_0==41) ) {
+                alt178=5;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 177, 0, input);
+                    new NoViableAltException("", 178, 0, input);
 
                 throw nvae;
             }
-            switch (alt177) {
+            switch (alt178) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:958:4: '.' Identifier ( arguments )?
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:967: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) {
+                    match(input,28,FOLLOW_28_in_selector4413); if (state.failed) return ;
+                    match(input,Identifier,FOLLOW_Identifier_in_selector4415); if (state.failed) return ;
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:967:19: ( arguments )?
+                    int alt176=2;
+                    alt176 = dfa176.predict(input);
+                    switch (alt176) {
                         case 1 :
-                            // src/main/resources/org/drools/semantics/java/parser/Java.g:958:20: arguments
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:967:20: arguments
                             {
-                            pushFollow(FOLLOW_arguments_in_selector4361);
+                            pushFollow(FOLLOW_arguments_in_selector4418);
                             arguments();
 
                             state._fsp--;
@@ -9638,19 +9684,19 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:959:6: '.' 'this'
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:968:6: '.' 'this'
                     {
-                    match(input,28,FOLLOW_28_in_selector4370); if (state.failed) return ;
-                    match(input,114,FOLLOW_114_in_selector4372); if (state.failed) return ;
+                    match(input,28,FOLLOW_28_in_selector4427); if (state.failed) return ;
+                    match(input,115,FOLLOW_115_in_selector4429); if (state.failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:960:6: '.' 'super' superSuffix
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:969: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);
+                    match(input,28,FOLLOW_28_in_selector4436); if (state.failed) return ;
+                    match(input,64,FOLLOW_64_in_selector4438); if (state.failed) return ;
+                    pushFollow(FOLLOW_superSuffix_in_selector4440);
                     superSuffix();
 
                     state._fsp--;
@@ -9659,22 +9705,22 @@
                     }
                     break;
                 case 4 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:961:6: '.' 'new' ( nonWildcardTypeArguments )? innerCreator
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:970: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);
+                    match(input,28,FOLLOW_28_in_selector4447); if (state.failed) return ;
+                    match(input,116,FOLLOW_116_in_selector4449); if (state.failed) return ;
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:970:16: ( nonWildcardTypeArguments )?
+                    int alt177=2;
+                    int LA177_0 = input.LA(1);
 
-                    if ( (LA176_0==33) ) {
-                        alt176=1;
+                    if ( (LA177_0==33) ) {
+                        alt177=1;
                     }
-                    switch (alt176) {
+                    switch (alt177) {
                         case 1 :
-                            // src/main/resources/org/drools/semantics/java/parser/Java.g:961:17: nonWildcardTypeArguments
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:970:17: nonWildcardTypeArguments
                             {
-                            pushFollow(FOLLOW_nonWildcardTypeArguments_in_selector4395);
+                            pushFollow(FOLLOW_nonWildcardTypeArguments_in_selector4452);
                             nonWildcardTypeArguments();
 
                             state._fsp--;
@@ -9685,7 +9731,7 @@
 
                     }
 
-                    pushFollow(FOLLOW_innerCreator_in_selector4399);
+                    pushFollow(FOLLOW_innerCreator_in_selector4456);
                     innerCreator();
 
                     state._fsp--;
@@ -9694,15 +9740,15 @@
                     }
                     break;
                 case 5 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:962:6: '[' expression ']'
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:971:6: '[' expression ']'
                     {
-                    match(input,41,FOLLOW_41_in_selector4406); if (state.failed) return ;
-                    pushFollow(FOLLOW_expression_in_selector4408);
+                    match(input,41,FOLLOW_41_in_selector4463); if (state.failed) return ;
+                    pushFollow(FOLLOW_expression_in_selector4465);
                     expression();
 
                     state._fsp--;
                     if (state.failed) return ;
-                    match(input,42,FOLLOW_42_in_selector4410); if (state.failed) return ;
+                    match(input,42,FOLLOW_42_in_selector4467); if (state.failed) return ;
 
                     }
                     break;
@@ -9722,33 +9768,33 @@
 
 
     // $ANTLR start "superSuffix"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:965:1: superSuffix : ( arguments | '.' Identifier ( arguments )? );
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:974: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);
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:975:2: ( arguments | '.' Identifier ( arguments )? )
+            int alt180=2;
+            int LA180_0 = input.LA(1);
 
-            if ( (LA179_0==65) ) {
-                alt179=1;
+            if ( (LA180_0==65) ) {
+                alt180=1;
             }
-            else if ( (LA179_0==28) ) {
-                alt179=2;
+            else if ( (LA180_0==28) ) {
+                alt180=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 179, 0, input);
+                    new NoViableAltException("", 180, 0, input);
 
                 throw nvae;
             }
-            switch (alt179) {
+            switch (alt180) {
                 case 1 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:966:4: arguments
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:975:4: arguments
                     {
-                    pushFollow(FOLLOW_arguments_in_superSuffix4422);
+                    pushFollow(FOLLOW_arguments_in_superSuffix4479);
                     arguments();
 
                     state._fsp--;
@@ -9757,18 +9803,18 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/semantics/java/parser/Java.g:967:6: '.' Identifier ( arguments )?
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:976: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) {
+                    match(input,28,FOLLOW_28_in_superSuffix4486); if (state.failed) return ;
+                    match(input,Identifier,FOLLOW_Identifier_in_superSuffix4488); if (state.failed) return ;
+                    // src/main/resources/org/drools/semantics/java/parser/Java.g:976:21: ( arguments )?
+                    int alt179=2;
+                    alt179 = dfa179.predict(input);
+                    switch (alt179) {
                         case 1 :
-                            // src/main/resources/org/drools/semantics/java/parser/Java.g:967:22: arguments
+                            // src/main/resources/org/drools/semantics/java/parser/Java.g:976:22: arguments
                             {
-                            pushFollow(FOLLOW_arguments_in_superSuffix4434);
+                            pushFollow(FOLLOW_arguments_in_superSuffix4491);
                             arguments();
 
                             state._fsp--;
@@ -9798,23 +9844,23 @@
 
 
     // $ANTLR start "arguments"
-    // src/main/resources/org/drools/semantics/java/parser/Java.g:970:1: arguments : '(' ( expressionList )? ')' ;
+    // src/main/resources/org/drools/semantics/java/parser/Java.g:979: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 )? ')'
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:980:2: ( '(' ( expressionList )? ')' )
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:980: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) {
+            match(input,65,FOLLOW_65_in_arguments4507); if (state.failed) return ;
+            // src/main/resources/org/drools/semantics/java/parser/Java.g:980:8: ( expressionList )?
+            int alt181=2;
+            alt181 = dfa181.predict(input);
+            switch (alt181) {
                 case 1 :
                     // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: expressionList
                     {
-                    pushFollow(FOLLOW_expressionList_in_arguments4452);
+                    pushFollow(FOLLOW_expressionList_in_arguments4509);
                     expressionList();
 
                     state._fsp--;
@@ -9825,7 +9871,7 @@
 
             }
 
-            match(input,66,FOLLOW_66_in_arguments4455); if (state.failed) return ;
+            match(input,66,FOLLOW_66_in_arguments4512); if (state.failed) return ;
 
             }
 
@@ -9843,8 +9889,8 @@
 
     // $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
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:207:4: ( annotations )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:207:4: annotations
         {
         pushFollow(FOLLOW_annotations_in_synpred1_Java70);
         annotations();
@@ -9858,8 +9904,8 @@
 
     // $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
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:303:4: ( methodDeclaration )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:303:4: methodDeclaration
         {
         pushFollow(FOLLOW_methodDeclaration_in_synpred38_Java577);
         methodDeclaration();
@@ -9873,8 +9919,8 @@
 
     // $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
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:304:4: ( fieldDeclaration )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:304:4: fieldDeclaration
         {
         pushFollow(FOLLOW_fieldDeclaration_in_synpred39_Java582);
         fieldDeclaration();
@@ -9888,8 +9934,8 @@
 
     // $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
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:459:16: ( '.' Identifier )
+        // 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 ;
@@ -9900,8 +9946,8 @@
 
     // $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
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:549:4: ( annotation )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:549:4: annotation
         {
         pushFollow(FOLLOW_annotation_in_synpred120_Java1893);
         annotation();
@@ -9915,22 +9961,22 @@
 
     // $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 ( ';' )?
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:596:6: ( classDeclaration ( ';' )? )
+        // 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 ;
-        // src/main/resources/org/drools/semantics/java/parser/Java.g:598:23: ( ';' )?
-        int alt196=2;
-        int LA196_0 = input.LA(1);
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:596:23: ( ';' )?
+        int alt197=2;
+        int LA197_0 = input.LA(1);
 
-        if ( (LA196_0==25) ) {
-            alt196=1;
+        if ( (LA197_0==25) ) {
+            alt197=1;
         }
-        switch (alt196) {
+        switch (alt197) {
             case 1 :
                 // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: ';'
                 {
@@ -9948,22 +9994,22 @@
 
     // $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 ( ';' )?
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:597:6: ( interfaceDeclaration ( ';' )? )
+        // 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 ;
-        // src/main/resources/org/drools/semantics/java/parser/Java.g:599:27: ( ';' )?
-        int alt197=2;
-        int LA197_0 = input.LA(1);
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:597:27: ( ';' )?
+        int alt198=2;
+        int LA198_0 = input.LA(1);
 
-        if ( (LA197_0==25) ) {
-            alt197=1;
+        if ( (LA198_0==25) ) {
+            alt198=1;
         }
-        switch (alt197) {
+        switch (alt198) {
             case 1 :
                 // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: ';'
                 {
@@ -9981,22 +10027,22 @@
 
     // $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 ( ';' )?
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:598:6: ( enumDeclaration ( ';' )? )
+        // 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 ;
-        // src/main/resources/org/drools/semantics/java/parser/Java.g:600:22: ( ';' )?
-        int alt198=2;
-        int LA198_0 = input.LA(1);
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:598:22: ( ';' )?
+        int alt199=2;
+        int LA199_0 = input.LA(1);
 
-        if ( (LA198_0==25) ) {
-            alt198=1;
+        if ( (LA199_0==25) ) {
+            alt199=1;
         }
-        switch (alt198) {
+        switch (alt199) {
             case 1 :
                 // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: ';'
                 {
@@ -10014,8 +10060,8 @@
 
     // $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
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:632:4: ( localVariableDeclaration )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:632:4: localVariableDeclaration
         {
         pushFollow(FOLLOW_localVariableDeclaration_in_synpred144_Java2286);
         localVariableDeclaration();
@@ -10029,8 +10075,8 @@
 
     // $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
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:633:4: ( classOrInterfaceDeclaration )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:633:4: classOrInterfaceDeclaration
         {
         pushFollow(FOLLOW_classOrInterfaceDeclaration_in_synpred145_Java2291);
         classOrInterfaceDeclaration();
@@ -10044,8 +10090,8 @@
 
     // $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
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:666:52: ( 'else' statement )
+        // 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);
@@ -10060,8 +10106,8 @@
 
     // $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
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:671:9: ( catches 'finally' block )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:671:9: catches 'finally' block
         {
         pushFollow(FOLLOW_catches_in_synpred155_Java2499);
         catches();
@@ -10081,8 +10127,8 @@
 
     // $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
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:672:9: ( catches )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:672:9: catches
         {
         pushFollow(FOLLOW_catches_in_synpred156_Java2513);
         catches();
@@ -10094,46 +10140,46 @@
     }
     // $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 ':'
+    // $ANTLR start synpred178_Java
+    public final void synpred178_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:754:4: ( 'case' constantExpression ':' )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:754:4: 'case' constantExpression ':'
         {
-        match(input,90,FOLLOW_90_in_synpred177_Java2900); if (state.failed) return ;
-        pushFollow(FOLLOW_constantExpression_in_synpred177_Java2902);
+        match(input,91,FOLLOW_91_in_synpred178_Java2957); if (state.failed) return ;
+        pushFollow(FOLLOW_constantExpression_in_synpred178_Java2959);
         constantExpression();
 
         state._fsp--;
         if (state.failed) return ;
-        match(input,74,FOLLOW_74_in_synpred177_Java2904); if (state.failed) return ;
+        match(input,74,FOLLOW_74_in_synpred178_Java2961); if (state.failed) return ;
 
         }
     }
-    // $ANTLR end synpred177_Java
+    // $ANTLR end synpred178_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 ':'
+    // $ANTLR start synpred179_Java
+    public final void synpred179_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:755:6: ( 'case' enumConstantName ':' )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:755:6: 'case' enumConstantName ':'
         {
-        match(input,90,FOLLOW_90_in_synpred178_Java2911); if (state.failed) return ;
-        pushFollow(FOLLOW_enumConstantName_in_synpred178_Java2913);
+        match(input,91,FOLLOW_91_in_synpred179_Java2968); if (state.failed) return ;
+        pushFollow(FOLLOW_enumConstantName_in_synpred179_Java2970);
         enumConstantName();
 
         state._fsp--;
         if (state.failed) return ;
-        match(input,74,FOLLOW_74_in_synpred178_Java2915); if (state.failed) return ;
+        match(input,74,FOLLOW_74_in_synpred179_Java2972); if (state.failed) return ;
 
         }
     }
-    // $ANTLR end synpred178_Java
+    // $ANTLR end synpred179_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
+    // $ANTLR start synpred181_Java
+    public final void synpred181_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:765:4: ( forVarControl )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:765:4: forVarControl
         {
-        pushFollow(FOLLOW_forVarControl_in_synpred180_Java2960);
+        pushFollow(FOLLOW_forVarControl_in_synpred181_Java3017);
         forVarControl();
 
         state._fsp--;
@@ -10141,29 +10187,29 @@
 
         }
     }
-    // $ANTLR end synpred180_Java
+    // $ANTLR end synpred181_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
+    // $ANTLR start synpred186_Java
+    public final void synpred186_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:776:4: ( ( variableModifier )* type variableDeclarators )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:776:4: ( variableModifier )* type variableDeclarators
         {
-        // src/main/resources/org/drools/semantics/java/parser/Java.g:767:4: ( variableModifier )*
-        loop206:
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:776:4: ( variableModifier )*
+        loop207:
         do {
-            int alt206=2;
-            int LA206_0 = input.LA(1);
+            int alt207=2;
+            int LA207_0 = input.LA(1);
 
-            if ( (LA206_0==49||LA206_0==71) ) {
-                alt206=1;
+            if ( (LA207_0==49||LA207_0==71) ) {
+                alt207=1;
             }
 
 
-            switch (alt206) {
+            switch (alt207) {
         	case 1 :
         	    // src/main/resources/org/drools/semantics/java/parser/Java.g:0:0: variableModifier
         	    {
-        	    pushFollow(FOLLOW_variableModifier_in_synpred185_Java3013);
+        	    pushFollow(FOLLOW_variableModifier_in_synpred186_Java3070);
         	    variableModifier();
 
         	    state._fsp--;
@@ -10173,16 +10219,16 @@
         	    break;
 
         	default :
-        	    break loop206;
+        	    break loop207;
             }
         } while (true);
 
-        pushFollow(FOLLOW_type_in_synpred185_Java3016);
+        pushFollow(FOLLOW_type_in_synpred186_Java3073);
         type();
 
         state._fsp--;
         if (state.failed) return ;
-        pushFollow(FOLLOW_variableDeclarators_in_synpred185_Java3018);
+        pushFollow(FOLLOW_variableDeclarators_in_synpred186_Java3075);
         variableDeclarators();
 
         state._fsp--;
@@ -10190,19 +10236,19 @@
 
         }
     }
-    // $ANTLR end synpred185_Java
+    // $ANTLR end synpred186_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
+    // $ANTLR start synpred189_Java
+    public final void synpred189_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:807:27: ( assignmentOperator expression )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:807:27: assignmentOperator expression
         {
-        pushFollow(FOLLOW_assignmentOperator_in_synpred188_Java3137);
+        pushFollow(FOLLOW_assignmentOperator_in_synpred189_Java3194);
         assignmentOperator();
 
         state._fsp--;
         if (state.failed) return ;
-        pushFollow(FOLLOW_expression_in_synpred188_Java3139);
+        pushFollow(FOLLOW_expression_in_synpred189_Java3196);
         expression();
 
         state._fsp--;
@@ -10210,32 +10256,32 @@
 
         }
     }
-    // $ANTLR end synpred188_Java
+    // $ANTLR end synpred189_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: '>' '>' '='
+    // $ANTLR start synpred200_Java
+    public final void synpred200_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:821:9: ( '>' '>' '=' )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:821: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 ;
+        match(input,35,FOLLOW_35_in_synpred200_Java3314); if (state.failed) return ;
+        match(input,35,FOLLOW_35_in_synpred200_Java3316); if (state.failed) return ;
+        match(input,44,FOLLOW_44_in_synpred200_Java3318); if (state.failed) return ;
 
         }
     }
-    // $ANTLR end synpred199_Java
+    // $ANTLR end synpred200_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
+    // $ANTLR start synpred210_Java
+    public final void synpred210_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:858:27: ( relationalOp shiftExpression )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:858:27: relationalOp shiftExpression
         {
-        pushFollow(FOLLOW_relationalOp_in_synpred209_Java3505);
+        pushFollow(FOLLOW_relationalOp_in_synpred210_Java3562);
         relationalOp();
 
         state._fsp--;
         if (state.failed) return ;
-        pushFollow(FOLLOW_shiftExpression_in_synpred209_Java3507);
+        pushFollow(FOLLOW_shiftExpression_in_synpred210_Java3564);
         shiftExpression();
 
         state._fsp--;
@@ -10243,19 +10289,19 @@
 
         }
     }
-    // $ANTLR end synpred209_Java
+    // $ANTLR end synpred210_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
+    // $ANTLR start synpred214_Java
+    public final void synpred214_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:866:30: ( shiftOp additiveExpression )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:866:30: shiftOp additiveExpression
         {
-        pushFollow(FOLLOW_shiftOp_in_synpred213_Java3560);
+        pushFollow(FOLLOW_shiftOp_in_synpred214_Java3617);
         shiftOp();
 
         state._fsp--;
         if (state.failed) return ;
-        pushFollow(FOLLOW_additiveExpression_in_synpred213_Java3562);
+        pushFollow(FOLLOW_additiveExpression_in_synpred214_Java3619);
         additiveExpression();
 
         state._fsp--;
@@ -10263,27 +10309,27 @@
 
         }
     }
-    // $ANTLR end synpred213_Java
+    // $ANTLR end synpred214_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: '>' '>' '>'
+    // $ANTLR start synpred216_Java
+    public final void synpred216_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:871:15: ( '>' '>' '>' )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:871: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 ;
+        match(input,35,FOLLOW_35_in_synpred216_Java3649); if (state.failed) return ;
+        match(input,35,FOLLOW_35_in_synpred216_Java3651); if (state.failed) return ;
+        match(input,35,FOLLOW_35_in_synpred216_Java3653); if (state.failed) return ;
 
         }
     }
-    // $ANTLR end synpred215_Java
+    // $ANTLR end synpred216_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
+    // $ANTLR start synpred228_Java
+    public final void synpred228_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:894:9: ( castExpression )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:894:9: castExpression
         {
-        pushFollow(FOLLOW_castExpression_in_synpred227_Java3777);
+        pushFollow(FOLLOW_castExpression_in_synpred228_Java3834);
         castExpression();
 
         state._fsp--;
@@ -10291,21 +10337,21 @@
 
         }
     }
-    // $ANTLR end synpred227_Java
+    // $ANTLR end synpred228_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
+    // $ANTLR start synpred232_Java
+    public final void synpred232_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:899:8: ( '(' primitiveType ')' unaryExpression )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:899:8: '(' primitiveType ')' unaryExpression
         {
-        match(input,65,FOLLOW_65_in_synpred231_Java3815); if (state.failed) return ;
-        pushFollow(FOLLOW_primitiveType_in_synpred231_Java3817);
+        match(input,65,FOLLOW_65_in_synpred232_Java3872); if (state.failed) return ;
+        pushFollow(FOLLOW_primitiveType_in_synpred232_Java3874);
         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);
+        match(input,66,FOLLOW_66_in_synpred232_Java3876); if (state.failed) return ;
+        pushFollow(FOLLOW_unaryExpression_in_synpred232_Java3878);
         unaryExpression();
 
         state._fsp--;
@@ -10313,14 +10359,14 @@
 
         }
     }
-    // $ANTLR end synpred231_Java
+    // $ANTLR end synpred232_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
+    // $ANTLR start synpred233_Java
+    public final void synpred233_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:900:13: ( type )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:900:13: type
         {
-        pushFollow(FOLLOW_type_in_synpred232_Java3833);
+        pushFollow(FOLLOW_type_in_synpred233_Java3890);
         type();
 
         state._fsp--;
@@ -10328,26 +10374,26 @@
 
         }
     }
-    // $ANTLR end synpred232_Java
+    // $ANTLR end synpred233_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
+    // $ANTLR start synpred237_Java
+    public final void synpred237_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:907:17: ( '.' Identifier )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:907: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 ;
+        match(input,28,FOLLOW_28_in_synpred237_Java3957); if (state.failed) return ;
+        match(input,Identifier,FOLLOW_Identifier_in_synpred237_Java3959); if (state.failed) return ;
 
         }
     }
-    // $ANTLR end synpred236_Java
+    // $ANTLR end synpred237_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
+    // $ANTLR start synpred238_Java
+    public final void synpred238_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:907:35: ( identifierSuffix )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:907:35: identifierSuffix
         {
-        pushFollow(FOLLOW_identifierSuffix_in_synpred237_Java3907);
+        pushFollow(FOLLOW_identifierSuffix_in_synpred238_Java3964);
         identifierSuffix();
 
         state._fsp--;
@@ -10355,26 +10401,26 @@
 
         }
     }
-    // $ANTLR end synpred237_Java
+    // $ANTLR end synpred238_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
+    // $ANTLR start synpred243_Java
+    public final void synpred243_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:911:127: ( '.' Identifier )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:911: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 ;
+        match(input,28,FOLLOW_28_in_synpred243_Java4017); if (state.failed) return ;
+        match(input,Identifier,FOLLOW_Identifier_in_synpred243_Java4019); if (state.failed) return ;
 
         }
     }
-    // $ANTLR end synpred242_Java
+    // $ANTLR end synpred243_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
+    // $ANTLR start synpred244_Java
+    public final void synpred244_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:911:145: ( identifierSuffix )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:911:145: identifierSuffix
         {
-        pushFollow(FOLLOW_identifierSuffix_in_synpred243_Java3967);
+        pushFollow(FOLLOW_identifierSuffix_in_synpred244_Java4024);
         identifierSuffix();
 
         state._fsp--;
@@ -10382,49 +10428,49 @@
 
         }
     }
-    // $ANTLR end synpred243_Java
+    // $ANTLR end synpred244_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 ']'
+    // $ANTLR start synpred250_Java
+    public final void synpred250_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:918:5: ( '[' expression ']' )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:918:5: '[' expression ']'
         {
-        match(input,41,FOLLOW_41_in_synpred249_Java4030); if (state.failed) return ;
-        pushFollow(FOLLOW_expression_in_synpred249_Java4032);
+        match(input,41,FOLLOW_41_in_synpred250_Java4087); if (state.failed) return ;
+        pushFollow(FOLLOW_expression_in_synpred250_Java4089);
         expression();
 
         state._fsp--;
         if (state.failed) return ;
-        match(input,42,FOLLOW_42_in_synpred249_Java4034); if (state.failed) return ;
+        match(input,42,FOLLOW_42_in_synpred250_Java4091); if (state.failed) return ;
 
         }
     }
-    // $ANTLR end synpred249_Java
+    // $ANTLR end synpred250_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 ']'
+    // $ANTLR start synpred266_Java
+    public final void synpred266_Java_fragment() throws RecognitionException {   
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:945:29: ( '[' expression ']' )
+        // src/main/resources/org/drools/semantics/java/parser/Java.g:945:29: '[' expression ']'
         {
-        match(input,41,FOLLOW_41_in_synpred265_Java4254); if (state.failed) return ;
-        pushFollow(FOLLOW_expression_in_synpred265_Java4256);
+        match(input,41,FOLLOW_41_in_synpred266_Java4311); if (state.failed) return ;
+        pushFollow(FOLLOW_expression_in_synpred266_Java4313);
         expression();
 
         state._fsp--;
         if (state.failed) return ;
-        match(input,42,FOLLOW_42_in_synpred265_Java4258); if (state.failed) return ;
+        match(input,42,FOLLOW_42_in_synpred266_Java4315); if (state.failed) return ;
 
         }
     }
-    // $ANTLR end synpred265_Java
+    // $ANTLR end synpred266_Java
 
     // Delegated rules
 
-    public final boolean synpred199_Java() {
+    public final boolean synpred244_Java() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred199_Java_fragment(); // can never throw exception
+            synpred244_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -10448,11 +10494,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred265_Java() {
+    public final boolean synpred210_Java() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred265_Java_fragment(); // can never throw exception
+            synpred210_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -10462,11 +10508,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred227_Java() {
+    public final boolean synpred38_Java() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred227_Java_fragment(); // can never throw exception
+            synpred38_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -10476,11 +10522,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred38_Java() {
+    public final boolean synpred145_Java() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred38_Java_fragment(); // can never throw exception
+            synpred145_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -10490,11 +10536,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred213_Java() {
+    public final boolean synpred181_Java() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred213_Java_fragment(); // can never throw exception
+            synpred181_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -10504,11 +10550,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred249_Java() {
+    public final boolean synpred135_Java() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred249_Java_fragment(); // can never throw exception
+            synpred135_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -10518,11 +10564,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred145_Java() {
+    public final boolean synpred228_Java() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred145_Java_fragment(); // can never throw exception
+            synpred228_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -10532,11 +10578,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred135_Java() {
+    public final boolean synpred266_Java() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred135_Java_fragment(); // can never throw exception
+            synpred266_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -10602,11 +10648,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred236_Java() {
+    public final boolean synpred85_Java() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred236_Java_fragment(); // can never throw exception
+            synpred85_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -10616,11 +10662,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred85_Java() {
+    public final boolean synpred186_Java() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred85_Java_fragment(); // can never throw exception
+            synpred186_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -10630,11 +10676,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred188_Java() {
+    public final boolean synpred216_Java() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred188_Java_fragment(); // can never throw exception
+            synpred216_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -10644,11 +10690,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred185_Java() {
+    public final boolean synpred137_Java() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred185_Java_fragment(); // can never throw exception
+            synpred137_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -10658,11 +10704,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred137_Java() {
+    public final boolean synpred139_Java() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred137_Java_fragment(); // can never throw exception
+            synpred139_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -10672,11 +10718,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred139_Java() {
+    public final boolean synpred179_Java() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred139_Java_fragment(); // can never throw exception
+            synpred179_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -10686,11 +10732,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred215_Java() {
+    public final boolean synpred120_Java() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred215_Java_fragment(); // can never throw exception
+            synpred120_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -10700,11 +10746,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred120_Java() {
+    public final boolean synpred189_Java() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred120_Java_fragment(); // can never throw exception
+            synpred189_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -10714,11 +10760,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred232_Java() {
+    public final boolean synpred214_Java() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred232_Java_fragment(); // can never throw exception
+            synpred214_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -10728,11 +10774,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred180_Java() {
+    public final boolean synpred232_Java() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred180_Java_fragment(); // can never throw exception
+            synpred232_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -10756,11 +10802,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred231_Java() {
+    public final boolean synpred250_Java() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred231_Java_fragment(); // can never throw exception
+            synpred250_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -10770,11 +10816,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred209_Java() {
+    public final boolean synpred243_Java() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred209_Java_fragment(); // can never throw exception
+            synpred243_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -10784,11 +10830,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred243_Java() {
+    public final boolean synpred1_Java() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred243_Java_fragment(); // can never throw exception
+            synpred1_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -10798,11 +10844,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred177_Java() {
+    public final boolean synpred237_Java() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred177_Java_fragment(); // can never throw exception
+            synpred237_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -10812,11 +10858,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred1_Java() {
+    public final boolean synpred200_Java() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred1_Java_fragment(); // can never throw exception
+            synpred200_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -10826,11 +10872,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred242_Java() {
+    public final boolean synpred233_Java() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred242_Java_fragment(); // can never throw exception
+            synpred233_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -10840,11 +10886,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred237_Java() {
+    public final boolean synpred238_Java() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred237_Java_fragment(); // can never throw exception
+            synpred238_Java_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -10899,15 +10945,14 @@
     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 DFA117 dfa117 = new DFA117(this);
     protected DFA120 dfa120 = new DFA120(this);
-    protected DFA125 dfa125 = new DFA125(this);
-    protected DFA122 dfa122 = new DFA122(this);
+    protected DFA121 dfa121 = new DFA121(this);
+    protected DFA126 dfa126 = new DFA126(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 DFA125 dfa125 = new DFA125(this);
+    protected DFA128 dfa128 = new DFA128(this);
     protected DFA131 dfa131 = new DFA131(this);
     protected DFA132 dfa132 = new DFA132(this);
     protected DFA133 dfa133 = new DFA133(this);
@@ -10920,28 +10965,29 @@
     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 DFA143 dfa143 = new DFA143(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 DFA150 dfa150 = new DFA150(this);
     protected DFA148 dfa148 = new DFA148(this);
+    protected DFA149 dfa149 = new DFA149(this);
+    protected DFA152 dfa152 = new DFA152(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 DFA159 dfa159 = new DFA159(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 DFA157 dfa157 = new DFA157(this);
+    protected DFA163 dfa163 = new DFA163(this);
+    protected DFA161 dfa161 = new DFA161(this);
+    protected DFA173 dfa173 = new DFA173(this);
+    protected DFA171 dfa171 = new DFA171(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);
+    protected DFA174 dfa174 = new DFA174(this);
+    protected DFA176 dfa176 = new DFA176(this);
+    protected DFA179 dfa179 = new DFA179(this);
+    protected DFA181 dfa181 = new DFA181(this);
     static final String DFA1_eotS =
         "\27\uffff";
     static final String DFA1_eofS =
@@ -11011,7 +11057,7 @@
             this.transition = DFA1_transition;
         }
         public String getDescription() {
-            return "209:4: ( annotations )?";
+            return "207:4: ( annotations )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -11106,7 +11152,7 @@
             this.transition = DFA2_transition;
         }
         public String getDescription() {
-            return "210:3: ( packageDeclaration )?";
+            return "208:3: ( packageDeclaration )?";
         }
     }
     static final String DFA3_eotS =
@@ -11174,7 +11220,7 @@
             this.transition = DFA3_transition;
         }
         public String getDescription() {
-            return "()* loopback of 211:9: ( importDeclaration )*";
+            return "()* loopback of 209:9: ( importDeclaration )*";
         }
     }
     static final String DFA4_eotS =
@@ -11241,7 +11287,7 @@
             this.transition = DFA4_transition;
         }
         public String getDescription() {
-            return "()* loopback of 212:9: ( typeDeclaration )*";
+            return "()* loopback of 210:9: ( typeDeclaration )*";
         }
     }
     static final String DFA8_eotS =
@@ -11307,7 +11353,7 @@
             this.transition = DFA8_transition;
         }
         public String getDescription() {
-            return "223:1: typeDeclaration : ( classOrInterfaceDeclaration | ';' );";
+            return "221:1: typeDeclaration : ( classOrInterfaceDeclaration | ';' );";
         }
     }
     static final String DFA9_eotS =
@@ -11374,7 +11420,7 @@
             this.transition = DFA9_transition;
         }
         public String getDescription() {
-            return "()* loopback of 229:4: ( modifier )*";
+            return "()* loopback of 227:4: ( modifier )*";
         }
     }
     static final String DFA26_eotS =
@@ -11447,7 +11493,7 @@
             this.transition = DFA26_transition;
         }
         public String getDescription() {
-            return "()* loopback of 273:8: ( classBodyDeclaration )*";
+            return "()* loopback of 271:8: ( classBodyDeclaration )*";
         }
     }
     static final String DFA31_eotS =
@@ -11519,7 +11565,7 @@
             this.transition = DFA31_transition;
         }
         public String getDescription() {
-            return "()* loopback of 290:8: ( classBodyDeclaration )*";
+            return "()* loopback of 288:8: ( classBodyDeclaration )*";
         }
     }
     static final String DFA32_eotS =
@@ -11590,7 +11636,7 @@
             this.transition = DFA32_transition;
         }
         public String getDescription() {
-            return "()* loopback of 294:8: ( interfaceBodyDeclaration )*";
+            return "()* loopback of 292:8: ( interfaceBodyDeclaration )*";
         }
     }
     static final String DFA35_eotS =
@@ -11682,7 +11728,7 @@
             this.transition = DFA35_transition;
         }
         public String getDescription() {
-            return "297:1: classBodyDeclaration : ( ';' | ( 'static' )? block | ( modifier )* memberDecl );";
+            return "295:1: classBodyDeclaration : ( ';' | ( 'static' )? block | ( modifier )* memberDecl );";
         }
     }
     static final String DFA34_eotS =
@@ -11753,7 +11799,7 @@
             this.transition = DFA34_transition;
         }
         public String getDescription() {
-            return "()* loopback of 300:4: ( modifier )*";
+            return "()* loopback of 298:4: ( modifier )*";
         }
     }
     static final String DFA36_eotS =
@@ -11821,7 +11867,7 @@
             this.transition = DFA36_transition;
         }
         public String getDescription() {
-            return "303:1: memberDecl : ( genericMethodOrConstructorDecl | methodDeclaration | fieldDeclaration | 'void' Identifier voidMethodDeclaratorRest | Identifier constructorDeclaratorRest | interfaceDeclaration | classDeclaration );";
+            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;
@@ -11992,7 +12038,7 @@
             this.transition = DFA40_transition;
         }
         public String getDescription() {
-            return "330:1: interfaceBodyDeclaration : ( ( modifier )* interfaceMemberDecl | ';' );";
+            return "328:1: interfaceBodyDeclaration : ( ( modifier )* interfaceMemberDecl | ';' );";
         }
     }
     static final String DFA39_eotS =
@@ -12063,7 +12109,7 @@
             this.transition = DFA39_transition;
         }
         public String getDescription() {
-            return "()* loopback of 331:4: ( modifier )*";
+            return "()* loopback of 329:4: ( modifier )*";
         }
     }
     static final String DFA60_eotS =
@@ -12073,14 +12119,14 @@
     static final String DFA60_minS =
         "\1\4\25\uffff";
     static final String DFA60_maxS =
-        "\1\163\25\uffff";
+        "\1\164\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",
+            "\10\2\1\uffff\2\2\2\uffff\3\2\44\uffff\2\2\2\uffff\6\2",
             "",
             "",
             "",
@@ -12134,7 +12180,7 @@
             this.transition = DFA60_transition;
         }
         public String getDescription() {
-            return "436:1: variableInitializer : ( arrayInitializer | expression );";
+            return "434:1: variableInitializer : ( arrayInitializer | expression );";
         }
     }
     static final String DFA63_eotS =
@@ -12144,14 +12190,14 @@
     static final String DFA63_minS =
         "\1\4\26\uffff";
     static final String DFA63_maxS =
-        "\1\163\26\uffff";
+        "\1\164\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"+
+            "\16\uffff\10\1\1\uffff\2\1\2\uffff\3\1\44\uffff\2\1\2\uffff"+
             "\6\1",
             "",
             "",
@@ -12207,7 +12253,7 @@
             this.transition = DFA63_transition;
         }
         public String getDescription() {
-            return "442:8: ( variableInitializer ( ',' variableInitializer )* ( ',' )? )?";
+            return "440:8: ( variableInitializer ( ',' variableInitializer )* ( ',' )? )?";
         }
     }
     static final String DFA61_eotS =
@@ -12217,7 +12263,7 @@
     static final String DFA61_minS =
         "\1\42\1\4\27\uffff";
     static final String DFA61_maxS =
-        "\1\46\1\163\27\uffff";
+        "\1\46\1\164\27\uffff";
     static final String DFA61_acceptS =
         "\2\uffff\1\2\1\uffff\1\1\24\uffff";
     static final String DFA61_specialS =
@@ -12225,7 +12271,7 @@
     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"+
+            "\16\uffff\10\4\1\uffff\2\4\2\uffff\3\4\44\uffff\2\4\2\uffff"+
             "\6\4",
             "",
             "",
@@ -12282,7 +12328,7 @@
             this.transition = DFA61_transition;
         }
         public String getDescription() {
-            return "()* loopback of 442:29: ( ',' variableInitializer )*";
+            return "()* loopback of 440:29: ( ',' variableInitializer )*";
         }
     }
     static final String DFA64_eotS =
@@ -12344,7 +12390,7 @@
             this.transition = DFA64_transition;
         }
         public String getDescription() {
-            return "445:1: modifier : ( annotation | 'public' | 'protected' | 'private' | 'static' | 'abstract' | 'final' | 'native' | 'synchronized' | 'transient' | 'volatile' | 'strictfp' );";
+            return "443:1: modifier : ( annotation | 'public' | 'protected' | 'private' | 'static' | 'abstract' | 'final' | 'native' | 'synchronized' | 'transient' | 'volatile' | 'strictfp' );";
         }
     }
     static final String DFA67_eotS =
@@ -12354,14 +12400,14 @@
     static final String DFA67_minS =
         "\2\4\42\uffff";
     static final String DFA67_maxS =
-        "\1\150\1\77\42\uffff";
+        "\1\151\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"+
+            "\2\1\uffff\1\2\22\uffff\1\2\2\uffff\2\2\6\uffff\1\2\21\uffff"+
             "\16\2",
             "\1\41\34\uffff\1\2\25\uffff\11\41",
             "",
@@ -12430,7 +12476,7 @@
             this.transition = DFA67_transition;
         }
         public String getDescription() {
-            return "474:15: ( typeArguments )?";
+            return "472:15: ( typeArguments )?";
         }
     }
     static final String DFA69_eotS =
@@ -12440,14 +12486,14 @@
     static final String DFA69_minS =
         "\1\4\37\uffff";
     static final String DFA69_maxS =
-        "\1\150\37\uffff";
+        "\1\151\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",
+            "\1\1\22\uffff\1\1\2\uffff\2\1\6\uffff\1\1\21\uffff\16\1",
             "",
             "",
             "",
@@ -12511,7 +12557,7 @@
             this.transition = DFA69_transition;
         }
         public String getDescription() {
-            return "()* loopback of 474:32: ( '.' Identifier ( typeArguments )? )*";
+            return "()* loopback of 472:32: ( '.' Identifier ( typeArguments )? )*";
         }
     }
     static final String DFA68_eotS =
@@ -12521,14 +12567,14 @@
     static final String DFA68_minS =
         "\2\4\42\uffff";
     static final String DFA68_maxS =
-        "\1\150\1\77\42\uffff";
+        "\1\151\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"+
+            "\2\1\uffff\1\2\22\uffff\1\2\2\uffff\2\2\6\uffff\1\2\21\uffff"+
             "\16\2",
             "\1\41\34\uffff\1\2\25\uffff\11\41",
             "",
@@ -12597,7 +12643,7 @@
             this.transition = DFA68_transition;
         }
         public String getDescription() {
-            return "474:48: ( typeArguments )?";
+            return "472:48: ( typeArguments )?";
         }
     }
     static final String DFA70_eotS =
@@ -12607,14 +12653,14 @@
     static final String DFA70_minS =
         "\1\4\36\uffff";
     static final String DFA70_maxS =
-        "\1\150\36\uffff";
+        "\1\151\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",
+            "\22\uffff\1\1\2\uffff\2\1\6\uffff\1\1\21\uffff\16\1",
             "",
             "",
             "",
@@ -12677,7 +12723,7 @@
             this.transition = DFA70_transition;
         }
         public String getDescription() {
-            return "()* loopback of 474:68: ( '[' ']' )*";
+            return "()* loopback of 472:68: ( '[' ']' )*";
         }
     }
     static final String DFA71_eotS =
@@ -12687,14 +12733,14 @@
     static final String DFA71_minS =
         "\1\4\36\uffff";
     static final String DFA71_maxS =
-        "\1\150\36\uffff";
+        "\1\151\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",
+            "\22\uffff\1\1\2\uffff\2\1\6\uffff\1\1\21\uffff\16\1",
             "",
             "",
             "",
@@ -12757,7 +12803,7 @@
             this.transition = DFA71_transition;
         }
         public String getDescription() {
-            return "()* loopback of 475:18: ( '[' ']' )*";
+            return "()* loopback of 473:18: ( '[' ']' )*";
         }
     }
     static final String DFA85_eotS =
@@ -12830,7 +12876,7 @@
             this.transition = DFA85_transition;
         }
         public String getDescription() {
-            return "()+ loopback of 551:4: ( annotation )+";
+            return "()+ loopback of 549:4: ( annotation )+";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -12933,7 +12979,7 @@
             this.transition = DFA87_transition;
         }
         public String getDescription() {
-            return "555:23: ( '(' ( elementValuePairs )? ')' )?";
+            return "553:23: ( '(' ( elementValuePairs )? ')' )?";
         }
     }
     static final String DFA86_eotS =
@@ -12943,14 +12989,14 @@
     static final String DFA86_minS =
         "\1\4\27\uffff";
     static final String DFA86_maxS =
-        "\1\163\27\uffff";
+        "\1\164\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",
+            "\10\1\1\uffff\2\1\1\27\1\uffff\4\1\43\uffff\2\1\2\uffff\6\1",
             "",
             "",
             "",
@@ -13006,7 +13052,7 @@
             this.transition = DFA86_transition;
         }
         public String getDescription() {
-            return "555:28: ( elementValuePairs )?";
+            return "553:28: ( elementValuePairs )?";
         }
     }
     static final String DFA88_eotS =
@@ -13084,7 +13130,7 @@
             this.transition = DFA88_transition;
         }
         public String getDescription() {
-            return "()* loopback of 559:15: ( '.' Identifier )*";
+            return "()* loopback of 557:15: ( '.' Identifier )*";
         }
     }
     static final String DFA90_eotS =
@@ -13094,16 +13140,16 @@
     static final String DFA90_minS =
         "\1\4\1\34\51\uffff";
     static final String DFA90_maxS =
-        "\1\163\1\157\51\uffff";
+        "\1\164\1\160\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",
+            "\10\2\1\uffff\2\2\2\uffff\4\2\43\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",
+            "\2\2\41\uffff\15\2",
             "",
             "",
             "",
@@ -13177,7 +13223,7 @@
             this.transition = DFA90_transition;
         }
         public String getDescription() {
-            return "567:4: ( Identifier '=' )?";
+            return "565:4: ( Identifier '=' )?";
         }
     }
     static final String DFA91_eotS =
@@ -13187,14 +13233,14 @@
     static final String DFA91_minS =
         "\1\4\26\uffff";
     static final String DFA91_maxS =
-        "\1\163\26\uffff";
+        "\1\164\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",
+            "\10\1\1\uffff\2\1\2\uffff\3\1\1\25\43\uffff\2\1\2\uffff\6\1",
             "",
             "",
             "",
@@ -13249,7 +13295,7 @@
             this.transition = DFA91_transition;
         }
         public String getDescription() {
-            return "570:1: elementValue : ( conditionalExpression | annotation | elementValueArrayInitializer );";
+            return "568:1: elementValue : ( conditionalExpression | annotation | elementValueArrayInitializer );";
         }
     }
     static final String DFA93_eotS =
@@ -13259,14 +13305,14 @@
     static final String DFA93_minS =
         "\1\4\27\uffff";
     static final String DFA93_maxS =
-        "\1\163\27\uffff";
+        "\1\164\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"+
+            "\16\uffff\10\1\1\uffff\2\1\2\uffff\4\1\43\uffff\2\1\2\uffff"+
             "\6\1",
             "",
             "",
@@ -13323,7 +13369,7 @@
             this.transition = DFA93_transition;
         }
         public String getDescription() {
-            return "577:8: ( elementValue ( ',' elementValue )* )?";
+            return "575:8: ( elementValue ( ',' elementValue )* )?";
         }
     }
     static final String DFA94_eotS =
@@ -13391,7 +13437,7 @@
             this.transition = DFA94_transition;
         }
         public String getDescription() {
-            return "585:8: ( annotationTypeElementDeclarations )?";
+            return "583:8: ( annotationTypeElementDeclarations )?";
         }
     }
     static final String DFA95_eotS =
@@ -13460,7 +13506,7 @@
             this.transition = DFA95_transition;
         }
         public String getDescription() {
-            return "()* loopback of 589:39: ( annotationTypeElementDeclaration )*";
+            return "()* loopback of 587:39: ( annotationTypeElementDeclaration )*";
         }
     }
     static final String DFA96_eotS =
@@ -13529,7 +13575,7 @@
             this.transition = DFA96_transition;
         }
         public String getDescription() {
-            return "()* loopback of 593:4: ( modifier )*";
+            return "()* loopback of 591:4: ( modifier )*";
         }
     }
     static final String DFA101_eotS =
@@ -13589,7 +13635,7 @@
             this.transition = DFA101_transition;
         }
         public String getDescription() {
-            return "596:1: annotationTypeElementRest : ( type annotationMethodOrConstantRest ';' | classDeclaration ( ';' )? | interfaceDeclaration ( ';' )? | enumDeclaration ( ';' )? | annotationTypeDeclaration ( ';' )? );";
+            return "594:1: annotationTypeElementRest : ( type annotationMethodOrConstantRest ';' | classDeclaration ( ';' )? | interfaceDeclaration ( ';' )? | enumDeclaration ( ';' )? | annotationTypeDeclaration ( ';' )? );";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -13700,7 +13746,7 @@
             this.transition = DFA97_transition;
         }
         public String getDescription() {
-            return "598:23: ( ';' )?";
+            return "596:23: ( ';' )?";
         }
     }
     static final String DFA98_eotS =
@@ -13770,7 +13816,7 @@
             this.transition = DFA98_transition;
         }
         public String getDescription() {
-            return "599:27: ( ';' )?";
+            return "597:27: ( ';' )?";
         }
     }
     static final String DFA99_eotS =
@@ -13840,7 +13886,7 @@
             this.transition = DFA99_transition;
         }
         public String getDescription() {
-            return "600:22: ( ';' )?";
+            return "598:22: ( ';' )?";
         }
     }
     static final String DFA100_eotS =
@@ -13910,25 +13956,25 @@
             this.transition = DFA100_transition;
         }
         public String getDescription() {
-            return "601:32: ( ';' )?";
+            return "599:32: ( ';' )?";
         }
     }
     static final String DFA104_eotS =
-        "\64\uffff";
+        "\65\uffff";
     static final String DFA104_eofS =
-        "\64\uffff";
+        "\65\uffff";
     static final String DFA104_minS =
-        "\1\4\63\uffff";
+        "\1\4\64\uffff";
     static final String DFA104_maxS =
-        "\1\163\63\uffff";
+        "\1\164\64\uffff";
     static final String DFA104_acceptS =
-        "\1\uffff\1\2\1\1\61\uffff";
+        "\1\uffff\1\2\1\1\62\uffff";
     static final String DFA104_specialS =
-        "\64\uffff}>";
+        "\65\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"+
+            "\2\1\uffff\1\2\1\uffff\4\2\1\uffff\10\2\21\uffff\2\2\2\uffff"+
             "\6\2",
             "",
             "",
@@ -13980,6 +14026,7 @@
             "",
             "",
             "",
+            "",
             ""
     };
 
@@ -14013,36 +14060,36 @@
             this.transition = DFA104_transition;
         }
         public String getDescription() {
-            return "()* loopback of 630:8: ( blockStatement )*";
+            return "()* loopback of 628:8: ( blockStatement )*";
         }
     }
     static final String DFA105_eotS =
-        "\165\uffff";
+        "\166\uffff";
     static final String DFA105_eofS =
-        "\165\uffff";
+        "\166\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";
+        "\5\4\6\uffff\1\5\52\uffff\2\0\16\uffff\1\0\1\uffff\3\0\30\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";
+        "\1\164\1\107\1\47\1\160\1\51\6\uffff\1\107\52\uffff\2\0\16\uffff"+
+        "\1\0\1\uffff\3\0\30\uffff\1\0\22\uffff";
     static final String DFA105_acceptS =
-        "\5\uffff\1\2\14\uffff\1\3\57\uffff\1\1\62\uffff";
+        "\5\uffff\1\2\14\uffff\1\3\41\uffff\1\1\101\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}>";
+        "\66\uffff\1\0\1\1\16\uffff\1\2\1\uffff\1\3\1\4\1\5\30\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\22\1\uffff\4\22\1\uffff\10\22\21\uffff\2\22\2\uffff\6\22",
+            "\1\64\1\5\25\uffff\1\5\2\uffff\1\5\10\uffff\1\5\5\uffff\4"+
+            "\5\1\66\5\5\10\64\10\uffff\1\67",
+            "\1\106\42\uffff\1\5",
+            "\1\64\24\uffff\1\22\2\uffff\1\111\1\22\3\uffff\1\110\1\uffff"+
+            "\2\22\4\uffff\1\112\2\uffff\1\22\22\uffff\1\22\1\uffff\1\22"+
+            "\10\uffff\1\22\21\uffff\25\22",
+            "\1\64\27\uffff\1\22\14\uffff\1\143",
             "",
             "",
             "",
@@ -14094,12 +14141,12 @@
             "",
             "",
             "\1\uffff",
+            "\1\uffff",
             "",
             "",
             "",
             "",
             "",
-            "\1\uffff",
             "",
             "",
             "",
@@ -14108,15 +14155,16 @@
             "",
             "",
             "",
+            "",
             "\1\uffff",
             "",
             "\1\uffff",
             "\1\uffff",
+            "\1\uffff",
             "",
             "",
             "",
             "",
-            "\1\uffff",
             "",
             "",
             "",
@@ -14188,7 +14236,7 @@
             this.transition = DFA105_transition;
         }
         public String getDescription() {
-            return "633:1: blockStatement : ( localVariableDeclaration | classOrInterfaceDeclaration | statement );";
+            return "631:1: blockStatement : ( localVariableDeclaration | classOrInterfaceDeclaration | statement );";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -14201,7 +14249,7 @@
                         int index105_54 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred144_Java()) ) {s = 66;}
+                        if ( (synpred144_Java()) ) {s = 52;}
 
                         else if ( (synpred145_Java()) ) {s = 5;}
 
@@ -14210,93 +14258,93 @@
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA105_60 = input.LA(1);
+                        int LA105_55 = input.LA(1);
 
                          
-                        int index105_60 = input.index();
+                        int index105_55 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred144_Java()) ) {s = 66;}
+                        if ( (synpred144_Java()) ) {s = 52;}
 
                         else if ( (synpred145_Java()) ) {s = 5;}
 
                          
-                        input.seek(index105_60);
+                        input.seek(index105_55);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA105_69 = input.LA(1);
+                        int LA105_70 = input.LA(1);
 
                          
-                        int index105_69 = input.index();
+                        int index105_70 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred144_Java()) ) {s = 66;}
+                        if ( (synpred144_Java()) ) {s = 52;}
 
                         else if ( (synpred145_Java()) ) {s = 5;}
 
                          
-                        input.seek(index105_69);
+                        input.seek(index105_70);
                         if ( s>=0 ) return s;
                         break;
                     case 3 : 
-                        int LA105_71 = input.LA(1);
+                        int LA105_72 = input.LA(1);
 
                          
-                        int index105_71 = input.index();
+                        int index105_72 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred144_Java()) ) {s = 66;}
+                        if ( (synpred144_Java()) ) {s = 52;}
 
                         else if ( (true) ) {s = 18;}
 
                          
-                        input.seek(index105_71);
+                        input.seek(index105_72);
                         if ( s>=0 ) return s;
                         break;
                     case 4 : 
-                        int LA105_72 = input.LA(1);
+                        int LA105_73 = input.LA(1);
 
                          
-                        int index105_72 = input.index();
+                        int index105_73 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred144_Java()) ) {s = 66;}
+                        if ( (synpred144_Java()) ) {s = 52;}
 
                         else if ( (true) ) {s = 18;}
 
                          
-                        input.seek(index105_72);
+                        input.seek(index105_73);
                         if ( s>=0 ) return s;
                         break;
                     case 5 : 
-                        int LA105_77 = input.LA(1);
+                        int LA105_74 = input.LA(1);
 
                          
-                        int index105_77 = input.index();
+                        int index105_74 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred144_Java()) ) {s = 66;}
+                        if ( (synpred144_Java()) ) {s = 52;}
 
                         else if ( (true) ) {s = 18;}
 
                          
-                        input.seek(index105_77);
+                        input.seek(index105_74);
                         if ( s>=0 ) return s;
                         break;
                     case 6 : 
-                        int LA105_98 = input.LA(1);
+                        int LA105_99 = input.LA(1);
 
                          
-                        int index105_98 = input.index();
+                        int index105_99 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred144_Java()) ) {s = 66;}
+                        if ( (synpred144_Java()) ) {s = 52;}
 
                         else if ( (true) ) {s = 18;}
 
                          
-                        input.seek(index105_98);
+                        input.seek(index105_99);
                         if ( s>=0 ) return s;
                         break;
             }
@@ -14308,24 +14356,24 @@
         }
     }
     static final String DFA113_eotS =
-        "\100\uffff";
+        "\101\uffff";
     static final String DFA113_eofS =
-        "\100\uffff";
+        "\101\uffff";
     static final String DFA113_minS =
-        "\1\4\41\uffff\1\31\35\uffff";
+        "\1\4\42\uffff\1\31\35\uffff";
     static final String DFA113_maxS =
-        "\1\163\41\uffff\1\157\35\uffff";
+        "\1\164\42\uffff\1\160\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";
+        "\15\1\16\1\17\1\uffff\1\20\1\21\23\uffff\1\22\32\uffff";
     static final String DFA113_specialS =
-        "\100\uffff}>";
+        "\101\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\43\1\uffff\6\22\15\uffff\1\21\7\uffff\1\22\3\uffff\1\1\2"+
+            "\uffff\1\22\12\uffff\1\11\3\uffff\10\22\1\uffff\2\22\2\uffff"+
+            "\3\22\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\2\17\21\uffff\2\22\2\uffff\6"+
+            "\22",
             "",
             "",
             "",
@@ -14359,10 +14407,10 @@
             "",
             "",
             "",
-            "\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",
             "",
+            "\1\22\2\uffff\2\22\3\uffff\1\22\1\uffff\2\22\4\uffff\1\22"+
+            "\2\uffff\1\22\22\uffff\1\22\1\uffff\1\22\10\uffff\1\46\21\uffff"+
+            "\25\22",
             "",
             "",
             "",
@@ -14390,6 +14438,7 @@
             "",
             "",
             "",
+            "",
             ""
     };
 
@@ -14423,7 +14472,7 @@
             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 );";
+            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 | exitPointsStatement | ';' | statementExpression ';' | Identifier ':' statement );";
         }
     }
     static final String DFA110_eotS =
@@ -14433,14 +14482,14 @@
     static final String DFA110_minS =
         "\1\4\25\uffff";
     static final String DFA110_maxS =
-        "\1\163\25\uffff";
+        "\1\164\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",
+            "\10\1\1\uffff\2\1\2\uffff\3\1\44\uffff\2\1\2\uffff\6\1",
             "",
             "",
             "",
@@ -14494,7 +14543,7 @@
             this.transition = DFA110_transition;
         }
         public String getDescription() {
-            return "679:16: ( expression )?";
+            return "677:16: ( expression )?";
         }
     }
     static final String DFA115_eotS =
@@ -14504,14 +14553,14 @@
     static final String DFA115_minS =
         "\1\4\25\uffff";
     static final String DFA115_maxS =
-        "\1\163\25\uffff";
+        "\1\164\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",
+            "\10\1\1\uffff\2\1\2\uffff\3\1\44\uffff\2\1\2\uffff\6\1",
             "",
             "",
             "",
@@ -14565,24 +14614,24 @@
             this.transition = DFA115_transition;
         }
         public String getDescription() {
-            return "702:6: (e= expression ( ',' e= expression )* )?";
+            return "700: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 = {
+    static final String DFA117_eotS =
+        "\73\uffff";
+    static final String DFA117_eofS =
+        "\1\1\72\uffff";
+    static final String DFA117_minS =
+        "\1\4\72\uffff";
+    static final String DFA117_maxS =
+        "\1\164\72\uffff";
+    static final String DFA117_acceptS =
+        "\1\uffff\1\2\70\uffff\1\1";
+    static final String DFA117_specialS =
+        "\73\uffff}>";
+    static final String[] DFA117_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"+
+            "\4\1\4\uffff\22\1\1\uffff\2\1\2\uffff\6\1\1\uffff\17\1\1\72"+
             "\1\1\17\uffff\2\1\2\uffff\6\1",
             "",
             "",
@@ -14640,58 +14689,59 @@
             "",
             "",
             "",
+            "",
             ""
     };
 
-    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 final short[] DFA117_eot = DFA.unpackEncodedString(DFA117_eotS);
+    static final short[] DFA117_eof = DFA.unpackEncodedString(DFA117_eofS);
+    static final char[] DFA117_min = DFA.unpackEncodedStringToUnsignedChars(DFA117_minS);
+    static final char[] DFA117_max = DFA.unpackEncodedStringToUnsignedChars(DFA117_maxS);
+    static final short[] DFA117_accept = DFA.unpackEncodedString(DFA117_acceptS);
+    static final short[] DFA117_special = DFA.unpackEncodedString(DFA117_specialS);
+    static final short[][] DFA117_transition;
 
     static {
-        int numStates = DFA116_transitionS.length;
-        DFA116_transition = new short[numStates][];
+        int numStates = DFA117_transitionS.length;
+        DFA117_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA116_transition[i] = DFA.unpackEncodedString(DFA116_transitionS[i]);
+            DFA117_transition[i] = DFA.unpackEncodedString(DFA117_transitionS[i]);
         }
     }
 
-    class DFA116 extends DFA {
+    class DFA117 extends DFA {
 
-        public DFA116(BaseRecognizer recognizer) {
+        public DFA117(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;
+            this.decisionNumber = 117;
+            this.eot = DFA117_eot;
+            this.eof = DFA117_eof;
+            this.min = DFA117_min;
+            this.max = DFA117_max;
+            this.accept = DFA117_accept;
+            this.special = DFA117_special;
+            this.transition = DFA117_transition;
         }
         public String getDescription() {
-            return "()* loopback of 725:16: ( catchClause )*";
+            return "()* loopback of 734: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 = {
+    static final String DFA120_eotS =
+        "\70\uffff";
+    static final String DFA120_eofS =
+        "\1\1\67\uffff";
+    static final String DFA120_minS =
+        "\1\4\67\uffff";
+    static final String DFA120_maxS =
+        "\1\164\67\uffff";
+    static final String DFA120_acceptS =
+        "\1\uffff\1\2\3\uffff\1\1\62\uffff";
+    static final String DFA120_specialS =
+        "\70\uffff}>";
+    static final String[] DFA120_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"+
+            "\uffff\1\5\1\uffff\4\5\1\uffff\10\5\1\uffff\1\1\17\uffff\2\5"+
             "\2\uffff\6\5",
             "",
             "",
@@ -14746,58 +14796,59 @@
             "",
             "",
             "",
+            "",
             ""
     };
 
-    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 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 = DFA119_transitionS.length;
-        DFA119_transition = new short[numStates][];
+        int numStates = DFA120_transitionS.length;
+        DFA120_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA119_transition[i] = DFA.unpackEncodedString(DFA119_transitionS[i]);
+            DFA120_transition[i] = DFA.unpackEncodedString(DFA120_transitionS[i]);
         }
     }
 
-    class DFA119 extends DFA {
+    class DFA120 extends DFA {
 
-        public DFA119(BaseRecognizer recognizer) {
+        public DFA120(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;
+            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 "()* loopback of 741:16: ( blockStatement )*";
+            return "()* loopback of 750:16: ( blockStatement )*";
         }
     }
-    static final String DFA120_eotS =
+    static final String DFA121_eotS =
         "\30\uffff";
-    static final String DFA120_eofS =
+    static final String DFA121_eofS =
         "\30\uffff";
-    static final String DFA120_minS =
+    static final String DFA121_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 =
+    static final String DFA121_maxS =
+        "\1\133\1\164\22\uffff\1\0\3\uffff";
+    static final String DFA121_acceptS =
         "\2\uffff\1\3\1\1\23\uffff\1\2";
-    static final String DFA120_specialS =
+    static final String DFA121_specialS =
         "\24\uffff\1\0\3\uffff}>";
-    static final String[] DFA120_transitionS = {
-            "\1\2\21\uffff\1\1",
+    static final String[] DFA121_transitionS = {
+            "\1\2\22\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",
+            "\uffff\2\3\2\uffff\3\3\44\uffff\2\3\2\uffff\6\3",
             "",
             "",
             "",
@@ -14822,91 +14873,91 @@
             ""
     };
 
-    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 final short[] DFA121_eot = DFA.unpackEncodedString(DFA121_eotS);
+    static final short[] DFA121_eof = DFA.unpackEncodedString(DFA121_eofS);
+    static final char[] DFA121_min = DFA.unpackEncodedStringToUnsignedChars(DFA121_minS);
+    static final char[] DFA121_max = DFA.unpackEncodedStringToUnsignedChars(DFA121_maxS);
+    static final short[] DFA121_accept = DFA.unpackEncodedString(DFA121_acceptS);
+    static final short[] DFA121_special = DFA.unpackEncodedString(DFA121_specialS);
+    static final short[][] DFA121_transition;
 
     static {
-        int numStates = DFA120_transitionS.length;
-        DFA120_transition = new short[numStates][];
+        int numStates = DFA121_transitionS.length;
+        DFA121_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA120_transition[i] = DFA.unpackEncodedString(DFA120_transitionS[i]);
+            DFA121_transition[i] = DFA.unpackEncodedString(DFA121_transitionS[i]);
         }
     }
 
-    class DFA120 extends DFA {
+    class DFA121 extends DFA {
 
-        public DFA120(BaseRecognizer recognizer) {
+        public DFA121(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;
+            this.decisionNumber = 121;
+            this.eot = DFA121_eot;
+            this.eof = DFA121_eof;
+            this.min = DFA121_min;
+            this.max = DFA121_max;
+            this.accept = DFA121_accept;
+            this.special = DFA121_special;
+            this.transition = DFA121_transition;
         }
         public String getDescription() {
-            return "744:1: switchLabel : ( 'case' constantExpression ':' | 'case' enumConstantName ':' | 'default' ':' );";
+            return "753: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 LA121_20 = input.LA(1);
 
                          
-                        int index120_20 = input.index();
+                        int index121_20 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred177_Java()) ) {s = 3;}
+                        if ( (synpred178_Java()) ) {s = 3;}
 
-                        else if ( (synpred178_Java()) ) {s = 23;}
+                        else if ( (synpred179_Java()) ) {s = 23;}
 
                          
-                        input.seek(index120_20);
+                        input.seek(index121_20);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 120, _s, input);
+                new NoViableAltException(getDescription(), 121, _s, input);
             error(nvae);
             throw nvae;
         }
     }
-    static final String DFA125_eotS =
+    static final String DFA126_eotS =
         "\u0089\uffff";
-    static final String DFA125_eofS =
+    static final String DFA126_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 =
+    static final String DFA126_minS =
+        "\5\4\23\uffff\10\4\1\31\30\uffff\1\52\1\uffff\1\31\21\0\22\uffff"+
+        "\2\0\1\uffff\2\0\5\uffff\1\0\31\uffff\1\0\5\uffff";
+    static final String DFA126_maxS =
+        "\1\164\1\107\1\4\1\160\1\51\23\uffff\2\51\1\107\1\4\1\107\3\164"+
+        "\1\112\30\uffff\1\52\1\uffff\1\112\21\0\22\uffff\2\0\1\uffff\2\0"+
+        "\5\uffff\1\0\31\uffff\1\0\5\uffff";
+    static final String DFA126_acceptS =
         "\5\uffff\1\2\170\uffff\1\1\12\uffff";
-    static final String DFA125_specialS =
+    static final String DFA126_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 = {
+        "\14\1\15\1\16\1\17\1\20\22\uffff\1\21\1\22\1\uffff\1\23\1\24\5\uffff"+
+        "\1\25\31\uffff\1\26\5\uffff}>";
+    static final String[] DFA126_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"+
+            "\1\1\5\uffff\10\4\1\uffff\2\5\2\uffff\3\5\1\2\43\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\40\24\uffff\1\5\2\uffff\1\36\1\5\3\uffff\1\35\3\5\4\uffff"+
+            "\1\37\2\uffff\1\5\22\uffff\1\5\1\uffff\1\5\32\uffff\25\5",
+            "\1\73\27\uffff\1\5\14\uffff\1\71",
             "",
             "",
             "",
@@ -14932,15 +14983,16 @@
             "\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\137\1\uffff\6\5\25\uffff\1\5\6\uffff\1\5\3\uffff\1\5\12"+
+            "\uffff\10\140\1\142\2\5\2\uffff\3\5\44\uffff\2\5\2\uffff\6\5",
+            "\1\143\31\uffff\1\5\2\uffff\1\5\36\uffff\1\5\62\uffff\2\5",
+            "\1\5\1\uffff\6\5\25\uffff\1\5\6\uffff\1\5\1\uffff\1\151\14"+
+            "\uffff\10\5\1\uffff\2\5\2\uffff\3\5\44\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\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",
             "",
             "",
             "",
@@ -14961,10 +15013,9 @@
             "",
             "",
             "",
-            "\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",
@@ -14982,13 +15033,11 @@
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
-            "\1\uffff",
             "",
             "",
             "",
             "",
             "",
-            "\1\uffff",
             "",
             "",
             "",
@@ -15002,18 +15051,20 @@
             "",
             "",
             "",
+            "\1\uffff",
+            "\1\uffff",
             "",
+            "\1\uffff",
+            "\1\uffff",
             "",
             "",
             "",
             "",
             "",
+            "\1\uffff",
             "",
             "",
             "",
-            "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
             "",
             "",
             "",
@@ -15044,410 +15095,410 @@
             ""
     };
 
-    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 final short[] DFA126_eot = DFA.unpackEncodedString(DFA126_eotS);
+    static final short[] DFA126_eof = DFA.unpackEncodedString(DFA126_eofS);
+    static final char[] DFA126_min = DFA.unpackEncodedStringToUnsignedChars(DFA126_minS);
+    static final char[] DFA126_max = DFA.unpackEncodedStringToUnsignedChars(DFA126_maxS);
+    static final short[] DFA126_accept = DFA.unpackEncodedString(DFA126_acceptS);
+    static final short[] DFA126_special = DFA.unpackEncodedString(DFA126_specialS);
+    static final short[][] DFA126_transition;
 
     static {
-        int numStates = DFA125_transitionS.length;
-        DFA125_transition = new short[numStates][];
+        int numStates = DFA126_transitionS.length;
+        DFA126_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA125_transition[i] = DFA.unpackEncodedString(DFA125_transitionS[i]);
+            DFA126_transition[i] = DFA.unpackEncodedString(DFA126_transitionS[i]);
         }
     }
 
-    class DFA125 extends DFA {
+    class DFA126 extends DFA {
 
-        public DFA125(BaseRecognizer recognizer) {
+        public DFA126(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;
+            this.decisionNumber = 126;
+            this.eot = DFA126_eot;
+            this.eof = DFA126_eof;
+            this.min = DFA126_min;
+            this.max = DFA126_max;
+            this.accept = DFA126_accept;
+            this.special = DFA126_special;
+            this.transition = DFA126_transition;
         }
         public String getDescription() {
-            return "754:1: forControl options {k=3; } : ( forVarControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );";
+            return "763: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 LA126_60 = input.LA(1);
 
                          
-                        int index125_60 = input.index();
+                        int index126_60 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred180_Java()) ) {s = 126;}
+                        if ( (synpred181_Java()) ) {s = 126;}
 
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index125_60);
+                        input.seek(index126_60);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA125_61 = input.LA(1);
+                        int LA126_61 = input.LA(1);
 
                          
-                        int index125_61 = input.index();
+                        int index126_61 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred180_Java()) ) {s = 126;}
+                        if ( (synpred181_Java()) ) {s = 126;}
 
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index125_61);
+                        input.seek(index126_61);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA125_62 = input.LA(1);
+                        int LA126_62 = input.LA(1);
 
                          
-                        int index125_62 = input.index();
+                        int index126_62 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred180_Java()) ) {s = 126;}
+                        if ( (synpred181_Java()) ) {s = 126;}
 
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index125_62);
+                        input.seek(index126_62);
                         if ( s>=0 ) return s;
                         break;
                     case 3 : 
-                        int LA125_63 = input.LA(1);
+                        int LA126_63 = input.LA(1);
 
                          
-                        int index125_63 = input.index();
+                        int index126_63 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred180_Java()) ) {s = 126;}
+                        if ( (synpred181_Java()) ) {s = 126;}
 
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index125_63);
+                        input.seek(index126_63);
                         if ( s>=0 ) return s;
                         break;
                     case 4 : 
-                        int LA125_64 = input.LA(1);
+                        int LA126_64 = input.LA(1);
 
                          
-                        int index125_64 = input.index();
+                        int index126_64 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred180_Java()) ) {s = 126;}
+                        if ( (synpred181_Java()) ) {s = 126;}
 
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index125_64);
+                        input.seek(index126_64);
                         if ( s>=0 ) return s;
                         break;
                     case 5 : 
-                        int LA125_65 = input.LA(1);
+                        int LA126_65 = input.LA(1);
 
                          
-                        int index125_65 = input.index();
+                        int index126_65 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred180_Java()) ) {s = 126;}
+                        if ( (synpred181_Java()) ) {s = 126;}
 
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index125_65);
+                        input.seek(index126_65);
                         if ( s>=0 ) return s;
                         break;
                     case 6 : 
-                        int LA125_66 = input.LA(1);
+                        int LA126_66 = input.LA(1);
 
                          
-                        int index125_66 = input.index();
+                        int index126_66 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred180_Java()) ) {s = 126;}
+                        if ( (synpred181_Java()) ) {s = 126;}
 
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index125_66);
+                        input.seek(index126_66);
                         if ( s>=0 ) return s;
                         break;
                     case 7 : 
-                        int LA125_67 = input.LA(1);
+                        int LA126_67 = input.LA(1);
 
                          
-                        int index125_67 = input.index();
+                        int index126_67 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred180_Java()) ) {s = 126;}
+                        if ( (synpred181_Java()) ) {s = 126;}
 
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index125_67);
+                        input.seek(index126_67);
                         if ( s>=0 ) return s;
                         break;
                     case 8 : 
-                        int LA125_68 = input.LA(1);
+                        int LA126_68 = input.LA(1);
 
                          
-                        int index125_68 = input.index();
+                        int index126_68 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred180_Java()) ) {s = 126;}
+                        if ( (synpred181_Java()) ) {s = 126;}
 
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index125_68);
+                        input.seek(index126_68);
                         if ( s>=0 ) return s;
                         break;
                     case 9 : 
-                        int LA125_69 = input.LA(1);
+                        int LA126_69 = input.LA(1);
 
                          
-                        int index125_69 = input.index();
+                        int index126_69 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred180_Java()) ) {s = 126;}
+                        if ( (synpred181_Java()) ) {s = 126;}
 
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index125_69);
+                        input.seek(index126_69);
                         if ( s>=0 ) return s;
                         break;
                     case 10 : 
-                        int LA125_70 = input.LA(1);
+                        int LA126_70 = input.LA(1);
 
                          
-                        int index125_70 = input.index();
+                        int index126_70 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred180_Java()) ) {s = 126;}
+                        if ( (synpred181_Java()) ) {s = 126;}
 
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index125_70);
+                        input.seek(index126_70);
                         if ( s>=0 ) return s;
                         break;
                     case 11 : 
-                        int LA125_71 = input.LA(1);
+                        int LA126_71 = input.LA(1);
 
                          
-                        int index125_71 = input.index();
+                        int index126_71 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred180_Java()) ) {s = 126;}
+                        if ( (synpred181_Java()) ) {s = 126;}
 
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index125_71);
+                        input.seek(index126_71);
                         if ( s>=0 ) return s;
                         break;
                     case 12 : 
-                        int LA125_72 = input.LA(1);
+                        int LA126_72 = input.LA(1);
 
                          
-                        int index125_72 = input.index();
+                        int index126_72 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred180_Java()) ) {s = 126;}
+                        if ( (synpred181_Java()) ) {s = 126;}
 
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index125_72);
+                        input.seek(index126_72);
                         if ( s>=0 ) return s;
                         break;
                     case 13 : 
-                        int LA125_73 = input.LA(1);
+                        int LA126_73 = input.LA(1);
 
                          
-                        int index125_73 = input.index();
+                        int index126_73 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred180_Java()) ) {s = 126;}
+                        if ( (synpred181_Java()) ) {s = 126;}
 
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index125_73);
+                        input.seek(index126_73);
                         if ( s>=0 ) return s;
                         break;
                     case 14 : 
-                        int LA125_74 = input.LA(1);
+                        int LA126_74 = input.LA(1);
 
                          
-                        int index125_74 = input.index();
+                        int index126_74 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred180_Java()) ) {s = 126;}
+                        if ( (synpred181_Java()) ) {s = 126;}
 
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index125_74);
+                        input.seek(index126_74);
                         if ( s>=0 ) return s;
                         break;
                     case 15 : 
-                        int LA125_75 = input.LA(1);
+                        int LA126_75 = input.LA(1);
 
                          
-                        int index125_75 = input.index();
+                        int index126_75 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred180_Java()) ) {s = 126;}
+                        if ( (synpred181_Java()) ) {s = 126;}
 
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index125_75);
+                        input.seek(index126_75);
                         if ( s>=0 ) return s;
                         break;
                     case 16 : 
-                        int LA125_76 = input.LA(1);
+                        int LA126_76 = input.LA(1);
 
                          
-                        int index125_76 = input.index();
+                        int index126_76 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred180_Java()) ) {s = 126;}
+                        if ( (synpred181_Java()) ) {s = 126;}
 
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index125_76);
+                        input.seek(index126_76);
                         if ( s>=0 ) return s;
                         break;
                     case 17 : 
-                        int LA125_77 = input.LA(1);
+                        int LA126_95 = input.LA(1);
 
                          
-                        int index125_77 = input.index();
+                        int index126_95 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred180_Java()) ) {s = 126;}
+                        if ( (synpred181_Java()) ) {s = 126;}
 
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index125_77);
+                        input.seek(index126_95);
                         if ( s>=0 ) return s;
                         break;
                     case 18 : 
-                        int LA125_83 = input.LA(1);
+                        int LA126_96 = input.LA(1);
 
                          
-                        int index125_83 = input.index();
+                        int index126_96 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred180_Java()) ) {s = 126;}
+                        if ( (synpred181_Java()) ) {s = 126;}
 
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index125_83);
+                        input.seek(index126_96);
                         if ( s>=0 ) return s;
                         break;
                     case 19 : 
-                        int LA125_106 = input.LA(1);
+                        int LA126_98 = input.LA(1);
 
                          
-                        int index125_106 = input.index();
+                        int index126_98 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred180_Java()) ) {s = 126;}
+                        if ( (synpred181_Java()) ) {s = 126;}
 
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index125_106);
+                        input.seek(index126_98);
                         if ( s>=0 ) return s;
                         break;
                     case 20 : 
-                        int LA125_107 = input.LA(1);
+                        int LA126_99 = input.LA(1);
 
                          
-                        int index125_107 = input.index();
+                        int index126_99 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred180_Java()) ) {s = 126;}
+                        if ( (synpred181_Java()) ) {s = 126;}
 
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index125_107);
+                        input.seek(index126_99);
                         if ( s>=0 ) return s;
                         break;
                     case 21 : 
-                        int LA125_108 = input.LA(1);
+                        int LA126_105 = input.LA(1);
 
                          
-                        int index125_108 = input.index();
+                        int index126_105 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred180_Java()) ) {s = 126;}
+                        if ( (synpred181_Java()) ) {s = 126;}
 
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index125_108);
+                        input.seek(index126_105);
                         if ( s>=0 ) return s;
                         break;
                     case 22 : 
-                        int LA125_131 = input.LA(1);
+                        int LA126_131 = input.LA(1);
 
                          
-                        int index125_131 = input.index();
+                        int index126_131 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred180_Java()) ) {s = 126;}
+                        if ( (synpred181_Java()) ) {s = 126;}
 
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index125_131);
+                        input.seek(index126_131);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 125, _s, input);
+                new NoViableAltException(getDescription(), 126, _s, input);
             error(nvae);
             throw nvae;
         }
     }
-    static final String DFA122_eotS =
+    static final String DFA123_eotS =
         "\30\uffff";
-    static final String DFA122_eofS =
+    static final String DFA123_eofS =
         "\30\uffff";
-    static final String DFA122_minS =
+    static final String DFA123_minS =
         "\1\4\27\uffff";
-    static final String DFA122_maxS =
-        "\1\163\27\uffff";
-    static final String DFA122_acceptS =
+    static final String DFA123_maxS =
+        "\1\164\27\uffff";
+    static final String DFA123_acceptS =
         "\1\uffff\1\1\25\uffff\1\2";
-    static final String DFA122_specialS =
+    static final String DFA123_specialS =
         "\30\uffff}>";
-    static final String[] DFA122_transitionS = {
+    static final String[] DFA123_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"+
+            "\1\1\5\uffff\10\1\1\uffff\2\1\2\uffff\4\1\43\uffff\2\1\2\uffff"+
             "\6\1",
             "",
             "",
@@ -15474,77 +15525,6 @@
             ""
     };
 
-    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);
@@ -15575,7 +15555,7 @@
             this.transition = DFA123_transition;
         }
         public String getDescription() {
-            return "757:17: ( expression )?";
+            return "766:4: ( forInit )?";
         }
     }
     static final String DFA124_eotS =
@@ -15585,14 +15565,14 @@
     static final String DFA124_minS =
         "\1\4\25\uffff";
     static final String DFA124_maxS =
-        "\1\163\25\uffff";
+        "\1\164\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",
+            "\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\44\uffff\2\1\2\uffff\6\1",
             "",
             "",
             "",
@@ -15646,29 +15626,100 @@
             this.transition = DFA124_transition;
         }
         public String getDescription() {
-            return "757:33: ( forUpdate )?";
+            return "766:17: ( expression )?";
         }
     }
-    static final String DFA127_eotS =
+    static final String DFA125_eotS =
+        "\26\uffff";
+    static final String DFA125_eofS =
+        "\26\uffff";
+    static final String DFA125_minS =
+        "\1\4\25\uffff";
+    static final String DFA125_maxS =
+        "\1\164\25\uffff";
+    static final String DFA125_acceptS =
+        "\1\uffff\1\1\23\uffff\1\2";
+    static final String DFA125_specialS =
+        "\26\uffff}>";
+    static final String[] DFA125_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\44\uffff\2\1\2\uffff\6\1",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    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 "766:33: ( forUpdate )?";
+        }
+    }
+    static final String DFA128_eotS =
         "\67\uffff";
-    static final String DFA127_eofS =
+    static final String DFA128_eofS =
         "\3\uffff\1\5\63\uffff";
-    static final String DFA127_minS =
+    static final String DFA128_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"+
+    static final String DFA128_maxS =
+        "\1\164\2\uffff\1\160\1\51\22\uffff\2\0\4\uffff\1\0\26\uffff\1\0"+
         "\2\uffff";
-    static final String DFA127_acceptS =
+    static final String DFA128_acceptS =
         "\1\uffff\1\1\3\uffff\1\2\61\uffff";
-    static final String DFA127_specialS =
+    static final String DFA128_specialS =
         "\27\uffff\1\0\1\1\4\uffff\1\2\26\uffff\1\3\2\uffff}>";
-    static final String[] DFA127_transitionS = {
+    static final String[] DFA128_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",
+            "\10\4\1\uffff\2\5\2\uffff\3\5\1\1\43\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\30\2\uffff\1\5\22\uffff\1\5\1\uffff\1\5\32\uffff\25\5",
             "\1\1\27\uffff\1\5\14\uffff\1\64",
             "",
             "",
@@ -15722,125 +15773,125 @@
             ""
     };
 
-    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 final short[] DFA128_eot = DFA.unpackEncodedString(DFA128_eotS);
+    static final short[] DFA128_eof = DFA.unpackEncodedString(DFA128_eofS);
+    static final char[] DFA128_min = DFA.unpackEncodedStringToUnsignedChars(DFA128_minS);
+    static final char[] DFA128_max = DFA.unpackEncodedStringToUnsignedChars(DFA128_maxS);
+    static final short[] DFA128_accept = DFA.unpackEncodedString(DFA128_acceptS);
+    static final short[] DFA128_special = DFA.unpackEncodedString(DFA128_specialS);
+    static final short[][] DFA128_transition;
 
     static {
-        int numStates = DFA127_transitionS.length;
-        DFA127_transition = new short[numStates][];
+        int numStates = DFA128_transitionS.length;
+        DFA128_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA127_transition[i] = DFA.unpackEncodedString(DFA127_transitionS[i]);
+            DFA128_transition[i] = DFA.unpackEncodedString(DFA128_transitionS[i]);
         }
     }
 
-    class DFA127 extends DFA {
+    class DFA128 extends DFA {
 
-        public DFA127(BaseRecognizer recognizer) {
+        public DFA128(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;
+            this.decisionNumber = 128;
+            this.eot = DFA128_eot;
+            this.eof = DFA128_eof;
+            this.min = DFA128_min;
+            this.max = DFA128_max;
+            this.accept = DFA128_accept;
+            this.special = DFA128_special;
+            this.transition = DFA128_transition;
         }
         public String getDescription() {
-            return "760:1: forInit : ( ( variableModifier )* type variableDeclarators | expressionList );";
+            return "769: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 LA128_23 = input.LA(1);
 
                          
-                        int index127_23 = input.index();
+                        int index128_23 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred185_Java()) ) {s = 1;}
+                        if ( (synpred186_Java()) ) {s = 1;}
 
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index127_23);
+                        input.seek(index128_23);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA127_24 = input.LA(1);
+                        int LA128_24 = input.LA(1);
 
                          
-                        int index127_24 = input.index();
+                        int index128_24 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred185_Java()) ) {s = 1;}
+                        if ( (synpred186_Java()) ) {s = 1;}
 
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index127_24);
+                        input.seek(index128_24);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA127_29 = input.LA(1);
+                        int LA128_29 = input.LA(1);
 
                          
-                        int index127_29 = input.index();
+                        int index128_29 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred185_Java()) ) {s = 1;}
+                        if ( (synpred186_Java()) ) {s = 1;}
 
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index127_29);
+                        input.seek(index128_29);
                         if ( s>=0 ) return s;
                         break;
                     case 3 : 
-                        int LA127_52 = input.LA(1);
+                        int LA128_52 = input.LA(1);
 
                          
-                        int index127_52 = input.index();
+                        int index128_52 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred185_Java()) ) {s = 1;}
+                        if ( (synpred186_Java()) ) {s = 1;}
 
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index127_52);
+                        input.seek(index128_52);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 127, _s, input);
+                new NoViableAltException(getDescription(), 128, _s, input);
             error(nvae);
             throw nvae;
         }
     }
-    static final String DFA130_eotS =
+    static final String DFA131_eotS =
         "\u00ca\uffff";
-    static final String DFA130_eofS =
+    static final String DFA131_eofS =
         "\1\14\u00c9\uffff";
-    static final String DFA130_minS =
+    static final String DFA131_minS =
         "\1\31\13\0\u00be\uffff";
-    static final String DFA130_maxS =
-        "\1\142\13\0\u00be\uffff";
-    static final String DFA130_acceptS =
+    static final String DFA131_maxS =
+        "\1\143\13\0\u00be\uffff";
+    static final String DFA131_acceptS =
         "\14\uffff\1\2\32\uffff\1\1\u00a2\uffff";
-    static final String DFA130_specialS =
+    static final String DFA131_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 = {
+    static final String[] DFA131_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\1\25\uffff\1\14\7\uffff\1\14\21\uffff\1\2\1\3\1\4\1\5\1\6"+
             "\1\7\1\10\1\11",
             "\1\uffff",
             "\1\uffff",
@@ -16045,230 +16096,230 @@
             ""
     };
 
-    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 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 = DFA130_transitionS.length;
-        DFA130_transition = new short[numStates][];
+        int numStates = DFA131_transitionS.length;
+        DFA131_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA130_transition[i] = DFA.unpackEncodedString(DFA130_transitionS[i]);
+            DFA131_transition[i] = DFA.unpackEncodedString(DFA131_transitionS[i]);
         }
     }
 
-    class DFA130 extends DFA {
+    class DFA131 extends DFA {
 
-        public DFA130(BaseRecognizer recognizer) {
+        public DFA131(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;
+            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 "798:26: ( assignmentOperator expression )?";
+            return "807: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 LA131_1 = input.LA(1);
 
                          
-                        int index130_1 = input.index();
+                        int index131_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred188_Java()) ) {s = 39;}
+                        if ( (synpred189_Java()) ) {s = 39;}
 
                         else if ( (true) ) {s = 12;}
 
                          
-                        input.seek(index130_1);
+                        input.seek(index131_1);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA130_2 = input.LA(1);
+                        int LA131_2 = input.LA(1);
 
                          
-                        int index130_2 = input.index();
+                        int index131_2 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred188_Java()) ) {s = 39;}
+                        if ( (synpred189_Java()) ) {s = 39;}
 
                         else if ( (true) ) {s = 12;}
 
                          
-                        input.seek(index130_2);
+                        input.seek(index131_2);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA130_3 = input.LA(1);
+                        int LA131_3 = input.LA(1);
 
                          
-                        int index130_3 = input.index();
+                        int index131_3 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred188_Java()) ) {s = 39;}
+                        if ( (synpred189_Java()) ) {s = 39;}
 
                         else if ( (true) ) {s = 12;}
 
                          
-                        input.seek(index130_3);
+                        input.seek(index131_3);
                         if ( s>=0 ) return s;
                         break;
                     case 3 : 
-                        int LA130_4 = input.LA(1);
+                        int LA131_4 = input.LA(1);
 
                          
-                        int index130_4 = input.index();
+                        int index131_4 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred188_Java()) ) {s = 39;}
+                        if ( (synpred189_Java()) ) {s = 39;}
 
                         else if ( (true) ) {s = 12;}
 
                          
-                        input.seek(index130_4);
+                        input.seek(index131_4);
                         if ( s>=0 ) return s;
                         break;
                     case 4 : 
-                        int LA130_5 = input.LA(1);
+                        int LA131_5 = input.LA(1);
 
                          
-                        int index130_5 = input.index();
+                        int index131_5 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred188_Java()) ) {s = 39;}
+                        if ( (synpred189_Java()) ) {s = 39;}
 
                         else if ( (true) ) {s = 12;}
 
                          
-                        input.seek(index130_5);
+                        input.seek(index131_5);
                         if ( s>=0 ) return s;
                         break;
                     case 5 : 
-                        int LA130_6 = input.LA(1);
+                        int LA131_6 = input.LA(1);
 
                          
-                        int index130_6 = input.index();
+                        int index131_6 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred188_Java()) ) {s = 39;}
+                        if ( (synpred189_Java()) ) {s = 39;}
 
                         else if ( (true) ) {s = 12;}
 
                          
-                        input.seek(index130_6);
+                        input.seek(index131_6);
                         if ( s>=0 ) return s;
                         break;
                     case 6 : 
-                        int LA130_7 = input.LA(1);
+                        int LA131_7 = input.LA(1);
 
                          
-                        int index130_7 = input.index();
+                        int index131_7 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred188_Java()) ) {s = 39;}
+                        if ( (synpred189_Java()) ) {s = 39;}
 
                         else if ( (true) ) {s = 12;}
 
                          
-                        input.seek(index130_7);
+                        input.seek(index131_7);
                         if ( s>=0 ) return s;
                         break;
                     case 7 : 
-                        int LA130_8 = input.LA(1);
+                        int LA131_8 = input.LA(1);
 
                          
-                        int index130_8 = input.index();
+                        int index131_8 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred188_Java()) ) {s = 39;}
+                        if ( (synpred189_Java()) ) {s = 39;}
 
                         else if ( (true) ) {s = 12;}
 
                          
-                        input.seek(index130_8);
+                        input.seek(index131_8);
                         if ( s>=0 ) return s;
                         break;
                     case 8 : 
-                        int LA130_9 = input.LA(1);
+                        int LA131_9 = input.LA(1);
 
                          
-                        int index130_9 = input.index();
+                        int index131_9 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred188_Java()) ) {s = 39;}
+                        if ( (synpred189_Java()) ) {s = 39;}
 
                         else if ( (true) ) {s = 12;}
 
                          
-                        input.seek(index130_9);
+                        input.seek(index131_9);
                         if ( s>=0 ) return s;
                         break;
                     case 9 : 
-                        int LA130_10 = input.LA(1);
+                        int LA131_10 = input.LA(1);
 
                          
-                        int index130_10 = input.index();
+                        int index131_10 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred188_Java()) ) {s = 39;}
+                        if ( (synpred189_Java()) ) {s = 39;}
 
                         else if ( (true) ) {s = 12;}
 
                          
-                        input.seek(index130_10);
+                        input.seek(index131_10);
                         if ( s>=0 ) return s;
                         break;
                     case 10 : 
-                        int LA130_11 = input.LA(1);
+                        int LA131_11 = input.LA(1);
 
                          
-                        int index130_11 = input.index();
+                        int index131_11 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred188_Java()) ) {s = 39;}
+                        if ( (synpred189_Java()) ) {s = 39;}
 
                         else if ( (true) ) {s = 12;}
 
                          
-                        input.seek(index130_11);
+                        input.seek(index131_11);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 130, _s, input);
+                new NoViableAltException(getDescription(), 131, _s, input);
             error(nvae);
             throw nvae;
         }
     }
-    static final String DFA131_eotS =
+    static final String DFA132_eotS =
         "\17\uffff";
-    static final String DFA131_eofS =
+    static final String DFA132_eofS =
         "\17\uffff";
-    static final String DFA131_minS =
+    static final String DFA132_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 =
+    static final String DFA132_maxS =
+        "\1\143\12\uffff\1\43\1\0\2\uffff";
+    static final String DFA132_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 =
+    static final String DFA132_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"+
+    static final String[] DFA132_transitionS = {
+            "\1\12\1\uffff\1\13\10\uffff\1\1\57\uffff\1\2\1\3\1\4\1\5\1"+
             "\6\1\7\1\10\1\11",
             "",
             "",
@@ -16286,149 +16337,80 @@
             ""
     };
 
-    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 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 = DFA131_transitionS.length;
-        DFA131_transition = new short[numStates][];
+        int numStates = DFA132_transitionS.length;
+        DFA132_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA131_transition[i] = DFA.unpackEncodedString(DFA131_transitionS[i]);
+            DFA132_transition[i] = DFA.unpackEncodedString(DFA132_transitionS[i]);
         }
     }
 
-    class DFA131 extends DFA {
+    class DFA132 extends DFA {
 
-        public DFA131(BaseRecognizer recognizer) {
+        public DFA132(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;
+            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:1: assignmentOperator : ( '=' | '+=' | '-=' | '*=' | '/=' | '&=' | '|=' | '^=' | '%=' | '<' '<' '=' | '>' '>' '=' | '>' '>' '>' '=' );";
+            return "810: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 LA132_12 = input.LA(1);
 
                          
-                        int index131_12 = input.index();
+                        int index132_12 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred199_Java()) ) {s = 13;}
+                        if ( (synpred200_Java()) ) {s = 13;}
 
                         else if ( (true) ) {s = 14;}
 
                          
-                        input.seek(index131_12);
+                        input.seek(index132_12);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 131, _s, input);
+                new NoViableAltException(getDescription(), 132, _s, input);
             error(nvae);
             throw nvae;
         }
     }
-    static final String DFA132_eotS =
+    static final String DFA133_eotS =
         "\24\uffff";
-    static final String DFA132_eofS =
+    static final String DFA133_eofS =
         "\1\2\23\uffff";
-    static final String DFA132_minS =
+    static final String DFA133_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";
+        "\1\143\23\uffff";
     static final String DFA133_acceptS =
-        "\1\uffff\1\2\22\uffff\1\1";
+        "\1\uffff\1\1\1\2\21\uffff";
     static final String DFA133_specialS =
-        "\25\uffff}>";
+        "\24\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",
+            "\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\21\uffff\10\2",
             "",
             "",
             "",
@@ -16447,7 +16429,6 @@
             "",
             "",
             "",
-            "",
             ""
     };
 
@@ -16481,24 +16462,24 @@
             this.transition = DFA133_transition;
         }
         public String getDescription() {
-            return "()* loopback of 821:34: ( '||' conditionalAndExpression )*";
+            return "826:33: ( '?' expression ':' expression )?";
         }
     }
     static final String DFA134_eotS =
-        "\26\uffff";
+        "\25\uffff";
     static final String DFA134_eofS =
-        "\1\1\25\uffff";
+        "\1\1\24\uffff";
     static final String DFA134_minS =
-        "\1\31\25\uffff";
+        "\1\31\24\uffff";
     static final String DFA134_maxS =
-        "\1\144\25\uffff";
+        "\1\144\24\uffff";
     static final String DFA134_acceptS =
-        "\1\uffff\1\2\23\uffff\1\1";
+        "\1\uffff\1\2\22\uffff\1\1";
     static final String DFA134_specialS =
-        "\26\uffff}>";
+        "\25\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",
+            "\1\1\2\uffff\1\1\7\uffff\1\1\21\uffff\10\1\1\24",
             "",
             "",
             "",
@@ -16518,7 +16499,6 @@
             "",
             "",
             "",
-            "",
             ""
     };
 
@@ -16552,24 +16532,24 @@
             this.transition = DFA134_transition;
         }
         public String getDescription() {
-            return "()* loopback of 825:31: ( '&&' inclusiveOrExpression )*";
+            return "()* loopback of 830:34: ( '||' conditionalAndExpression )*";
         }
     }
     static final String DFA135_eotS =
-        "\27\uffff";
+        "\26\uffff";
     static final String DFA135_eofS =
-        "\1\1\26\uffff";
+        "\1\1\25\uffff";
     static final String DFA135_minS =
-        "\1\31\26\uffff";
+        "\1\31\25\uffff";
     static final String DFA135_maxS =
-        "\1\145\26\uffff";
+        "\1\145\25\uffff";
     static final String DFA135_acceptS =
-        "\1\uffff\1\2\24\uffff\1\1";
+        "\1\uffff\1\2\23\uffff\1\1";
     static final String DFA135_specialS =
-        "\27\uffff}>";
+        "\26\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",
+            "\1\1\2\uffff\1\1\7\uffff\1\1\21\uffff\11\1\1\25",
             "",
             "",
             "",
@@ -16590,7 +16570,6 @@
             "",
             "",
             "",
-            "",
             ""
     };
 
@@ -16624,24 +16603,24 @@
             this.transition = DFA135_transition;
         }
         public String getDescription() {
-            return "()* loopback of 829:31: ( '|' exclusiveOrExpression )*";
+            return "()* loopback of 834:31: ( '&&' inclusiveOrExpression )*";
         }
     }
     static final String DFA136_eotS =
-        "\30\uffff";
+        "\27\uffff";
     static final String DFA136_eofS =
-        "\1\1\27\uffff";
+        "\1\1\26\uffff";
     static final String DFA136_minS =
-        "\1\31\27\uffff";
+        "\1\31\26\uffff";
     static final String DFA136_maxS =
-        "\1\146\27\uffff";
+        "\1\146\26\uffff";
     static final String DFA136_acceptS =
-        "\1\uffff\1\2\25\uffff\1\1";
+        "\1\uffff\1\2\24\uffff\1\1";
     static final String DFA136_specialS =
-        "\30\uffff}>";
+        "\27\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",
+            "\1\1\2\uffff\1\1\7\uffff\1\1\21\uffff\12\1\1\26",
             "",
             "",
             "",
@@ -16663,7 +16642,6 @@
             "",
             "",
             "",
-            "",
             ""
     };
 
@@ -16697,24 +16675,24 @@
             this.transition = DFA136_transition;
         }
         public String getDescription() {
-            return "()* loopback of 833:23: ( '^' andExpression )*";
+            return "()* loopback of 838:31: ( '|' exclusiveOrExpression )*";
         }
     }
     static final String DFA137_eotS =
-        "\31\uffff";
+        "\30\uffff";
     static final String DFA137_eofS =
-        "\1\1\30\uffff";
+        "\1\1\27\uffff";
     static final String DFA137_minS =
-        "\1\31\30\uffff";
+        "\1\31\27\uffff";
     static final String DFA137_maxS =
-        "\1\146\30\uffff";
+        "\1\147\27\uffff";
     static final String DFA137_acceptS =
-        "\1\uffff\1\2\26\uffff\1\1";
+        "\1\uffff\1\2\25\uffff\1\1";
     static final String DFA137_specialS =
-        "\31\uffff}>";
+        "\30\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",
+            "\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\21\uffff\13\1\1\27",
             "",
             "",
             "",
@@ -16737,7 +16715,6 @@
             "",
             "",
             "",
-            "",
             ""
     };
 
@@ -16771,24 +16748,24 @@
             this.transition = DFA137_transition;
         }
         public String getDescription() {
-            return "()* loopback of 837:28: ( '&' equalityExpression )*";
+            return "()* loopback of 842:23: ( '^' andExpression )*";
         }
     }
     static final String DFA138_eotS =
-        "\32\uffff";
+        "\31\uffff";
     static final String DFA138_eofS =
-        "\1\1\31\uffff";
+        "\1\1\30\uffff";
     static final String DFA138_minS =
-        "\1\31\31\uffff";
+        "\1\31\30\uffff";
     static final String DFA138_maxS =
-        "\1\150\31\uffff";
+        "\1\147\30\uffff";
     static final String DFA138_acceptS =
-        "\1\uffff\1\2\27\uffff\1\1";
+        "\1\uffff\1\2\26\uffff\1\1";
     static final String DFA138_specialS =
-        "\32\uffff}>";
+        "\31\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",
+            "\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\21\uffff\14\1",
             "",
             "",
             "",
@@ -16812,7 +16789,6 @@
             "",
             "",
             "",
-            "",
             ""
     };
 
@@ -16846,24 +16822,24 @@
             this.transition = DFA138_transition;
         }
         public String getDescription() {
-            return "()* loopback of 841:30: ( ( '==' | '!=' ) instanceOfExpression )*";
+            return "()* loopback of 846:28: ( '&' equalityExpression )*";
         }
     }
     static final String DFA139_eotS =
-        "\33\uffff";
+        "\32\uffff";
     static final String DFA139_eofS =
-        "\1\2\32\uffff";
+        "\1\1\31\uffff";
     static final String DFA139_minS =
-        "\1\31\32\uffff";
+        "\1\31\31\uffff";
     static final String DFA139_maxS =
-        "\1\151\32\uffff";
+        "\1\151\31\uffff";
     static final String DFA139_acceptS =
-        "\1\uffff\1\1\1\2\30\uffff";
+        "\1\uffff\1\2\27\uffff\1\1";
     static final String DFA139_specialS =
-        "\33\uffff}>";
+        "\32\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",
+            "\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\21\uffff\14\1\2\31",
             "",
             "",
             "",
@@ -16888,7 +16864,6 @@
             "",
             "",
             "",
-            "",
             ""
     };
 
@@ -16922,24 +16897,100 @@
             this.transition = DFA139_transition;
         }
         public String getDescription() {
-            return "845:30: ( 'instanceof' type )?";
+            return "()* loopback of 850:30: ( ( '==' | '!=' ) instanceOfExpression )*";
         }
     }
     static final String DFA140_eotS =
-        "\106\uffff";
+        "\33\uffff";
     static final String DFA140_eofS =
-        "\1\1\105\uffff";
+        "\1\2\32\uffff";
     static final String DFA140_minS =
-        "\1\31\26\uffff\2\4\2\uffff\1\0\52\uffff";
+        "\1\31\32\uffff";
     static final String DFA140_maxS =
-        "\1\151\26\uffff\2\163\2\uffff\1\0\52\uffff";
+        "\1\152\32\uffff";
     static final String DFA140_acceptS =
+        "\1\uffff\1\1\1\2\30\uffff";
+    static final String DFA140_specialS =
+        "\33\uffff}>";
+    static final String[] DFA140_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\21\uffff\16\2\1\1",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    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 "854:30: ( 'instanceof' type )?";
+        }
+    }
+    static final String DFA141_eotS =
+        "\106\uffff";
+    static final String DFA141_eofS =
+        "\1\1\105\uffff";
+    static final String DFA141_minS =
+        "\1\31\26\uffff\2\4\2\uffff\1\0\52\uffff";
+    static final String DFA141_maxS =
+        "\1\152\26\uffff\2\164\2\uffff\1\0\52\uffff";
+    static final String DFA141_acceptS =
         "\1\uffff\1\2\32\uffff\1\1\51\uffff";
-    static final String DFA140_specialS =
+    static final String DFA141_specialS =
         "\33\uffff\1\0\52\uffff}>";
-    static final String[] DFA140_transitionS = {
+    static final String[] DFA141_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\1\22\uffff\1\1\2\uffff\1\1\7\uffff\1\1\21\uffff\17\1",
             "",
             "",
             "",
@@ -16963,10 +17014,10 @@
             "",
             "",
             "\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"+
+            "\12\uffff\10\34\1\uffff\2\34\2\uffff\3\34\44\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"+
+            "\3\uffff\1\34\12\uffff\10\34\1\uffff\2\34\2\uffff\3\34\44\uffff"+
             "\2\34\2\uffff\6\34",
             "",
             "",
@@ -17015,83 +17066,83 @@
             ""
     };
 
-    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 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 = DFA140_transitionS.length;
-        DFA140_transition = new short[numStates][];
+        int numStates = DFA141_transitionS.length;
+        DFA141_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA140_transition[i] = DFA.unpackEncodedString(DFA140_transitionS[i]);
+            DFA141_transition[i] = DFA.unpackEncodedString(DFA141_transitionS[i]);
         }
     }
 
-    class DFA140 extends DFA {
+    class DFA141 extends DFA {
 
-        public DFA140(BaseRecognizer recognizer) {
+        public DFA141(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;
+            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 "()* loopback of 849:25: ( relationalOp shiftExpression )*";
+            return "()* loopback of 858: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 LA141_27 = input.LA(1);
 
                          
-                        int index140_27 = input.index();
+                        int index141_27 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred209_Java()) ) {s = 28;}
+                        if ( (synpred210_Java()) ) {s = 28;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index140_27);
+                        input.seek(index141_27);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 140, _s, input);
+                new NoViableAltException(getDescription(), 141, _s, input);
             error(nvae);
             throw nvae;
         }
     }
-    static final String DFA141_eotS =
+    static final String DFA142_eotS =
         "\55\uffff";
-    static final String DFA141_eofS =
+    static final String DFA142_eofS =
         "\55\uffff";
-    static final String DFA141_minS =
+    static final String DFA142_minS =
         "\1\41\2\4\52\uffff";
-    static final String DFA141_maxS =
-        "\1\43\2\163\52\uffff";
-    static final String DFA141_acceptS =
+    static final String DFA142_maxS =
+        "\1\43\2\164\52\uffff";
+    static final String DFA142_acceptS =
         "\3\uffff\1\1\1\3\23\uffff\1\2\1\4\23\uffff";
-    static final String DFA141_specialS =
+    static final String DFA142_specialS =
         "\55\uffff}>";
-    static final String[] DFA141_transitionS = {
+    static final String[] DFA142_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",
+            "\10\4\1\uffff\2\4\2\uffff\3\4\44\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"+
+            "\12\uffff\10\31\1\uffff\2\31\2\uffff\3\31\44\uffff\2\31\2\uffff"+
             "\6\31",
             "",
             "",
@@ -17137,58 +17188,58 @@
             ""
     };
 
-    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 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 = DFA141_transitionS.length;
-        DFA141_transition = new short[numStates][];
+        int numStates = DFA142_transitionS.length;
+        DFA142_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA141_transition[i] = DFA.unpackEncodedString(DFA141_transitionS[i]);
+            DFA142_transition[i] = DFA.unpackEncodedString(DFA142_transitionS[i]);
         }
     }
 
-    class DFA141 extends DFA {
+    class DFA142 extends DFA {
 
-        public DFA141(BaseRecognizer recognizer) {
+        public DFA142(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;
+            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 "853:4: ( '<' '=' | '>' '=' | '<' | '>' )";
+            return "862:4: ( '<' '=' | '>' '=' | '<' | '>' )";
         }
     }
-    static final String DFA142_eotS =
+    static final String DFA143_eotS =
         "\107\uffff";
-    static final String DFA142_eofS =
+    static final String DFA143_eofS =
         "\1\3\106\uffff";
-    static final String DFA142_minS =
+    static final String DFA143_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 =
+    static final String DFA143_maxS =
+        "\1\152\2\164\31\uffff\1\0\24\uffff\1\0\25\uffff";
+    static final String DFA143_acceptS =
         "\3\uffff\1\2\102\uffff\1\1";
-    static final String DFA142_specialS =
+    static final String DFA143_specialS =
         "\34\uffff\1\0\24\uffff\1\1\25\uffff}>";
-    static final String[] DFA142_transitionS = {
+    static final String[] DFA143_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\22\uffff\1\3\2\uffff\1\3\7\uffff\1\3\21\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",
+            "\uffff\10\3\1\uffff\2\3\2\uffff\3\3\44\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"+
+            "\1\3\12\uffff\10\3\1\uffff\2\3\2\uffff\3\3\44\uffff\2\3\2\uffff"+
             "\6\3",
             "",
             "",
@@ -17260,95 +17311,95 @@
             ""
     };
 
-    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 final short[] DFA143_eot = DFA.unpackEncodedString(DFA143_eotS);
+    static final short[] DFA143_eof = DFA.unpackEncodedString(DFA143_eofS);
+    static final char[] DFA143_min = DFA.unpackEncodedStringToUnsignedChars(DFA143_minS);
+    static final char[] DFA143_max = DFA.unpackEncodedStringToUnsignedChars(DFA143_maxS);
+    static final short[] DFA143_accept = DFA.unpackEncodedString(DFA143_acceptS);
+    static final short[] DFA143_special = DFA.unpackEncodedString(DFA143_specialS);
+    static final short[][] DFA143_transition;
 
     static {
-        int numStates = DFA142_transitionS.length;
-        DFA142_transition = new short[numStates][];
+        int numStates = DFA143_transitionS.length;
+        DFA143_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA142_transition[i] = DFA.unpackEncodedString(DFA142_transitionS[i]);
+            DFA143_transition[i] = DFA.unpackEncodedString(DFA143_transitionS[i]);
         }
     }
 
-    class DFA142 extends DFA {
+    class DFA143 extends DFA {
 
-        public DFA142(BaseRecognizer recognizer) {
+        public DFA143(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;
+            this.decisionNumber = 143;
+            this.eot = DFA143_eot;
+            this.eof = DFA143_eof;
+            this.min = DFA143_min;
+            this.max = DFA143_max;
+            this.accept = DFA143_accept;
+            this.special = DFA143_special;
+            this.transition = DFA143_transition;
         }
         public String getDescription() {
-            return "()* loopback of 857:28: ( shiftOp additiveExpression )*";
+            return "()* loopback of 866: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 LA143_28 = input.LA(1);
 
                          
-                        int index142_28 = input.index();
+                        int index143_28 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred213_Java()) ) {s = 70;}
+                        if ( (synpred214_Java()) ) {s = 70;}
 
                         else if ( (true) ) {s = 3;}
 
                          
-                        input.seek(index142_28);
+                        input.seek(index143_28);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA142_49 = input.LA(1);
+                        int LA143_49 = input.LA(1);
 
                          
-                        int index142_49 = input.index();
+                        int index143_49 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred213_Java()) ) {s = 70;}
+                        if ( (synpred214_Java()) ) {s = 70;}
 
                         else if ( (true) ) {s = 3;}
 
                          
-                        input.seek(index142_49);
+                        input.seek(index143_49);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 142, _s, input);
+                new NoViableAltException(getDescription(), 143, _s, input);
             error(nvae);
             throw nvae;
         }
     }
-    static final String DFA144_eotS =
+    static final String DFA145_eotS =
         "\34\uffff";
-    static final String DFA144_eofS =
+    static final String DFA145_eofS =
         "\1\1\33\uffff";
-    static final String DFA144_minS =
+    static final String DFA145_minS =
         "\1\31\33\uffff";
-    static final String DFA144_maxS =
-        "\1\153\33\uffff";
-    static final String DFA144_acceptS =
+    static final String DFA145_maxS =
+        "\1\154\33\uffff";
+    static final String DFA145_acceptS =
         "\1\uffff\1\2\31\uffff\1\1";
-    static final String DFA144_specialS =
+    static final String DFA145_specialS =
         "\34\uffff}>";
-    static final String[] DFA144_transitionS = {
+    static final String[] DFA145_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",
+            "\1\1\2\uffff\1\1\7\uffff\1\1\21\uffff\17\1\2\33",
             "",
             "",
             "",
@@ -17378,54 +17429,54 @@
             ""
     };
 
-    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 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 = DFA144_transitionS.length;
-        DFA144_transition = new short[numStates][];
+        int numStates = DFA145_transitionS.length;
+        DFA145_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA144_transition[i] = DFA.unpackEncodedString(DFA144_transitionS[i]);
+            DFA145_transition[i] = DFA.unpackEncodedString(DFA145_transitionS[i]);
         }
     }
 
-    class DFA144 extends DFA {
+    class DFA145 extends DFA {
 
-        public DFA144(BaseRecognizer recognizer) {
+        public DFA145(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;
+            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 867:34: ( ( '+' | '-' ) multiplicativeExpression )*";
+            return "()* loopback of 876:34: ( ( '+' | '-' ) multiplicativeExpression )*";
         }
     }
-    static final String DFA145_eotS =
+    static final String DFA146_eotS =
         "\35\uffff";
-    static final String DFA145_eofS =
+    static final String DFA146_eofS =
         "\1\1\34\uffff";
-    static final String DFA145_minS =
+    static final String DFA146_minS =
         "\1\31\34\uffff";
-    static final String DFA145_maxS =
-        "\1\155\34\uffff";
-    static final String DFA145_acceptS =
+    static final String DFA146_maxS =
+        "\1\156\34\uffff";
+    static final String DFA146_acceptS =
         "\1\uffff\1\2\32\uffff\1\1";
-    static final String DFA145_specialS =
+    static final String DFA146_specialS =
         "\35\uffff}>";
-    static final String[] DFA145_transitionS = {
+    static final String[] DFA146_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",
+            "\1\1\22\uffff\1\1\2\uffff\1\1\7\uffff\1\1\21\uffff\21\1\2\34",
             "",
             "",
             "",
@@ -17456,54 +17507,54 @@
             ""
     };
 
-    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 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 = DFA145_transitionS.length;
-        DFA145_transition = new short[numStates][];
+        int numStates = DFA146_transitionS.length;
+        DFA146_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA145_transition[i] = DFA.unpackEncodedString(DFA145_transitionS[i]);
+            DFA146_transition[i] = DFA.unpackEncodedString(DFA146_transitionS[i]);
         }
     }
 
-    class DFA145 extends DFA {
+    class DFA146 extends DFA {
 
-        public DFA145(BaseRecognizer recognizer) {
+        public DFA146(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;
+            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 "()* loopback of 871:25: ( ( '*' | '/' | '%' ) unaryExpression )*";
+            return "()* loopback of 880:25: ( ( '*' | '/' | '%' ) unaryExpression )*";
         }
     }
-    static final String DFA146_eotS =
+    static final String DFA147_eotS =
         "\25\uffff";
-    static final String DFA146_eofS =
+    static final String DFA147_eofS =
         "\25\uffff";
-    static final String DFA146_minS =
+    static final String DFA147_minS =
         "\1\4\24\uffff";
-    static final String DFA146_maxS =
-        "\1\163\24\uffff";
-    static final String DFA146_acceptS =
+    static final String DFA147_maxS =
+        "\1\164\24\uffff";
+    static final String DFA147_acceptS =
         "\1\uffff\1\1\1\2\1\3\1\4\1\5\17\uffff";
-    static final String DFA146_specialS =
+    static final String DFA147_specialS =
         "\25\uffff}>";
-    static final String[] DFA146_transitionS = {
+    static final String[] DFA147_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",
+            "\2\5\2\uffff\3\5\44\uffff\1\1\1\2\2\uffff\1\3\1\4\4\5",
             "",
             "",
             "",
@@ -17526,59 +17577,59 @@
             ""
     };
 
-    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 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 = DFA146_transitionS.length;
-        DFA146_transition = new short[numStates][];
+        int numStates = DFA147_transitionS.length;
+        DFA147_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA146_transition[i] = DFA.unpackEncodedString(DFA146_transitionS[i]);
+            DFA147_transition[i] = DFA.unpackEncodedString(DFA147_transitionS[i]);
         }
     }
 
-    class DFA146 extends DFA {
+    class DFA147 extends DFA {
 
-        public DFA146(BaseRecognizer recognizer) {
+        public DFA147(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;
+            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 "874:1: unaryExpression : ( '+' unaryExpression | '-' unaryExpression | '++' primary | '--' primary | unaryExpressionNotPlusMinus );";
+            return "883:1: unaryExpression : ( '+' unaryExpression | '-' unaryExpression | '++' primary | '--' primary | unaryExpressionNotPlusMinus );";
         }
     }
-    static final String DFA149_eotS =
+    static final String DFA150_eotS =
         "\46\uffff";
-    static final String DFA149_eofS =
+    static final String DFA150_eofS =
         "\46\uffff";
-    static final String DFA149_minS =
+    static final String DFA150_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 =
+    static final String DFA150_maxS =
+        "\1\164\2\uffff\1\164\15\uffff\24\0\1\uffff";
+    static final String DFA150_acceptS =
         "\1\uffff\1\1\1\2\1\uffff\1\4\40\uffff\1\3";
-    static final String DFA149_specialS =
+    static final String DFA150_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 = {
+    static final String[] DFA150_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\4\1\3\2\uffff\3\4\52\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"+
+            "\44\16\uffff\10\21\1\uffff\1\33\1\30\2\uffff\1\41\2\40\44\uffff"+
             "\1\22\1\23\2\uffff\1\24\1\25\1\26\1\27\1\32\1\42",
             "",
             "",
@@ -17616,365 +17667,365 @@
             ""
     };
 
-    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 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 = DFA149_transitionS.length;
-        DFA149_transition = new short[numStates][];
+        int numStates = DFA150_transitionS.length;
+        DFA150_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA149_transition[i] = DFA.unpackEncodedString(DFA149_transitionS[i]);
+            DFA150_transition[i] = DFA.unpackEncodedString(DFA150_transitionS[i]);
         }
     }
 
-    class DFA149 extends DFA {
+    class DFA150 extends DFA {
 
-        public DFA149(BaseRecognizer recognizer) {
+        public DFA150(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;
+            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 "882:1: unaryExpressionNotPlusMinus : ( '~' unaryExpression | '!' unaryExpression | castExpression | primary ( selector )* ( '++' | '--' )? );";
+            return "891: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 LA150_17 = input.LA(1);
 
                          
-                        int index149_17 = input.index();
+                        int index150_17 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred227_Java()) ) {s = 37;}
+                        if ( (synpred228_Java()) ) {s = 37;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index149_17);
+                        input.seek(index150_17);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA149_18 = input.LA(1);
+                        int LA150_18 = input.LA(1);
 
                          
-                        int index149_18 = input.index();
+                        int index150_18 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred227_Java()) ) {s = 37;}
+                        if ( (synpred228_Java()) ) {s = 37;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index149_18);
+                        input.seek(index150_18);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA149_19 = input.LA(1);
+                        int LA150_19 = input.LA(1);
 
                          
-                        int index149_19 = input.index();
+                        int index150_19 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred227_Java()) ) {s = 37;}
+                        if ( (synpred228_Java()) ) {s = 37;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index149_19);
+                        input.seek(index150_19);
                         if ( s>=0 ) return s;
                         break;
                     case 3 : 
-                        int LA149_20 = input.LA(1);
+                        int LA150_20 = input.LA(1);
 
                          
-                        int index149_20 = input.index();
+                        int index150_20 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred227_Java()) ) {s = 37;}
+                        if ( (synpred228_Java()) ) {s = 37;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index149_20);
+                        input.seek(index150_20);
                         if ( s>=0 ) return s;
                         break;
                     case 4 : 
-                        int LA149_21 = input.LA(1);
+                        int LA150_21 = input.LA(1);
 
                          
-                        int index149_21 = input.index();
+                        int index150_21 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred227_Java()) ) {s = 37;}
+                        if ( (synpred228_Java()) ) {s = 37;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index149_21);
+                        input.seek(index150_21);
                         if ( s>=0 ) return s;
                         break;
                     case 5 : 
-                        int LA149_22 = input.LA(1);
+                        int LA150_22 = input.LA(1);
 
                          
-                        int index149_22 = input.index();
+                        int index150_22 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred227_Java()) ) {s = 37;}
+                        if ( (synpred228_Java()) ) {s = 37;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index149_22);
+                        input.seek(index150_22);
                         if ( s>=0 ) return s;
                         break;
                     case 6 : 
-                        int LA149_23 = input.LA(1);
+                        int LA150_23 = input.LA(1);
 
                          
-                        int index149_23 = input.index();
+                        int index150_23 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred227_Java()) ) {s = 37;}
+                        if ( (synpred228_Java()) ) {s = 37;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index149_23);
+                        input.seek(index150_23);
                         if ( s>=0 ) return s;
                         break;
                     case 7 : 
-                        int LA149_24 = input.LA(1);
+                        int LA150_24 = input.LA(1);
 
                          
-                        int index149_24 = input.index();
+                        int index150_24 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred227_Java()) ) {s = 37;}
+                        if ( (synpred228_Java()) ) {s = 37;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index149_24);
+                        input.seek(index150_24);
                         if ( s>=0 ) return s;
                         break;
                     case 8 : 
-                        int LA149_25 = input.LA(1);
+                        int LA150_25 = input.LA(1);
 
                          
-                        int index149_25 = input.index();
+                        int index150_25 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred227_Java()) ) {s = 37;}
+                        if ( (synpred228_Java()) ) {s = 37;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index149_25);
+                        input.seek(index150_25);
                         if ( s>=0 ) return s;
                         break;
                     case 9 : 
-                        int LA149_26 = input.LA(1);
+                        int LA150_26 = input.LA(1);
 
                          
-                        int index149_26 = input.index();
+                        int index150_26 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred227_Java()) ) {s = 37;}
+                        if ( (synpred228_Java()) ) {s = 37;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index149_26);
+                        input.seek(index150_26);
                         if ( s>=0 ) return s;
                         break;
                     case 10 : 
-                        int LA149_27 = input.LA(1);
+                        int LA150_27 = input.LA(1);
 
                          
-                        int index149_27 = input.index();
+                        int index150_27 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred227_Java()) ) {s = 37;}
+                        if ( (synpred228_Java()) ) {s = 37;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index149_27);
+                        input.seek(index150_27);
                         if ( s>=0 ) return s;
                         break;
                     case 11 : 
-                        int LA149_28 = input.LA(1);
+                        int LA150_28 = input.LA(1);
 
                          
-                        int index149_28 = input.index();
+                        int index150_28 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred227_Java()) ) {s = 37;}
+                        if ( (synpred228_Java()) ) {s = 37;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index149_28);
+                        input.seek(index150_28);
                         if ( s>=0 ) return s;
                         break;
                     case 12 : 
-                        int LA149_29 = input.LA(1);
+                        int LA150_29 = input.LA(1);
 
                          
-                        int index149_29 = input.index();
+                        int index150_29 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred227_Java()) ) {s = 37;}
+                        if ( (synpred228_Java()) ) {s = 37;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index149_29);
+                        input.seek(index150_29);
                         if ( s>=0 ) return s;
                         break;
                     case 13 : 
-                        int LA149_30 = input.LA(1);
+                        int LA150_30 = input.LA(1);
 
                          
-                        int index149_30 = input.index();
+                        int index150_30 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred227_Java()) ) {s = 37;}
+                        if ( (synpred228_Java()) ) {s = 37;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index149_30);
+                        input.seek(index150_30);
                         if ( s>=0 ) return s;
                         break;
                     case 14 : 
-                        int LA149_31 = input.LA(1);
+                        int LA150_31 = input.LA(1);
 
                          
-                        int index149_31 = input.index();
+                        int index150_31 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred227_Java()) ) {s = 37;}
+                        if ( (synpred228_Java()) ) {s = 37;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index149_31);
+                        input.seek(index150_31);
                         if ( s>=0 ) return s;
                         break;
                     case 15 : 
-                        int LA149_32 = input.LA(1);
+                        int LA150_32 = input.LA(1);
 
                          
-                        int index149_32 = input.index();
+                        int index150_32 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred227_Java()) ) {s = 37;}
+                        if ( (synpred228_Java()) ) {s = 37;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index149_32);
+                        input.seek(index150_32);
                         if ( s>=0 ) return s;
                         break;
                     case 16 : 
-                        int LA149_33 = input.LA(1);
+                        int LA150_33 = input.LA(1);
 
                          
-                        int index149_33 = input.index();
+                        int index150_33 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred227_Java()) ) {s = 37;}
+                        if ( (synpred228_Java()) ) {s = 37;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index149_33);
+                        input.seek(index150_33);
                         if ( s>=0 ) return s;
                         break;
                     case 17 : 
-                        int LA149_34 = input.LA(1);
+                        int LA150_34 = input.LA(1);
 
                          
-                        int index149_34 = input.index();
+                        int index150_34 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred227_Java()) ) {s = 37;}
+                        if ( (synpred228_Java()) ) {s = 37;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index149_34);
+                        input.seek(index150_34);
                         if ( s>=0 ) return s;
                         break;
                     case 18 : 
-                        int LA149_35 = input.LA(1);
+                        int LA150_35 = input.LA(1);
 
                          
-                        int index149_35 = input.index();
+                        int index150_35 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred227_Java()) ) {s = 37;}
+                        if ( (synpred228_Java()) ) {s = 37;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index149_35);
+                        input.seek(index150_35);
                         if ( s>=0 ) return s;
                         break;
                     case 19 : 
-                        int LA149_36 = input.LA(1);
+                        int LA150_36 = input.LA(1);
 
                          
-                        int index149_36 = input.index();
+                        int index150_36 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred227_Java()) ) {s = 37;}
+                        if ( (synpred228_Java()) ) {s = 37;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index149_36);
+                        input.seek(index150_36);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 149, _s, input);
+                new NoViableAltException(getDescription(), 150, _s, input);
             error(nvae);
             throw nvae;
         }
     }
-    static final String DFA147_eotS =
+    static final String DFA148_eotS =
         "\40\uffff";
-    static final String DFA147_eofS =
+    static final String DFA148_eofS =
         "\1\1\37\uffff";
-    static final String DFA147_minS =
+    static final String DFA148_minS =
         "\1\31\37\uffff";
-    static final String DFA147_maxS =
-        "\1\157\37\uffff";
-    static final String DFA147_acceptS =
+    static final String DFA148_maxS =
+        "\1\160\37\uffff";
+    static final String DFA148_acceptS =
         "\1\uffff\1\2\34\uffff\1\1\1\uffff";
-    static final String DFA147_specialS =
+    static final String DFA148_specialS =
         "\40\uffff}>";
-    static final String[] DFA147_transitionS = {
+    static final String[] DFA148_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"+
+            "\1\1\1\uffff\1\1\22\uffff\1\1\2\uffff\1\1\7\uffff\1\1\21\uffff"+
             "\25\1",
             "",
             "",
@@ -18009,54 +18060,54 @@
             ""
     };
 
-    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 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 = DFA147_transitionS.length;
-        DFA147_transition = new short[numStates][];
+        int numStates = DFA148_transitionS.length;
+        DFA148_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA147_transition[i] = DFA.unpackEncodedString(DFA147_transitionS[i]);
+            DFA148_transition[i] = DFA.unpackEncodedString(DFA148_transitionS[i]);
         }
     }
 
-    class DFA147 extends DFA {
+    class DFA148 extends DFA {
 
-        public DFA147(BaseRecognizer recognizer) {
+        public DFA148(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;
+            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 "()* loopback of 886:17: ( selector )*";
+            return "()* loopback of 895:17: ( selector )*";
         }
     }
-    static final String DFA148_eotS =
+    static final String DFA149_eotS =
         "\36\uffff";
-    static final String DFA148_eofS =
+    static final String DFA149_eofS =
         "\1\2\35\uffff";
-    static final String DFA148_minS =
+    static final String DFA149_minS =
         "\1\31\35\uffff";
-    static final String DFA148_maxS =
-        "\1\157\35\uffff";
-    static final String DFA148_acceptS =
+    static final String DFA149_maxS =
+        "\1\160\35\uffff";
+    static final String DFA149_acceptS =
         "\1\uffff\1\1\1\2\33\uffff";
-    static final String DFA148_specialS =
+    static final String DFA149_specialS =
         "\36\uffff}>";
-    static final String[] DFA148_transitionS = {
+    static final String[] DFA149_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",
+            "\1\2\22\uffff\1\2\2\uffff\1\2\7\uffff\1\2\21\uffff\23\2\2\1",
             "",
             "",
             "",
@@ -18088,55 +18139,55 @@
             ""
     };
 
-    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 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 = DFA148_transitionS.length;
-        DFA148_transition = new short[numStates][];
+        int numStates = DFA149_transitionS.length;
+        DFA149_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA148_transition[i] = DFA.unpackEncodedString(DFA148_transitionS[i]);
+            DFA149_transition[i] = DFA.unpackEncodedString(DFA149_transitionS[i]);
         }
     }
 
-    class DFA148 extends DFA {
+    class DFA149 extends DFA {
 
-        public DFA148(BaseRecognizer recognizer) {
+        public DFA149(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;
+            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 "886:27: ( '++' | '--' )?";
+            return "895:27: ( '++' | '--' )?";
         }
     }
-    static final String DFA151_eotS =
+    static final String DFA152_eotS =
         "\27\uffff";
-    static final String DFA151_eofS =
+    static final String DFA152_eofS =
         "\27\uffff";
-    static final String DFA151_minS =
+    static final String DFA152_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 =
+    static final String DFA152_maxS =
+        "\1\101\1\164\1\0\24\uffff";
+    static final String DFA152_acceptS =
         "\3\uffff\1\2\22\uffff\1\1";
-    static final String DFA151_specialS =
+    static final String DFA152_specialS =
         "\2\uffff\1\0\24\uffff}>";
-    static final String[] DFA151_transitionS = {
+    static final String[] DFA152_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",
+            "\uffff\2\3\2\uffff\3\3\44\uffff\2\3\2\uffff\6\3",
             "\1\uffff",
             "",
             "",
@@ -18160,80 +18211,80 @@
             ""
     };
 
-    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 final short[] DFA152_eot = DFA.unpackEncodedString(DFA152_eotS);
+    static final short[] DFA152_eof = DFA.unpackEncodedString(DFA152_eofS);
+    static final char[] DFA152_min = DFA.unpackEncodedStringToUnsignedChars(DFA152_minS);
+    static final char[] DFA152_max = DFA.unpackEncodedStringToUnsignedChars(DFA152_maxS);
+    static final short[] DFA152_accept = DFA.unpackEncodedString(DFA152_acceptS);
+    static final short[] DFA152_special = DFA.unpackEncodedString(DFA152_specialS);
+    static final short[][] DFA152_transition;
 
     static {
-        int numStates = DFA151_transitionS.length;
-        DFA151_transition = new short[numStates][];
+        int numStates = DFA152_transitionS.length;
+        DFA152_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA151_transition[i] = DFA.unpackEncodedString(DFA151_transitionS[i]);
+            DFA152_transition[i] = DFA.unpackEncodedString(DFA152_transitionS[i]);
         }
     }
 
-    class DFA151 extends DFA {
+    class DFA152 extends DFA {
 
-        public DFA151(BaseRecognizer recognizer) {
+        public DFA152(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;
+            this.decisionNumber = 152;
+            this.eot = DFA152_eot;
+            this.eof = DFA152_eof;
+            this.min = DFA152_min;
+            this.max = DFA152_max;
+            this.accept = DFA152_accept;
+            this.special = DFA152_special;
+            this.transition = DFA152_transition;
         }
         public String getDescription() {
-            return "889:1: castExpression : ( '(' primitiveType ')' unaryExpression | '(' ( type | expression ) ')' unaryExpressionNotPlusMinus );";
+            return "898: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 LA152_2 = input.LA(1);
 
                          
-                        int index151_2 = input.index();
+                        int index152_2 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred231_Java()) ) {s = 22;}
+                        if ( (synpred232_Java()) ) {s = 22;}
 
                         else if ( (true) ) {s = 3;}
 
                          
-                        input.seek(index151_2);
+                        input.seek(index152_2);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 151, _s, input);
+                new NoViableAltException(getDescription(), 152, _s, input);
             error(nvae);
             throw nvae;
         }
     }
-    static final String DFA150_eotS =
+    static final String DFA151_eotS =
         "\63\uffff";
-    static final String DFA150_eofS =
+    static final String DFA151_eofS =
         "\63\uffff";
-    static final String DFA150_minS =
+    static final String DFA151_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 =
+    static final String DFA151_maxS =
+        "\1\164\1\0\1\102\55\uffff\1\0\2\uffff";
+    static final String DFA151_acceptS =
         "\3\uffff\1\2\53\uffff\1\1\3\uffff";
-    static final String DFA150_specialS =
+    static final String DFA151_specialS =
         "\1\uffff\1\0\56\uffff\1\1\2\uffff}>";
-    static final String[] DFA150_transitionS = {
+    static final String[] DFA151_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",
+            "\2\3\2\uffff\3\3\44\uffff\2\3\2\uffff\6\3",
             "\1\uffff",
             "\1\3\14\uffff\1\60\30\uffff\1\57",
             "",
@@ -18286,95 +18337,95 @@
             ""
     };
 
-    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 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 = DFA150_transitionS.length;
-        DFA150_transition = new short[numStates][];
+        int numStates = DFA151_transitionS.length;
+        DFA151_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA150_transition[i] = DFA.unpackEncodedString(DFA150_transitionS[i]);
+            DFA151_transition[i] = DFA.unpackEncodedString(DFA151_transitionS[i]);
         }
     }
 
-    class DFA150 extends DFA {
+    class DFA151 extends DFA {
 
-        public DFA150(BaseRecognizer recognizer) {
+        public DFA151(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;
+            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 "891:12: ( type | expression )";
+            return "900: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 LA151_1 = input.LA(1);
 
                          
-                        int index150_1 = input.index();
+                        int index151_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred232_Java()) ) {s = 47;}
+                        if ( (synpred233_Java()) ) {s = 47;}
 
                         else if ( (true) ) {s = 3;}
 
                          
-                        input.seek(index150_1);
+                        input.seek(index151_1);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA150_48 = input.LA(1);
+                        int LA151_48 = input.LA(1);
 
                          
-                        int index150_48 = input.index();
+                        int index151_48 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred232_Java()) ) {s = 47;}
+                        if ( (synpred233_Java()) ) {s = 47;}
 
                         else if ( (true) ) {s = 3;}
 
                          
-                        input.seek(index150_48);
+                        input.seek(index151_48);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 150, _s, input);
+                new NoViableAltException(getDescription(), 151, _s, input);
             error(nvae);
             throw nvae;
         }
     }
-    static final String DFA158_eotS =
+    static final String DFA159_eotS =
         "\17\uffff";
-    static final String DFA158_eofS =
+    static final String DFA159_eofS =
         "\17\uffff";
-    static final String DFA158_minS =
+    static final String DFA159_minS =
         "\1\4\16\uffff";
-    static final String DFA158_maxS =
-        "\1\163\16\uffff";
-    static final String DFA158_acceptS =
+    static final String DFA159_maxS =
+        "\1\164\16\uffff";
+    static final String DFA159_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 =
+    static final String DFA159_specialS =
         "\17\uffff}>";
-    static final String[] DFA158_transitionS = {
+    static final String[] DFA159_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",
+            "\1\uffff\1\4\1\1\2\uffff\3\5\54\uffff\1\3\1\13",
             "",
             "",
             "",
@@ -18391,58 +18442,58 @@
             ""
     };
 
-    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 final short[] DFA159_eot = DFA.unpackEncodedString(DFA159_eotS);
+    static final short[] DFA159_eof = DFA.unpackEncodedString(DFA159_eofS);
+    static final char[] DFA159_min = DFA.unpackEncodedStringToUnsignedChars(DFA159_minS);
+    static final char[] DFA159_max = DFA.unpackEncodedStringToUnsignedChars(DFA159_maxS);
+    static final short[] DFA159_accept = DFA.unpackEncodedString(DFA159_acceptS);
+    static final short[] DFA159_special = DFA.unpackEncodedString(DFA159_specialS);
+    static final short[][] DFA159_transition;
 
     static {
-        int numStates = DFA158_transitionS.length;
-        DFA158_transition = new short[numStates][];
+        int numStates = DFA159_transitionS.length;
+        DFA159_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA158_transition[i] = DFA.unpackEncodedString(DFA158_transitionS[i]);
+            DFA159_transition[i] = DFA.unpackEncodedString(DFA159_transitionS[i]);
         }
     }
 
-    class DFA158 extends DFA {
+    class DFA159 extends DFA {
 
-        public DFA158(BaseRecognizer recognizer) {
+        public DFA159(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;
+            this.decisionNumber = 159;
+            this.eot = DFA159_eot;
+            this.eof = DFA159_eof;
+            this.min = DFA159_min;
+            this.max = DFA159_max;
+            this.accept = DFA159_accept;
+            this.special = DFA159_special;
+            this.transition = DFA159_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' );";
+            return "903: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 =
+    static final String DFA154_eotS =
         "\50\uffff";
-    static final String DFA153_eofS =
+    static final String DFA154_eofS =
         "\1\1\47\uffff";
-    static final String DFA153_minS =
+    static final String DFA154_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 =
+    static final String DFA154_maxS =
+        "\1\160\2\uffff\1\164\41\uffff\1\0\2\uffff";
+    static final String DFA154_acceptS =
         "\1\uffff\1\2\45\uffff\1\1";
-    static final String DFA153_specialS =
+    static final String DFA154_specialS =
         "\45\uffff\1\0\2\uffff}>";
-    static final String[] DFA153_transitionS = {
+    static final String[] DFA154_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"+
+            "\uffff\1\1\22\uffff\1\1\1\uffff\2\1\7\uffff\1\1\21\uffff\25"+
             "\1",
             "",
             "",
-            "\1\45\31\uffff\1\1\2\uffff\1\1\36\uffff\1\1\61\uffff\2\1",
+            "\1\45\31\uffff\1\1\2\uffff\1\1\36\uffff\1\1\62\uffff\2\1",
             "",
             "",
             "",
@@ -18481,89 +18532,89 @@
             ""
     };
 
-    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 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 = DFA153_transitionS.length;
-        DFA153_transition = new short[numStates][];
+        int numStates = DFA154_transitionS.length;
+        DFA154_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA153_transition[i] = DFA.unpackEncodedString(DFA153_transitionS[i]);
+            DFA154_transition[i] = DFA.unpackEncodedString(DFA154_transitionS[i]);
         }
     }
 
-    class DFA153 extends DFA {
+    class DFA154 extends DFA {
 
-        public DFA153(BaseRecognizer recognizer) {
+        public DFA154(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;
+            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 "()* loopback of 898:16: ( '.' Identifier )*";
+            return "()* loopback of 907: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 LA154_37 = input.LA(1);
 
                          
-                        int index153_37 = input.index();
+                        int index154_37 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred236_Java()) ) {s = 39;}
+                        if ( (synpred237_Java()) ) {s = 39;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index153_37);
+                        input.seek(index154_37);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 153, _s, input);
+                new NoViableAltException(getDescription(), 154, _s, input);
             error(nvae);
             throw nvae;
         }
     }
-    static final String DFA154_eotS =
+    static final String DFA155_eotS =
         "\74\uffff";
-    static final String DFA154_eofS =
+    static final String DFA155_eofS =
         "\1\4\73\uffff";
-    static final String DFA154_minS =
+    static final String DFA155_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 =
+    static final String DFA155_maxS =
+        "\1\160\1\164\1\uffff\1\164\36\uffff\24\0\1\uffff\3\0\2\uffff";
+    static final String DFA155_acceptS =
         "\2\uffff\1\1\1\uffff\1\2\67\uffff";
-    static final String DFA154_specialS =
+    static final String DFA155_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 = {
+    static final String[] DFA155_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"+
+            "\4\1\uffff\1\4\22\uffff\1\4\1\uffff\1\2\1\4\7\uffff\1\4\21\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"+
+            "\2\60\44\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\4\31\uffff\1\2\2\uffff\1\2\36\uffff\1\70\62\uffff\1\67"+
             "\1\71",
             "",
             "",
@@ -18623,414 +18674,414 @@
             ""
     };
 
-    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 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 = DFA154_transitionS.length;
-        DFA154_transition = new short[numStates][];
+        int numStates = DFA155_transitionS.length;
+        DFA155_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA154_transition[i] = DFA.unpackEncodedString(DFA154_transitionS[i]);
+            DFA155_transition[i] = DFA.unpackEncodedString(DFA155_transitionS[i]);
         }
     }
 
-    class DFA154 extends DFA {
+    class DFA155 extends DFA {
 
-        public DFA154(BaseRecognizer recognizer) {
+        public DFA155(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;
+            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 "898:34: ( identifierSuffix )?";
+            return "907: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 LA155_34 = input.LA(1);
 
                          
-                        int index154_34 = input.index();
+                        int index155_34 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred237_Java()) ) {s = 2;}
+                        if ( (synpred238_Java()) ) {s = 2;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index154_34);
+                        input.seek(index155_34);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA154_35 = input.LA(1);
+                        int LA155_35 = input.LA(1);
 
                          
-                        int index154_35 = input.index();
+                        int index155_35 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred237_Java()) ) {s = 2;}
+                        if ( (synpred238_Java()) ) {s = 2;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index154_35);
+                        input.seek(index155_35);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA154_36 = input.LA(1);
+                        int LA155_36 = input.LA(1);
 
                          
-                        int index154_36 = input.index();
+                        int index155_36 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred237_Java()) ) {s = 2;}
+                        if ( (synpred238_Java()) ) {s = 2;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index154_36);
+                        input.seek(index155_36);
                         if ( s>=0 ) return s;
                         break;
                     case 3 : 
-                        int LA154_37 = input.LA(1);
+                        int LA155_37 = input.LA(1);
 
                          
-                        int index154_37 = input.index();
+                        int index155_37 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred237_Java()) ) {s = 2;}
+                        if ( (synpred238_Java()) ) {s = 2;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index154_37);
+                        input.seek(index155_37);
                         if ( s>=0 ) return s;
                         break;
                     case 4 : 
-                        int LA154_38 = input.LA(1);
+                        int LA155_38 = input.LA(1);
 
                          
-                        int index154_38 = input.index();
+                        int index155_38 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred237_Java()) ) {s = 2;}
+                        if ( (synpred238_Java()) ) {s = 2;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index154_38);
+                        input.seek(index155_38);
                         if ( s>=0 ) return s;
                         break;
                     case 5 : 
-                        int LA154_39 = input.LA(1);
+                        int LA155_39 = input.LA(1);
 
                          
-                        int index154_39 = input.index();
+                        int index155_39 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred237_Java()) ) {s = 2;}
+                        if ( (synpred238_Java()) ) {s = 2;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index154_39);
+                        input.seek(index155_39);
                         if ( s>=0 ) return s;
                         break;
                     case 6 : 
-                        int LA154_40 = input.LA(1);
+                        int LA155_40 = input.LA(1);
 
                          
-                        int index154_40 = input.index();
+                        int index155_40 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred237_Java()) ) {s = 2;}
+                        if ( (synpred238_Java()) ) {s = 2;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index154_40);
+                        input.seek(index155_40);
                         if ( s>=0 ) return s;
                         break;
                     case 7 : 
-                        int LA154_41 = input.LA(1);
+                        int LA155_41 = input.LA(1);
 
                          
-                        int index154_41 = input.index();
+                        int index155_41 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred237_Java()) ) {s = 2;}
+                        if ( (synpred238_Java()) ) {s = 2;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index154_41);
+                        input.seek(index155_41);
                         if ( s>=0 ) return s;
                         break;
                     case 8 : 
-                        int LA154_42 = input.LA(1);
+                        int LA155_42 = input.LA(1);
 
                          
-                        int index154_42 = input.index();
+                        int index155_42 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred237_Java()) ) {s = 2;}
+                        if ( (synpred238_Java()) ) {s = 2;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index154_42);
+                        input.seek(index155_42);
                         if ( s>=0 ) return s;
                         break;
                     case 9 : 
-                        int LA154_43 = input.LA(1);
+                        int LA155_43 = input.LA(1);
 
                          
-                        int index154_43 = input.index();
+                        int index155_43 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred237_Java()) ) {s = 2;}
+                        if ( (synpred238_Java()) ) {s = 2;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index154_43);
+                        input.seek(index155_43);
                         if ( s>=0 ) return s;
                         break;
                     case 10 : 
-                        int LA154_44 = input.LA(1);
+                        int LA155_44 = input.LA(1);
 
                          
-                        int index154_44 = input.index();
+                        int index155_44 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred237_Java()) ) {s = 2;}
+                        if ( (synpred238_Java()) ) {s = 2;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index154_44);
+                        input.seek(index155_44);
                         if ( s>=0 ) return s;
                         break;
                     case 11 : 
-                        int LA154_45 = input.LA(1);
+                        int LA155_45 = input.LA(1);
 
                          
-                        int index154_45 = input.index();
+                        int index155_45 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred237_Java()) ) {s = 2;}
+                        if ( (synpred238_Java()) ) {s = 2;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index154_45);
+                        input.seek(index155_45);
                         if ( s>=0 ) return s;
                         break;
                     case 12 : 
-                        int LA154_46 = input.LA(1);
+                        int LA155_46 = input.LA(1);
 
                          
-                        int index154_46 = input.index();
+                        int index155_46 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred237_Java()) ) {s = 2;}
+                        if ( (synpred238_Java()) ) {s = 2;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index154_46);
+                        input.seek(index155_46);
                         if ( s>=0 ) return s;
                         break;
                     case 13 : 
-                        int LA154_47 = input.LA(1);
+                        int LA155_47 = input.LA(1);
 
                          
-                        int index154_47 = input.index();
+                        int index155_47 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred237_Java()) ) {s = 2;}
+                        if ( (synpred238_Java()) ) {s = 2;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index154_47);
+                        input.seek(index155_47);
                         if ( s>=0 ) return s;
                         break;
                     case 14 : 
-                        int LA154_48 = input.LA(1);
+                        int LA155_48 = input.LA(1);
 
                          
-                        int index154_48 = input.index();
+                        int index155_48 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred237_Java()) ) {s = 2;}
+                        if ( (synpred238_Java()) ) {s = 2;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index154_48);
+                        input.seek(index155_48);
                         if ( s>=0 ) return s;
                         break;
                     case 15 : 
-                        int LA154_49 = input.LA(1);
+                        int LA155_49 = input.LA(1);
 
                          
-                        int index154_49 = input.index();
+                        int index155_49 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred237_Java()) ) {s = 2;}
+                        if ( (synpred238_Java()) ) {s = 2;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index154_49);
+                        input.seek(index155_49);
                         if ( s>=0 ) return s;
                         break;
                     case 16 : 
-                        int LA154_50 = input.LA(1);
+                        int LA155_50 = input.LA(1);
 
                          
-                        int index154_50 = input.index();
+                        int index155_50 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred237_Java()) ) {s = 2;}
+                        if ( (synpred238_Java()) ) {s = 2;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index154_50);
+                        input.seek(index155_50);
                         if ( s>=0 ) return s;
                         break;
                     case 17 : 
-                        int LA154_51 = input.LA(1);
+                        int LA155_51 = input.LA(1);
 
                          
-                        int index154_51 = input.index();
+                        int index155_51 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred237_Java()) ) {s = 2;}
+                        if ( (synpred238_Java()) ) {s = 2;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index154_51);
+                        input.seek(index155_51);
                         if ( s>=0 ) return s;
                         break;
                     case 18 : 
-                        int LA154_52 = input.LA(1);
+                        int LA155_52 = input.LA(1);
 
                          
-                        int index154_52 = input.index();
+                        int index155_52 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred237_Java()) ) {s = 2;}
+                        if ( (synpred238_Java()) ) {s = 2;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index154_52);
+                        input.seek(index155_52);
                         if ( s>=0 ) return s;
                         break;
                     case 19 : 
-                        int LA154_53 = input.LA(1);
+                        int LA155_53 = input.LA(1);
 
                          
-                        int index154_53 = input.index();
+                        int index155_53 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred237_Java()) ) {s = 2;}
+                        if ( (synpred238_Java()) ) {s = 2;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index154_53);
+                        input.seek(index155_53);
                         if ( s>=0 ) return s;
                         break;
                     case 20 : 
-                        int LA154_55 = input.LA(1);
+                        int LA155_55 = input.LA(1);
 
                          
-                        int index154_55 = input.index();
+                        int index155_55 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred237_Java()) ) {s = 2;}
+                        if ( (synpred238_Java()) ) {s = 2;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index154_55);
+                        input.seek(index155_55);
                         if ( s>=0 ) return s;
                         break;
                     case 21 : 
-                        int LA154_56 = input.LA(1);
+                        int LA155_56 = input.LA(1);
 
                          
-                        int index154_56 = input.index();
+                        int index155_56 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred237_Java()) ) {s = 2;}
+                        if ( (synpred238_Java()) ) {s = 2;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index154_56);
+                        input.seek(index155_56);
                         if ( s>=0 ) return s;
                         break;
                     case 22 : 
-                        int LA154_57 = input.LA(1);
+                        int LA155_57 = input.LA(1);
 
                          
-                        int index154_57 = input.index();
+                        int index155_57 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred237_Java()) ) {s = 2;}
+                        if ( (synpred238_Java()) ) {s = 2;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index154_57);
+                        input.seek(index155_57);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 154, _s, input);
+                new NoViableAltException(getDescription(), 155, _s, input);
             error(nvae);
             throw nvae;
         }
     }
-    static final String DFA155_eotS =
+    static final String DFA156_eotS =
         "\50\uffff";
-    static final String DFA155_eofS =
+    static final String DFA156_eofS =
         "\1\1\47\uffff";
-    static final String DFA155_minS =
+    static final String DFA156_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 =
+    static final String DFA156_maxS =
+        "\1\160\2\uffff\1\164\41\uffff\1\0\2\uffff";
+    static final String DFA156_acceptS =
         "\1\uffff\1\2\45\uffff\1\1";
-    static final String DFA155_specialS =
+    static final String DFA156_specialS =
         "\45\uffff\1\0\2\uffff}>";
-    static final String[] DFA155_transitionS = {
+    static final String[] DFA156_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"+
+            "\uffff\1\1\22\uffff\1\1\1\uffff\2\1\7\uffff\1\1\21\uffff\25"+
             "\1",
             "",
             "",
-            "\1\45\31\uffff\1\1\2\uffff\1\1\36\uffff\1\1\61\uffff\2\1",
+            "\1\45\31\uffff\1\1\2\uffff\1\1\36\uffff\1\1\62\uffff\2\1",
             "",
             "",
             "",
@@ -19069,89 +19120,89 @@
             ""
     };
 
-    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 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 = DFA155_transitionS.length;
-        DFA155_transition = new short[numStates][];
+        int numStates = DFA156_transitionS.length;
+        DFA156_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA155_transition[i] = DFA.unpackEncodedString(DFA155_transitionS[i]);
+            DFA156_transition[i] = DFA.unpackEncodedString(DFA156_transitionS[i]);
         }
     }
 
-    class DFA155 extends DFA {
+    class DFA156 extends DFA {
 
-        public DFA155(BaseRecognizer recognizer) {
+        public DFA156(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;
+            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 "()* loopback of 902:126: ( '.' Identifier )*";
+            return "()* loopback of 911: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 LA156_37 = input.LA(1);
 
                          
-                        int index155_37 = input.index();
+                        int index156_37 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred242_Java()) ) {s = 39;}
+                        if ( (synpred243_Java()) ) {s = 39;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index155_37);
+                        input.seek(index156_37);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 155, _s, input);
+                new NoViableAltException(getDescription(), 156, _s, input);
             error(nvae);
             throw nvae;
         }
     }
-    static final String DFA156_eotS =
+    static final String DFA157_eotS =
         "\74\uffff";
-    static final String DFA156_eofS =
+    static final String DFA157_eofS =
         "\1\4\73\uffff";
-    static final String DFA156_minS =
+    static final String DFA157_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 =
+    static final String DFA157_maxS =
+        "\1\160\1\164\1\uffff\1\164\36\uffff\24\0\1\uffff\3\0\2\uffff";
+    static final String DFA157_acceptS =
         "\2\uffff\1\1\1\uffff\1\2\67\uffff";
-    static final String DFA156_specialS =
+    static final String DFA157_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 = {
+    static final String[] DFA157_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"+
+            "\4\1\uffff\1\4\22\uffff\1\4\1\uffff\1\2\1\4\7\uffff\1\4\21\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"+
+            "\2\60\44\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\4\31\uffff\1\2\2\uffff\1\2\36\uffff\1\70\62\uffff\1\67"+
             "\1\71",
             "",
             "",
@@ -19211,413 +19262,413 @@
             ""
     };
 
-    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 final short[] DFA157_eot = DFA.unpackEncodedString(DFA157_eotS);
+    static final short[] DFA157_eof = DFA.unpackEncodedString(DFA157_eofS);
+    static final char[] DFA157_min = DFA.unpackEncodedStringToUnsignedChars(DFA157_minS);
+    static final char[] DFA157_max = DFA.unpackEncodedStringToUnsignedChars(DFA157_maxS);
+    static final short[] DFA157_accept = DFA.unpackEncodedString(DFA157_acceptS);
+    static final short[] DFA157_special = DFA.unpackEncodedString(DFA157_specialS);
+    static final short[][] DFA157_transition;
 
     static {
-        int numStates = DFA156_transitionS.length;
-        DFA156_transition = new short[numStates][];
+        int numStates = DFA157_transitionS.length;
+        DFA157_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA156_transition[i] = DFA.unpackEncodedString(DFA156_transitionS[i]);
+            DFA157_transition[i] = DFA.unpackEncodedString(DFA157_transitionS[i]);
         }
     }
 
-    class DFA156 extends DFA {
+    class DFA157 extends DFA {
 
-        public DFA156(BaseRecognizer recognizer) {
+        public DFA157(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;
+            this.decisionNumber = 157;
+            this.eot = DFA157_eot;
+            this.eof = DFA157_eof;
+            this.min = DFA157_min;
+            this.max = DFA157_max;
+            this.accept = DFA157_accept;
+            this.special = DFA157_special;
+            this.transition = DFA157_transition;
         }
         public String getDescription() {
-            return "902:144: ( identifierSuffix )?";
+            return "911: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 LA157_34 = input.LA(1);
 
                          
-                        int index156_34 = input.index();
+                        int index157_34 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred243_Java()) ) {s = 2;}
+                        if ( (synpred244_Java()) ) {s = 2;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index156_34);
+                        input.seek(index157_34);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA156_35 = input.LA(1);
+                        int LA157_35 = input.LA(1);
 
                          
-                        int index156_35 = input.index();
+                        int index157_35 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred243_Java()) ) {s = 2;}
+                        if ( (synpred244_Java()) ) {s = 2;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index156_35);
+                        input.seek(index157_35);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA156_36 = input.LA(1);
+                        int LA157_36 = input.LA(1);
 
                          
-                        int index156_36 = input.index();
+                        int index157_36 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred243_Java()) ) {s = 2;}
+                        if ( (synpred244_Java()) ) {s = 2;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index156_36);
+                        input.seek(index157_36);
                         if ( s>=0 ) return s;
                         break;
                     case 3 : 
-                        int LA156_37 = input.LA(1);
+                        int LA157_37 = input.LA(1);
 
                          
-                        int index156_37 = input.index();
+                        int index157_37 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred243_Java()) ) {s = 2;}
+                        if ( (synpred244_Java()) ) {s = 2;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index156_37);
+                        input.seek(index157_37);
                         if ( s>=0 ) return s;
                         break;
                     case 4 : 
-                        int LA156_38 = input.LA(1);
+                        int LA157_38 = input.LA(1);
 
                          
-                        int index156_38 = input.index();
+                        int index157_38 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred243_Java()) ) {s = 2;}
+                        if ( (synpred244_Java()) ) {s = 2;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index156_38);
+                        input.seek(index157_38);
                         if ( s>=0 ) return s;
                         break;
                     case 5 : 
-                        int LA156_39 = input.LA(1);
+                        int LA157_39 = input.LA(1);
 
                          
-                        int index156_39 = input.index();
+                        int index157_39 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred243_Java()) ) {s = 2;}
+                        if ( (synpred244_Java()) ) {s = 2;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index156_39);
+                        input.seek(index157_39);
                         if ( s>=0 ) return s;
                         break;
                     case 6 : 
-                        int LA156_40 = input.LA(1);
+                        int LA157_40 = input.LA(1);
 
                          
-                        int index156_40 = input.index();
+                        int index157_40 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred243_Java()) ) {s = 2;}
+                        if ( (synpred244_Java()) ) {s = 2;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index156_40);
+                        input.seek(index157_40);
                         if ( s>=0 ) return s;
                         break;
                     case 7 : 
-                        int LA156_41 = input.LA(1);
+                        int LA157_41 = input.LA(1);
 
                          
-                        int index156_41 = input.index();
+                        int index157_41 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred243_Java()) ) {s = 2;}
+                        if ( (synpred244_Java()) ) {s = 2;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index156_41);
+                        input.seek(index157_41);
                         if ( s>=0 ) return s;
                         break;
                     case 8 : 
-                        int LA156_42 = input.LA(1);
+                        int LA157_42 = input.LA(1);
 
                          
-                        int index156_42 = input.index();
+                        int index157_42 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred243_Java()) ) {s = 2;}
+                        if ( (synpred244_Java()) ) {s = 2;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index156_42);
+                        input.seek(index157_42);
                         if ( s>=0 ) return s;
                         break;
                     case 9 : 
-                        int LA156_43 = input.LA(1);
+                        int LA157_43 = input.LA(1);
 
                          
-                        int index156_43 = input.index();
+                        int index157_43 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred243_Java()) ) {s = 2;}
+                        if ( (synpred244_Java()) ) {s = 2;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index156_43);
+                        input.seek(index157_43);
                         if ( s>=0 ) return s;
                         break;
                     case 10 : 
-                        int LA156_44 = input.LA(1);
+                        int LA157_44 = input.LA(1);
 
                          
-                        int index156_44 = input.index();
+                        int index157_44 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred243_Java()) ) {s = 2;}
+                        if ( (synpred244_Java()) ) {s = 2;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index156_44);
+                        input.seek(index157_44);
                         if ( s>=0 ) return s;
                         break;
                     case 11 : 
-                        int LA156_45 = input.LA(1);
+                        int LA157_45 = input.LA(1);
 
                          
-                        int index156_45 = input.index();
+                        int index157_45 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred243_Java()) ) {s = 2;}
+                        if ( (synpred244_Java()) ) {s = 2;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index156_45);
+                        input.seek(index157_45);
                         if ( s>=0 ) return s;
                         break;
                     case 12 : 
-                        int LA156_46 = input.LA(1);
+                        int LA157_46 = input.LA(1);
 
                          
-                        int index156_46 = input.index();
+                        int index157_46 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred243_Java()) ) {s = 2;}
+                        if ( (synpred244_Java()) ) {s = 2;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index156_46);
+                        input.seek(index157_46);
                         if ( s>=0 ) return s;
                         break;
                     case 13 : 
-                        int LA156_47 = input.LA(1);
+                        int LA157_47 = input.LA(1);
 
                          
-                        int index156_47 = input.index();
+                        int index157_47 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred243_Java()) ) {s = 2;}
+                        if ( (synpred244_Java()) ) {s = 2;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index156_47);
+                        input.seek(index157_47);
                         if ( s>=0 ) return s;
                         break;
                     case 14 : 
-                        int LA156_48 = input.LA(1);
+                        int LA157_48 = input.LA(1);
 
                          
-                        int index156_48 = input.index();
+                        int index157_48 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred243_Java()) ) {s = 2;}
+                        if ( (synpred244_Java()) ) {s = 2;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index156_48);
+                        input.seek(index157_48);
                         if ( s>=0 ) return s;
                         break;
                     case 15 : 
-                        int LA156_49 = input.LA(1);
+                        int LA157_49 = input.LA(1);
 
                          
-                        int index156_49 = input.index();
+                        int index157_49 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred243_Java()) ) {s = 2;}
+                        if ( (synpred244_Java()) ) {s = 2;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index156_49);
+                        input.seek(index157_49);
                         if ( s>=0 ) return s;
                         break;
                     case 16 : 
-                        int LA156_50 = input.LA(1);
+                        int LA157_50 = input.LA(1);
 
                          
-                        int index156_50 = input.index();
+                        int index157_50 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred243_Java()) ) {s = 2;}
+                        if ( (synpred244_Java()) ) {s = 2;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index156_50);
+                        input.seek(index157_50);
                         if ( s>=0 ) return s;
                         break;
                     case 17 : 
-                        int LA156_51 = input.LA(1);
+                        int LA157_51 = input.LA(1);
 
                          
-                        int index156_51 = input.index();
+                        int index157_51 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred243_Java()) ) {s = 2;}
+                        if ( (synpred244_Java()) ) {s = 2;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index156_51);
+                        input.seek(index157_51);
                         if ( s>=0 ) return s;
                         break;
                     case 18 : 
-                        int LA156_52 = input.LA(1);
+                        int LA157_52 = input.LA(1);
 
                          
-                        int index156_52 = input.index();
+                        int index157_52 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred243_Java()) ) {s = 2;}
+                        if ( (synpred244_Java()) ) {s = 2;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index156_52);
+                        input.seek(index157_52);
                         if ( s>=0 ) return s;
                         break;
                     case 19 : 
-                        int LA156_53 = input.LA(1);
+                        int LA157_53 = input.LA(1);
 
                          
-                        int index156_53 = input.index();
+                        int index157_53 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred243_Java()) ) {s = 2;}
+                        if ( (synpred244_Java()) ) {s = 2;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index156_53);
+                        input.seek(index157_53);
                         if ( s>=0 ) return s;
                         break;
                     case 20 : 
-                        int LA156_55 = input.LA(1);
+                        int LA157_55 = input.LA(1);
 
                          
-                        int index156_55 = input.index();
+                        int index157_55 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred243_Java()) ) {s = 2;}
+                        if ( (synpred244_Java()) ) {s = 2;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index156_55);
+                        input.seek(index157_55);
                         if ( s>=0 ) return s;
                         break;
                     case 21 : 
-                        int LA156_56 = input.LA(1);
+                        int LA157_56 = input.LA(1);
 
                          
-                        int index156_56 = input.index();
+                        int index157_56 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred243_Java()) ) {s = 2;}
+                        if ( (synpred244_Java()) ) {s = 2;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index156_56);
+                        input.seek(index157_56);
                         if ( s>=0 ) return s;
                         break;
                     case 22 : 
-                        int LA156_57 = input.LA(1);
+                        int LA157_57 = input.LA(1);
 
                          
-                        int index156_57 = input.index();
+                        int index157_57 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred243_Java()) ) {s = 2;}
+                        if ( (synpred244_Java()) ) {s = 2;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index156_57);
+                        input.seek(index157_57);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 156, _s, input);
+                new NoViableAltException(getDescription(), 157, _s, input);
             error(nvae);
             throw nvae;
         }
     }
-    static final String DFA162_eotS =
+    static final String DFA163_eotS =
         "\36\uffff";
-    static final String DFA162_eofS =
+    static final String DFA163_eofS =
         "\36\uffff";
-    static final String DFA162_minS =
+    static final String DFA163_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 =
+    static final String DFA163_maxS =
+        "\1\101\1\164\1\uffff\1\164\32\uffff";
+    static final String DFA163_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 =
+    static final String DFA163_specialS =
         "\36\uffff}>";
-    static final String[] DFA162_transitionS = {
+    static final String[] DFA163_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",
+            "\10\5\1\uffff\2\5\2\uffff\3\5\44\uffff\2\5\2\uffff\6\5",
             "",
-            "\1\31\2\uffff\1\35\36\uffff\1\33\61\uffff\1\32\1\34",
+            "\1\31\2\uffff\1\35\36\uffff\1\33\62\uffff\1\32\1\34",
             "",
             "",
             "",
@@ -19646,55 +19697,55 @@
             ""
     };
 
-    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 final short[] DFA163_eot = DFA.unpackEncodedString(DFA163_eotS);
+    static final short[] DFA163_eof = DFA.unpackEncodedString(DFA163_eofS);
+    static final char[] DFA163_min = DFA.unpackEncodedStringToUnsignedChars(DFA163_minS);
+    static final char[] DFA163_max = DFA.unpackEncodedStringToUnsignedChars(DFA163_maxS);
+    static final short[] DFA163_accept = DFA.unpackEncodedString(DFA163_acceptS);
+    static final short[] DFA163_special = DFA.unpackEncodedString(DFA163_specialS);
+    static final short[][] DFA163_transition;
 
     static {
-        int numStates = DFA162_transitionS.length;
-        DFA162_transition = new short[numStates][];
+        int numStates = DFA163_transitionS.length;
+        DFA163_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA162_transition[i] = DFA.unpackEncodedString(DFA162_transitionS[i]);
+            DFA163_transition[i] = DFA.unpackEncodedString(DFA163_transitionS[i]);
         }
     }
 
-    class DFA162 extends DFA {
+    class DFA163 extends DFA {
 
-        public DFA162(BaseRecognizer recognizer) {
+        public DFA163(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;
+            this.decisionNumber = 163;
+            this.eot = DFA163_eot;
+            this.eof = DFA163_eof;
+            this.min = DFA163_min;
+            this.max = DFA163_max;
+            this.accept = DFA163_accept;
+            this.special = DFA163_special;
+            this.transition = DFA163_transition;
         }
         public String getDescription() {
-            return "907:1: identifierSuffix : ( ( '[' ']' )+ '.' 'class' | ( '[' expression ']' )+ | arguments | '.' 'class' | '.' explicitGenericInvocation | '.' 'this' | '.' 'super' arguments | '.' 'new' ( nonWildcardTypeArguments )? innerCreator );";
+            return "916:1: identifierSuffix : ( ( '[' ']' )+ '.' 'class' | ( '[' expression ']' )+ | arguments | '.' 'class' | '.' explicitGenericInvocation | '.' 'this' | '.' 'super' arguments | '.' 'new' ( nonWildcardTypeArguments )? innerCreator );";
         }
     }
-    static final String DFA160_eotS =
+    static final String DFA161_eotS =
         "\65\uffff";
-    static final String DFA160_eofS =
+    static final String DFA161_eofS =
         "\1\1\64\uffff";
-    static final String DFA160_minS =
+    static final String DFA161_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 =
+    static final String DFA161_maxS =
+        "\1\160\35\uffff\1\164\1\uffff\24\0\1\uffff";
+    static final String DFA161_acceptS =
         "\1\uffff\1\2\62\uffff\1\1";
-    static final String DFA160_specialS =
+    static final String DFA161_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 = {
+    static final String[] DFA161_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"+
+            "\uffff\1\1\22\uffff\1\1\2\uffff\1\1\7\uffff\1\1\21\uffff\25"+
             "\1",
             "",
             "",
@@ -19726,7 +19777,7 @@
             "",
             "",
             "\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"+
+            "\63\16\uffff\10\62\1\uffff\1\51\1\46\2\uffff\1\57\2\56\44\uffff"+
             "\1\40\1\41\2\uffff\1\42\1\43\1\44\1\45\1\50\1\60",
             "",
             "\1\uffff",
@@ -19752,365 +19803,365 @@
             ""
     };
 
-    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 final short[] DFA161_eot = DFA.unpackEncodedString(DFA161_eotS);
+    static final short[] DFA161_eof = DFA.unpackEncodedString(DFA161_eofS);
+    static final char[] DFA161_min = DFA.unpackEncodedStringToUnsignedChars(DFA161_minS);
+    static final char[] DFA161_max = DFA.unpackEncodedStringToUnsignedChars(DFA161_maxS);
+    static final short[] DFA161_accept = DFA.unpackEncodedString(DFA161_acceptS);
+    static final short[] DFA161_special = DFA.unpackEncodedString(DFA161_specialS);
+    static final short[][] DFA161_transition;
 
     static {
-        int numStates = DFA160_transitionS.length;
-        DFA160_transition = new short[numStates][];
+        int numStates = DFA161_transitionS.length;
+        DFA161_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA160_transition[i] = DFA.unpackEncodedString(DFA160_transitionS[i]);
+            DFA161_transition[i] = DFA.unpackEncodedString(DFA161_transitionS[i]);
         }
     }
 
-    class DFA160 extends DFA {
+    class DFA161 extends DFA {
 
-        public DFA160(BaseRecognizer recognizer) {
+        public DFA161(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;
+            this.decisionNumber = 161;
+            this.eot = DFA161_eot;
+            this.eof = DFA161_eof;
+            this.min = DFA161_min;
+            this.max = DFA161_max;
+            this.accept = DFA161_accept;
+            this.special = DFA161_special;
+            this.transition = DFA161_transition;
         }
         public String getDescription() {
-            return "()+ loopback of 909:4: ( '[' expression ']' )+";
+            return "()+ loopback of 918: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 LA161_32 = input.LA(1);
 
                          
-                        int index160_32 = input.index();
+                        int index161_32 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred249_Java()) ) {s = 52;}
+                        if ( (synpred250_Java()) ) {s = 52;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index160_32);
+                        input.seek(index161_32);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA160_33 = input.LA(1);
+                        int LA161_33 = input.LA(1);
 
                          
-                        int index160_33 = input.index();
+                        int index161_33 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred249_Java()) ) {s = 52;}
+                        if ( (synpred250_Java()) ) {s = 52;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index160_33);
+                        input.seek(index161_33);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA160_34 = input.LA(1);
+                        int LA161_34 = input.LA(1);
 
                          
-                        int index160_34 = input.index();
+                        int index161_34 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred249_Java()) ) {s = 52;}
+                        if ( (synpred250_Java()) ) {s = 52;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index160_34);
+                        input.seek(index161_34);
                         if ( s>=0 ) return s;
                         break;
                     case 3 : 
-                        int LA160_35 = input.LA(1);
+                        int LA161_35 = input.LA(1);
 
                          
-                        int index160_35 = input.index();
+                        int index161_35 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred249_Java()) ) {s = 52;}
+                        if ( (synpred250_Java()) ) {s = 52;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index160_35);
+                        input.seek(index161_35);
                         if ( s>=0 ) return s;
                         break;
                     case 4 : 
-                        int LA160_36 = input.LA(1);
+                        int LA161_36 = input.LA(1);
 
                          
-                        int index160_36 = input.index();
+                        int index161_36 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred249_Java()) ) {s = 52;}
+                        if ( (synpred250_Java()) ) {s = 52;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index160_36);
+                        input.seek(index161_36);
                         if ( s>=0 ) return s;
                         break;
                     case 5 : 
-                        int LA160_37 = input.LA(1);
+                        int LA161_37 = input.LA(1);
 
                          
-                        int index160_37 = input.index();
+                        int index161_37 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred249_Java()) ) {s = 52;}
+                        if ( (synpred250_Java()) ) {s = 52;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index160_37);
+                        input.seek(index161_37);
                         if ( s>=0 ) return s;
                         break;
                     case 6 : 
-                        int LA160_38 = input.LA(1);
+                        int LA161_38 = input.LA(1);
 
                          
-                        int index160_38 = input.index();
+                        int index161_38 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred249_Java()) ) {s = 52;}
+                        if ( (synpred250_Java()) ) {s = 52;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index160_38);
+                        input.seek(index161_38);
                         if ( s>=0 ) return s;
                         break;
                     case 7 : 
-                        int LA160_39 = input.LA(1);
+                        int LA161_39 = input.LA(1);
 
                          
-                        int index160_39 = input.index();
+                        int index161_39 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred249_Java()) ) {s = 52;}
+                        if ( (synpred250_Java()) ) {s = 52;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index160_39);
+                        input.seek(index161_39);
                         if ( s>=0 ) return s;
                         break;
                     case 8 : 
-                        int LA160_40 = input.LA(1);
+                        int LA161_40 = input.LA(1);
 
                          
-                        int index160_40 = input.index();
+                        int index161_40 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred249_Java()) ) {s = 52;}
+                        if ( (synpred250_Java()) ) {s = 52;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index160_40);
+                        input.seek(index161_40);
                         if ( s>=0 ) return s;
                         break;
                     case 9 : 
-                        int LA160_41 = input.LA(1);
+                        int LA161_41 = input.LA(1);
 
                          
-                        int index160_41 = input.index();
+                        int index161_41 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred249_Java()) ) {s = 52;}
+                        if ( (synpred250_Java()) ) {s = 52;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index160_41);
+                        input.seek(index161_41);
                         if ( s>=0 ) return s;
                         break;
                     case 10 : 
-                        int LA160_42 = input.LA(1);
+                        int LA161_42 = input.LA(1);
 
                          
-                        int index160_42 = input.index();
+                        int index161_42 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred249_Java()) ) {s = 52;}
+                        if ( (synpred250_Java()) ) {s = 52;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index160_42);
+                        input.seek(index161_42);
                         if ( s>=0 ) return s;
                         break;
                     case 11 : 
-                        int LA160_43 = input.LA(1);
+                        int LA161_43 = input.LA(1);
 
                          
-                        int index160_43 = input.index();
+                        int index161_43 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred249_Java()) ) {s = 52;}
+                        if ( (synpred250_Java()) ) {s = 52;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index160_43);
+                        input.seek(index161_43);
                         if ( s>=0 ) return s;
                         break;
                     case 12 : 
-                        int LA160_44 = input.LA(1);
+                        int LA161_44 = input.LA(1);
 
                          
-                        int index160_44 = input.index();
+                        int index161_44 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred249_Java()) ) {s = 52;}
+                        if ( (synpred250_Java()) ) {s = 52;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index160_44);
+                        input.seek(index161_44);
                         if ( s>=0 ) return s;
                         break;
                     case 13 : 
-                        int LA160_45 = input.LA(1);
+                        int LA161_45 = input.LA(1);
 
                          
-                        int index160_45 = input.index();
+                        int index161_45 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred249_Java()) ) {s = 52;}
+                        if ( (synpred250_Java()) ) {s = 52;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index160_45);
+                        input.seek(index161_45);
                         if ( s>=0 ) return s;
                         break;
                     case 14 : 
-                        int LA160_46 = input.LA(1);
+                        int LA161_46 = input.LA(1);
 
                          
-                        int index160_46 = input.index();
+                        int index161_46 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred249_Java()) ) {s = 52;}
+                        if ( (synpred250_Java()) ) {s = 52;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index160_46);
+                        input.seek(index161_46);
                         if ( s>=0 ) return s;
                         break;
                     case 15 : 
-                        int LA160_47 = input.LA(1);
+                        int LA161_47 = input.LA(1);
 
                          
-                        int index160_47 = input.index();
+                        int index161_47 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred249_Java()) ) {s = 52;}
+                        if ( (synpred250_Java()) ) {s = 52;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index160_47);
+                        input.seek(index161_47);
                         if ( s>=0 ) return s;
                         break;
                     case 16 : 
-                        int LA160_48 = input.LA(1);
+                        int LA161_48 = input.LA(1);
 
                          
-                        int index160_48 = input.index();
+                        int index161_48 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred249_Java()) ) {s = 52;}
+                        if ( (synpred250_Java()) ) {s = 52;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index160_48);
+                        input.seek(index161_48);
                         if ( s>=0 ) return s;
                         break;
                     case 17 : 
-                        int LA160_49 = input.LA(1);
+                        int LA161_49 = input.LA(1);
 
                          
-                        int index160_49 = input.index();
+                        int index161_49 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred249_Java()) ) {s = 52;}
+                        if ( (synpred250_Java()) ) {s = 52;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index160_49);
+                        input.seek(index161_49);
                         if ( s>=0 ) return s;
                         break;
                     case 18 : 
-                        int LA160_50 = input.LA(1);
+                        int LA161_50 = input.LA(1);
 
                          
-                        int index160_50 = input.index();
+                        int index161_50 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred249_Java()) ) {s = 52;}
+                        if ( (synpred250_Java()) ) {s = 52;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index160_50);
+                        input.seek(index161_50);
                         if ( s>=0 ) return s;
                         break;
                     case 19 : 
-                        int LA160_51 = input.LA(1);
+                        int LA161_51 = input.LA(1);
 
                          
-                        int index160_51 = input.index();
+                        int index161_51 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred249_Java()) ) {s = 52;}
+                        if ( (synpred250_Java()) ) {s = 52;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index160_51);
+                        input.seek(index161_51);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 160, _s, input);
+                new NoViableAltException(getDescription(), 161, _s, input);
             error(nvae);
             throw nvae;
         }
     }
-    static final String DFA172_eotS =
+    static final String DFA173_eotS =
         "\26\uffff";
-    static final String DFA172_eofS =
+    static final String DFA173_eofS =
         "\26\uffff";
-    static final String DFA172_minS =
+    static final String DFA173_minS =
         "\1\4\25\uffff";
-    static final String DFA172_maxS =
-        "\1\163\25\uffff";
-    static final String DFA172_acceptS =
+    static final String DFA173_maxS =
+        "\1\164\25\uffff";
+    static final String DFA173_acceptS =
         "\1\uffff\1\1\1\2\23\uffff";
-    static final String DFA172_specialS =
+    static final String DFA173_specialS =
         "\26\uffff}>";
-    static final String[] DFA172_transitionS = {
+    static final String[] DFA173_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",
+            "\10\2\1\uffff\2\2\2\uffff\3\2\44\uffff\2\2\2\uffff\6\2",
             "",
             "",
             "",
@@ -20134,59 +20185,59 @@
             ""
     };
 
-    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 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 = DFA172_transitionS.length;
-        DFA172_transition = new short[numStates][];
+        int numStates = DFA173_transitionS.length;
+        DFA173_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA172_transition[i] = DFA.unpackEncodedString(DFA172_transitionS[i]);
+            DFA173_transition[i] = DFA.unpackEncodedString(DFA173_transitionS[i]);
         }
     }
 
-    class DFA172 extends DFA {
+    class DFA173 extends DFA {
 
-        public DFA172(BaseRecognizer recognizer) {
+        public DFA173(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;
+            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 "935:9: ( ']' ( '[' ']' )* arrayInitializer | expression ']' ( '[' expression ']' )* ( '[' ']' )* )";
+            return "944:9: ( ']' ( '[' ']' )* arrayInitializer | expression ']' ( '[' expression ']' )* ( '[' ']' )* )";
         }
     }
-    static final String DFA170_eotS =
+    static final String DFA171_eotS =
         "\66\uffff";
-    static final String DFA170_eofS =
+    static final String DFA171_eofS =
         "\1\2\65\uffff";
-    static final String DFA170_minS =
+    static final String DFA171_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 =
+    static final String DFA171_maxS =
+        "\1\160\1\164\37\uffff\24\0\1\uffff";
+    static final String DFA171_acceptS =
         "\2\uffff\1\2\62\uffff\1\1";
-    static final String DFA170_specialS =
+    static final String DFA171_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 = {
+    static final String[] DFA171_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"+
+            "\uffff\1\2\22\uffff\1\2\2\uffff\1\2\7\uffff\1\2\21\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"+
+            "\2\57\44\uffff\1\41\1\42\2\uffff\1\43\1\44\1\45\1\46\1\51\1"+
             "\61",
             "",
             "",
@@ -20242,365 +20293,365 @@
             ""
     };
 
-    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 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 = DFA170_transitionS.length;
-        DFA170_transition = new short[numStates][];
+        int numStates = DFA171_transitionS.length;
+        DFA171_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA170_transition[i] = DFA.unpackEncodedString(DFA170_transitionS[i]);
+            DFA171_transition[i] = DFA.unpackEncodedString(DFA171_transitionS[i]);
         }
     }
 
-    class DFA170 extends DFA {
+    class DFA171 extends DFA {
 
-        public DFA170(BaseRecognizer recognizer) {
+        public DFA171(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;
+            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:28: ( '[' expression ']' )*";
+            return "()* loopback of 945: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 LA171_33 = input.LA(1);
 
                          
-                        int index170_33 = input.index();
+                        int index171_33 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred265_Java()) ) {s = 53;}
+                        if ( (synpred266_Java()) ) {s = 53;}
 
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index170_33);
+                        input.seek(index171_33);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA170_34 = input.LA(1);
+                        int LA171_34 = input.LA(1);
 
                          
-                        int index170_34 = input.index();
+                        int index171_34 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred265_Java()) ) {s = 53;}
+                        if ( (synpred266_Java()) ) {s = 53;}
 
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index170_34);
+                        input.seek(index171_34);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA170_35 = input.LA(1);
+                        int LA171_35 = input.LA(1);
 
                          
-                        int index170_35 = input.index();
+                        int index171_35 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred265_Java()) ) {s = 53;}
+                        if ( (synpred266_Java()) ) {s = 53;}
 
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index170_35);
+                        input.seek(index171_35);
                         if ( s>=0 ) return s;
                         break;
                     case 3 : 
-                        int LA170_36 = input.LA(1);
+                        int LA171_36 = input.LA(1);
 
                          
-                        int index170_36 = input.index();
+                        int index171_36 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred265_Java()) ) {s = 53;}
+                        if ( (synpred266_Java()) ) {s = 53;}
 
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index170_36);
+                        input.seek(index171_36);
                         if ( s>=0 ) return s;
                         break;
                     case 4 : 
-                        int LA170_37 = input.LA(1);
+                        int LA171_37 = input.LA(1);
 
                          
-                        int index170_37 = input.index();
+                        int index171_37 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred265_Java()) ) {s = 53;}
+                        if ( (synpred266_Java()) ) {s = 53;}
 
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index170_37);
+                        input.seek(index171_37);
                         if ( s>=0 ) return s;
                         break;
                     case 5 : 
-                        int LA170_38 = input.LA(1);
+                        int LA171_38 = input.LA(1);
 
                          
-                        int index170_38 = input.index();
+                        int index171_38 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred265_Java()) ) {s = 53;}
+                        if ( (synpred266_Java()) ) {s = 53;}
 
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index170_38);
+                        input.seek(index171_38);
                         if ( s>=0 ) return s;
                         break;
                     case 6 : 
-                        int LA170_39 = input.LA(1);
+                        int LA171_39 = input.LA(1);
 
                          
-                        int index170_39 = input.index();
+                        int index171_39 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred265_Java()) ) {s = 53;}
+                        if ( (synpred266_Java()) ) {s = 53;}
 
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index170_39);
+                        input.seek(index171_39);
                         if ( s>=0 ) return s;
                         break;
                     case 7 : 
-                        int LA170_40 = input.LA(1);
+                        int LA171_40 = input.LA(1);
 
                          
-                        int index170_40 = input.index();
+                        int index171_40 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred265_Java()) ) {s = 53;}
+                        if ( (synpred266_Java()) ) {s = 53;}
 
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index170_40);
+                        input.seek(index171_40);
                         if ( s>=0 ) return s;
                         break;
                     case 8 : 
-                        int LA170_41 = input.LA(1);
+                        int LA171_41 = input.LA(1);
 
                          
-                        int index170_41 = input.index();
+                        int index171_41 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred265_Java()) ) {s = 53;}
+                        if ( (synpred266_Java()) ) {s = 53;}
 
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index170_41);
+                        input.seek(index171_41);
                         if ( s>=0 ) return s;
                         break;
                     case 9 : 
-                        int LA170_42 = input.LA(1);
+                        int LA171_42 = input.LA(1);
 
                          
-                        int index170_42 = input.index();
+                        int index171_42 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred265_Java()) ) {s = 53;}
+                        if ( (synpred266_Java()) ) {s = 53;}
 
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index170_42);
+                        input.seek(index171_42);
                         if ( s>=0 ) return s;
                         break;
                     case 10 : 
-                        int LA170_43 = input.LA(1);
+                        int LA171_43 = input.LA(1);
 
                          
-                        int index170_43 = input.index();
+                        int index171_43 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred265_Java()) ) {s = 53;}
+                        if ( (synpred266_Java()) ) {s = 53;}
 
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index170_43);
+                        input.seek(index171_43);
                         if ( s>=0 ) return s;
                         break;
                     case 11 : 
-                        int LA170_44 = input.LA(1);
+                        int LA171_44 = input.LA(1);
 
                          
-                        int index170_44 = input.index();
+                        int index171_44 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred265_Java()) ) {s = 53;}
+                        if ( (synpred266_Java()) ) {s = 53;}
 
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index170_44);
+                        input.seek(index171_44);
                         if ( s>=0 ) return s;
                         break;
                     case 12 : 
-                        int LA170_45 = input.LA(1);
+                        int LA171_45 = input.LA(1);
 
                          
-                        int index170_45 = input.index();
+                        int index171_45 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred265_Java()) ) {s = 53;}
+                        if ( (synpred266_Java()) ) {s = 53;}
 
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index170_45);
+                        input.seek(index171_45);
                         if ( s>=0 ) return s;
                         break;
                     case 13 : 
-                        int LA170_46 = input.LA(1);
+                        int LA171_46 = input.LA(1);
 
                          
-                        int index170_46 = input.index();
+                        int index171_46 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred265_Java()) ) {s = 53;}
+                        if ( (synpred266_Java()) ) {s = 53;}
 
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index170_46);
+                        input.seek(index171_46);
                         if ( s>=0 ) return s;
                         break;
                     case 14 : 
-                        int LA170_47 = input.LA(1);
+                        int LA171_47 = input.LA(1);
 
                          
-                        int index170_47 = input.index();
+                        int index171_47 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred265_Java()) ) {s = 53;}
+                        if ( (synpred266_Java()) ) {s = 53;}
 
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index170_47);
+                        input.seek(index171_47);
                         if ( s>=0 ) return s;
                         break;
                     case 15 : 
-                        int LA170_48 = input.LA(1);
+                        int LA171_48 = input.LA(1);
 
                          
-                        int index170_48 = input.index();
+                        int index171_48 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred265_Java()) ) {s = 53;}
+                        if ( (synpred266_Java()) ) {s = 53;}
 
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index170_48);
+                        input.seek(index171_48);
                         if ( s>=0 ) return s;
                         break;
                     case 16 : 
-                        int LA170_49 = input.LA(1);
+                        int LA171_49 = input.LA(1);
 
                          
-                        int index170_49 = input.index();
+                        int index171_49 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred265_Java()) ) {s = 53;}
+                        if ( (synpred266_Java()) ) {s = 53;}
 
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index170_49);
+                        input.seek(index171_49);
                         if ( s>=0 ) return s;
                         break;
                     case 17 : 
-                        int LA170_50 = input.LA(1);
+                        int LA171_50 = input.LA(1);
 
                          
-                        int index170_50 = input.index();
+                        int index171_50 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred265_Java()) ) {s = 53;}
+                        if ( (synpred266_Java()) ) {s = 53;}
 
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index170_50);
+                        input.seek(index171_50);
                         if ( s>=0 ) return s;
                         break;
                     case 18 : 
-                        int LA170_51 = input.LA(1);
+                        int LA171_51 = input.LA(1);
 
                          
-                        int index170_51 = input.index();
+                        int index171_51 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred265_Java()) ) {s = 53;}
+                        if ( (synpred266_Java()) ) {s = 53;}
 
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index170_51);
+                        input.seek(index171_51);
                         if ( s>=0 ) return s;
                         break;
                     case 19 : 
-                        int LA170_52 = input.LA(1);
+                        int LA171_52 = input.LA(1);
 
                          
-                        int index170_52 = input.index();
+                        int index171_52 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred265_Java()) ) {s = 53;}
+                        if ( (synpred266_Java()) ) {s = 53;}
 
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index170_52);
+                        input.seek(index171_52);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 170, _s, input);
+                new NoViableAltException(getDescription(), 171, _s, input);
             error(nvae);
             throw nvae;
         }
     }
-    static final String DFA171_eotS =
+    static final String DFA172_eotS =
         "\65\uffff";
-    static final String DFA171_eofS =
+    static final String DFA172_eofS =
         "\1\1\64\uffff";
-    static final String DFA171_minS =
+    static final String DFA172_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 =
+    static final String DFA172_maxS =
+        "\1\160\35\uffff\1\164\26\uffff";
+    static final String DFA172_acceptS =
         "\1\uffff\1\2\36\uffff\1\1\24\uffff";
-    static final String DFA171_specialS =
+    static final String DFA172_specialS =
         "\65\uffff}>";
-    static final String[] DFA171_transitionS = {
+    static final String[] DFA172_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"+
+            "\uffff\1\1\22\uffff\1\1\2\uffff\1\1\7\uffff\1\1\21\uffff\25"+
             "\1",
             "",
             "",
@@ -20632,7 +20683,7 @@
             "",
             "",
             "\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",
+            "\uffff\10\1\1\uffff\2\1\2\uffff\3\1\44\uffff\2\1\2\uffff\6\1",
             "",
             "",
             "",
@@ -20657,54 +20708,54 @@
             ""
     };
 
-    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 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 = DFA171_transitionS.length;
-        DFA171_transition = new short[numStates][];
+        int numStates = DFA172_transitionS.length;
+        DFA172_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA171_transition[i] = DFA.unpackEncodedString(DFA171_transitionS[i]);
+            DFA172_transition[i] = DFA.unpackEncodedString(DFA172_transitionS[i]);
         }
     }
 
-    class DFA171 extends DFA {
+    class DFA172 extends DFA {
 
-        public DFA171(BaseRecognizer recognizer) {
+        public DFA172(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;
+            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 "()* loopback of 936:50: ( '[' ']' )*";
+            return "()* loopback of 945:50: ( '[' ']' )*";
         }
     }
-    static final String DFA173_eotS =
+    static final String DFA174_eotS =
         "\41\uffff";
-    static final String DFA173_eofS =
+    static final String DFA174_eofS =
         "\1\2\40\uffff";
-    static final String DFA173_minS =
+    static final String DFA174_minS =
         "\1\31\40\uffff";
-    static final String DFA173_maxS =
-        "\1\157\40\uffff";
-    static final String DFA173_acceptS =
+    static final String DFA174_maxS =
+        "\1\160\40\uffff";
+    static final String DFA174_acceptS =
         "\1\uffff\1\1\1\2\36\uffff";
-    static final String DFA173_specialS =
+    static final String DFA174_specialS =
         "\41\uffff}>";
-    static final String[] DFA173_transitionS = {
+    static final String[] DFA174_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",
+            "\2\22\uffff\1\2\2\uffff\1\2\7\uffff\1\2\21\uffff\25\2",
             "",
             "",
             "",
@@ -20739,54 +20790,54 @@
             ""
     };
 
-    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 final short[] DFA174_eot = DFA.unpackEncodedString(DFA174_eotS);
+    static final short[] DFA174_eof = DFA.unpackEncodedString(DFA174_eofS);
+    static final char[] DFA174_min = DFA.unpackEncodedStringToUnsignedChars(DFA174_minS);
+    static final char[] DFA174_max = DFA.unpackEncodedStringToUnsignedChars(DFA174_maxS);
+    static final short[] DFA174_accept = DFA.unpackEncodedString(DFA174_acceptS);
+    static final short[] DFA174_special = DFA.unpackEncodedString(DFA174_specialS);
+    static final short[][] DFA174_transition;
 
     static {
-        int numStates = DFA173_transitionS.length;
-        DFA173_transition = new short[numStates][];
+        int numStates = DFA174_transitionS.length;
+        DFA174_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA173_transition[i] = DFA.unpackEncodedString(DFA173_transitionS[i]);
+            DFA174_transition[i] = DFA.unpackEncodedString(DFA174_transitionS[i]);
         }
     }
 
-    class DFA173 extends DFA {
+    class DFA174 extends DFA {
 
-        public DFA173(BaseRecognizer recognizer) {
+        public DFA174(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;
+            this.decisionNumber = 174;
+            this.eot = DFA174_eot;
+            this.eof = DFA174_eof;
+            this.min = DFA174_min;
+            this.max = DFA174_max;
+            this.accept = DFA174_accept;
+            this.special = DFA174_special;
+            this.transition = DFA174_transition;
         }
         public String getDescription() {
-            return "941:14: ( classBody )?";
+            return "950:14: ( classBody )?";
         }
     }
-    static final String DFA175_eotS =
+    static final String DFA176_eotS =
         "\41\uffff";
-    static final String DFA175_eofS =
+    static final String DFA176_eofS =
         "\1\2\40\uffff";
-    static final String DFA175_minS =
+    static final String DFA176_minS =
         "\1\31\40\uffff";
-    static final String DFA175_maxS =
-        "\1\157\40\uffff";
-    static final String DFA175_acceptS =
+    static final String DFA176_maxS =
+        "\1\160\40\uffff";
+    static final String DFA176_acceptS =
         "\1\uffff\1\1\1\2\36\uffff";
-    static final String DFA175_specialS =
+    static final String DFA176_specialS =
         "\41\uffff}>";
-    static final String[] DFA175_transitionS = {
+    static final String[] DFA176_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",
+            "\1\2\22\uffff\1\2\1\uffff\1\1\1\2\7\uffff\1\2\21\uffff\25\2",
             "",
             "",
             "",
@@ -20821,54 +20872,54 @@
             ""
     };
 
-    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 final short[] DFA176_eot = DFA.unpackEncodedString(DFA176_eotS);
+    static final short[] DFA176_eof = DFA.unpackEncodedString(DFA176_eofS);
+    static final char[] DFA176_min = DFA.unpackEncodedStringToUnsignedChars(DFA176_minS);
+    static final char[] DFA176_max = DFA.unpackEncodedStringToUnsignedChars(DFA176_maxS);
+    static final short[] DFA176_accept = DFA.unpackEncodedString(DFA176_acceptS);
+    static final short[] DFA176_special = DFA.unpackEncodedString(DFA176_specialS);
+    static final short[][] DFA176_transition;
 
     static {
-        int numStates = DFA175_transitionS.length;
-        DFA175_transition = new short[numStates][];
+        int numStates = DFA176_transitionS.length;
+        DFA176_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA175_transition[i] = DFA.unpackEncodedString(DFA175_transitionS[i]);
+            DFA176_transition[i] = DFA.unpackEncodedString(DFA176_transitionS[i]);
         }
     }
 
-    class DFA175 extends DFA {
+    class DFA176 extends DFA {
 
-        public DFA175(BaseRecognizer recognizer) {
+        public DFA176(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;
+            this.decisionNumber = 176;
+            this.eot = DFA176_eot;
+            this.eof = DFA176_eof;
+            this.min = DFA176_min;
+            this.max = DFA176_max;
+            this.accept = DFA176_accept;
+            this.special = DFA176_special;
+            this.transition = DFA176_transition;
         }
         public String getDescription() {
-            return "958:19: ( arguments )?";
+            return "967:19: ( arguments )?";
         }
     }
-    static final String DFA178_eotS =
+    static final String DFA179_eotS =
         "\41\uffff";
-    static final String DFA178_eofS =
+    static final String DFA179_eofS =
         "\1\2\40\uffff";
-    static final String DFA178_minS =
+    static final String DFA179_minS =
         "\1\31\40\uffff";
-    static final String DFA178_maxS =
-        "\1\157\40\uffff";
-    static final String DFA178_acceptS =
+    static final String DFA179_maxS =
+        "\1\160\40\uffff";
+    static final String DFA179_acceptS =
         "\1\uffff\1\1\1\2\36\uffff";
-    static final String DFA178_specialS =
+    static final String DFA179_specialS =
         "\41\uffff}>";
-    static final String[] DFA178_transitionS = {
+    static final String[] DFA179_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",
+            "\1\2\22\uffff\1\2\1\uffff\1\1\1\2\7\uffff\1\2\21\uffff\25\2",
             "",
             "",
             "",
@@ -20903,54 +20954,54 @@
             ""
     };
 
-    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 final short[] DFA179_eot = DFA.unpackEncodedString(DFA179_eotS);
+    static final short[] DFA179_eof = DFA.unpackEncodedString(DFA179_eofS);
+    static final char[] DFA179_min = DFA.unpackEncodedStringToUnsignedChars(DFA179_minS);
+    static final char[] DFA179_max = DFA.unpackEncodedStringToUnsignedChars(DFA179_maxS);
+    static final short[] DFA179_accept = DFA.unpackEncodedString(DFA179_acceptS);
+    static final short[] DFA179_special = DFA.unpackEncodedString(DFA179_specialS);
+    static final short[][] DFA179_transition;
 
     static {
-        int numStates = DFA178_transitionS.length;
-        DFA178_transition = new short[numStates][];
+        int numStates = DFA179_transitionS.length;
+        DFA179_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA178_transition[i] = DFA.unpackEncodedString(DFA178_transitionS[i]);
+            DFA179_transition[i] = DFA.unpackEncodedString(DFA179_transitionS[i]);
         }
     }
 
-    class DFA178 extends DFA {
+    class DFA179 extends DFA {
 
-        public DFA178(BaseRecognizer recognizer) {
+        public DFA179(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;
+            this.decisionNumber = 179;
+            this.eot = DFA179_eot;
+            this.eof = DFA179_eof;
+            this.min = DFA179_min;
+            this.max = DFA179_max;
+            this.accept = DFA179_accept;
+            this.special = DFA179_special;
+            this.transition = DFA179_transition;
         }
         public String getDescription() {
-            return "967:21: ( arguments )?";
+            return "976:21: ( arguments )?";
         }
     }
-    static final String DFA180_eotS =
+    static final String DFA181_eotS =
         "\26\uffff";
-    static final String DFA180_eofS =
+    static final String DFA181_eofS =
         "\26\uffff";
-    static final String DFA180_minS =
+    static final String DFA181_minS =
         "\1\4\25\uffff";
-    static final String DFA180_maxS =
-        "\1\163\25\uffff";
-    static final String DFA180_acceptS =
+    static final String DFA181_maxS =
+        "\1\164\25\uffff";
+    static final String DFA181_acceptS =
         "\1\uffff\1\1\23\uffff\1\2";
-    static final String DFA180_specialS =
+    static final String DFA181_specialS =
         "\26\uffff}>";
-    static final String[] DFA180_transitionS = {
+    static final String[] DFA181_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",
+            "\2\1\1\25\1\uffff\3\1\44\uffff\2\1\2\uffff\6\1",
             "",
             "",
             "",
@@ -20974,37 +21025,37 @@
             ""
     };
 
-    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 final short[] DFA181_eot = DFA.unpackEncodedString(DFA181_eotS);
+    static final short[] DFA181_eof = DFA.unpackEncodedString(DFA181_eofS);
+    static final char[] DFA181_min = DFA.unpackEncodedStringToUnsignedChars(DFA181_minS);
+    static final char[] DFA181_max = DFA.unpackEncodedStringToUnsignedChars(DFA181_maxS);
+    static final short[] DFA181_accept = DFA.unpackEncodedString(DFA181_acceptS);
+    static final short[] DFA181_special = DFA.unpackEncodedString(DFA181_specialS);
+    static final short[][] DFA181_transition;
 
     static {
-        int numStates = DFA180_transitionS.length;
-        DFA180_transition = new short[numStates][];
+        int numStates = DFA181_transitionS.length;
+        DFA181_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA180_transition[i] = DFA.unpackEncodedString(DFA180_transitionS[i]);
+            DFA181_transition[i] = DFA.unpackEncodedString(DFA181_transitionS[i]);
         }
     }
 
-    class DFA180 extends DFA {
+    class DFA181 extends DFA {
 
-        public DFA180(BaseRecognizer recognizer) {
+        public DFA181(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;
+            this.decisionNumber = 181;
+            this.eot = DFA181_eot;
+            this.eof = DFA181_eof;
+            this.min = DFA181_min;
+            this.max = DFA181_max;
+            this.accept = DFA181_accept;
+            this.special = DFA181_special;
+            this.transition = DFA181_transition;
         }
         public String getDescription() {
-            return "971:8: ( expressionList )?";
+            return "980:8: ( expressionList )?";
         }
     }
  
@@ -21171,25 +21222,25 @@
     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_44_in_variableDeclaratorRest1113 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F980000000073L});
     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_44_in_variableDeclaratorRest1122 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F980000000073L});
     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_44_in_constantDeclaratorRest1172 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F980000000073L});
     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_37_in_arrayInitializer1226 = new BitSet(new long[]{0x7F80016200000FD0L,0x001F980000000073L});
     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_34_in_arrayInitializer1232 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F980000000073L});
     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});
@@ -21264,24 +21315,24 @@
     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_65_in_annotation1910 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F9800000000F7L});
     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_34_in_elementValuePairs1951 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F9800000000F3L});
     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_44_in_elementValuePair1970 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F9800000000F3L});
     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_37_in_elementValueArrayInitializer2012 = new BitSet(new long[]{0x7F80016200000FD0L,0x001F9800000000F3L});
     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_34_in_elementValueArrayInitializer2018 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F9800000000F3L});
     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});
@@ -21313,10 +21364,10 @@
     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_72_in_defaultValue2227 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F9800000000F3L});
     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_37_in_block2269 = new BitSet(new long[]{0x7FFFE1E24A000FF0L,0x001F980003FDEAF3L});
+    public static final BitSet FOLLOW_blockStatement_in_block2271 = new BitSet(new long[]{0x7FFFE1E24A000FF0L,0x001F980003FDEAF3L});
     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});
@@ -21326,31 +21377,31 @@
     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_73_in_statement2398 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F980000000073L});
     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_74_in_statement2403 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F980000000073L});
     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_parExpression_in_statement2419 = new BitSet(new long[]{0x7FFFE1A24A000FF0L,0x001F980003FDEAF3L});
     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_76_in_statement2431 = new BitSet(new long[]{0x7FFFE1A24A000FF0L,0x001F980003FDEAF3L});
     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_65_in_statement2445 = new BitSet(new long[]{0x7F82012202000FD0L,0x001F9800000000F3L});
     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_66_in_statement2449 = new BitSet(new long[]{0x7FFFE1A24A000FF0L,0x001F980003FDEAF3L});
     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_parExpression_in_statement2461 = new BitSet(new long[]{0x7FFFE1A24A000FF0L,0x001F980003FDEAF3L});
     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_79_in_statement2471 = new BitSet(new long[]{0x7FFFE1A24A000FF0L,0x001F980003FDEAF3L});
     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_block_in_statement2489 = new BitSet(new long[]{0x0000000000000000L,0x0000000004020000L});
     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});
@@ -21359,16 +21410,16 @@
     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_37_in_statement2545 = new BitSet(new long[]{0x0000004000000000L,0x0000000008000100L});
     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_83_in_statement2569 = new BitSet(new long[]{0x7F80012202000FD0L,0x001F980000000073L});
     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_84_in_statement2582 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F980000000073L});
     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});
@@ -21383,269 +21434,273 @@
     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_74_in_statement2661 = new BitSet(new long[]{0x7FFFE1A24A000FF0L,0x001F980003FDEAF3L});
     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_37_in_modifyStatement2692 = new BitSet(new long[]{0x7F80016200000FD0L,0x001F980000000073L});
     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_34_in_modifyStatement2713 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F980000000073L});
     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_88_in_exitPointsStatement2786 = new BitSet(new long[]{0x0000020000000000L});
+    public static final BitSet FOLLOW_41_in_exitPointsStatement2788 = new BitSet(new long[]{0x0000000000000100L});
+    public static final BitSet FOLLOW_StringLiteral_in_exitPointsStatement2792 = new BitSet(new long[]{0x0000040000000000L});
+    public static final BitSet FOLLOW_42_in_exitPointsStatement2796 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_89_in_exitPointsStatement2822 = new BitSet(new long[]{0x0000020000000000L});
+    public static final BitSet FOLLOW_41_in_exitPointsStatement2824 = new BitSet(new long[]{0x0000000000000100L});
+    public static final BitSet FOLLOW_StringLiteral_in_exitPointsStatement2828 = new BitSet(new long[]{0x0000040000000000L});
+    public static final BitSet FOLLOW_42_in_exitPointsStatement2832 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_catchClause_in_catches2873 = new BitSet(new long[]{0x0000000000000002L,0x0000000004000000L});
+    public static final BitSet FOLLOW_catchClause_in_catches2876 = new BitSet(new long[]{0x0000000000000002L,0x0000000004000000L});
+    public static final BitSet FOLLOW_90_in_catchClause2890 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+    public static final BitSet FOLLOW_65_in_catchClause2892 = new BitSet(new long[]{0x7F82000000000010L,0x0000000000000080L});
+    public static final BitSet FOLLOW_formalParameter_in_catchClause2894 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
+    public static final BitSet FOLLOW_66_in_catchClause2896 = new BitSet(new long[]{0x0000002008000000L});
+    public static final BitSet FOLLOW_block_in_catchClause2898 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_variableModifier_in_formalParameter2909 = new BitSet(new long[]{0x7F82000000000010L,0x0000000000000080L});
+    public static final BitSet FOLLOW_type_in_formalParameter2912 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_variableDeclaratorId_in_formalParameter2914 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_switchBlockStatementGroup_in_switchBlockStatementGroups2928 = new BitSet(new long[]{0x0000000000000002L,0x0000000008000100L});
+    public static final BitSet FOLLOW_switchLabel_in_switchBlockStatementGroup2942 = new BitSet(new long[]{0x7FFFE1A24A000FF2L,0x001F980003FDEAF3L});
+    public static final BitSet FOLLOW_blockStatement_in_switchBlockStatementGroup2944 = new BitSet(new long[]{0x7FFFE1A24A000FF2L,0x001F980003FDEAF3L});
+    public static final BitSet FOLLOW_91_in_switchLabel2957 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F980000000073L});
+    public static final BitSet FOLLOW_constantExpression_in_switchLabel2959 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_74_in_switchLabel2961 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_91_in_switchLabel2968 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_enumConstantName_in_switchLabel2970 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_74_in_switchLabel2972 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_72_in_switchLabel2979 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_74_in_switchLabel2981 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_34_in_moreStatementExpressions2994 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F980000000073L});
+    public static final BitSet FOLLOW_statementExpression_in_moreStatementExpressions2996 = new BitSet(new long[]{0x0000000400000002L});
+    public static final BitSet FOLLOW_forVarControl_in_forControl3017 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_forInit_in_forControl3022 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_25_in_forControl3025 = new BitSet(new long[]{0x7F80012202000FD0L,0x001F980000000073L});
+    public static final BitSet FOLLOW_expression_in_forControl3027 = new BitSet(new long[]{0x0000000002000000L});
+    public static final BitSet FOLLOW_25_in_forControl3030 = new BitSet(new long[]{0x7F82012200000FD2L,0x001F9800000000F3L});
+    public static final BitSet FOLLOW_forUpdate_in_forControl3032 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_variableModifier_in_forInit3070 = new BitSet(new long[]{0x7F82000000000010L,0x0000000000000080L});
+    public static final BitSet FOLLOW_type_in_forInit3073 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_variableDeclarators_in_forInit3075 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_expressionList_in_forInit3080 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_variableModifier_in_forVarControl3092 = new BitSet(new long[]{0x7F82000000000010L,0x0000000000000080L});
+    public static final BitSet FOLLOW_type_in_forVarControl3095 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_Identifier_in_forVarControl3097 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_74_in_forVarControl3099 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F980000000073L});
+    public static final BitSet FOLLOW_expression_in_forVarControl3101 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_expressionList_in_forUpdate3112 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_65_in_parExpression3125 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F980000000073L});
+    public static final BitSet FOLLOW_expression_in_parExpression3127 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
+    public static final BitSet FOLLOW_66_in_parExpression3129 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_expression_in_expressionList3146 = new BitSet(new long[]{0x0000000400000002L});
+    public static final BitSet FOLLOW_34_in_expressionList3149 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F980000000073L});
+    public static final BitSet FOLLOW_expression_in_expressionList3151 = new BitSet(new long[]{0x0000000400000002L});
+    public static final BitSet FOLLOW_expression_in_statementExpression3167 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_expression_in_constantExpression3179 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_conditionalExpression_in_expression3191 = new BitSet(new long[]{0x0000100A00000002L,0x0000000FF0000000L});
+    public static final BitSet FOLLOW_assignmentOperator_in_expression3194 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F980000000073L});
+    public static final BitSet FOLLOW_expression_in_expression3196 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_44_in_assignmentOperator3210 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_92_in_assignmentOperator3220 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_93_in_assignmentOperator3230 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_94_in_assignmentOperator3240 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_95_in_assignmentOperator3250 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_96_in_assignmentOperator3260 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_97_in_assignmentOperator3270 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_98_in_assignmentOperator3280 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_99_in_assignmentOperator3290 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_33_in_assignmentOperator3300 = new BitSet(new long[]{0x0000000200000000L});
+    public static final BitSet FOLLOW_33_in_assignmentOperator3302 = new BitSet(new long[]{0x0000100000000000L});
+    public static final BitSet FOLLOW_44_in_assignmentOperator3304 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_35_in_assignmentOperator3314 = new BitSet(new long[]{0x0000000800000000L});
+    public static final BitSet FOLLOW_35_in_assignmentOperator3316 = new BitSet(new long[]{0x0000100000000000L});
+    public static final BitSet FOLLOW_44_in_assignmentOperator3318 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_35_in_assignmentOperator3328 = new BitSet(new long[]{0x0000000800000000L});
+    public static final BitSet FOLLOW_35_in_assignmentOperator3330 = new BitSet(new long[]{0x0000000800000000L});
+    public static final BitSet FOLLOW_35_in_assignmentOperator3332 = new BitSet(new long[]{0x0000100000000000L});
+    public static final BitSet FOLLOW_44_in_assignmentOperator3334 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_conditionalOrExpression_in_conditionalExpression3350 = new BitSet(new long[]{0x8000000000000002L});
+    public static final BitSet FOLLOW_63_in_conditionalExpression3354 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F980000000073L});
+    public static final BitSet FOLLOW_expression_in_conditionalExpression3356 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_74_in_conditionalExpression3358 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F980000000073L});
+    public static final BitSet FOLLOW_expression_in_conditionalExpression3360 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_conditionalAndExpression_in_conditionalOrExpression3379 = new BitSet(new long[]{0x0000000000000002L,0x0000001000000000L});
+    public static final BitSet FOLLOW_100_in_conditionalOrExpression3383 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F980000000073L});
+    public static final BitSet FOLLOW_conditionalAndExpression_in_conditionalOrExpression3385 = new BitSet(new long[]{0x0000000000000002L,0x0000001000000000L});
+    public static final BitSet FOLLOW_inclusiveOrExpression_in_conditionalAndExpression3404 = new BitSet(new long[]{0x0000000000000002L,0x0000002000000000L});
+    public static final BitSet FOLLOW_101_in_conditionalAndExpression3408 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F980000000073L});
+    public static final BitSet FOLLOW_inclusiveOrExpression_in_conditionalAndExpression3410 = new BitSet(new long[]{0x0000000000000002L,0x0000002000000000L});
+    public static final BitSet FOLLOW_exclusiveOrExpression_in_inclusiveOrExpression3429 = new BitSet(new long[]{0x0000000000000002L,0x0000004000000000L});
+    public static final BitSet FOLLOW_102_in_inclusiveOrExpression3433 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F980000000073L});
+    public static final BitSet FOLLOW_exclusiveOrExpression_in_inclusiveOrExpression3435 = new BitSet(new long[]{0x0000000000000002L,0x0000004000000000L});
+    public static final BitSet FOLLOW_andExpression_in_exclusiveOrExpression3454 = new BitSet(new long[]{0x0000000000000002L,0x0000008000000000L});
+    public static final BitSet FOLLOW_103_in_exclusiveOrExpression3458 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F980000000073L});
+    public static final BitSet FOLLOW_andExpression_in_exclusiveOrExpression3460 = new BitSet(new long[]{0x0000000000000002L,0x0000008000000000L});
+    public static final BitSet FOLLOW_equalityExpression_in_andExpression3479 = new BitSet(new long[]{0x0000001000000002L});
+    public static final BitSet FOLLOW_36_in_andExpression3483 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F980000000073L});
+    public static final BitSet FOLLOW_equalityExpression_in_andExpression3485 = new BitSet(new long[]{0x0000001000000002L});
+    public static final BitSet FOLLOW_instanceOfExpression_in_equalityExpression3504 = new BitSet(new long[]{0x0000000000000002L,0x0000030000000000L});
+    public static final BitSet FOLLOW_set_in_equalityExpression3508 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F980000000073L});
+    public static final BitSet FOLLOW_instanceOfExpression_in_equalityExpression3516 = new BitSet(new long[]{0x0000000000000002L,0x0000030000000000L});
+    public static final BitSet FOLLOW_relationalExpression_in_instanceOfExpression3535 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
+    public static final BitSet FOLLOW_106_in_instanceOfExpression3538 = new BitSet(new long[]{0x7F80000000000010L});
+    public static final BitSet FOLLOW_type_in_instanceOfExpression3540 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_shiftExpression_in_relationalExpression3558 = new BitSet(new long[]{0x0000000A00000002L});
+    public static final BitSet FOLLOW_relationalOp_in_relationalExpression3562 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F980000000073L});
+    public static final BitSet FOLLOW_shiftExpression_in_relationalExpression3564 = new BitSet(new long[]{0x0000000A00000002L});
+    public static final BitSet FOLLOW_33_in_relationalOp3580 = new BitSet(new long[]{0x0000100000000000L});
+    public static final BitSet FOLLOW_44_in_relationalOp3582 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_35_in_relationalOp3586 = new BitSet(new long[]{0x0000100000000000L});
+    public static final BitSet FOLLOW_44_in_relationalOp3588 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_33_in_relationalOp3592 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_35_in_relationalOp3596 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_additiveExpression_in_shiftExpression3613 = new BitSet(new long[]{0x0000000A00000002L});
+    public static final BitSet FOLLOW_shiftOp_in_shiftExpression3617 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F980000000073L});
+    public static final BitSet FOLLOW_additiveExpression_in_shiftExpression3619 = new BitSet(new long[]{0x0000000A00000002L});
+    public static final BitSet FOLLOW_33_in_shiftOp3643 = new BitSet(new long[]{0x0000000200000000L});
+    public static final BitSet FOLLOW_33_in_shiftOp3645 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_35_in_shiftOp3649 = new BitSet(new long[]{0x0000000800000000L});
+    public static final BitSet FOLLOW_35_in_shiftOp3651 = new BitSet(new long[]{0x0000000800000000L});
+    public static final BitSet FOLLOW_35_in_shiftOp3653 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_35_in_shiftOp3657 = new BitSet(new long[]{0x0000000800000000L});
+    public static final BitSet FOLLOW_35_in_shiftOp3659 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_multiplicativeExpression_in_additiveExpression3677 = new BitSet(new long[]{0x0000000000000002L,0x0000180000000000L});
+    public static final BitSet FOLLOW_set_in_additiveExpression3681 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F980000000073L});
+    public static final BitSet FOLLOW_multiplicativeExpression_in_additiveExpression3689 = new BitSet(new long[]{0x0000000000000002L,0x0000180000000000L});
+    public static final BitSet FOLLOW_unaryExpression_in_multiplicativeExpression3708 = new BitSet(new long[]{0x0000000020000002L,0x0000600000000000L});
+    public static final BitSet FOLLOW_set_in_multiplicativeExpression3712 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F980000000073L});
+    public static final BitSet FOLLOW_unaryExpression_in_multiplicativeExpression3726 = new BitSet(new long[]{0x0000000020000002L,0x0000600000000000L});
+    public static final BitSet FOLLOW_107_in_unaryExpression3746 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F980000000073L});
+    public static final BitSet FOLLOW_unaryExpression_in_unaryExpression3748 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_108_in_unaryExpression3756 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F980000000073L});
+    public static final BitSet FOLLOW_unaryExpression_in_unaryExpression3758 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_111_in_unaryExpression3768 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F980000000073L});
+    public static final BitSet FOLLOW_primary_in_unaryExpression3770 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_112_in_unaryExpression3780 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F980000000073L});
+    public static final BitSet FOLLOW_primary_in_unaryExpression3782 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_unaryExpressionNotPlusMinus_in_unaryExpression3792 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_113_in_unaryExpressionNotPlusMinus3811 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F980000000073L});
+    public static final BitSet FOLLOW_unaryExpression_in_unaryExpressionNotPlusMinus3813 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_114_in_unaryExpressionNotPlusMinus3822 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F980000000073L});
+    public static final BitSet FOLLOW_unaryExpression_in_unaryExpressionNotPlusMinus3824 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_castExpression_in_unaryExpressionNotPlusMinus3834 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_primary_in_unaryExpressionNotPlusMinus3844 = new BitSet(new long[]{0x0000020010000002L,0x0001800000000000L});
+    public static final BitSet FOLLOW_selector_in_unaryExpressionNotPlusMinus3846 = new BitSet(new long[]{0x0000020010000002L,0x0001800000000000L});
+    public static final BitSet FOLLOW_set_in_unaryExpressionNotPlusMinus3849 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_65_in_castExpression3872 = new BitSet(new long[]{0x7F80000000000010L});
+    public static final BitSet FOLLOW_primitiveType_in_castExpression3874 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
+    public static final BitSet FOLLOW_66_in_castExpression3876 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F980000000073L});
+    public static final BitSet FOLLOW_unaryExpression_in_castExpression3878 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_65_in_castExpression3887 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F980000000073L});
+    public static final BitSet FOLLOW_type_in_castExpression3890 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
+    public static final BitSet FOLLOW_expression_in_castExpression3894 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
+    public static final BitSet FOLLOW_66_in_castExpression3897 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F980000000073L});
+    public static final BitSet FOLLOW_unaryExpressionNotPlusMinus_in_castExpression3899 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_parExpression_in_primary3916 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_nonWildcardTypeArguments_in_primary3926 = new BitSet(new long[]{0x0000000000000010L,0x0008000000000001L});
+    public static final BitSet FOLLOW_explicitGenericInvocationSuffix_in_primary3937 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_115_in_primary3941 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+    public static final BitSet FOLLOW_arguments_in_primary3943 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_115_in_primary3954 = new BitSet(new long[]{0x0000020010000002L,0x0000000000000002L});
+    public static final BitSet FOLLOW_28_in_primary3957 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_Identifier_in_primary3959 = new BitSet(new long[]{0x0000020010000002L,0x0000000000000002L});
+    public static final BitSet FOLLOW_identifierSuffix_in_primary3964 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_64_in_primary3976 = new BitSet(new long[]{0x0000000010000000L,0x0000000000000002L});
+    public static final BitSet FOLLOW_superSuffix_in_primary3978 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_literal_in_primary3988 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_116_in_primary3998 = new BitSet(new long[]{0x7F80000200000010L});
+    public static final BitSet FOLLOW_creator_in_primary4000 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_Identifier_in_primary4012 = new BitSet(new long[]{0x0000020010000002L,0x0000000000000002L});
+    public static final BitSet FOLLOW_28_in_primary4017 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_Identifier_in_primary4019 = new BitSet(new long[]{0x0000020010000002L,0x0000000000000002L});
+    public static final BitSet FOLLOW_identifierSuffix_in_primary4024 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_primitiveType_in_primary4036 = new BitSet(new long[]{0x0000020010000000L});
+    public static final BitSet FOLLOW_41_in_primary4039 = new BitSet(new long[]{0x0000040000000000L});
+    public static final BitSet FOLLOW_42_in_primary4041 = new BitSet(new long[]{0x0000020010000000L});
+    public static final BitSet FOLLOW_28_in_primary4045 = new BitSet(new long[]{0x0000000040000000L});
+    public static final BitSet FOLLOW_30_in_primary4047 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_40_in_primary4057 = new BitSet(new long[]{0x0000000010000000L});
+    public static final BitSet FOLLOW_28_in_primary4059 = new BitSet(new long[]{0x0000000040000000L});
+    public static final BitSet FOLLOW_30_in_primary4061 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_41_in_identifierSuffix4073 = new BitSet(new long[]{0x0000040000000000L});
+    public static final BitSet FOLLOW_42_in_identifierSuffix4075 = new BitSet(new long[]{0x0000020010000000L});
+    public static final BitSet FOLLOW_28_in_identifierSuffix4079 = new BitSet(new long[]{0x0000000040000000L});
+    public static final BitSet FOLLOW_30_in_identifierSuffix4081 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_41_in_identifierSuffix4087 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F980000000073L});
+    public static final BitSet FOLLOW_expression_in_identifierSuffix4089 = new BitSet(new long[]{0x0000040000000000L});
+    public static final BitSet FOLLOW_42_in_identifierSuffix4091 = new BitSet(new long[]{0x0000020000000002L});
+    public static final BitSet FOLLOW_arguments_in_identifierSuffix4104 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_28_in_identifierSuffix4114 = new BitSet(new long[]{0x0000000040000000L});
+    public static final BitSet FOLLOW_30_in_identifierSuffix4116 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_28_in_identifierSuffix4126 = new BitSet(new long[]{0x0000000200000000L});
+    public static final BitSet FOLLOW_explicitGenericInvocation_in_identifierSuffix4128 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_28_in_identifierSuffix4138 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_115_in_identifierSuffix4140 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_28_in_identifierSuffix4150 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
+    public static final BitSet FOLLOW_64_in_identifierSuffix4152 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+    public static final BitSet FOLLOW_arguments_in_identifierSuffix4154 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_28_in_identifierSuffix4164 = new BitSet(new long[]{0x0000000000000000L,0x0010000000000000L});
+    public static final BitSet FOLLOW_116_in_identifierSuffix4166 = new BitSet(new long[]{0x0000000200000010L});
+    public static final BitSet FOLLOW_nonWildcardTypeArguments_in_identifierSuffix4169 = new BitSet(new long[]{0x0000000200000010L});
+    public static final BitSet FOLLOW_innerCreator_in_identifierSuffix4173 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_nonWildcardTypeArguments_in_creator4185 = new BitSet(new long[]{0x7F80000200000010L});
+    public static final BitSet FOLLOW_createdName_in_creator4188 = new BitSet(new long[]{0x0000020000000000L,0x0000000000000002L});
+    public static final BitSet FOLLOW_arrayCreatorRest_in_creator4199 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_classCreatorRest_in_creator4203 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_Identifier_in_createdName4215 = new BitSet(new long[]{0x0000000210000002L});
+    public static final BitSet FOLLOW_typeArguments_in_createdName4217 = new BitSet(new long[]{0x0000000010000002L});
+    public static final BitSet FOLLOW_28_in_createdName4229 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_Identifier_in_createdName4231 = new BitSet(new long[]{0x0000000210000002L});
+    public static final BitSet FOLLOW_typeArguments_in_createdName4233 = new BitSet(new long[]{0x0000000010000002L});
+    public static final BitSet FOLLOW_primitiveType_in_createdName4244 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_Identifier_in_innerCreator4256 = new BitSet(new long[]{0x0000020000000000L,0x0000000000000002L});
+    public static final BitSet FOLLOW_classCreatorRest_in_innerCreator4258 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_41_in_arrayCreatorRest4269 = new BitSet(new long[]{0x7F80052200000FD0L,0x001F980000000073L});
+    public static final BitSet FOLLOW_42_in_arrayCreatorRest4283 = new BitSet(new long[]{0x0000022000000000L});
+    public static final BitSet FOLLOW_41_in_arrayCreatorRest4286 = new BitSet(new long[]{0x0000040000000000L});
+    public static final BitSet FOLLOW_42_in_arrayCreatorRest4288 = new BitSet(new long[]{0x0000022000000000L});
+    public static final BitSet FOLLOW_arrayInitializer_in_arrayCreatorRest4292 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_expression_in_arrayCreatorRest4306 = new BitSet(new long[]{0x0000040000000000L});
+    public static final BitSet FOLLOW_42_in_arrayCreatorRest4308 = new BitSet(new long[]{0x0000020000000002L});
+    public static final BitSet FOLLOW_41_in_arrayCreatorRest4311 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F980000000073L});
+    public static final BitSet FOLLOW_expression_in_arrayCreatorRest4313 = new BitSet(new long[]{0x0000040000000000L});
+    public static final BitSet FOLLOW_42_in_arrayCreatorRest4315 = new BitSet(new long[]{0x0000020000000002L});
+    public static final BitSet FOLLOW_41_in_arrayCreatorRest4320 = new BitSet(new long[]{0x0000040000000000L});
+    public static final BitSet FOLLOW_42_in_arrayCreatorRest4322 = new BitSet(new long[]{0x0000020000000002L});
+    public static final BitSet FOLLOW_arguments_in_classCreatorRest4345 = new BitSet(new long[]{0x0000002380000002L});
+    public static final BitSet FOLLOW_classBody_in_classCreatorRest4347 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_nonWildcardTypeArguments_in_explicitGenericInvocation4360 = new BitSet(new long[]{0x0000000000000010L,0x0000000000000001L});
+    public static final BitSet FOLLOW_explicitGenericInvocationSuffix_in_explicitGenericInvocation4362 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_33_in_nonWildcardTypeArguments4374 = new BitSet(new long[]{0x7F80000000000010L});
+    public static final BitSet FOLLOW_typeList_in_nonWildcardTypeArguments4376 = new BitSet(new long[]{0x0000000800000000L});
+    public static final BitSet FOLLOW_35_in_nonWildcardTypeArguments4378 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_64_in_explicitGenericInvocationSuffix4390 = new BitSet(new long[]{0x0000000010000000L,0x0000000000000002L});
+    public static final BitSet FOLLOW_superSuffix_in_explicitGenericInvocationSuffix4392 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_Identifier_in_explicitGenericInvocationSuffix4399 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+    public static final BitSet FOLLOW_arguments_in_explicitGenericInvocationSuffix4401 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_28_in_selector4413 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_Identifier_in_selector4415 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000002L});
+    public static final BitSet FOLLOW_arguments_in_selector4418 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_28_in_selector4427 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_115_in_selector4429 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_28_in_selector4436 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
+    public static final BitSet FOLLOW_64_in_selector4438 = new BitSet(new long[]{0x0000000010000000L,0x0000000000000002L});
+    public static final BitSet FOLLOW_superSuffix_in_selector4440 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_28_in_selector4447 = new BitSet(new long[]{0x0000000000000000L,0x0010000000000000L});
+    public static final BitSet FOLLOW_116_in_selector4449 = new BitSet(new long[]{0x0000000200000010L});
+    public static final BitSet FOLLOW_nonWildcardTypeArguments_in_selector4452 = new BitSet(new long[]{0x0000000200000010L});
+    public static final BitSet FOLLOW_innerCreator_in_selector4456 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_41_in_selector4463 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F980000000073L});
+    public static final BitSet FOLLOW_expression_in_selector4465 = new BitSet(new long[]{0x0000040000000000L});
+    public static final BitSet FOLLOW_42_in_selector4467 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_arguments_in_superSuffix4479 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_28_in_superSuffix4486 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_Identifier_in_superSuffix4488 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000002L});
+    public static final BitSet FOLLOW_arguments_in_superSuffix4491 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_65_in_arguments4507 = new BitSet(new long[]{0x7F82012200000FD0L,0x001F9800000000F7L});
+    public static final BitSet FOLLOW_expressionList_in_arguments4509 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
+    public static final BitSet FOLLOW_66_in_arguments4512 = 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});
@@ -21660,51 +21715,51 @@
     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_76_in_synpred150_Java2431 = new BitSet(new long[]{0x7FFFE1A24A000FF0L,0x001F980003FDEAF3L});
     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});
+    public static final BitSet FOLLOW_91_in_synpred178_Java2957 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F980000000073L});
+    public static final BitSet FOLLOW_constantExpression_in_synpred178_Java2959 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_74_in_synpred178_Java2961 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_91_in_synpred179_Java2968 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_enumConstantName_in_synpred179_Java2970 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_74_in_synpred179_Java2972 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_forVarControl_in_synpred181_Java3017 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_variableModifier_in_synpred186_Java3070 = new BitSet(new long[]{0x7F82000000000010L,0x0000000000000080L});
+    public static final BitSet FOLLOW_type_in_synpred186_Java3073 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_variableDeclarators_in_synpred186_Java3075 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_assignmentOperator_in_synpred189_Java3194 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F980000000073L});
+    public static final BitSet FOLLOW_expression_in_synpred189_Java3196 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_35_in_synpred200_Java3314 = new BitSet(new long[]{0x0000000800000000L});
+    public static final BitSet FOLLOW_35_in_synpred200_Java3316 = new BitSet(new long[]{0x0000100000000000L});
+    public static final BitSet FOLLOW_44_in_synpred200_Java3318 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_relationalOp_in_synpred210_Java3562 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F980000000073L});
+    public static final BitSet FOLLOW_shiftExpression_in_synpred210_Java3564 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_shiftOp_in_synpred214_Java3617 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F980000000073L});
+    public static final BitSet FOLLOW_additiveExpression_in_synpred214_Java3619 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_35_in_synpred216_Java3649 = new BitSet(new long[]{0x0000000800000000L});
+    public static final BitSet FOLLOW_35_in_synpred216_Java3651 = new BitSet(new long[]{0x0000000800000000L});
+    public static final BitSet FOLLOW_35_in_synpred216_Java3653 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_castExpression_in_synpred228_Java3834 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_65_in_synpred232_Java3872 = new BitSet(new long[]{0x7F80000000000010L});
+    public static final BitSet FOLLOW_primitiveType_in_synpred232_Java3874 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
+    public static final BitSet FOLLOW_66_in_synpred232_Java3876 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F980000000073L});
+    public static final BitSet FOLLOW_unaryExpression_in_synpred232_Java3878 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_type_in_synpred233_Java3890 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_28_in_synpred237_Java3957 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_Identifier_in_synpred237_Java3959 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_identifierSuffix_in_synpred238_Java3964 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_28_in_synpred243_Java4017 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_Identifier_in_synpred243_Java4019 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_identifierSuffix_in_synpred244_Java4024 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_41_in_synpred250_Java4087 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F980000000073L});
+    public static final BitSet FOLLOW_expression_in_synpred250_Java4089 = new BitSet(new long[]{0x0000040000000000L});
+    public static final BitSet FOLLOW_42_in_synpred250_Java4091 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_41_in_synpred266_Java4311 = new BitSet(new long[]{0x7F80012200000FD0L,0x001F980000000073L});
+    public static final BitSet FOLLOW_expression_in_synpred266_Java4313 = new BitSet(new long[]{0x0000040000000000L});
+    public static final BitSet FOLLOW_42_in_synpred266_Java4315 = 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-21 10:38:15 UTC (rev 25375)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/semantics/java/parser/Java.g	2009-02-21 15:49:56 UTC (rev 25376)
@@ -90,10 +90,8 @@
 	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 List<JavaBlockDescr> blocks = new ArrayList<JavaBlockDescr>();
+	public List<JavaBlockDescr> getBlockDescr() { return blocks; }
 	
 	private String source = "unknown";
 	
@@ -696,7 +694,7 @@
 	{
 	    d = new JavaModifyBlockDescr( $parExpression.text );
 	    d.setStart( ((CommonToken)$s).getStartIndex() );
-	    this.modifyBlocks.add( d );
+	    this.blocks.add( d );
 	    
 	}
 	'{' ( e = expression { d.getExpressions().add( $e.text ); }
@@ -710,15 +708,26 @@
 	
 exitPointsStatement
 	@init {
-	    JavaExitPointsDescr d = null;
+	    JavaInterfacePointsDescr d = null;
 	}
-        : s='exitPoints' '[' id=StringLiteral c=']' 
+        : 
+        ( s='exitPoints' '[' id=StringLiteral c=']' 
         {
-	    d = new JavaExitPointsDescr( $id.text );
+	    d = new JavaInterfacePointsDescr( $id.text );
+	    d.setType( JavaBlockDescr.BlockType.EXIT );
 	    d.setStart( ((CommonToken)$s).getStartIndex() );
             d.setEnd( ((CommonToken)$c).getStopIndex() ); 
-	    this.exitPoints.add( d );
+	    this.blocks.add( d );
         }
+        |  s='entryPoints' '[' id=StringLiteral c=']' 
+        {
+	    d = new JavaInterfacePointsDescr( $id.text );
+	    d.setType( JavaBlockDescr.BlockType.ENTRY );
+	    d.setStart( ((CommonToken)$s).getStartIndex() );
+            d.setEnd( ((CommonToken)$c).getStopIndex() ); 
+	    this.blocks.add( d );
+        }
+        )
         ;	
 	
 catches

Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/conf/KnowledgeBaseConfigurationTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/conf/KnowledgeBaseConfigurationTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/conf/KnowledgeBaseConfigurationTest.java	2009-02-21 15:49:56 UTC (rev 25376)
@@ -0,0 +1,274 @@
+/*
+ * Copyright 2008 Red Hat
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.drools.conf;
+
+import junit.framework.TestCase;
+
+import org.drools.KnowledgeBaseConfiguration;
+import org.drools.KnowledgeBaseFactory;
+
+/**
+ * @author etirelli
+ *
+ */
+public class KnowledgeBaseConfigurationTest extends TestCase {
+
+    private KnowledgeBaseConfiguration config;
+
+    /* (non-Javadoc)
+     * @see junit.framework.TestCase#setUp()
+     */
+    protected void setUp() throws Exception {
+        super.setUp();
+        config = KnowledgeBaseFactory.newKnowledgeBaseConfiguration();
+    }
+
+    public void testMaintainTMSConfiguration() {
+        // setting the option using the type safe method
+        config.setOption( MaintainTMSOption.YES );
+
+        // checking the type safe getOption() method
+        assertEquals( MaintainTMSOption.YES,
+                      config.getOption( MaintainTMSOption.class ) );
+        // checking the string based getProperty() method
+        assertEquals( "true",
+                      config.getProperty( MaintainTMSOption.PROPERTY_NAME ) );
+
+        // setting the options using the string based setProperty() method
+        config.setProperty( MaintainTMSOption.PROPERTY_NAME,
+                            "false" );
+        
+        // checking the type safe getOption() method
+        assertEquals( MaintainTMSOption.NO,
+                      config.getOption( MaintainTMSOption.class ) );
+        // checking the string based getProperty() method
+        assertEquals( "false",
+                      config.getProperty( MaintainTMSOption.PROPERTY_NAME ) );
+    }
+    
+    public void testSequentialConfiguration() {
+        // setting the option using the type safe method
+        config.setOption( SequentialOption.YES );
+
+        // checking the type safe getOption() method
+        assertEquals( SequentialOption.YES,
+                      config.getOption( SequentialOption.class ) );
+        // checking the string based getProperty() method
+        assertEquals( "true",
+                      config.getProperty( SequentialOption.PROPERTY_NAME ) );
+
+        // setting the options using the string based setProperty() method
+        config.setProperty( SequentialOption.PROPERTY_NAME,
+                            "false" );
+        
+        // checking the type safe getOption() method
+        assertEquals( SequentialOption.NO,
+                      config.getOption( SequentialOption.class ) );
+        // checking the string based getProperty() method
+        assertEquals( "false",
+                      config.getProperty( SequentialOption.PROPERTY_NAME ) );
+    }
+    
+    public void testRemoveIdentitiesConfiguration() {
+        // setting the option using the type safe method
+        config.setOption( RemoveIdentitiesOption.YES );
+
+        // checking the type safe getOption() method
+        assertEquals( RemoveIdentitiesOption.YES,
+                      config.getOption( RemoveIdentitiesOption.class ) );
+        // checking the string based getProperty() method
+        assertEquals( "true",
+                      config.getProperty( RemoveIdentitiesOption.PROPERTY_NAME ) );
+
+        // setting the options using the string based setProperty() method
+        config.setProperty( RemoveIdentitiesOption.PROPERTY_NAME,
+                            "false" );
+        
+        // checking the type safe getOption() method
+        assertEquals( RemoveIdentitiesOption.NO,
+                      config.getOption( RemoveIdentitiesOption.class ) );
+        // checking the string based getProperty() method
+        assertEquals( "false",
+                      config.getProperty( RemoveIdentitiesOption.PROPERTY_NAME ) );
+    }
+    
+    public void testShareAlphaNodesConfiguration() {
+        // setting the option using the type safe method
+        config.setOption( ShareAlphaNodesOption.YES );
+
+        // checking the type safe getOption() method
+        assertEquals( ShareAlphaNodesOption.YES,
+                      config.getOption( ShareAlphaNodesOption.class ) );
+        // checking the string based getProperty() method
+        assertEquals( "true",
+                      config.getProperty( ShareAlphaNodesOption.PROPERTY_NAME ) );
+
+        // setting the options using the string based setProperty() method
+        config.setProperty( ShareAlphaNodesOption.PROPERTY_NAME,
+                            "false" );
+        
+        // checking the type safe getOption() method
+        assertEquals( ShareAlphaNodesOption.NO,
+                      config.getOption( ShareAlphaNodesOption.class ) );
+        // checking the string based getProperty() method
+        assertEquals( "false",
+                      config.getProperty( ShareAlphaNodesOption.PROPERTY_NAME ) );
+    }
+    
+    public void testShareBetaNodesConfiguration() {
+        // setting the option using the type safe method
+        config.setOption( ShareBetaNodesOption.YES );
+
+        // checking the type safe getOption() method
+        assertEquals( ShareBetaNodesOption.YES,
+                      config.getOption( ShareBetaNodesOption.class ) );
+        // checking the string based getProperty() method
+        assertEquals( "true",
+                      config.getProperty( ShareBetaNodesOption.PROPERTY_NAME ) );
+
+        // setting the options using the string based setProperty() method
+        config.setProperty( ShareBetaNodesOption.PROPERTY_NAME,
+                            "false" );
+        
+        // checking the type safe getOption() method
+        assertEquals( ShareBetaNodesOption.NO,
+                      config.getOption( ShareBetaNodesOption.class ) );
+        // checking the string based getProperty() method
+        assertEquals( "false",
+                      config.getProperty( ShareBetaNodesOption.PROPERTY_NAME ) );
+    }
+    
+    public void testIndexLeftBetaMemoryConfiguration() {
+        // setting the option using the type safe method
+        config.setOption( IndexLeftBetaMemoryOption.YES );
+
+        // checking the type safe getOption() method
+        assertEquals( IndexLeftBetaMemoryOption.YES,
+                      config.getOption( IndexLeftBetaMemoryOption.class ) );
+        // checking the string based getProperty() method
+        assertEquals( "true",
+                      config.getProperty( IndexLeftBetaMemoryOption.PROPERTY_NAME ) );
+
+        // setting the options using the string based setProperty() method
+        config.setProperty( IndexLeftBetaMemoryOption.PROPERTY_NAME,
+                            "false" );
+        
+        // checking the type safe getOption() method
+        assertEquals( IndexLeftBetaMemoryOption.NO,
+                      config.getOption( IndexLeftBetaMemoryOption.class ) );
+        // checking the string based getProperty() method
+        assertEquals( "false",
+                      config.getProperty( IndexLeftBetaMemoryOption.PROPERTY_NAME ) );
+    }
+    
+    public void testIndexRightBetaMemoryConfiguration() {
+        // setting the option using the type safe method
+        config.setOption( IndexRightBetaMemoryOption.YES );
+
+        // checking the type safe getOption() method
+        assertEquals( IndexRightBetaMemoryOption.YES,
+                      config.getOption( IndexRightBetaMemoryOption.class ) );
+        // checking the string based getProperty() method
+        assertEquals( "true",
+                      config.getProperty( IndexRightBetaMemoryOption.PROPERTY_NAME ) );
+
+        // setting the options using the string based setProperty() method
+        config.setProperty( IndexRightBetaMemoryOption.PROPERTY_NAME,
+                            "false" );
+        
+        // checking the type safe getOption() method
+        assertEquals( IndexRightBetaMemoryOption.NO,
+                      config.getOption( IndexRightBetaMemoryOption.class ) );
+        // checking the string based getProperty() method
+        assertEquals( "false",
+                      config.getProperty( IndexRightBetaMemoryOption.PROPERTY_NAME ) );
+    }
+    
+    public void testAssertBehaviorConfiguration() {
+        // setting the option using the type safe method
+        config.setOption( AssertBehaviorOption.EQUALITY );
+
+        // checking the type safe getOption() method
+        assertEquals( AssertBehaviorOption.EQUALITY,
+                      config.getOption( AssertBehaviorOption.class ) );
+        // checking the string based getProperty() method
+        assertEquals( "equality",
+                      config.getProperty( AssertBehaviorOption.PROPERTY_NAME ) );
+
+        // setting the options using the string based setProperty() method
+        config.setProperty( AssertBehaviorOption.PROPERTY_NAME,
+                            "identity" );
+        
+        // checking the type safe getOption() method
+        assertEquals( AssertBehaviorOption.IDENTITY,
+                      config.getOption( AssertBehaviorOption.class ) );
+        // checking the string based getProperty() method
+        assertEquals( "identity",
+                      config.getProperty( AssertBehaviorOption.PROPERTY_NAME ) );
+    }
+    
+    public void testLogicalOverrideConfiguration() {
+        // setting the option using the type safe method
+        config.setOption( LogicalOverrideOption.PRESERVE );
+
+        // checking the type safe getOption() method
+        assertEquals( LogicalOverrideOption.PRESERVE,
+                      config.getOption( LogicalOverrideOption.class ) );
+        // checking the string based getProperty() method
+        assertEquals( "preserve",
+                      config.getProperty( LogicalOverrideOption.PROPERTY_NAME ) );
+
+        // setting the options using the string based setProperty() method
+        config.setProperty( LogicalOverrideOption.PROPERTY_NAME,
+                            "discard" );
+        
+        // checking the type safe getOption() method
+        assertEquals( LogicalOverrideOption.DISCARD,
+                      config.getOption( LogicalOverrideOption.class ) );
+        // checking the string based getProperty() method
+        assertEquals( "discard",
+                      config.getProperty( LogicalOverrideOption.PROPERTY_NAME ) );
+    }
+    
+    public void testSequentialAgendaConfiguration() {
+        // setting the option using the type safe method
+        config.setOption( SequentialAgendaOption.DYNAMIC );
+
+        // checking the type safe getOption() method
+        assertEquals( SequentialAgendaOption.DYNAMIC,
+                      config.getOption( SequentialAgendaOption.class ) );
+        // checking the string based getProperty() method
+        assertEquals( "dynamic",
+                      config.getProperty( SequentialAgendaOption.PROPERTY_NAME ) );
+
+        // setting the options using the string based setProperty() method
+        config.setProperty( SequentialAgendaOption.PROPERTY_NAME,
+                            "sequential" );
+        
+        // checking the type safe getOption() method
+        assertEquals( SequentialAgendaOption.SEQUENTIAL,
+                      config.getOption( SequentialAgendaOption.class ) );
+        // checking the string based getProperty() method
+        assertEquals( "sequential",
+                      config.getProperty( SequentialAgendaOption.PROPERTY_NAME ) );
+    }
+    
+    
+    
+    
+
+}

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-21 10:38:15 UTC (rev 25375)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/Tree2TestDRL.java	2009-02-21 15:49:56 UTC (rev 25376)
@@ -1,4 +1,4 @@
-// $ANTLR 3.1.1 src/main/resources/org/drools/lang/Tree2TestDRL.g 2009-02-20 18:38:45
+// $ANTLR 3.1.1 src/main/resources/org/drools/lang/Tree2TestDRL.g 2009-02-21 09:28:28
 
 	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-21 10:38:15 UTC (rev 25375)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/JavaConsequenceBuilderTest.java	2009-02-21 15:49:56 UTC (rev 25376)
@@ -61,27 +61,25 @@
     }
 
     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 ";
+        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 fixed = builder.fixBlockDescr( context,
+                                                  analysis,
+                                                  (String) ruleDescr.getConsequence() );
 
             String expected = " System.out.println(\"this is a test\");\n " + 
-                              " exitPoints.get(\"foo\").insert( new Cheese() );\n " + 
+                              " drools.getExitPoint(\"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 );
+//            System.out.println( "=============================" );
+//            System.out.println( ruleDescr.getConsequence() );
+//            System.out.println( "=============================" );
+//            System.out.println( fixed );
 
             assertNotNull( context.getErrors().toString(),
                            fixed );
@@ -93,6 +91,37 @@
 
     }
 
+    public void testFixEntryPointsReferences() {
+        String consequence = " System.out.println(\"this is a test\");\n " + " entryPoints[\"foo\"].insert( new Cheese() );\n " + " System.out.println(\"we are done with entryPoints\");\n ";
+        setupTest( consequence );
+        try {
+            JavaExprAnalyzer analyzer = new JavaExprAnalyzer();
+            JavaAnalysisResult analysis = (JavaAnalysisResult) analyzer.analyzeBlock( (String) ruleDescr.getConsequence(),
+                                                                                      new Set[]{} );
+
+            String fixed = builder.fixBlockDescr( context,
+                                                  analysis,
+                                                  (String) ruleDescr.getConsequence() );
+
+            String expected = " System.out.println(\"this is a test\");\n " + 
+                              " drools.getEntryPoint(\"foo\").insert( new Cheese() );\n " + 
+                              " System.out.println(\"we are done with entryPoints\");\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 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 );
@@ -101,9 +130,9 @@
             JavaAnalysisResult analysis = (JavaAnalysisResult) analyzer.analyzeBlock( (String) ruleDescr.getConsequence(),
                                                                                       new Set[]{} );
 
-            String fixed = builder.fixModifyBlocks( context,
-                                                    analysis,
-                                                    (String) ruleDescr.getConsequence() );
+            String fixed = builder.fixBlockDescr( 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";

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/MockWorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/MockWorkingMemory.java	2009-02-21 10:38:15 UTC (rev 25375)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/MockWorkingMemory.java	2009-02-21 15:49:56 UTC (rev 25376)
@@ -520,4 +520,9 @@
     	return null;
     }
 
+    public Map<String, WorkingMemoryEntryPoint> getEntryPoints() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/DefaultKnowledgeHelper.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/DefaultKnowledgeHelper.java	2009-02-21 10:38:15 UTC (rev 25375)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/DefaultKnowledgeHelper.java	2009-02-21 15:49:56 UTC (rev 25376)
@@ -26,11 +26,14 @@
 import org.drools.impl.StatefulKnowledgeSessionImpl;
 import org.drools.reteoo.ReteooStatefulSession;
 import org.drools.rule.Declaration;
+import org.drools.rule.EntryPoint;
 import org.drools.rule.GroupElement;
 import org.drools.rule.Rule;
+import org.drools.runtime.ExitPoint;
 import org.drools.runtime.KnowledgeRuntime;
 import org.drools.FactHandle;
 import org.drools.WorkingMemory;
+import org.drools.WorkingMemoryEntryPoint;
 import org.drools.spi.Activation;
 import org.drools.spi.KnowledgeHelper;
 import org.drools.spi.Tuple;
@@ -236,4 +239,10 @@
     public void halt() {
         this.workingMemory.halt();
     }
+    public WorkingMemoryEntryPoint getEntryPoint(String id) {
+        return this.workingMemory.getEntryPoints().get( id );
+    }
+    public ExitPoint getExitPoint(String id) {
+        return this.workingMemory.getExitPoints().get( id );
+    }
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/SequentialKnowledgeHelper.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/SequentialKnowledgeHelper.java	2009-02-21 10:38:15 UTC (rev 25375)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/SequentialKnowledgeHelper.java	2009-02-21 15:49:56 UTC (rev 25376)
@@ -23,7 +23,9 @@
 import org.drools.rule.Declaration;
 import org.drools.rule.GroupElement;
 import org.drools.rule.Rule;
+import org.drools.runtime.ExitPoint;
 import org.drools.runtime.KnowledgeRuntime;
+import org.drools.runtime.rule.WorkingMemoryEntryPoint;
 import org.drools.FactHandle;
 import org.drools.WorkingMemory;
 import org.drools.spi.Activation;
@@ -181,5 +183,13 @@
     
     public void halt() {
         this.workingMemory.halt();
+    }
+
+    public WorkingMemoryEntryPoint getEntryPoint(String id) {
+        return this.workingMemory.getEntryPoints().get( id );
+    }
+
+    public ExitPoint getExitPoint(String id) {
+        return this.workingMemory.getExitPoints().get( id );
     }    
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java	2009-02-21 10:38:15 UTC (rev 25375)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java	2009-02-21 15:49:56 UTC (rev 25376)
@@ -1833,5 +1833,9 @@
 	public Map<String, ExitPoint> getExitPoints() {
 		return this.exitPoints;
 	}
+	
+	public Map<String, WorkingMemoryEntryPoint> getEntryPoints() {
+	    return this.entryPoints;
+	}
 
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalWorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalWorkingMemory.java	2009-02-21 10:38:15 UTC (rev 25375)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalWorkingMemory.java	2009-02-21 15:49:56 UTC (rev 25376)
@@ -7,6 +7,7 @@
 import org.drools.FactHandle;
 import org.drools.SessionConfiguration;
 import org.drools.WorkingMemory;
+import org.drools.WorkingMemoryEntryPoint;
 import org.drools.concurrent.ExecutorService;
 import org.drools.event.AgendaEventSupport;
 import org.drools.event.RuleFlowEventSupport;
@@ -125,5 +126,7 @@
     
     public Map<String, ExitPoint> getExitPoints();
     
+    public Map<String, WorkingMemoryEntryPoint> getEntryPoints();
+
     public SessionConfiguration getSessionConfiguration();
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalWorkingMemoryActions.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalWorkingMemoryActions.java	2009-02-21 10:38:15 UTC (rev 25375)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalWorkingMemoryActions.java	2009-02-21 15:49:56 UTC (rev 25376)
@@ -17,8 +17,8 @@
  */
 
 import org.drools.FactException;
+import org.drools.FactHandle;
 import org.drools.rule.Rule;
-import org.drools.FactHandle;
 import org.drools.spi.Activation;
 
 public interface InternalWorkingMemoryActions

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/KnowledgeHelper.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/KnowledgeHelper.java	2009-02-21 10:38:15 UTC (rev 25375)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/KnowledgeHelper.java	2009-02-21 15:49:56 UTC (rev 25376)
@@ -19,11 +19,13 @@
 import java.io.Serializable;
 
 import org.drools.FactException;
+import org.drools.FactHandle;
+import org.drools.WorkingMemory;
 import org.drools.rule.Declaration;
 import org.drools.rule.Rule;
-import org.drools.FactHandle;
+import org.drools.runtime.ExitPoint;
 import org.drools.runtime.rule.RuleContext;
-import org.drools.WorkingMemory;
+import org.drools.runtime.rule.WorkingMemoryEntryPoint;
 
 /**
  * KnowledgeHelper implementation types are injected into consequenses
@@ -109,35 +111,12 @@
     Activation getActivation();
 
     WorkingMemory getWorkingMemory();
+    
+    WorkingMemoryEntryPoint getEntryPoint( String id );
+    
+    ExitPoint getExitPoint( String id );
 
-//    /** @return - A List of the objects in the WorkingMemory */
-//    List getObjects();
-//
-//    /**
-//     * Retruns a List of Objects that match the given Class in the paremeter.
-//     * 
-//     * @param objectClass -
-//     *            The Class to filter by
-//     * @return - All the Objects in the WorkingMemory that match the given Class
-//     *         filter
-//     */
-//    List getObjects(Class objectClass);
-//
-//    QueryResults getQueryResults(String query);
-//
-//    /**
-//     * Clears the agenda causing all existing Activations to fire
-//     * ActivationCancelled events. <br>
-//     */
-//    void clearAgenda();
-//
-//    void clearAgendaGroup(String group);
-//
-//    public AgendaGroup getFocus();
-//
     void setFocus(String focus);
-//
-//    void setFocus(AgendaGroup focus);
 
     public Declaration getDeclaration(String identifier);
     




More information about the jboss-svn-commits mailing list