You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2021/09/30 07:18:22 UTC

[tomcat] branch 10.0.x updated (bc3737a -> 29546ac)

This is an automated email from the ASF dual-hosted git repository.

markt pushed a change to branch 10.0.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git.


    from bc3737a  Increment version for next development cycle
     new f2e6cbc  Regenerate parser using JavaCC 7.0.10
     new 29546ac  Fix parsing bug for literal Maps constructed using variables.

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 java/org/apache/el/parser/ELParser.java            | 2342 +++++++++++---------
 java/org/apache/el/parser/ELParser.jjt             |    2 +-
 .../org/apache/el/parser/ELParserTokenManager.java | 1188 +++++-----
 .../apache/el/parser/ELParserTreeConstants.java    |    4 +-
 java/org/apache/el/parser/JJTELParserState.java    |    4 +-
 java/org/apache/el/parser/ParseException.java      |   48 +-
 java/org/apache/el/parser/SimpleCharStream.java    |   57 +-
 java/org/apache/el/parser/Token.java               |    7 +-
 java/org/apache/el/parser/TokenMgrError.java       |   32 +-
 test/org/apache/el/parser/TestAstMapData.java      |   15 +
 webapps/docs/changelog.xml                         |   12 +
 11 files changed, 2028 insertions(+), 1683 deletions(-)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


[tomcat] 01/02: Regenerate parser using JavaCC 7.0.10

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch 10.0.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit f2e6cbca65c0b813539f8f9da8ec2de46313c916
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Thu Sep 30 08:10:08 2021 +0100

    Regenerate parser using JavaCC 7.0.10
---
 java/org/apache/el/parser/ELParser.java            | 2198 +++++++++++---------
 .../org/apache/el/parser/ELParserTokenManager.java | 1188 ++++++-----
 .../apache/el/parser/ELParserTreeConstants.java    |    4 +-
 java/org/apache/el/parser/JJTELParserState.java    |    4 +-
 java/org/apache/el/parser/ParseException.java      |   48 +-
 java/org/apache/el/parser/SimpleCharStream.java    |   57 +-
 java/org/apache/el/parser/Token.java               |    7 +-
 java/org/apache/el/parser/TokenMgrError.java       |   32 +-
 webapps/docs/changelog.xml                         |    8 +-
 9 files changed, 1872 insertions(+), 1674 deletions(-)

diff --git a/java/org/apache/el/parser/ELParser.java b/java/org/apache/el/parser/ELParser.java
index f04518a..8035c82 100644
--- a/java/org/apache/el/parser/ELParser.java
+++ b/java/org/apache/el/parser/ELParser.java
@@ -1,7 +1,7 @@
+/* ELParser.java */
 /* Generated By:JJTree&JavaCC: Do not edit this line. ELParser.java */
 package org.apache.el.parser;
 import java.io.StringReader;
-
 import jakarta.el.ELException;
 @SuppressWarnings("all") // Ignore warnings in generated code
 public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParserConstants {/*@bgen(jjtree)*/
@@ -19,34 +19,37 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
  * Allow most flexible parsing, restrict by examining
  * type of returned node
  */
-  final public AstCompositeExpression CompositeExpression() throws ParseException {
-                                                                     /*@bgen(jjtree) CompositeExpression */
+  final public AstCompositeExpression CompositeExpression() throws ParseException {/*@bgen(jjtree) CompositeExpression */
   AstCompositeExpression jjtn000 = new AstCompositeExpression(JJTCOMPOSITEEXPRESSION);
   boolean jjtc000 = true;
   jjtree.openNodeScope(jjtn000);
     try {
       label_1:
       while (true) {
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
         case LITERAL_EXPRESSION:
         case START_DYNAMIC_EXPRESSION:
-        case START_DEFERRED_EXPRESSION:
+        case START_DEFERRED_EXPRESSION:{
           ;
           break;
+          }
         default:
           jj_la1[0] = jj_gen;
           break label_1;
         }
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case START_DEFERRED_EXPRESSION:
+        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
+        case START_DEFERRED_EXPRESSION:{
           DeferredExpression();
           break;
-        case START_DYNAMIC_EXPRESSION:
+          }
+        case START_DYNAMIC_EXPRESSION:{
           DynamicExpression();
           break;
-        case LITERAL_EXPRESSION:
+          }
+        case LITERAL_EXPRESSION:{
           LiteralExpression();
           break;
+          }
         default:
           jj_la1[1] = jj_gen;
           jj_consume_token(-1);
@@ -54,13 +57,13 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
         }
       }
       jj_consume_token(0);
-                                   jjtree.closeNodeScope(jjtn000, true);
+jjtree.closeNodeScope(jjtn000, true);
                                    jjtc000 = false;
-                                   {if (true) {
-                                    return jjtn000;
-                                  }}
+{if ("" != null) {
+    return jjtn000;
+}}
     } catch (Throwable jjte000) {
-      if (jjtc000) {
+if (jjtc000) {
         jjtree.clearNodeScope(jjtn000);
         jjtc000 = false;
       } else {
@@ -68,52 +71,50 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
       }
       if (jjte000 instanceof RuntimeException) {
         {if (true) {
-          throw (RuntimeException)jjte000;
+            throw (RuntimeException)jjte000;
         }}
       }
       if (jjte000 instanceof ParseException) {
         {if (true) {
-          throw (ParseException)jjte000;
+            throw (ParseException)jjte000;
         }}
       }
       {if (true) {
         throw (Error)jjte000;
-      }}
+    }}
     } finally {
-      if (jjtc000) {
+if (jjtc000) {
         jjtree.closeNodeScope(jjtn000, true);
       }
     }
     throw new Error("Missing return statement in function");
-  }
+}
 
 /*
  * LiteralExpression
  * Non-EL Expression blocks
  */
-  final public void LiteralExpression() throws ParseException {
-                                               /*@bgen(jjtree) LiteralExpression */
+  final public void LiteralExpression() throws ParseException {/*@bgen(jjtree) LiteralExpression */
                                                 AstLiteralExpression jjtn000 = new AstLiteralExpression(JJTLITERALEXPRESSION);
                                                 boolean jjtc000 = true;
                                                 jjtree.openNodeScope(jjtn000);Token t = null;
     try {
       t = jj_consume_token(LITERAL_EXPRESSION);
-                             jjtree.closeNodeScope(jjtn000, true);
+jjtree.closeNodeScope(jjtn000, true);
                              jjtc000 = false;
-                             jjtn000.setImage(t.image);
+jjtn000.setImage(t.image);
     } finally {
-      if (jjtc000) {
+if (jjtc000) {
         jjtree.closeNodeScope(jjtn000, true);
       }
     }
-  }
+}
 
 /*
  * DeferredExpression
  * #{...} Expressions
  */
-  final public void DeferredExpression() throws ParseException {
-                                                 /*@bgen(jjtree) DeferredExpression */
+  final public void DeferredExpression() throws ParseException {/*@bgen(jjtree) DeferredExpression */
   AstDeferredExpression jjtn000 = new AstDeferredExpression(JJTDEFERREDEXPRESSION);
   boolean jjtc000 = true;
   jjtree.openNodeScope(jjtn000);
@@ -122,7 +123,7 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
       Expression();
       jj_consume_token(RBRACE);
     } catch (Throwable jjte000) {
-      if (jjtc000) {
+if (jjtc000) {
         jjtree.clearNodeScope(jjtn000);
         jjtc000 = false;
       } else {
@@ -130,30 +131,29 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
       }
       if (jjte000 instanceof RuntimeException) {
         {if (true) {
-          throw (RuntimeException)jjte000;
+            throw (RuntimeException)jjte000;
         }}
       }
       if (jjte000 instanceof ParseException) {
         {if (true) {
-          throw (ParseException)jjte000;
+            throw (ParseException)jjte000;
         }}
       }
       {if (true) {
         throw (Error)jjte000;
-      }}
+    }}
     } finally {
-      if (jjtc000) {
+if (jjtc000) {
         jjtree.closeNodeScope(jjtn000, true);
       }
     }
-  }
+}
 
 /*
  * DynamicExpression
  * ${...} Expressions
  */
-  final public void DynamicExpression() throws ParseException {
-                                               /*@bgen(jjtree) DynamicExpression */
+  final public void DynamicExpression() throws ParseException {/*@bgen(jjtree) DynamicExpression */
   AstDynamicExpression jjtn000 = new AstDynamicExpression(JJTDYNAMICEXPRESSION);
   boolean jjtc000 = true;
   jjtree.openNodeScope(jjtn000);
@@ -162,7 +162,7 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
       Expression();
       jj_consume_token(RBRACE);
     } catch (Throwable jjte000) {
-      if (jjtc000) {
+if (jjtc000) {
         jjtree.clearNodeScope(jjtn000);
         jjtc000 = false;
       } else {
@@ -170,23 +170,23 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
       }
       if (jjte000 instanceof RuntimeException) {
         {if (true) {
-          throw (RuntimeException)jjte000;
+            throw (RuntimeException)jjte000;
         }}
       }
       if (jjte000 instanceof ParseException) {
         {if (true) {
-          throw (ParseException)jjte000;
+            throw (ParseException)jjte000;
         }}
       }
       {if (true) {
         throw (Error)jjte000;
-      }}
+    }}
     } finally {
-      if (jjtc000) {
+if (jjtc000) {
         jjtree.closeNodeScope(jjtn000, true);
       }
     }
-  }
+}
 
 /*
  * Expression
@@ -194,7 +194,7 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
  */
   final public void Expression() throws ParseException {
     Semicolon();
-  }
+}
 
 /*
  * Semicolon
@@ -203,22 +203,23 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
     Assignment();
     label_2:
     while (true) {
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case SEMICOLON:
+      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
+      case SEMICOLON:{
         ;
         break;
+        }
       default:
         jj_la1[2] = jj_gen;
         break label_2;
       }
       jj_consume_token(SEMICOLON);
-                                 AstSemicolon jjtn001 = new AstSemicolon(JJTSEMICOLON);
+AstSemicolon jjtn001 = new AstSemicolon(JJTSEMICOLON);
                                  boolean jjtc001 = true;
                                  jjtree.openNodeScope(jjtn001);
       try {
         Assignment();
       } catch (Throwable jjte001) {
-                                 if (jjtc001) {
+if (jjtc001) {
                                    jjtree.clearNodeScope(jjtn001);
                                    jjtc001 = false;
                                  } else {
@@ -227,23 +228,23 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
                                  if (jjte001 instanceof RuntimeException) {
                                    {if (true) {
                                     throw (RuntimeException)jjte001;
-                                  }}
+                                }}
                                  }
                                  if (jjte001 instanceof ParseException) {
                                    {if (true) {
                                     throw (ParseException)jjte001;
-                                  }}
+                                }}
                                  }
                                  {if (true) {
-                                  throw (Error)jjte001;
+                                    throw (Error)jjte001;
                                 }}
       } finally {
-                                 if (jjtc001) {
+if (jjtc001) {
                                    jjtree.closeNodeScope(jjtn001,  2);
                                  }
       }
     }
-  }
+}
 
 /*
  * Assignment
@@ -252,7 +253,7 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
     if (jj_2_2(4)) {
       LambdaExpression();
     } else {
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
       case START_SET_OR_MAP:
       case INTEGER_LITERAL:
       case FLOATING_POINT_LITERAL:
@@ -266,7 +267,7 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
       case NOT1:
       case EMPTY:
       case MINUS:
-      case IDENTIFIER:
+      case IDENTIFIER:{
         Choice();
         label_3:
         while (true) {
@@ -276,13 +277,13 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
             break label_3;
           }
           jj_consume_token(ASSIGN);
-                                       AstAssign jjtn001 = new AstAssign(JJTASSIGN);
+AstAssign jjtn001 = new AstAssign(JJTASSIGN);
                                        boolean jjtc001 = true;
                                        jjtree.openNodeScope(jjtn001);
           try {
             Assignment();
           } catch (Throwable jjte001) {
-                                       if (jjtc001) {
+if (jjtc001) {
                                          jjtree.clearNodeScope(jjtn001);
                                          jjtc001 = false;
                                        } else {
@@ -290,37 +291,37 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
                                        }
                                        if (jjte001 instanceof RuntimeException) {
                                          {if (true) {
-                                          throw (RuntimeException)jjte001;
+                                            throw (RuntimeException)jjte001;
                                         }}
                                        }
                                        if (jjte001 instanceof ParseException) {
                                          {if (true) {
-                                          throw (ParseException)jjte001;
+                                            throw (ParseException)jjte001;
                                         }}
                                        }
                                        {if (true) {
                                         throw (Error)jjte001;
-                                      }}
+                                    }}
           } finally {
-                                       if (jjtc001) {
+if (jjtc001) {
                                          jjtree.closeNodeScope(jjtn001,  2);
                                        }
           }
         }
         break;
+        }
       default:
         jj_la1[3] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
     }
-  }
+}
 
 /*
  * Lambda expression
  */
-  final public void LambdaExpression() throws ParseException {
-                                             /*@bgen(jjtree) LambdaExpression */
+  final public void LambdaExpression() throws ParseException {/*@bgen(jjtree) LambdaExpression */
   AstLambdaExpression jjtn000 = new AstLambdaExpression(JJTLAMBDAEXPRESSION);
   boolean jjtc000 = true;
   jjtree.openNodeScope(jjtn000);
@@ -330,7 +331,7 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
       if (jj_2_3(3)) {
         LambdaExpression();
       } else {
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
         case START_SET_OR_MAP:
         case INTEGER_LITERAL:
         case FLOATING_POINT_LITERAL:
@@ -344,9 +345,10 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
         case NOT1:
         case EMPTY:
         case MINUS:
-        case IDENTIFIER:
+        case IDENTIFIER:{
           Choice();
           break;
+          }
         default:
           jj_la1[4] = jj_gen;
           jj_consume_token(-1);
@@ -354,7 +356,7 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
         }
       }
     } catch (Throwable jjte000) {
-      if (jjtc000) {
+if (jjtc000) {
         jjtree.clearNodeScope(jjtn000);
         jjtc000 = false;
       } else {
@@ -362,48 +364,49 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
       }
       if (jjte000 instanceof RuntimeException) {
         {if (true) {
-          throw (RuntimeException)jjte000;
+            throw (RuntimeException)jjte000;
         }}
       }
       if (jjte000 instanceof ParseException) {
         {if (true) {
-          throw (ParseException)jjte000;
+            throw (ParseException)jjte000;
         }}
       }
       {if (true) {
         throw (Error)jjte000;
-      }}
+    }}
     } finally {
-      if (jjtc000) {
+if (jjtc000) {
         jjtree.closeNodeScope(jjtn000, true);
       }
     }
-  }
+}
 
 /*
  * Lambda parameters
  */
-  final public void LambdaParameters() throws ParseException {
-                                             /*@bgen(jjtree) LambdaParameters */
+  final public void LambdaParameters() throws ParseException {/*@bgen(jjtree) LambdaParameters */
   AstLambdaParameters jjtn000 = new AstLambdaParameters(JJTLAMBDAPARAMETERS);
   boolean jjtc000 = true;
   jjtree.openNodeScope(jjtn000);
     try {
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case IDENTIFIER:
+      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
+      case IDENTIFIER:{
         Identifier();
         break;
-      case LPAREN:
+        }
+      case LPAREN:{
         jj_consume_token(LPAREN);
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case IDENTIFIER:
+        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
+        case IDENTIFIER:{
           Identifier();
           label_4:
           while (true) {
-            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-            case COMMA:
+            switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
+            case COMMA:{
               ;
               break;
+              }
             default:
               jj_la1[5] = jj_gen;
               break label_4;
@@ -412,19 +415,21 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
             Identifier();
           }
           break;
+          }
         default:
           jj_la1[6] = jj_gen;
           ;
         }
         jj_consume_token(RPAREN);
         break;
+        }
       default:
         jj_la1[7] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
     } catch (Throwable jjte000) {
-      if (jjtc000) {
+if (jjtc000) {
         jjtree.clearNodeScope(jjtn000);
         jjtc000 = false;
       } else {
@@ -432,30 +437,29 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
       }
       if (jjte000 instanceof RuntimeException) {
         {if (true) {
-          throw (RuntimeException)jjte000;
+            throw (RuntimeException)jjte000;
         }}
       }
       if (jjte000 instanceof ParseException) {
         {if (true) {
-          throw (ParseException)jjte000;
+            throw (ParseException)jjte000;
         }}
       }
       {if (true) {
         throw (Error)jjte000;
-      }}
+    }}
     } finally {
-      if (jjtc000) {
+if (jjtc000) {
         jjtree.closeNodeScope(jjtn000, true);
       }
     }
-  }
+}
 
 /*
  * Possible invocation of lambda expression. Invocations must be bracketed but
  * being bracketed does not mean it is an invocation.
  */
-  final public void LambdaExpressionOrInvocation() throws ParseException {
-                                                         /*@bgen(jjtree) LambdaExpression */
+  final public void LambdaExpressionOrInvocation() throws ParseException {/*@bgen(jjtree) LambdaExpression */
   AstLambdaExpression jjtn000 = new AstLambdaExpression(JJTLAMBDAEXPRESSION);
   boolean jjtc000 = true;
   jjtree.openNodeScope(jjtn000);
@@ -466,7 +470,7 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
       if (jj_2_4(3)) {
         LambdaExpression();
       } else {
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
         case START_SET_OR_MAP:
         case INTEGER_LITERAL:
         case FLOATING_POINT_LITERAL:
@@ -480,9 +484,10 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
         case NOT1:
         case EMPTY:
         case MINUS:
-        case IDENTIFIER:
+        case IDENTIFIER:{
           Choice();
           break;
+          }
         default:
           jj_la1[8] = jj_gen;
           jj_consume_token(-1);
@@ -492,10 +497,11 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
       jj_consume_token(RPAREN);
       label_5:
       while (true) {
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case LPAREN:
+        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
+        case LPAREN:{
           ;
           break;
+          }
         default:
           jj_la1[9] = jj_gen;
           break label_5;
@@ -503,7 +509,7 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
         MethodParameters();
       }
     } catch (Throwable jjte000) {
-      if (jjtc000) {
+if (jjtc000) {
         jjtree.clearNodeScope(jjtn000);
         jjtc000 = false;
       } else {
@@ -511,23 +517,23 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
       }
       if (jjte000 instanceof RuntimeException) {
         {if (true) {
-          throw (RuntimeException)jjte000;
+            throw (RuntimeException)jjte000;
         }}
       }
       if (jjte000 instanceof ParseException) {
         {if (true) {
-          throw (ParseException)jjte000;
+            throw (ParseException)jjte000;
         }}
       }
       {if (true) {
         throw (Error)jjte000;
-      }}
+    }}
     } finally {
-      if (jjtc000) {
+if (jjtc000) {
         jjtree.closeNodeScope(jjtn000, true);
       }
     }
-  }
+}
 
 /*
  * Choice
@@ -545,13 +551,13 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
       jj_consume_token(QUESTIONMARK);
       Choice();
       jj_consume_token(COLON);
-                                                         AstChoice jjtn001 = new AstChoice(JJTCHOICE);
+AstChoice jjtn001 = new AstChoice(JJTCHOICE);
                                                          boolean jjtc001 = true;
                                                          jjtree.openNodeScope(jjtn001);
       try {
         Choice();
       } catch (Throwable jjte001) {
-                                                         if (jjtc001) {
+if (jjtc001) {
                                                            jjtree.clearNodeScope(jjtn001);
                                                            jjtc001 = false;
                                                          } else {
@@ -560,23 +566,23 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
                                                          if (jjte001 instanceof RuntimeException) {
                                                            {if (true) {
                                                             throw (RuntimeException)jjte001;
-                                                          }}
+                                                        }}
                                                          }
                                                          if (jjte001 instanceof ParseException) {
                                                            {if (true) {
                                                             throw (ParseException)jjte001;
-                                                          }}
+                                                        }}
                                                          }
                                                          {if (true) {
-                                                          throw (Error)jjte001;
+                                                            throw (Error)jjte001;
                                                         }}
       } finally {
-                                                         if (jjtc001) {
+if (jjtc001) {
                                                            jjtree.closeNodeScope(jjtn001,  3);
                                                          }
       }
     }
-  }
+}
 
 /*
  * Or
@@ -586,34 +592,37 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
     And();
     label_7:
     while (true) {
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
       case OR0:
-      case OR1:
+      case OR1:{
         ;
         break;
+        }
       default:
         jj_la1[10] = jj_gen;
         break label_7;
       }
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case OR0:
+      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
+      case OR0:{
         jj_consume_token(OR0);
         break;
-      case OR1:
+        }
+      case OR1:{
         jj_consume_token(OR1);
         break;
+        }
       default:
         jj_la1[11] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
-                           AstOr jjtn001 = new AstOr(JJTOR);
+AstOr jjtn001 = new AstOr(JJTOR);
                            boolean jjtc001 = true;
                            jjtree.openNodeScope(jjtn001);
       try {
         And();
       } catch (Throwable jjte001) {
-                           if (jjtc001) {
+if (jjtc001) {
                              jjtree.clearNodeScope(jjtn001);
                              jjtc001 = false;
                            } else {
@@ -621,24 +630,24 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
                            }
                            if (jjte001 instanceof RuntimeException) {
                              {if (true) {
-                              throw (RuntimeException)jjte001;
+                                throw (RuntimeException)jjte001;
                             }}
                            }
                            if (jjte001 instanceof ParseException) {
                              {if (true) {
-                              throw (ParseException)jjte001;
+                                throw (ParseException)jjte001;
                             }}
                            }
                            {if (true) {
                             throw (Error)jjte001;
-                          }}
+                        }}
       } finally {
-                           if (jjtc001) {
+if (jjtc001) {
                              jjtree.closeNodeScope(jjtn001,  2);
                            }
       }
     }
-  }
+}
 
 /*
  * And
@@ -648,34 +657,37 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
     Equality();
     label_8:
     while (true) {
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
       case AND0:
-      case AND1:
+      case AND1:{
         ;
         break;
+        }
       default:
         jj_la1[12] = jj_gen;
         break label_8;
       }
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case AND0:
+      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
+      case AND0:{
         jj_consume_token(AND0);
         break;
-      case AND1:
+        }
+      case AND1:{
         jj_consume_token(AND1);
         break;
+        }
       default:
         jj_la1[13] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
-                                  AstAnd jjtn001 = new AstAnd(JJTAND);
+AstAnd jjtn001 = new AstAnd(JJTAND);
                                   boolean jjtc001 = true;
                                   jjtree.openNodeScope(jjtn001);
       try {
         Equality();
       } catch (Throwable jjte001) {
-                                  if (jjtc001) {
+if (jjtc001) {
                                     jjtree.clearNodeScope(jjtn001);
                                     jjtc001 = false;
                                   } else {
@@ -683,24 +695,24 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
                                   }
                                   if (jjte001 instanceof RuntimeException) {
                                     {if (true) {
-                                      throw (RuntimeException)jjte001;
+                                        throw (RuntimeException)jjte001;
                                     }}
                                   }
                                   if (jjte001 instanceof ParseException) {
                                     {if (true) {
-                                      throw (ParseException)jjte001;
+                                        throw (ParseException)jjte001;
                                     }}
                                   }
                                   {if (true) {
                                     throw (Error)jjte001;
-                                  }}
+                                }}
       } finally {
-                                  if (jjtc001) {
+if (jjtc001) {
                                     jjtree.closeNodeScope(jjtn001,  2);
                                   }
       }
     }
-  }
+}
 
 /*
  * Equality
@@ -710,39 +722,42 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
     Compare();
     label_9:
     while (true) {
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
       case EQ0:
       case EQ1:
       case NE0:
-      case NE1:
+      case NE1:{
         ;
         break;
+        }
       default:
         jj_la1[14] = jj_gen;
         break label_9;
       }
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
       case EQ0:
-      case EQ1:
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case EQ0:
+      case EQ1:{
+        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
+        case EQ0:{
           jj_consume_token(EQ0);
           break;
-        case EQ1:
+          }
+        case EQ1:{
           jj_consume_token(EQ1);
           break;
+          }
         default:
           jj_la1[15] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
-                         AstEqual jjtn001 = new AstEqual(JJTEQUAL);
+AstEqual jjtn001 = new AstEqual(JJTEQUAL);
                          boolean jjtc001 = true;
                          jjtree.openNodeScope(jjtn001);
         try {
           Compare();
         } catch (Throwable jjte001) {
-                         if (jjtc001) {
+if (jjtc001) {
                            jjtree.clearNodeScope(jjtn001);
                            jjtc001 = false;
                          } else {
@@ -751,43 +766,46 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
                          if (jjte001 instanceof RuntimeException) {
                            {if (true) {
                             throw (RuntimeException)jjte001;
-                          }}
+                        }}
                          }
                          if (jjte001 instanceof ParseException) {
                            {if (true) {
                             throw (ParseException)jjte001;
-                          }}
+                        }}
                          }
                          {if (true) {
-                          throw (Error)jjte001;
+                            throw (Error)jjte001;
                         }}
         } finally {
-                         if (jjtc001) {
+if (jjtc001) {
                            jjtree.closeNodeScope(jjtn001,  2);
                          }
         }
         break;
+        }
       case NE0:
-      case NE1:
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case NE0:
+      case NE1:{
+        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
+        case NE0:{
           jj_consume_token(NE0);
           break;
-        case NE1:
+          }
+        case NE1:{
           jj_consume_token(NE1);
           break;
+          }
         default:
           jj_la1[16] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
-                         AstNotEqual jjtn002 = new AstNotEqual(JJTNOTEQUAL);
+AstNotEqual jjtn002 = new AstNotEqual(JJTNOTEQUAL);
                          boolean jjtc002 = true;
                          jjtree.openNodeScope(jjtn002);
         try {
           Compare();
         } catch (Throwable jjte002) {
-                         if (jjtc002) {
+if (jjtc002) {
                            jjtree.clearNodeScope(jjtn002);
                            jjtc002 = false;
                          } else {
@@ -796,29 +814,30 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
                          if (jjte002 instanceof RuntimeException) {
                            {if (true) {
                             throw (RuntimeException)jjte002;
-                          }}
+                        }}
                          }
                          if (jjte002 instanceof ParseException) {
                            {if (true) {
                             throw (ParseException)jjte002;
-                          }}
+                        }}
                          }
                          {if (true) {
-                          throw (Error)jjte002;
+                            throw (Error)jjte002;
                         }}
         } finally {
-                         if (jjtc002) {
+if (jjtc002) {
                            jjtree.closeNodeScope(jjtn002,  2);
                          }
         }
         break;
+        }
       default:
         jj_la1[17] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
     }
-  }
+}
 
 /*
  * Compare
@@ -828,7 +847,7 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
     Concatenation();
     label_10:
     while (true) {
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
       case GT0:
       case GT1:
       case LT0:
@@ -836,35 +855,38 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
       case GE0:
       case GE1:
       case LE0:
-      case LE1:
+      case LE1:{
         ;
         break;
+        }
       default:
         jj_la1[18] = jj_gen;
         break label_10;
       }
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
       case LT0:
-      case LT1:
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case LT0:
+      case LT1:{
+        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
+        case LT0:{
           jj_consume_token(LT0);
           break;
-        case LT1:
+          }
+        case LT1:{
           jj_consume_token(LT1);
           break;
+          }
         default:
           jj_la1[19] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
-                         AstLessThan jjtn001 = new AstLessThan(JJTLESSTHAN);
+AstLessThan jjtn001 = new AstLessThan(JJTLESSTHAN);
                          boolean jjtc001 = true;
                          jjtree.openNodeScope(jjtn001);
         try {
           Concatenation();
         } catch (Throwable jjte001) {
-                         if (jjtc001) {
+if (jjtc001) {
                            jjtree.clearNodeScope(jjtn001);
                            jjtc001 = false;
                          } else {
@@ -873,43 +895,46 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
                          if (jjte001 instanceof RuntimeException) {
                            {if (true) {
                             throw (RuntimeException)jjte001;
-                          }}
+                        }}
                          }
                          if (jjte001 instanceof ParseException) {
                            {if (true) {
                             throw (ParseException)jjte001;
-                          }}
+                        }}
                          }
                          {if (true) {
-                          throw (Error)jjte001;
+                            throw (Error)jjte001;
                         }}
         } finally {
-                         if (jjtc001) {
+if (jjtc001) {
                            jjtree.closeNodeScope(jjtn001,  2);
                          }
         }
         break;
+        }
       case GT0:
-      case GT1:
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case GT0:
+      case GT1:{
+        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
+        case GT0:{
           jj_consume_token(GT0);
           break;
-        case GT1:
+          }
+        case GT1:{
           jj_consume_token(GT1);
           break;
+          }
         default:
           jj_la1[20] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
-                         AstGreaterThan jjtn002 = new AstGreaterThan(JJTGREATERTHAN);
+AstGreaterThan jjtn002 = new AstGreaterThan(JJTGREATERTHAN);
                          boolean jjtc002 = true;
                          jjtree.openNodeScope(jjtn002);
         try {
           Concatenation();
         } catch (Throwable jjte002) {
-                         if (jjtc002) {
+if (jjtc002) {
                            jjtree.clearNodeScope(jjtn002);
                            jjtc002 = false;
                          } else {
@@ -918,43 +943,46 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
                          if (jjte002 instanceof RuntimeException) {
                            {if (true) {
                             throw (RuntimeException)jjte002;
-                          }}
+                        }}
                          }
                          if (jjte002 instanceof ParseException) {
                            {if (true) {
                             throw (ParseException)jjte002;
-                          }}
+                        }}
                          }
                          {if (true) {
-                          throw (Error)jjte002;
+                            throw (Error)jjte002;
                         }}
         } finally {
-                         if (jjtc002) {
+if (jjtc002) {
                            jjtree.closeNodeScope(jjtn002,  2);
                          }
         }
         break;
+        }
       case LE0:
-      case LE1:
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case LE0:
+      case LE1:{
+        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
+        case LE0:{
           jj_consume_token(LE0);
           break;
-        case LE1:
+          }
+        case LE1:{
           jj_consume_token(LE1);
           break;
+          }
         default:
           jj_la1[21] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
-                         AstLessThanEqual jjtn003 = new AstLessThanEqual(JJTLESSTHANEQUAL);
+AstLessThanEqual jjtn003 = new AstLessThanEqual(JJTLESSTHANEQUAL);
                          boolean jjtc003 = true;
                          jjtree.openNodeScope(jjtn003);
         try {
           Concatenation();
         } catch (Throwable jjte003) {
-                         if (jjtc003) {
+if (jjtc003) {
                            jjtree.clearNodeScope(jjtn003);
                            jjtc003 = false;
                          } else {
@@ -963,43 +991,46 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
                          if (jjte003 instanceof RuntimeException) {
                            {if (true) {
                             throw (RuntimeException)jjte003;
-                          }}
+                        }}
                          }
                          if (jjte003 instanceof ParseException) {
                            {if (true) {
                             throw (ParseException)jjte003;
-                          }}
+                        }}
                          }
                          {if (true) {
-                          throw (Error)jjte003;
+                            throw (Error)jjte003;
                         }}
         } finally {
-                         if (jjtc003) {
+if (jjtc003) {
                            jjtree.closeNodeScope(jjtn003,  2);
                          }
         }
         break;
+        }
       case GE0:
-      case GE1:
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case GE0:
+      case GE1:{
+        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
+        case GE0:{
           jj_consume_token(GE0);
           break;
-        case GE1:
+          }
+        case GE1:{
           jj_consume_token(GE1);
           break;
+          }
         default:
           jj_la1[22] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
-                         AstGreaterThanEqual jjtn004 = new AstGreaterThanEqual(JJTGREATERTHANEQUAL);
+AstGreaterThanEqual jjtn004 = new AstGreaterThanEqual(JJTGREATERTHANEQUAL);
                          boolean jjtc004 = true;
                          jjtree.openNodeScope(jjtn004);
         try {
           Concatenation();
         } catch (Throwable jjte004) {
-                         if (jjtc004) {
+if (jjtc004) {
                            jjtree.clearNodeScope(jjtn004);
                            jjtc004 = false;
                          } else {
@@ -1008,55 +1039,57 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
                          if (jjte004 instanceof RuntimeException) {
                            {if (true) {
                             throw (RuntimeException)jjte004;
-                          }}
+                        }}
                          }
                          if (jjte004 instanceof ParseException) {
                            {if (true) {
                             throw (ParseException)jjte004;
-                          }}
+                        }}
                          }
                          {if (true) {
-                          throw (Error)jjte004;
+                            throw (Error)jjte004;
                         }}
         } finally {
-                         if (jjtc004) {
+if (jjtc004) {
                            jjtree.closeNodeScope(jjtn004,  2);
                          }
         }
         break;
+        }
       default:
         jj_la1[23] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
     }
-  }
+}
 
 /*
  * Concatenation
  * For +=, then Math
  *
  */
-  final public void Concatenation() throws ParseException {
+  final public  void Concatenation() throws ParseException {
     Math();
     label_11:
     while (true) {
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case CONCAT:
+      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
+      case CONCAT:{
         ;
         break;
+        }
       default:
         jj_la1[24] = jj_gen;
         break label_11;
       }
       jj_consume_token(CONCAT);
-                    AstConcatenation jjtn001 = new AstConcatenation(JJTCONCATENATION);
+AstConcatenation jjtn001 = new AstConcatenation(JJTCONCATENATION);
                     boolean jjtc001 = true;
                     jjtree.openNodeScope(jjtn001);
       try {
         Math();
       } catch (Throwable jjte001) {
-                    if (jjtc001) {
+if (jjtc001) {
                       jjtree.clearNodeScope(jjtn001);
                       jjtc001 = false;
                     } else {
@@ -1065,23 +1098,23 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
                     if (jjte001 instanceof RuntimeException) {
                       {if (true) {
                         throw (RuntimeException)jjte001;
-                      }}
+                    }}
                     }
                     if (jjte001 instanceof ParseException) {
                       {if (true) {
                         throw (ParseException)jjte001;
-                      }}
+                    }}
                     }
                     {if (true) {
-                      throw (Error)jjte001;
+                        throw (Error)jjte001;
                     }}
       } finally {
-                    if (jjtc001) {
+if (jjtc001) {
                       jjtree.closeNodeScope(jjtn001,  2);
                     }
       }
     }
-  }
+}
 
 /*
  * Math
@@ -1091,25 +1124,26 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
     Multiplication();
     label_12:
     while (true) {
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
       case PLUS:
-      case MINUS:
+      case MINUS:{
         ;
         break;
+        }
       default:
         jj_la1[25] = jj_gen;
         break label_12;
       }
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case PLUS:
+      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
+      case PLUS:{
         jj_consume_token(PLUS);
-                  AstPlus jjtn001 = new AstPlus(JJTPLUS);
+AstPlus jjtn001 = new AstPlus(JJTPLUS);
                   boolean jjtc001 = true;
                   jjtree.openNodeScope(jjtn001);
         try {
           Multiplication();
         } catch (Throwable jjte001) {
-                  if (jjtc001) {
+if (jjtc001) {
                     jjtree.clearNodeScope(jjtn001);
                     jjtc001 = false;
                   } else {
@@ -1117,32 +1151,33 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
                   }
                   if (jjte001 instanceof RuntimeException) {
                     {if (true) {
-                      throw (RuntimeException)jjte001;
+                        throw (RuntimeException)jjte001;
                     }}
                   }
                   if (jjte001 instanceof ParseException) {
                     {if (true) {
-                      throw (ParseException)jjte001;
+                        throw (ParseException)jjte001;
                     }}
                   }
                   {if (true) {
                     throw (Error)jjte001;
-                  }}
+                }}
         } finally {
-                  if (jjtc001) {
+if (jjtc001) {
                     jjtree.closeNodeScope(jjtn001,  2);
                   }
         }
         break;
-      case MINUS:
+        }
+      case MINUS:{
         jj_consume_token(MINUS);
-                   AstMinus jjtn002 = new AstMinus(JJTMINUS);
+AstMinus jjtn002 = new AstMinus(JJTMINUS);
                    boolean jjtc002 = true;
                    jjtree.openNodeScope(jjtn002);
         try {
           Multiplication();
         } catch (Throwable jjte002) {
-                   if (jjtc002) {
+if (jjtc002) {
                      jjtree.clearNodeScope(jjtn002);
                      jjtc002 = false;
                    } else {
@@ -1150,30 +1185,31 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
                    }
                    if (jjte002 instanceof RuntimeException) {
                      {if (true) {
-                      throw (RuntimeException)jjte002;
+                        throw (RuntimeException)jjte002;
                     }}
                    }
                    if (jjte002 instanceof ParseException) {
                      {if (true) {
-                      throw (ParseException)jjte002;
+                        throw (ParseException)jjte002;
                     }}
                    }
                    {if (true) {
                     throw (Error)jjte002;
-                  }}
+                }}
         } finally {
-                   if (jjtc002) {
+if (jjtc002) {
                      jjtree.closeNodeScope(jjtn002,  2);
                    }
         }
         break;
+        }
       default:
         jj_la1[26] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
     }
-  }
+}
 
 /*
  * Multiplication
@@ -1183,28 +1219,29 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
     Unary();
     label_13:
     while (true) {
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
       case MULT:
       case DIV0:
       case DIV1:
       case MOD0:
-      case MOD1:
+      case MOD1:{
         ;
         break;
+        }
       default:
         jj_la1[27] = jj_gen;
         break label_13;
       }
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case MULT:
+      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
+      case MULT:{
         jj_consume_token(MULT);
-                  AstMult jjtn001 = new AstMult(JJTMULT);
+AstMult jjtn001 = new AstMult(JJTMULT);
                   boolean jjtc001 = true;
                   jjtree.openNodeScope(jjtn001);
         try {
           Unary();
         } catch (Throwable jjte001) {
-                  if (jjtc001) {
+if (jjtc001) {
                     jjtree.clearNodeScope(jjtn001);
                     jjtc001 = false;
                   } else {
@@ -1212,44 +1249,47 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
                   }
                   if (jjte001 instanceof RuntimeException) {
                     {if (true) {
-                      throw (RuntimeException)jjte001;
+                        throw (RuntimeException)jjte001;
                     }}
                   }
                   if (jjte001 instanceof ParseException) {
                     {if (true) {
-                      throw (ParseException)jjte001;
+                        throw (ParseException)jjte001;
                     }}
                   }
                   {if (true) {
                     throw (Error)jjte001;
-                  }}
+                }}
         } finally {
-                  if (jjtc001) {
+if (jjtc001) {
                     jjtree.closeNodeScope(jjtn001,  2);
                   }
         }
         break;
+        }
       case DIV0:
-      case DIV1:
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case DIV0:
+      case DIV1:{
+        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
+        case DIV0:{
           jj_consume_token(DIV0);
           break;
-        case DIV1:
+          }
+        case DIV1:{
           jj_consume_token(DIV1);
           break;
+          }
         default:
           jj_la1[28] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
-                           AstDiv jjtn002 = new AstDiv(JJTDIV);
+AstDiv jjtn002 = new AstDiv(JJTDIV);
                            boolean jjtc002 = true;
                            jjtree.openNodeScope(jjtn002);
         try {
           Unary();
         } catch (Throwable jjte002) {
-                           if (jjtc002) {
+if (jjtc002) {
                              jjtree.clearNodeScope(jjtn002);
                              jjtc002 = false;
                            } else {
@@ -1257,44 +1297,47 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
                            }
                            if (jjte002 instanceof RuntimeException) {
                              {if (true) {
-                              throw (RuntimeException)jjte002;
+                                throw (RuntimeException)jjte002;
                             }}
                            }
                            if (jjte002 instanceof ParseException) {
                              {if (true) {
-                              throw (ParseException)jjte002;
+                                throw (ParseException)jjte002;
                             }}
                            }
                            {if (true) {
                             throw (Error)jjte002;
-                          }}
+                        }}
         } finally {
-                           if (jjtc002) {
+if (jjtc002) {
                              jjtree.closeNodeScope(jjtn002,  2);
                            }
         }
         break;
+        }
       case MOD0:
-      case MOD1:
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case MOD0:
+      case MOD1:{
+        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
+        case MOD0:{
           jj_consume_token(MOD0);
           break;
-        case MOD1:
+          }
+        case MOD1:{
           jj_consume_token(MOD1);
           break;
+          }
         default:
           jj_la1[29] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
-                           AstMod jjtn003 = new AstMod(JJTMOD);
+AstMod jjtn003 = new AstMod(JJTMOD);
                            boolean jjtc003 = true;
                            jjtree.openNodeScope(jjtn003);
         try {
           Unary();
         } catch (Throwable jjte003) {
-                           if (jjtc003) {
+if (jjtc003) {
                              jjtree.clearNodeScope(jjtn003);
                              jjtc003 = false;
                            } else {
@@ -1302,46 +1345,47 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
                            }
                            if (jjte003 instanceof RuntimeException) {
                              {if (true) {
-                              throw (RuntimeException)jjte003;
+                                throw (RuntimeException)jjte003;
                             }}
                            }
                            if (jjte003 instanceof ParseException) {
                              {if (true) {
-                              throw (ParseException)jjte003;
+                                throw (ParseException)jjte003;
                             }}
                            }
                            {if (true) {
                             throw (Error)jjte003;
-                          }}
+                        }}
         } finally {
-                           if (jjtc003) {
+if (jjtc003) {
                              jjtree.closeNodeScope(jjtn003,  2);
                            }
         }
         break;
+        }
       default:
         jj_la1[30] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
     }
-  }
+}
 
 /*
  * Unary
  * For '-' '!' 'not' 'empty', then Value
  */
   final public void Unary() throws ParseException {
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case MINUS:
+    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
+    case MINUS:{
       jj_consume_token(MINUS);
-                  AstNegative jjtn001 = new AstNegative(JJTNEGATIVE);
+AstNegative jjtn001 = new AstNegative(JJTNEGATIVE);
                   boolean jjtc001 = true;
                   jjtree.openNodeScope(jjtn001);
       try {
         Unary();
       } catch (Throwable jjte001) {
-                  if (jjtc001) {
+if (jjtc001) {
                     jjtree.clearNodeScope(jjtn001);
                     jjtc001 = false;
                   } else {
@@ -1349,44 +1393,47 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
                   }
                   if (jjte001 instanceof RuntimeException) {
                     {if (true) {
-                      throw (RuntimeException)jjte001;
+                        throw (RuntimeException)jjte001;
                     }}
                   }
                   if (jjte001 instanceof ParseException) {
                     {if (true) {
-                      throw (ParseException)jjte001;
+                        throw (ParseException)jjte001;
                     }}
                   }
                   {if (true) {
                     throw (Error)jjte001;
-                  }}
+                }}
       } finally {
-                  if (jjtc001) {
+if (jjtc001) {
                     jjtree.closeNodeScope(jjtn001, true);
                   }
       }
       break;
+      }
     case NOT0:
-    case NOT1:
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case NOT0:
+    case NOT1:{
+      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
+      case NOT0:{
         jj_consume_token(NOT0);
         break;
-      case NOT1:
+        }
+      case NOT1:{
         jj_consume_token(NOT1);
         break;
+        }
       default:
         jj_la1[31] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
-                          AstNot jjtn002 = new AstNot(JJTNOT);
+AstNot jjtn002 = new AstNot(JJTNOT);
                           boolean jjtc002 = true;
                           jjtree.openNodeScope(jjtn002);
       try {
         Unary();
       } catch (Throwable jjte002) {
-                          if (jjtc002) {
+if (jjtc002) {
                             jjtree.clearNodeScope(jjtn002);
                             jjtc002 = false;
                           } else {
@@ -1394,32 +1441,33 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
                           }
                           if (jjte002 instanceof RuntimeException) {
                             {if (true) {
-                              throw (RuntimeException)jjte002;
+                                throw (RuntimeException)jjte002;
                             }}
                           }
                           if (jjte002 instanceof ParseException) {
                             {if (true) {
-                              throw (ParseException)jjte002;
+                                throw (ParseException)jjte002;
                             }}
                           }
                           {if (true) {
                             throw (Error)jjte002;
-                          }}
+                        }}
       } finally {
-                          if (jjtc002) {
+if (jjtc002) {
                             jjtree.closeNodeScope(jjtn002, true);
                           }
       }
       break;
-    case EMPTY:
+      }
+    case EMPTY:{
       jj_consume_token(EMPTY);
-                  AstEmpty jjtn003 = new AstEmpty(JJTEMPTY);
+AstEmpty jjtn003 = new AstEmpty(JJTEMPTY);
                   boolean jjtc003 = true;
                   jjtree.openNodeScope(jjtn003);
       try {
         Unary();
       } catch (Throwable jjte003) {
-                  if (jjtc003) {
+if (jjtc003) {
                     jjtree.clearNodeScope(jjtn003);
                     jjtc003 = false;
                   } else {
@@ -1427,23 +1475,24 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
                   }
                   if (jjte003 instanceof RuntimeException) {
                     {if (true) {
-                      throw (RuntimeException)jjte003;
+                        throw (RuntimeException)jjte003;
                     }}
                   }
                   if (jjte003 instanceof ParseException) {
                     {if (true) {
-                      throw (ParseException)jjte003;
+                        throw (ParseException)jjte003;
                     }}
                   }
                   {if (true) {
                     throw (Error)jjte003;
-                  }}
+                }}
       } finally {
-                  if (jjtc003) {
+if (jjtc003) {
                     jjtree.closeNodeScope(jjtn003, true);
                   }
       }
       break;
+      }
     case START_SET_OR_MAP:
     case INTEGER_LITERAL:
     case FLOATING_POINT_LITERAL:
@@ -1453,33 +1502,35 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
     case NULL:
     case LPAREN:
     case LBRACK:
-    case IDENTIFIER:
+    case IDENTIFIER:{
       Value();
       break;
+      }
     default:
       jj_la1[32] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
-  }
+}
 
 /*
  * Value
  * Defines Prefix plus zero or more Suffixes
  */
   final public void Value() throws ParseException {
-      AstValue jjtn001 = new AstValue(JJTVALUE);
+AstValue jjtn001 = new AstValue(JJTVALUE);
       boolean jjtc001 = true;
       jjtree.openNodeScope(jjtn001);
     try {
       ValuePrefix();
       label_14:
       while (true) {
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
         case DOT:
-        case LBRACK:
+        case LBRACK:{
           ;
           break;
+          }
         default:
           jj_la1[33] = jj_gen;
           break label_14;
@@ -1487,7 +1538,7 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
         ValueSuffix();
       }
     } catch (Throwable jjte001) {
-      if (jjtc001) {
+if (jjtc001) {
         jjtree.clearNodeScope(jjtn001);
         jjtc001 = false;
       } else {
@@ -1495,106 +1546,109 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
       }
       if (jjte001 instanceof RuntimeException) {
         {if (true) {
-          throw (RuntimeException)jjte001;
+            throw (RuntimeException)jjte001;
         }}
       }
       if (jjte001 instanceof ParseException) {
         {if (true) {
-          throw (ParseException)jjte001;
+            throw (ParseException)jjte001;
         }}
       }
       {if (true) {
         throw (Error)jjte001;
-      }}
+    }}
     } finally {
-      if (jjtc001) {
+if (jjtc001) {
         jjtree.closeNodeScope(jjtn001, jjtree.nodeArity() > 1);
       }
     }
-  }
+}
 
 /*
  * ValuePrefix
  * For Literals, Variables, and Functions
  */
   final public void ValuePrefix() throws ParseException {
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case INTEGER_LITERAL:
     case FLOATING_POINT_LITERAL:
     case STRING_LITERAL:
     case TRUE:
     case FALSE:
-    case NULL:
+    case NULL:{
       Literal();
       break;
+      }
     case START_SET_OR_MAP:
     case LPAREN:
     case LBRACK:
-    case IDENTIFIER:
+    case IDENTIFIER:{
       NonLiteral();
       break;
+      }
     default:
       jj_la1[34] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
-  }
+}
 
 /*
  * ValueSuffix
  * Either dot or bracket notation
  */
   final public void ValueSuffix() throws ParseException {
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case DOT:
+    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
+    case DOT:{
       DotSuffix();
       break;
-    case LBRACK:
+      }
+    case LBRACK:{
       BracketSuffix();
       break;
+      }
     default:
       jj_la1[35] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case LPAREN:
+    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
+    case LPAREN:{
       MethodParameters();
       break;
+      }
     default:
       jj_la1[36] = jj_gen;
       ;
     }
-  }
+}
 
 /*
  * DotSuffix
  * Dot Property
  */
-  final public void DotSuffix() throws ParseException {
-                               /*@bgen(jjtree) DotSuffix */
+  final public void DotSuffix() throws ParseException {/*@bgen(jjtree) DotSuffix */
                                 AstDotSuffix jjtn000 = new AstDotSuffix(JJTDOTSUFFIX);
                                 boolean jjtc000 = true;
                                 jjtree.openNodeScope(jjtn000);Token t = null;
     try {
       jj_consume_token(DOT);
       t = jj_consume_token(IDENTIFIER);
-                           jjtree.closeNodeScope(jjtn000, true);
+jjtree.closeNodeScope(jjtn000, true);
                            jjtc000 = false;
-                           jjtn000.setImage(t.image);
+jjtn000.setImage(t.image);
     } finally {
-      if (jjtc000) {
+if (jjtc000) {
         jjtree.closeNodeScope(jjtn000, true);
       }
     }
-  }
+}
 
 /*
  * BracketSuffix
  * Sub Expression Suffix
  */
-  final public void BracketSuffix() throws ParseException {
-                                       /*@bgen(jjtree) BracketSuffix */
+  final public void BracketSuffix() throws ParseException {/*@bgen(jjtree) BracketSuffix */
   AstBracketSuffix jjtn000 = new AstBracketSuffix(JJTBRACKETSUFFIX);
   boolean jjtc000 = true;
   jjtree.openNodeScope(jjtn000);
@@ -1603,7 +1657,7 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
       Expression();
       jj_consume_token(RBRACK);
     } catch (Throwable jjte000) {
-      if (jjtc000) {
+if (jjtc000) {
         jjtree.clearNodeScope(jjtn000);
         jjtc000 = false;
       } else {
@@ -1611,35 +1665,34 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
       }
       if (jjte000 instanceof RuntimeException) {
         {if (true) {
-          throw (RuntimeException)jjte000;
+            throw (RuntimeException)jjte000;
         }}
       }
       if (jjte000 instanceof ParseException) {
         {if (true) {
-          throw (ParseException)jjte000;
+            throw (ParseException)jjte000;
         }}
       }
       {if (true) {
         throw (Error)jjte000;
-      }}
+    }}
     } finally {
-      if (jjtc000) {
+if (jjtc000) {
         jjtree.closeNodeScope(jjtn000, true);
       }
     }
-  }
+}
 
 /*
  * MethodParameters
  */
-  final public void MethodParameters() throws ParseException {
-                                             /*@bgen(jjtree) MethodParameters */
+  final public void MethodParameters() throws ParseException {/*@bgen(jjtree) MethodParameters */
   AstMethodParameters jjtn000 = new AstMethodParameters(JJTMETHODPARAMETERS);
   boolean jjtc000 = true;
   jjtree.openNodeScope(jjtn000);
     try {
       jj_consume_token(LPAREN);
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
       case START_SET_OR_MAP:
       case INTEGER_LITERAL:
       case FLOATING_POINT_LITERAL:
@@ -1653,14 +1706,15 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
       case NOT1:
       case EMPTY:
       case MINUS:
-      case IDENTIFIER:
+      case IDENTIFIER:{
         Expression();
         label_15:
         while (true) {
-          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-          case COMMA:
+          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
+          case COMMA:{
             ;
             break;
+            }
           default:
             jj_la1[37] = jj_gen;
             break label_15;
@@ -1669,13 +1723,14 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
           Expression();
         }
         break;
+        }
       default:
         jj_la1[38] = jj_gen;
         ;
       }
       jj_consume_token(RPAREN);
     } catch (Throwable jjte000) {
-      if (jjtc000) {
+if (jjtc000) {
         jjtree.clearNodeScope(jjtn000);
         jjtc000 = false;
       } else {
@@ -1683,23 +1738,23 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
       }
       if (jjte000 instanceof RuntimeException) {
         {if (true) {
-          throw (RuntimeException)jjte000;
+            throw (RuntimeException)jjte000;
         }}
       }
       if (jjte000 instanceof ParseException) {
         {if (true) {
-          throw (ParseException)jjte000;
+            throw (ParseException)jjte000;
         }}
       }
       {if (true) {
         throw (Error)jjte000;
-      }}
+    }}
     } finally {
-      if (jjtc000) {
+if (jjtc000) {
         jjtree.closeNodeScope(jjtn000, true);
       }
     }
-  }
+}
 
 /*
  * NonLiteral
@@ -1709,33 +1764,37 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
     if (jj_2_6(5)) {
       LambdaExpressionOrInvocation();
     } else {
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case LPAREN:
+      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
+      case LPAREN:{
         jj_consume_token(LPAREN);
         Expression();
         jj_consume_token(RPAREN);
         break;
+        }
       default:
         jj_la1[39] = jj_gen;
         if (jj_2_7(2147483647)) {
           Function();
         } else {
-          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-          case IDENTIFIER:
+          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
+          case IDENTIFIER:{
             Identifier();
             break;
+            }
           default:
             jj_la1[40] = jj_gen;
             if (jj_2_8(3)) {
               SetData();
             } else {
-              switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-              case LBRACK:
+              switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
+              case LBRACK:{
                 ListData();
                 break;
-              case START_SET_OR_MAP:
+                }
+              case START_SET_OR_MAP:{
                 MapData();
                 break;
+                }
               default:
                 jj_la1[41] = jj_gen;
                 jj_consume_token(-1);
@@ -1746,21 +1805,20 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
         }
       }
     }
-  }
+}
 
 /*
  * Note that both an empty Set and an empty Map are represented by {}. The
  * parser will always parse {} as an empty Set and special handling is required
  * to convert it to an empty Map when appropriate.
  */
-  final public void SetData() throws ParseException {
-                          /*@bgen(jjtree) SetData */
+  final public void SetData() throws ParseException {/*@bgen(jjtree) SetData */
   AstSetData jjtn000 = new AstSetData(JJTSETDATA);
   boolean jjtc000 = true;
   jjtree.openNodeScope(jjtn000);
     try {
       jj_consume_token(START_SET_OR_MAP);
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
       case START_SET_OR_MAP:
       case INTEGER_LITERAL:
       case FLOATING_POINT_LITERAL:
@@ -1774,14 +1832,15 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
       case NOT1:
       case EMPTY:
       case MINUS:
-      case IDENTIFIER:
+      case IDENTIFIER:{
         Expression();
         label_16:
         while (true) {
-          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-          case COMMA:
+          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
+          case COMMA:{
             ;
             break;
+            }
           default:
             jj_la1[42] = jj_gen;
             break label_16;
@@ -1790,13 +1849,14 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
           Expression();
         }
         break;
+        }
       default:
         jj_la1[43] = jj_gen;
         ;
       }
       jj_consume_token(RBRACE);
     } catch (Throwable jjte000) {
-      if (jjtc000) {
+if (jjtc000) {
         jjtree.clearNodeScope(jjtn000);
         jjtc000 = false;
       } else {
@@ -1804,32 +1864,31 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
       }
       if (jjte000 instanceof RuntimeException) {
         {if (true) {
-          throw (RuntimeException)jjte000;
+            throw (RuntimeException)jjte000;
         }}
       }
       if (jjte000 instanceof ParseException) {
         {if (true) {
-          throw (ParseException)jjte000;
+            throw (ParseException)jjte000;
         }}
       }
       {if (true) {
         throw (Error)jjte000;
-      }}
+    }}
     } finally {
-      if (jjtc000) {
+if (jjtc000) {
         jjtree.closeNodeScope(jjtn000, true);
       }
     }
-  }
+}
 
-  final public void ListData() throws ParseException {
-                            /*@bgen(jjtree) ListData */
+  final public void ListData() throws ParseException {/*@bgen(jjtree) ListData */
   AstListData jjtn000 = new AstListData(JJTLISTDATA);
   boolean jjtc000 = true;
   jjtree.openNodeScope(jjtn000);
     try {
       jj_consume_token(LBRACK);
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
       case START_SET_OR_MAP:
       case INTEGER_LITERAL:
       case FLOATING_POINT_LITERAL:
@@ -1843,14 +1902,15 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
       case NOT1:
       case EMPTY:
       case MINUS:
-      case IDENTIFIER:
+      case IDENTIFIER:{
         Expression();
         label_17:
         while (true) {
-          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-          case COMMA:
+          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
+          case COMMA:{
             ;
             break;
+            }
           default:
             jj_la1[44] = jj_gen;
             break label_17;
@@ -1859,13 +1919,14 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
           Expression();
         }
         break;
+        }
       default:
         jj_la1[45] = jj_gen;
         ;
       }
       jj_consume_token(RBRACK);
     } catch (Throwable jjte000) {
-      if (jjtc000) {
+if (jjtc000) {
         jjtree.clearNodeScope(jjtn000);
         jjtc000 = false;
       } else {
@@ -1873,37 +1934,36 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
       }
       if (jjte000 instanceof RuntimeException) {
         {if (true) {
-          throw (RuntimeException)jjte000;
+            throw (RuntimeException)jjte000;
         }}
       }
       if (jjte000 instanceof ParseException) {
         {if (true) {
-          throw (ParseException)jjte000;
+            throw (ParseException)jjte000;
         }}
       }
       {if (true) {
         throw (Error)jjte000;
-      }}
+    }}
     } finally {
-      if (jjtc000) {
+if (jjtc000) {
         jjtree.closeNodeScope(jjtn000, true);
       }
     }
-  }
+}
 
 /*
  * Note that both an empty Set and an empty Map are represented by {}. The
  * parser will always parse {} as an empty Set and special handling is required
  * to convert it to an empty Map when appropriate.
  */
-  final public void MapData() throws ParseException {
-                          /*@bgen(jjtree) MapData */
+  final public void MapData() throws ParseException {/*@bgen(jjtree) MapData */
   AstMapData jjtn000 = new AstMapData(JJTMAPDATA);
   boolean jjtc000 = true;
   jjtree.openNodeScope(jjtn000);
     try {
       jj_consume_token(START_SET_OR_MAP);
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
       case START_SET_OR_MAP:
       case INTEGER_LITERAL:
       case FLOATING_POINT_LITERAL:
@@ -1917,14 +1977,15 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
       case NOT1:
       case EMPTY:
       case MINUS:
-      case IDENTIFIER:
+      case IDENTIFIER:{
         MapEntry();
         label_18:
         while (true) {
-          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-          case COMMA:
+          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
+          case COMMA:{
             ;
             break;
+            }
           default:
             jj_la1[46] = jj_gen;
             break label_18;
@@ -1933,13 +1994,14 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
           MapEntry();
         }
         break;
+        }
       default:
         jj_la1[47] = jj_gen;
         ;
       }
       jj_consume_token(RBRACE);
     } catch (Throwable jjte000) {
-      if (jjtc000) {
+if (jjtc000) {
         jjtree.clearNodeScope(jjtn000);
         jjtc000 = false;
       } else {
@@ -1947,26 +2009,25 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
       }
       if (jjte000 instanceof RuntimeException) {
         {if (true) {
-          throw (RuntimeException)jjte000;
+            throw (RuntimeException)jjte000;
         }}
       }
       if (jjte000 instanceof ParseException) {
         {if (true) {
-          throw (ParseException)jjte000;
+            throw (ParseException)jjte000;
         }}
       }
       {if (true) {
         throw (Error)jjte000;
-      }}
+    }}
     } finally {
-      if (jjtc000) {
+if (jjtc000) {
         jjtree.closeNodeScope(jjtn000, true);
       }
     }
-  }
+}
 
-  final public void MapEntry() throws ParseException {
-                            /*@bgen(jjtree) MapEntry */
+  final public void MapEntry() throws ParseException {/*@bgen(jjtree) MapEntry */
   AstMapEntry jjtn000 = new AstMapEntry(JJTMAPENTRY);
   boolean jjtc000 = true;
   jjtree.openNodeScope(jjtn000);
@@ -1975,7 +2036,7 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
       jj_consume_token(COLON);
       Expression();
     } catch (Throwable jjte000) {
-      if (jjtc000) {
+if (jjtc000) {
         jjtree.clearNodeScope(jjtn000);
         jjtc000 = false;
       } else {
@@ -1983,67 +2044,66 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
       }
       if (jjte000 instanceof RuntimeException) {
         {if (true) {
-          throw (RuntimeException)jjte000;
+            throw (RuntimeException)jjte000;
         }}
       }
       if (jjte000 instanceof ParseException) {
         {if (true) {
-          throw (ParseException)jjte000;
+            throw (ParseException)jjte000;
         }}
       }
       {if (true) {
         throw (Error)jjte000;
-      }}
+    }}
     } finally {
-      if (jjtc000) {
+if (jjtc000) {
         jjtree.closeNodeScope(jjtn000, true);
       }
     }
-  }
+}
 
 /*
  * Identifier
  * Java Language Identifier
  */
-  final public void Identifier() throws ParseException {
-                                 /*@bgen(jjtree) Identifier */
+  final public void Identifier() throws ParseException {/*@bgen(jjtree) Identifier */
                                   AstIdentifier jjtn000 = new AstIdentifier(JJTIDENTIFIER);
                                   boolean jjtc000 = true;
                                   jjtree.openNodeScope(jjtn000);Token t = null;
     try {
       t = jj_consume_token(IDENTIFIER);
-                     jjtree.closeNodeScope(jjtn000, true);
+jjtree.closeNodeScope(jjtn000, true);
                      jjtc000 = false;
-                     jjtn000.setImage(t.image);
+jjtn000.setImage(t.image);
     } finally {
-      if (jjtc000) {
+if (jjtc000) {
         jjtree.closeNodeScope(jjtn000, true);
       }
     }
-  }
+}
 
 /*
  * Function
  * Namespace:Name(a,b,c)
  */
-  final public void Function() throws ParseException {
- /*@bgen(jjtree) Function */
+  final public void Function() throws ParseException {/*@bgen(jjtree) Function */
     AstFunction jjtn000 = new AstFunction(JJTFUNCTION);
     boolean jjtc000 = true;
     jjtree.openNodeScope(jjtn000);Token t0 = null;
     Token t1 = null;
     try {
       t0 = jj_consume_token(IDENTIFIER);
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case COLON:
+      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
+      case COLON:{
         jj_consume_token(COLON);
         t1 = jj_consume_token(IDENTIFIER);
         break;
+        }
       default:
         jj_la1[48] = jj_gen;
         ;
       }
-        if (t1 != null) {
+if (t1 != null) {
             jjtn000.setPrefix(t0.image);
             jjtn000.setLocalName(t1.image);
         } else {
@@ -2052,17 +2112,18 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
       label_19:
       while (true) {
         MethodParameters();
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case LPAREN:
+        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
+        case LPAREN:{
           ;
           break;
+          }
         default:
           jj_la1[49] = jj_gen;
           break label_19;
         }
       }
     } catch (Throwable jjte000) {
-      if (jjtc000) {
+if (jjtc000) {
         jjtree.clearNodeScope(jjtn000);
         jjtc000 = false;
       } else {
@@ -2070,402 +2131,430 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
       }
       if (jjte000 instanceof RuntimeException) {
         {if (true) {
-          throw (RuntimeException)jjte000;
+            throw (RuntimeException)jjte000;
         }}
       }
       if (jjte000 instanceof ParseException) {
         {if (true) {
-          throw (ParseException)jjte000;
+            throw (ParseException)jjte000;
         }}
       }
       {if (true) {
         throw (Error)jjte000;
-      }}
+    }}
     } finally {
-      if (jjtc000) {
+if (jjtc000) {
         jjtree.closeNodeScope(jjtn000, true);
       }
     }
-  }
+}
 
 /*
  * Literal
  * Reserved Keywords
  */
   final public void Literal() throws ParseException {
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case TRUE:
-    case FALSE:
+    case FALSE:{
       Boolean();
       break;
-    case FLOATING_POINT_LITERAL:
+      }
+    case FLOATING_POINT_LITERAL:{
       FloatingPoint();
       break;
-    case INTEGER_LITERAL:
+      }
+    case INTEGER_LITERAL:{
       Integer();
       break;
-    case STRING_LITERAL:
+      }
+    case STRING_LITERAL:{
       String();
       break;
-    case NULL:
+      }
+    case NULL:{
       Null();
       break;
+      }
     default:
       jj_la1[50] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
-  }
+}
 
 /*
  * Boolean
  * For 'true' 'false'
  */
   final public void Boolean() throws ParseException {
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case TRUE:
-      AstTrue jjtn001 = new AstTrue(JJTTRUE);
+    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
+    case TRUE:{
+AstTrue jjtn001 = new AstTrue(JJTTRUE);
       boolean jjtc001 = true;
       jjtree.openNodeScope(jjtn001);
       try {
         jj_consume_token(TRUE);
       } finally {
-      if (jjtc001) {
+if (jjtc001) {
         jjtree.closeNodeScope(jjtn001, true);
       }
       }
       break;
-    case FALSE:
-        AstFalse jjtn002 = new AstFalse(JJTFALSE);
+      }
+    case FALSE:{
+AstFalse jjtn002 = new AstFalse(JJTFALSE);
         boolean jjtc002 = true;
         jjtree.openNodeScope(jjtn002);
       try {
         jj_consume_token(FALSE);
       } finally {
-        if (jjtc002) {
+if (jjtc002) {
           jjtree.closeNodeScope(jjtn002, true);
         }
       }
       break;
+      }
     default:
       jj_la1[51] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
-  }
+}
 
 /*
  * FloatingPoint
  * For Decimal and Floating Point Literals
  */
-  final public void FloatingPoint() throws ParseException {
-                                       /*@bgen(jjtree) FloatingPoint */
+  final public void FloatingPoint() throws ParseException {/*@bgen(jjtree) FloatingPoint */
                                         AstFloatingPoint jjtn000 = new AstFloatingPoint(JJTFLOATINGPOINT);
                                         boolean jjtc000 = true;
                                         jjtree.openNodeScope(jjtn000);Token t = null;
     try {
       t = jj_consume_token(FLOATING_POINT_LITERAL);
-                                 jjtree.closeNodeScope(jjtn000, true);
+jjtree.closeNodeScope(jjtn000, true);
                                  jjtc000 = false;
-                                 jjtn000.setImage(t.image);
+jjtn000.setImage(t.image);
     } finally {
-      if (jjtc000) {
+if (jjtc000) {
         jjtree.closeNodeScope(jjtn000, true);
       }
     }
-  }
+}
 
 /*
  * Integer
  * For Simple Numeric Literals
  */
-  final public void Integer() throws ParseException {
-                           /*@bgen(jjtree) Integer */
+  final public void Integer() throws ParseException {/*@bgen(jjtree) Integer */
                             AstInteger jjtn000 = new AstInteger(JJTINTEGER);
                             boolean jjtc000 = true;
                             jjtree.openNodeScope(jjtn000);Token t = null;
     try {
       t = jj_consume_token(INTEGER_LITERAL);
-                          jjtree.closeNodeScope(jjtn000, true);
+jjtree.closeNodeScope(jjtn000, true);
                           jjtc000 = false;
-                          jjtn000.setImage(t.image);
+jjtn000.setImage(t.image);
     } finally {
-      if (jjtc000) {
+if (jjtc000) {
         jjtree.closeNodeScope(jjtn000, true);
       }
     }
-  }
+}
 
 /*
  * String
  * For Quoted Literals
  */
-  final public void String() throws ParseException {
-                         /*@bgen(jjtree) String */
+  final public void String() throws ParseException {/*@bgen(jjtree) String */
                           AstString jjtn000 = new AstString(JJTSTRING);
                           boolean jjtc000 = true;
                           jjtree.openNodeScope(jjtn000);Token t = null;
     try {
       t = jj_consume_token(STRING_LITERAL);
-                         jjtree.closeNodeScope(jjtn000, true);
+jjtree.closeNodeScope(jjtn000, true);
                          jjtc000 = false;
-                         jjtn000.setImage(t.image);
+jjtn000.setImage(t.image);
     } finally {
-      if (jjtc000) {
+if (jjtc000) {
         jjtree.closeNodeScope(jjtn000, true);
       }
     }
-  }
+}
 
 /*
  * Null
  * For 'null'
  */
-  final public void Null() throws ParseException {
-                     /*@bgen(jjtree) Null */
+  final public void Null() throws ParseException {/*@bgen(jjtree) Null */
   AstNull jjtn000 = new AstNull(JJTNULL);
   boolean jjtc000 = true;
   jjtree.openNodeScope(jjtn000);
     try {
       jj_consume_token(NULL);
     } finally {
-      if (jjtc000) {
+if (jjtc000) {
         jjtree.closeNodeScope(jjtn000, true);
       }
     }
-  }
+}
 
-  private boolean jj_2_1(int xla) {
+  private boolean jj_2_1(int xla)
+ {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
-    try { return !jj_3_1(); }
+    try { return (!jj_3_1()); }
     catch(LookaheadSuccess ls) { return true; }
     finally { jj_save(0, xla); }
   }
 
-  private boolean jj_2_2(int xla) {
+  private boolean jj_2_2(int xla)
+ {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
-    try { return !jj_3_2(); }
+    try { return (!jj_3_2()); }
     catch(LookaheadSuccess ls) { return true; }
     finally { jj_save(1, xla); }
   }
 
-  private boolean jj_2_3(int xla) {
+  private boolean jj_2_3(int xla)
+ {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
-    try { return !jj_3_3(); }
+    try { return (!jj_3_3()); }
     catch(LookaheadSuccess ls) { return true; }
     finally { jj_save(2, xla); }
   }
 
-  private boolean jj_2_4(int xla) {
+  private boolean jj_2_4(int xla)
+ {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
-    try { return !jj_3_4(); }
+    try { return (!jj_3_4()); }
     catch(LookaheadSuccess ls) { return true; }
     finally { jj_save(3, xla); }
   }
 
-  private boolean jj_2_5(int xla) {
+  private boolean jj_2_5(int xla)
+ {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
-    try { return !jj_3_5(); }
+    try { return (!jj_3_5()); }
     catch(LookaheadSuccess ls) { return true; }
     finally { jj_save(4, xla); }
   }
 
-  private boolean jj_2_6(int xla) {
+  private boolean jj_2_6(int xla)
+ {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
-    try { return !jj_3_6(); }
+    try { return (!jj_3_6()); }
     catch(LookaheadSuccess ls) { return true; }
     finally { jj_save(5, xla); }
   }
 
-  private boolean jj_2_7(int xla) {
+  private boolean jj_2_7(int xla)
+ {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
-    try { return !jj_3_7(); }
+    try { return (!jj_3_7()); }
     catch(LookaheadSuccess ls) { return true; }
     finally { jj_save(6, xla); }
   }
 
-  private boolean jj_2_8(int xla) {
+  private boolean jj_2_8(int xla)
+ {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
-    try { return !jj_3_8(); }
+    try { return (!jj_3_8()); }
     catch(LookaheadSuccess ls) { return true; }
     finally { jj_save(7, xla); }
   }
 
-  private boolean jj_3R_41() {
+  private boolean jj_3R_And_173_17_41()
+ {
     Token xsp;
     xsp = jj_scanpos;
     if (jj_scan_token(39)) {
     jj_scanpos = xsp;
     if (jj_scan_token(40)) {
-      return true;
+        return true;
     }
     }
     return false;
   }
 
-  private boolean jj_3R_30() {
-    if (jj_3R_22()) {
-      return true;
+  private boolean jj_3R_LambdaExpressionOrInvocation_144_45_30()
+ {
+    if (jj_3R_Choice_155_5_22()) {
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_40() {
-    if (jj_3R_44()) {
-      return true;
+  private boolean jj_3R_Equality_182_5_40()
+ {
+    if (jj_3R_Compare_196_5_44()) {
+        return true;
     }
     Token xsp;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_45()) { jj_scanpos = xsp; break; }
+      if (jj_3R_Equality_184_9_45()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
 
-  private boolean jj_3R_107() {
-    if (jj_3R_36()) {
-      return true;
+  private boolean jj_3R_MapEntry_368_5_107()
+ {
+    if (jj_3R_Expression_99_5_36()) {
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_105() {
-    if (jj_3R_107()) {
-      return true;
+  private boolean jj_3R_MapData_362_11_105()
+ {
+    if (jj_3R_MapEntry_368_5_107()) {
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_43() {
+  private boolean jj_3R_LambdaParameters_132_46_43()
+ {
     if (jj_scan_token(COMMA)) {
-      return true;
+        return true;
     }
-    if (jj_3R_38()) {
-      return true;
+    if (jj_3R_Identifier_377_5_38()) {
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_34() {
-    if (jj_3R_40()) {
-      return true;
+  private boolean jj_3R_And_173_5_34()
+ {
+    if (jj_3R_Equality_182_5_40()) {
+        return true;
     }
     Token xsp;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_41()) { jj_scanpos = xsp; break; }
+      if (jj_3R_And_173_17_41()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
 
-  private boolean jj_3R_37() {
+  private boolean jj_3R_SetData_343_26_37()
+ {
     if (jj_scan_token(COMMA)) {
-      return true;
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_35() {
+  private boolean jj_3R_Or_164_12_35()
+ {
     Token xsp;
     xsp = jj_scanpos;
     if (jj_scan_token(41)) {
     jj_scanpos = xsp;
     if (jj_scan_token(42)) {
-      return true;
+        return true;
     }
     }
     return false;
   }
 
-  private boolean jj_3R_99() {
+  private boolean jj_3R_MapData_361_5_99()
+ {
     if (jj_scan_token(START_SET_OR_MAP)) {
-      return true;
+        return true;
     }
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_105()) {
-      jj_scanpos = xsp;
+    if (jj_3R_MapData_362_11_105()) {
+        jj_scanpos = xsp;
     }
     if (jj_scan_token(RBRACE)) {
-      return true;
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_104() {
-    if (jj_3R_36()) {
-      return true;
+  private boolean jj_3R_ListData_350_11_104()
+ {
+    if (jj_3R_Expression_99_5_36()) {
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_29() {
-    if (jj_3R_34()) {
-      return true;
+  private boolean jj_3R_Or_164_5_29()
+ {
+    if (jj_3R_And_173_5_34()) {
+        return true;
     }
     Token xsp;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_35()) { jj_scanpos = xsp; break; }
+      if (jj_3R_Or_164_12_35()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
 
-  private boolean jj_3_5() {
+  private boolean jj_3_5()
+ {
     if (jj_scan_token(QUESTIONMARK)) {
-      return true;
+        return true;
     }
-    if (jj_3R_22()) {
-      return true;
+    if (jj_3R_Choice_155_5_22()) {
+        return true;
     }
     if (jj_scan_token(COLON)) {
-      return true;
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_98() {
+  private boolean jj_3R_ListData_349_5_98()
+ {
     if (jj_scan_token(LBRACK)) {
-      return true;
+        return true;
     }
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_104()) {
-      jj_scanpos = xsp;
+    if (jj_3R_ListData_350_11_104()) {
+        jj_scanpos = xsp;
     }
     if (jj_scan_token(RBRACK)) {
-      return true;
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_39() {
-    if (jj_3R_38()) {
-      return true;
+  private boolean jj_3R_LambdaParameters_132_31_39()
+ {
+    if (jj_3R_Identifier_377_5_38()) {
+        return true;
     }
     Token xsp;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_43()) { jj_scanpos = xsp; break; }
+      if (jj_3R_LambdaParameters_132_46_43()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
 
-  private boolean jj_3R_31() {
-    if (jj_3R_36()) {
-      return true;
+  private boolean jj_3R_SetData_343_11_31()
+ {
+    if (jj_3R_Expression_99_5_36()) {
+        return true;
     }
     Token xsp;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_37()) { jj_scanpos = xsp; break; }
+      if (jj_3R_SetData_343_26_37()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
 
-  private boolean jj_3R_22() {
-    if (jj_3R_29()) {
-      return true;
+  private boolean jj_3R_Choice_155_5_22()
+ {
+    if (jj_3R_Or_164_5_29()) {
+        return true;
     }
     Token xsp;
     while (true) {
@@ -2475,168 +2564,183 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
     return false;
   }
 
-  private boolean jj_3_3() {
-    if (jj_3R_21()) {
-      return true;
+  private boolean jj_3_3()
+ {
+    if (jj_3R_LambdaExpression_124_5_21()) {
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_25() {
+  private boolean jj_3R_SetData_342_5_25()
+ {
     if (jj_scan_token(START_SET_OR_MAP)) {
-      return true;
+        return true;
     }
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_31()) {
-      jj_scanpos = xsp;
+    if (jj_3R_SetData_343_11_31()) {
+        jj_scanpos = xsp;
     }
     if (jj_scan_token(RBRACE)) {
-      return true;
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3_4() {
-    if (jj_3R_21()) {
-      return true;
+  private boolean jj_3_4()
+ {
+    if (jj_3R_LambdaExpression_124_5_21()) {
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_24() {
+  private boolean jj_3R_null_328_18_24()
+ {
     if (jj_scan_token(IDENTIFIER)) {
-      return true;
+        return true;
     }
     if (jj_scan_token(COLON)) {
-      return true;
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3_7() {
+  private boolean jj_3_7()
+ {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_24()) {
-      jj_scanpos = xsp;
+    if (jj_3R_null_328_18_24()) {
+        jj_scanpos = xsp;
     }
     if (jj_scan_token(IDENTIFIER)) {
-      return true;
+        return true;
     }
     if (jj_scan_token(LPAREN)) {
-      return true;
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_33() {
+  private boolean jj_3R_LambdaParameters_132_20_33()
+ {
     if (jj_scan_token(LPAREN)) {
-      return true;
+        return true;
     }
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_39()) {
-      jj_scanpos = xsp;
+    if (jj_3R_LambdaParameters_132_31_39()) {
+        jj_scanpos = xsp;
     }
     if (jj_scan_token(RPAREN)) {
-      return true;
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_89() {
-    if (jj_3R_99()) {
-      return true;
+  private boolean jj_3R_NonLiteral_332_7_89()
+ {
+    if (jj_3R_MapData_361_5_99()) {
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_88() {
-    if (jj_3R_98()) {
-      return true;
+  private boolean jj_3R_NonLiteral_331_7_88()
+ {
+    if (jj_3R_ListData_349_5_98()) {
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_23() {
+  private boolean jj_3R_LambdaExpressionOrInvocation_141_5_23()
+ {
     if (jj_scan_token(LPAREN)) {
-      return true;
+        return true;
     }
-    if (jj_3R_27()) {
-      return true;
+    if (jj_3R_LambdaParameters_132_5_27()) {
+        return true;
     }
     if (jj_scan_token(ARROW)) {
-      return true;
+        return true;
     }
     Token xsp;
     xsp = jj_scanpos;
     if (jj_3_4()) {
     jj_scanpos = xsp;
-    if (jj_3R_30()) {
-      return true;
+    if (jj_3R_LambdaExpressionOrInvocation_144_45_30()) {
+        return true;
     }
     }
     if (jj_scan_token(RPAREN)) {
-      return true;
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3_8() {
-    if (jj_3R_25()) {
-      return true;
+  private boolean jj_3_8()
+ {
+    if (jj_3R_SetData_342_5_25()) {
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_87() {
-    if (jj_3R_38()) {
-      return true;
+  private boolean jj_3R_NonLiteral_329_7_87()
+ {
+    if (jj_3R_Identifier_377_5_38()) {
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_86() {
-    if (jj_3R_97()) {
-      return true;
+  private boolean jj_3R_NonLiteral_328_7_86()
+ {
+    if (jj_3R_Function_390_5_97()) {
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_85() {
+  private boolean jj_3R_NonLiteral_327_7_85()
+ {
     if (jj_scan_token(LPAREN)) {
-      return true;
+        return true;
     }
-    if (jj_3R_36()) {
-      return true;
+    if (jj_3R_Expression_99_5_36()) {
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3_6() {
-    if (jj_3R_23()) {
-      return true;
+  private boolean jj_3_6()
+ {
+    if (jj_3R_LambdaExpressionOrInvocation_141_5_23()) {
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_77() {
+  private boolean jj_3R_NonLiteral_326_5_77()
+ {
     Token xsp;
     xsp = jj_scanpos;
     if (jj_3_6()) {
     jj_scanpos = xsp;
-    if (jj_3R_85()) {
+    if (jj_3R_NonLiteral_327_7_85()) {
     jj_scanpos = xsp;
-    if (jj_3R_86()) {
+    if (jj_3R_NonLiteral_328_7_86()) {
     jj_scanpos = xsp;
-    if (jj_3R_87()) {
+    if (jj_3R_NonLiteral_329_7_87()) {
     jj_scanpos = xsp;
     if (jj_3_8()) {
     jj_scanpos = xsp;
-    if (jj_3R_88()) {
+    if (jj_3R_NonLiteral_331_7_88()) {
     jj_scanpos = xsp;
-    if (jj_3R_89()) {
-      return true;
+    if (jj_3R_NonLiteral_332_7_89()) {
+        return true;
     }
     }
     }
@@ -2647,77 +2751,85 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
     return false;
   }
 
-  private boolean jj_3R_32() {
-    if (jj_3R_38()) {
-      return true;
+  private boolean jj_3R_LambdaParameters_132_5_32()
+ {
+    if (jj_3R_Identifier_377_5_38()) {
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_27() {
+  private boolean jj_3R_LambdaParameters_132_5_27()
+ {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_32()) {
+    if (jj_3R_LambdaParameters_132_5_32()) {
     jj_scanpos = xsp;
-    if (jj_3R_33()) {
-      return true;
+    if (jj_3R_LambdaParameters_132_20_33()) {
+        return true;
     }
     }
     return false;
   }
 
-  private boolean jj_3_1() {
+  private boolean jj_3_1()
+ {
     if (jj_scan_token(ASSIGN)) {
-      return true;
+        return true;
     }
-    if (jj_3R_20()) {
-      return true;
+    if (jj_3R_Assignment_115_5_20()) {
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_106() {
+  private boolean jj_3R_MethodParameters_317_5_106()
+ {
     if (jj_scan_token(LPAREN)) {
-      return true;
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_21() {
-    if (jj_3R_27()) {
-      return true;
+  private boolean jj_3R_LambdaExpression_124_5_21()
+ {
+    if (jj_3R_LambdaParameters_132_5_27()) {
+        return true;
     }
     if (jj_scan_token(ARROW)) {
-      return true;
+        return true;
     }
     Token xsp;
     xsp = jj_scanpos;
     if (jj_3_3()) {
     jj_scanpos = xsp;
-    if (jj_3R_28()) {
-      return true;
+    if (jj_3R_LambdaExpression_124_68_28()) {
+        return true;
     }
     }
     return false;
   }
 
-  private boolean jj_3R_46() {
+  private boolean jj_3R_Semicolon_107_20_46()
+ {
     if (jj_scan_token(SEMICOLON)) {
-      return true;
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_91() {
+  private boolean jj_3R_BracketSuffix_309_5_91()
+ {
     if (jj_scan_token(LBRACK)) {
-      return true;
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_26() {
-    if (jj_3R_22()) {
-      return true;
+  private boolean jj_3R_Assignment_116_5_26()
+ {
+    if (jj_3R_Choice_155_5_22()) {
+        return true;
     }
     Token xsp;
     while (true) {
@@ -2727,172 +2839,190 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
     return false;
   }
 
-  private boolean jj_3R_79() {
-    if (jj_3R_91()) {
-      return true;
+  private boolean jj_3R_ValueSuffix_291_21_79()
+ {
+    if (jj_3R_BracketSuffix_309_5_91()) {
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3_2() {
-    if (jj_3R_21()) {
-      return true;
+  private boolean jj_3_2()
+ {
+    if (jj_3R_LambdaExpression_124_5_21()) {
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_20() {
+  private boolean jj_3R_Assignment_115_5_20()
+ {
     Token xsp;
     xsp = jj_scanpos;
     if (jj_3_2()) {
     jj_scanpos = xsp;
-    if (jj_3R_26()) {
-      return true;
+    if (jj_3R_Assignment_116_5_26()) {
+        return true;
     }
     }
     return false;
   }
 
-  private boolean jj_3R_90() {
+  private boolean jj_3R_DotSuffix_300_5_90()
+ {
     if (jj_scan_token(DOT)) {
-      return true;
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_42() {
-    if (jj_3R_20()) {
-      return true;
+  private boolean jj_3R_Semicolon_107_5_42()
+ {
+    if (jj_3R_Assignment_115_5_20()) {
+        return true;
     }
     Token xsp;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_46()) { jj_scanpos = xsp; break; }
+      if (jj_3R_Semicolon_107_20_46()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
 
-  private boolean jj_3R_78() {
-    if (jj_3R_90()) {
-      return true;
+  private boolean jj_3R_ValueSuffix_291_7_78()
+ {
+    if (jj_3R_DotSuffix_300_5_90()) {
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_75() {
+  private boolean jj_3R_ValueSuffix_291_5_75()
+ {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_78()) {
+    if (jj_3R_ValueSuffix_291_7_78()) {
     jj_scanpos = xsp;
-    if (jj_3R_79()) {
-      return true;
+    if (jj_3R_ValueSuffix_291_21_79()) {
+        return true;
     }
     }
     return false;
   }
 
-  private boolean jj_3R_36() {
-    if (jj_3R_42()) {
-      return true;
+  private boolean jj_3R_Expression_99_5_36()
+ {
+    if (jj_3R_Semicolon_107_5_42()) {
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_72() {
-    if (jj_3R_75()) {
-      return true;
+  private boolean jj_3R_Value_272_21_72()
+ {
+    if (jj_3R_ValueSuffix_291_5_75()) {
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_74() {
-    if (jj_3R_77()) {
-      return true;
+  private boolean jj_3R_ValuePrefix_282_7_74()
+ {
+    if (jj_3R_NonLiteral_326_5_77()) {
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_71() {
+  private boolean jj_3R_ValuePrefix_281_5_71()
+ {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_73()) {
+    if (jj_3R_ValuePrefix_281_5_73()) {
     jj_scanpos = xsp;
-    if (jj_3R_74()) {
-      return true;
+    if (jj_3R_ValuePrefix_282_7_74()) {
+        return true;
     }
     }
     return false;
   }
 
-  private boolean jj_3R_73() {
-    if (jj_3R_76()) {
-      return true;
+  private boolean jj_3R_ValuePrefix_281_5_73()
+ {
+    if (jj_3R_Literal_408_5_76()) {
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_70() {
-    if (jj_3R_71()) {
-      return true;
+  private boolean jj_3R_Value_272_5_70()
+ {
+    if (jj_3R_ValuePrefix_281_5_71()) {
+        return true;
     }
     Token xsp;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_72()) { jj_scanpos = xsp; break; }
+      if (jj_3R_Value_272_21_72()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
 
-  private boolean jj_3R_96() {
+  private boolean jj_3R_Null_458_5_96()
+ {
     if (jj_scan_token(NULL)) {
-      return true;
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_66() {
-    if (jj_3R_70()) {
-      return true;
+  private boolean jj_3R_Unary_263_9_66()
+ {
+    if (jj_3R_Value_272_5_70()) {
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_65() {
+  private boolean jj_3R_Unary_261_9_65()
+ {
     if (jj_scan_token(EMPTY)) {
-      return true;
+        return true;
     }
-    if (jj_3R_59()) {
-      return true;
+    if (jj_3R_Unary_257_9_59()) {
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_64() {
+  private boolean jj_3R_Unary_259_9_64()
+ {
     Token xsp;
     xsp = jj_scanpos;
     if (jj_scan_token(37)) {
     jj_scanpos = xsp;
     if (jj_scan_token(38)) {
-      return true;
+        return true;
     }
     }
-    if (jj_3R_59()) {
-      return true;
+    if (jj_3R_Unary_257_9_59()) {
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_59() {
+  private boolean jj_3R_Unary_257_9_59()
+ {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_63()) {
+    if (jj_3R_Unary_257_9_63()) {
     jj_scanpos = xsp;
-    if (jj_3R_64()) {
+    if (jj_3R_Unary_259_9_64()) {
     jj_scanpos = xsp;
-    if (jj_3R_65()) {
+    if (jj_3R_Unary_261_9_65()) {
     jj_scanpos = xsp;
-    if (jj_3R_66()) {
-      return true;
+    if (jj_3R_Unary_263_9_66()) {
+        return true;
     }
     }
     }
@@ -2900,214 +3030,237 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
     return false;
   }
 
-  private boolean jj_3R_63() {
+  private boolean jj_3R_Unary_257_9_63()
+ {
     if (jj_scan_token(MINUS)) {
-      return true;
+        return true;
     }
-    if (jj_3R_59()) {
-      return true;
+    if (jj_3R_Unary_257_9_59()) {
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_95() {
+  private boolean jj_3R_String_449_5_95()
+ {
     if (jj_scan_token(STRING_LITERAL)) {
-      return true;
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_69() {
+  private boolean jj_3R_Multiplication_247_9_69()
+ {
     Token xsp;
     xsp = jj_scanpos;
     if (jj_scan_token(51)) {
     jj_scanpos = xsp;
     if (jj_scan_token(52)) {
-      return true;
+        return true;
     }
     }
     return false;
   }
 
-  private boolean jj_3R_94() {
+  private boolean jj_3R_Integer_440_5_94()
+ {
     if (jj_scan_token(INTEGER_LITERAL)) {
-      return true;
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_68() {
+  private boolean jj_3R_Multiplication_245_9_68()
+ {
     Token xsp;
     xsp = jj_scanpos;
     if (jj_scan_token(49)) {
     jj_scanpos = xsp;
     if (jj_scan_token(50)) {
-      return true;
+        return true;
     }
     }
     return false;
   }
 
-  private boolean jj_3R_60() {
+  private boolean jj_3R_Multiplication_243_9_60()
+ {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_67()) {
+    if (jj_3R_Multiplication_243_9_67()) {
     jj_scanpos = xsp;
-    if (jj_3R_68()) {
+    if (jj_3R_Multiplication_245_9_68()) {
     jj_scanpos = xsp;
-    if (jj_3R_69()) {
-      return true;
+    if (jj_3R_Multiplication_247_9_69()) {
+        return true;
     }
     }
     }
     return false;
   }
 
-  private boolean jj_3R_67() {
+  private boolean jj_3R_Multiplication_243_9_67()
+ {
     if (jj_scan_token(MULT)) {
-      return true;
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_57() {
-    if (jj_3R_59()) {
-      return true;
+  private boolean jj_3R_Multiplication_241_5_57()
+ {
+    if (jj_3R_Unary_257_9_59()) {
+        return true;
     }
     Token xsp;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_60()) { jj_scanpos = xsp; break; }
+      if (jj_3R_Multiplication_243_9_60()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
 
-  private boolean jj_3R_93() {
+  private boolean jj_3R_FloatingPoint_431_5_93()
+ {
     if (jj_scan_token(FLOATING_POINT_LITERAL)) {
-      return true;
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_62() {
+  private boolean jj_3R_Math_231_9_62()
+ {
     if (jj_scan_token(MINUS)) {
-      return true;
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_101() {
+  private boolean jj_3R_Boolean_423_7_101()
+ {
     if (jj_scan_token(FALSE)) {
-      return true;
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_58() {
+  private boolean jj_3R_Math_229_9_58()
+ {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_61()) {
+    if (jj_3R_Math_229_9_61()) {
     jj_scanpos = xsp;
-    if (jj_3R_62()) {
-      return true;
+    if (jj_3R_Math_231_9_62()) {
+        return true;
     }
     }
     return false;
   }
 
-  private boolean jj_3R_61() {
+  private boolean jj_3R_Math_229_9_61()
+ {
     if (jj_scan_token(PLUS)) {
-      return true;
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_100() {
+  private boolean jj_3R_Boolean_421_5_100()
+ {
     if (jj_scan_token(TRUE)) {
-      return true;
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_92() {
+  private boolean jj_3R_Boolean_421_5_92()
+ {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_100()) {
+    if (jj_3R_Boolean_421_5_100()) {
     jj_scanpos = xsp;
-    if (jj_3R_101()) {
-      return true;
+    if (jj_3R_Boolean_423_7_101()) {
+        return true;
     }
     }
     return false;
   }
 
-  private boolean jj_3R_51() {
-    if (jj_3R_57()) {
-      return true;
+  private boolean jj_3R_Math_227_5_51()
+ {
+    if (jj_3R_Multiplication_241_5_57()) {
+        return true;
     }
     Token xsp;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_58()) { jj_scanpos = xsp; break; }
+      if (jj_3R_Math_229_9_58()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
 
-  private boolean jj_3R_84() {
-    if (jj_3R_96()) {
-      return true;
+  private boolean jj_3R_Literal_412_7_84()
+ {
+    if (jj_3R_Null_458_5_96()) {
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_83() {
-    if (jj_3R_95()) {
-      return true;
+  private boolean jj_3R_Literal_411_7_83()
+ {
+    if (jj_3R_String_449_5_95()) {
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_52() {
+  private boolean jj_3R_Concatenation_217_10_52()
+ {
     if (jj_scan_token(CONCAT)) {
-      return true;
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_82() {
-    if (jj_3R_94()) {
-      return true;
+  private boolean jj_3R_Literal_410_7_82()
+ {
+    if (jj_3R_Integer_440_5_94()) {
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_81() {
-    if (jj_3R_93()) {
-      return true;
+  private boolean jj_3R_Literal_409_7_81()
+ {
+    if (jj_3R_FloatingPoint_431_5_93()) {
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_102() {
+  private boolean jj_3R_Function_390_24_102()
+ {
     if (jj_scan_token(COLON)) {
-      return true;
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_76() {
+  private boolean jj_3R_Literal_408_5_76()
+ {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_80()) {
+    if (jj_3R_Literal_408_5_80()) {
     jj_scanpos = xsp;
-    if (jj_3R_81()) {
+    if (jj_3R_Literal_409_7_81()) {
     jj_scanpos = xsp;
-    if (jj_3R_82()) {
+    if (jj_3R_Literal_410_7_82()) {
     jj_scanpos = xsp;
-    if (jj_3R_83()) {
+    if (jj_3R_Literal_411_7_83()) {
     jj_scanpos = xsp;
-    if (jj_3R_84()) {
-      return true;
+    if (jj_3R_Literal_412_7_84()) {
+        return true;
     }
     }
     }
@@ -3116,79 +3269,86 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
     return false;
   }
 
-  private boolean jj_3R_80() {
-    if (jj_3R_92()) {
-      return true;
+  private boolean jj_3R_Literal_408_5_80()
+ {
+    if (jj_3R_Boolean_421_5_92()) {
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_47() {
-    if (jj_3R_51()) {
-      return true;
+  private boolean jj_3R_Concatenation_215_6_47()
+ {
+    if (jj_3R_Math_227_5_51()) {
+        return true;
     }
     Token xsp;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_52()) { jj_scanpos = xsp; break; }
+      if (jj_3R_Concatenation_217_10_52()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
 
-  private boolean jj_3R_103() {
-    if (jj_3R_106()) {
-      return true;
+  private boolean jj_3R_Function_399_7_103()
+ {
+    if (jj_3R_MethodParameters_317_5_106()) {
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_56() {
+  private boolean jj_3R_Compare_204_9_56()
+ {
     Token xsp;
     xsp = jj_scanpos;
     if (jj_scan_token(29)) {
     jj_scanpos = xsp;
     if (jj_scan_token(30)) {
-      return true;
+        return true;
     }
     }
     return false;
   }
 
-  private boolean jj_3R_55() {
+  private boolean jj_3R_Compare_202_9_55()
+ {
     Token xsp;
     xsp = jj_scanpos;
     if (jj_scan_token(31)) {
     jj_scanpos = xsp;
     if (jj_scan_token(32)) {
-      return true;
+        return true;
     }
     }
     return false;
   }
 
-  private boolean jj_3R_54() {
+  private boolean jj_3R_Compare_200_9_54()
+ {
     Token xsp;
     xsp = jj_scanpos;
     if (jj_scan_token(25)) {
     jj_scanpos = xsp;
     if (jj_scan_token(26)) {
-      return true;
+        return true;
     }
     }
     return false;
   }
 
-  private boolean jj_3R_48() {
+  private boolean jj_3R_Compare_198_9_48()
+ {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_53()) {
+    if (jj_3R_Compare_198_9_53()) {
     jj_scanpos = xsp;
-    if (jj_3R_54()) {
+    if (jj_3R_Compare_200_9_54()) {
     jj_scanpos = xsp;
-    if (jj_3R_55()) {
+    if (jj_3R_Compare_202_9_55()) {
     jj_scanpos = xsp;
-    if (jj_3R_56()) {
-      return true;
+    if (jj_3R_Compare_204_9_56()) {
+        return true;
     }
     }
     }
@@ -3196,95 +3356,103 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
     return false;
   }
 
-  private boolean jj_3R_53() {
+  private boolean jj_3R_Compare_198_9_53()
+ {
     Token xsp;
     xsp = jj_scanpos;
     if (jj_scan_token(27)) {
     jj_scanpos = xsp;
     if (jj_scan_token(28)) {
-      return true;
+        return true;
     }
     }
     return false;
   }
 
-  private boolean jj_3R_97() {
+  private boolean jj_3R_Function_390_5_97()
+ {
     if (jj_scan_token(IDENTIFIER)) {
-      return true;
+        return true;
     }
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_102()) {
-      jj_scanpos = xsp;
+    if (jj_3R_Function_390_24_102()) {
+        jj_scanpos = xsp;
     }
-    if (jj_3R_103()) {
-      return true;
+    if (jj_3R_Function_399_7_103()) {
+        return true;
     }
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_103()) { jj_scanpos = xsp; break; }
+      if (jj_3R_Function_399_7_103()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
 
-  private boolean jj_3R_44() {
-    if (jj_3R_47()) {
-      return true;
+  private boolean jj_3R_Compare_196_5_44()
+ {
+    if (jj_3R_Concatenation_215_6_47()) {
+        return true;
     }
     Token xsp;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_48()) { jj_scanpos = xsp; break; }
+      if (jj_3R_Compare_198_9_48()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
 
-  private boolean jj_3R_50() {
+  private boolean jj_3R_Equality_186_9_50()
+ {
     Token xsp;
     xsp = jj_scanpos;
     if (jj_scan_token(35)) {
     jj_scanpos = xsp;
     if (jj_scan_token(36)) {
-      return true;
+        return true;
     }
     }
     return false;
   }
 
-  private boolean jj_3R_45() {
+  private boolean jj_3R_Equality_184_9_45()
+ {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_49()) {
+    if (jj_3R_Equality_184_9_49()) {
     jj_scanpos = xsp;
-    if (jj_3R_50()) {
-      return true;
+    if (jj_3R_Equality_186_9_50()) {
+        return true;
     }
     }
     return false;
   }
 
-  private boolean jj_3R_49() {
+  private boolean jj_3R_Equality_184_9_49()
+ {
     Token xsp;
     xsp = jj_scanpos;
     if (jj_scan_token(33)) {
     jj_scanpos = xsp;
     if (jj_scan_token(34)) {
-      return true;
+        return true;
     }
     }
     return false;
   }
 
-  private boolean jj_3R_28() {
-    if (jj_3R_22()) {
-      return true;
+  private boolean jj_3R_LambdaExpression_124_68_28()
+ {
+    if (jj_3R_Choice_155_5_22()) {
+        return true;
     }
     return false;
   }
 
-  private boolean jj_3R_38() {
+  private boolean jj_3R_Identifier_377_5_38()
+ {
     if (jj_scan_token(IDENTIFIER)) {
-      return true;
+        return true;
     }
     return false;
   }
@@ -3304,216 +3472,221 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
   static private int[] jj_la1_0;
   static private int[] jj_la1_1;
   static {
-      jj_la1_init_0();
-      jj_la1_init_1();
-   }
-   private static void jj_la1_init_0() {
-      jj_la1_0 = new int[] {0xe,0xe,0x800000,0x15ed00,0x15ed00,0x1000000,0x0,0x40000,0x15ed00,0x40000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfe000000,0x18000000,0x6000000,0x80000000,0x60000000,0xfe000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x15ed00,0x120000,0x15ed00,0x120000,0x40000,0x1000000,0x15ed00,0x40000,0x0,0x100100,0x1000000,0x15ed00,0x1000000,0x15ed00,0x1000000,0x15ed00,0x400000,0x40000,0x1ec00,0xc000,};
-   }
-   private static void jj_la1_init_1() {
-      jj_la1_1 = new int[] {0x0,0x0,0x0,0x1008860,0x1008860,0x0,0x1000000,0x1000000,0x1008860,0x0,0x600,0x600,0x180,0x180,0x1e,0x6,0x18,0x1e,0x1,0x0,0x0,0x1,0x0,0x1,0x200000,0xc000,0xc000,0x1e2000,0x60000,0x180000,0x1e2000,0x60,0x1008860,0x0,0x1000000,0x0,0x0,0x0,0x1008860,0x0,0x1000000,0x0,0x0,0x1008860,0x0,0x1008860,0x0,0x1008860,0x0,0x0,0x0,0x0,};
-   }
+	   jj_la1_init_0();
+	   jj_la1_init_1();
+	}
+	private static void jj_la1_init_0() {
+	   jj_la1_0 = new int[] {0xe,0xe,0x800000,0x15ed00,0x15ed00,0x1000000,0x0,0x40000,0x15ed00,0x40000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfe000000,0x18000000,0x6000000,0x80000000,0x60000000,0xfe000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x15ed00,0x120000,0x15ed00,0x120000,0x40000,0x1000000,0x15ed00,0x40000,0x0,0x100100,0x1000000,0x15ed00,0x1000000,0x15ed00,0x1000000,0x15ed00,0x400000,0x40000,0x1ec00,0xc000,};
+	}
+	private static void jj_la1_init_1() {
+	   jj_la1_1 = new int[] {0x0,0x0,0x0,0x1008860,0x1008860,0x0,0x1000000,0x1000000,0x1008860,0x0,0x600,0x600,0x180,0x180,0x1e,0x6,0x18,0x1e,0x1,0x0,0x0,0x1,0x0,0x1,0x200000,0xc000,0xc000,0x1e2000,0x60000,0x180000,0x1e2000,0x60,0x1008860,0x0,0x1000000,0x0,0x0,0x0,0x1008860,0x0,0x1000000,0x0,0x0,0x1008860,0x0,0x1008860,0x0,0x1008860,0x0,0x0,0x0,0x0,};
+	}
   final private JJCalls[] jj_2_rtns = new JJCalls[8];
   private boolean jj_rescan = false;
   private int jj_gc = 0;
 
   /** Constructor with InputStream. */
   public ELParser(java.io.InputStream stream) {
-     this(stream, null);
+	  this(stream, null);
   }
   /** Constructor with InputStream and supplied encoding */
   public ELParser(java.io.InputStream stream, String encoding) {
-    try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
-    token_source = new ELParserTokenManager(jj_input_stream);
-    token = new Token();
-    jj_ntk = -1;
-    jj_gen = 0;
-    for (int i = 0; i < 52; i++) {
-      jj_la1[i] = -1;
+	 try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
+	 token_source = new ELParserTokenManager(jj_input_stream);
+	 token = new Token();
+	 jj_ntk = -1;
+	 jj_gen = 0;
+	 for (int i = 0; i < 52; i++) {
+        jj_la1[i] = -1;
     }
-    for (int i = 0; i < jj_2_rtns.length; i++) {
-      jj_2_rtns[i] = new JJCalls();
+	 for (int i = 0; i < jj_2_rtns.length; i++) {
+        jj_2_rtns[i] = new JJCalls();
     }
   }
 
   /** Reinitialise. */
   public void ReInit(java.io.InputStream stream) {
-     ReInit(stream, null);
+	  ReInit(stream, null);
   }
   /** Reinitialise. */
   public void ReInit(java.io.InputStream stream, String encoding) {
-    try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
-    token_source.ReInit(jj_input_stream);
-    token = new Token();
-    jj_ntk = -1;
-    jjtree.reset();
-    jj_gen = 0;
-    for (int i = 0; i < 52; i++) {
-      jj_la1[i] = -1;
+	 try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
+	 token_source.ReInit(jj_input_stream);
+	 token = new Token();
+	 jj_ntk = -1;
+	 jjtree.reset();
+	 jj_gen = 0;
+	 for (int i = 0; i < 52; i++) {
+        jj_la1[i] = -1;
     }
-    for (int i = 0; i < jj_2_rtns.length; i++) {
-      jj_2_rtns[i] = new JJCalls();
+	 for (int i = 0; i < jj_2_rtns.length; i++) {
+        jj_2_rtns[i] = new JJCalls();
     }
   }
 
   /** Constructor. */
   public ELParser(java.io.Reader stream) {
-    jj_input_stream = new SimpleCharStream(stream, 1, 1);
-    token_source = new ELParserTokenManager(jj_input_stream);
-    token = new Token();
-    jj_ntk = -1;
-    jj_gen = 0;
-    for (int i = 0; i < 52; i++) {
-      jj_la1[i] = -1;
+	 jj_input_stream = new SimpleCharStream(stream, 1, 1);
+	 token_source = new ELParserTokenManager(jj_input_stream);
+	 token = new Token();
+	 jj_ntk = -1;
+	 jj_gen = 0;
+	 for (int i = 0; i < 52; i++) {
+        jj_la1[i] = -1;
     }
-    for (int i = 0; i < jj_2_rtns.length; i++) {
-      jj_2_rtns[i] = new JJCalls();
+	 for (int i = 0; i < jj_2_rtns.length; i++) {
+        jj_2_rtns[i] = new JJCalls();
     }
   }
 
   /** Reinitialise. */
   public void ReInit(java.io.Reader stream) {
-    jj_input_stream.ReInit(stream, 1, 1);
-    token_source.ReInit(jj_input_stream);
-    token = new Token();
-    jj_ntk = -1;
-    jjtree.reset();
-    jj_gen = 0;
-    for (int i = 0; i < 52; i++) {
-      jj_la1[i] = -1;
+	if (jj_input_stream == null) {
+	   jj_input_stream = new SimpleCharStream(stream, 1, 1);
+	} else {
+	   jj_input_stream.ReInit(stream, 1, 1);
+	}
+	if (token_source == null) {
+ token_source = new ELParserTokenManager(jj_input_stream);
+	}
+
+	 token_source.ReInit(jj_input_stream);
+	 token = new Token();
+	 jj_ntk = -1;
+	 jjtree.reset();
+	 jj_gen = 0;
+	 for (int i = 0; i < 52; i++) {
+        jj_la1[i] = -1;
     }
-    for (int i = 0; i < jj_2_rtns.length; i++) {
-      jj_2_rtns[i] = new JJCalls();
+	 for (int i = 0; i < jj_2_rtns.length; i++) {
+        jj_2_rtns[i] = new JJCalls();
     }
   }
 
   /** Constructor with generated Token Manager. */
   public ELParser(ELParserTokenManager tm) {
-    token_source = tm;
-    token = new Token();
-    jj_ntk = -1;
-    jj_gen = 0;
-    for (int i = 0; i < 52; i++) {
-      jj_la1[i] = -1;
+	 token_source = tm;
+	 token = new Token();
+	 jj_ntk = -1;
+	 jj_gen = 0;
+	 for (int i = 0; i < 52; i++) {
+        jj_la1[i] = -1;
     }
-    for (int i = 0; i < jj_2_rtns.length; i++) {
-      jj_2_rtns[i] = new JJCalls();
+	 for (int i = 0; i < jj_2_rtns.length; i++) {
+        jj_2_rtns[i] = new JJCalls();
     }
   }
 
   /** Reinitialise. */
   public void ReInit(ELParserTokenManager tm) {
-    token_source = tm;
-    token = new Token();
-    jj_ntk = -1;
-    jjtree.reset();
-    jj_gen = 0;
-    for (int i = 0; i < 52; i++) {
-      jj_la1[i] = -1;
+	 token_source = tm;
+	 token = new Token();
+	 jj_ntk = -1;
+	 jjtree.reset();
+	 jj_gen = 0;
+	 for (int i = 0; i < 52; i++) {
+        jj_la1[i] = -1;
     }
-    for (int i = 0; i < jj_2_rtns.length; i++) {
-      jj_2_rtns[i] = new JJCalls();
+	 for (int i = 0; i < jj_2_rtns.length; i++) {
+        jj_2_rtns[i] = new JJCalls();
     }
   }
 
   private Token jj_consume_token(int kind) throws ParseException {
-    Token oldToken;
-    if ((oldToken = token).next != null) {
-      token = token.next;
+	 Token oldToken;
+	 if ((oldToken = token).next != null) {
+        token = token.next;
     } else {
-      token = token.next = token_source.getNextToken();
-    }
-    jj_ntk = -1;
-    if (token.kind == kind) {
-      jj_gen++;
-      if (++jj_gc > 100) {
-        jj_gc = 0;
-        for (int i = 0; i < jj_2_rtns.length; i++) {
-          JJCalls c = jj_2_rtns[i];
-          while (c != null) {
-            if (c.gen < jj_gen) {
-              c.first = null;
+        token = token.next = token_source.getNextToken();
+    }
+	 jj_ntk = -1;
+	 if (token.kind == kind) {
+	   jj_gen++;
+	   if (++jj_gc > 100) {
+		 jj_gc = 0;
+		 for (int i = 0; i < jj_2_rtns.length; i++) {
+		   JJCalls c = jj_2_rtns[i];
+		   while (c != null) {
+			 if (c.gen < jj_gen) {
+                c.first = null;
             }
-            c = c.next;
-          }
-        }
-      }
-      return token;
-    }
-    token = oldToken;
-    jj_kind = kind;
-    throw generateParseException();
-  }
-
+			 c = c.next;
+		   }
+		 }
+	   }
+	   return token;
+	 }
+	 token = oldToken;
+	 jj_kind = kind;
+	 throw generateParseException();
+  }
+
+  @SuppressWarnings("serial")
   static private final class LookaheadSuccess extends java.lang.Error {
-      /*
-       * Over-ridden to avoid memory leak via Throwable.backtrace
-       * https://java.net/jira/browse/JAVACC-293
-       */
     @Override
-    public synchronized Throwable fillInStackTrace() {
-        return this;
+    public Throwable fillInStackTrace() {
+      return this;
     }
   }
-  final private LookaheadSuccess jj_ls = new LookaheadSuccess();
+  static private final LookaheadSuccess jj_ls = new LookaheadSuccess();
   private boolean jj_scan_token(int kind) {
-    if (jj_scanpos == jj_lastpos) {
-      jj_la--;
-      if (jj_scanpos.next == null) {
-        jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
-      } else {
-        jj_lastpos = jj_scanpos = jj_scanpos.next;
-      }
-    } else {
-      jj_scanpos = jj_scanpos.next;
-    }
-    if (jj_rescan) {
-      int i = 0; Token tok = token;
-      while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
-      if (tok != null) {
+	 if (jj_scanpos == jj_lastpos) {
+	   jj_la--;
+	   if (jj_scanpos.next == null) {
+		 jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
+	   } else {
+		 jj_lastpos = jj_scanpos = jj_scanpos.next;
+	   }
+	 } else {
+	   jj_scanpos = jj_scanpos.next;
+	 }
+	 if (jj_rescan) {
+	   int i = 0; Token tok = token;
+	   while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
+	   if (tok != null) {
         jj_add_error_token(kind, i);
-      }
     }
-    if (jj_scanpos.kind != kind) {
-      return true;
+	 }
+	 if (jj_scanpos.kind != kind) {
+        return true;
     }
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) {
-      throw jj_ls;
+	 if (jj_la == 0 && jj_scanpos == jj_lastpos) {
+        throw jj_ls;
     }
-    return false;
+	 return false;
   }
 
 
 /** Get the next Token. */
   final public Token getNextToken() {
-    if (token.next != null) {
-      token = token.next;
+	 if (token.next != null) {
+        token = token.next;
     } else {
-      token = token.next = token_source.getNextToken();
+        token = token.next = token_source.getNextToken();
     }
-    jj_ntk = -1;
-    jj_gen++;
-    return token;
+	 jj_ntk = -1;
+	 jj_gen++;
+	 return token;
   }
 
 /** Get the specific Token. */
   final public Token getToken(int index) {
-    Token t = token;
-    for (int i = 0; i < index; i++) {
-      if (t.next != null) {
+	 Token t = token;
+	 for (int i = 0; i < index; i++) {
+	   if (t.next != null) {
         t = t.next;
-      } else {
+    } else {
         t = t.next = token_source.getNextToken();
-      }
     }
-    return t;
+	 }
+	 return t;
   }
 
-  private int jj_ntk() {
-    if ((jj_nt=token.next) == null) {
-      return (jj_ntk = (token.next=token_source.getNextToken()).kind);
+  private int jj_ntk_f() {
+	 if ((jj_nt=token.next) == null) {
+        return (jj_ntk = (token.next=token_source.getNextToken()).kind);
     } else {
-      return (jj_ntk = jj_nt.kind);
+        return (jj_ntk = jj_nt.kind);
     }
   }
 
@@ -3524,69 +3697,85 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
   private int jj_endpos;
 
   private void jj_add_error_token(int kind, int pos) {
-    if (pos >= 100) {
-      return;
-    }
-    if (pos == jj_endpos + 1) {
-      jj_lasttokens[jj_endpos++] = kind;
-    } else if (jj_endpos != 0) {
-      jj_expentry = new int[jj_endpos];
-      for (int i = 0; i < jj_endpos; i++) {
-        jj_expentry[i] = jj_lasttokens[i];
-      }
-      jj_entries_loop: for (java.util.Iterator<?> it = jj_expentries.iterator(); it.hasNext();) {
-        int[] oldentry = (int[])(it.next());
-        if (oldentry.length == jj_expentry.length) {
-          for (int i = 0; i < jj_expentry.length; i++) {
-            if (oldentry[i] != jj_expentry[i]) {
-              continue jj_entries_loop;
-            }
-          }
-          jj_expentries.add(jj_expentry);
-          break jj_entries_loop;
-        }
-      }
-      if (pos != 0) {
-        jj_lasttokens[(jj_endpos = pos) - 1] = kind;
-      }
-    }
+	 if (pos >= 100) {
+		return;
+	 }
+
+	 if (pos == jj_endpos + 1) {
+	   jj_lasttokens[jj_endpos++] = kind;
+	 } else if (jj_endpos != 0) {
+	   jj_expentry = new int[jj_endpos];
+
+	   for (int i = 0; i < jj_endpos; i++) {
+		 jj_expentry[i] = jj_lasttokens[i];
+	   }
+
+	   for (int[] oldentry : jj_expentries) {
+		 if (oldentry.length == jj_expentry.length) {
+		   boolean isMatched = true;
+
+		   for (int i = 0; i < jj_expentry.length; i++) {
+			 if (oldentry[i] != jj_expentry[i]) {
+			   isMatched = false;
+			   break;
+			 }
+
+		   }
+		   if (isMatched) {
+			 jj_expentries.add(jj_expentry);
+			 break;
+		   }
+		 }
+	   }
+
+	   if (pos != 0) {
+		 jj_lasttokens[(jj_endpos = pos) - 1] = kind;
+	   }
+	 }
   }
 
   /** Generate ParseException. */
   public ParseException generateParseException() {
-    jj_expentries.clear();
-    boolean[] la1tokens = new boolean[62];
-    if (jj_kind >= 0) {
-      la1tokens[jj_kind] = true;
-      jj_kind = -1;
-    }
-    for (int i = 0; i < 52; i++) {
-      if (jj_la1[i] == jj_gen) {
-        for (int j = 0; j < 32; j++) {
-          if ((jj_la1_0[i] & (1<<j)) != 0) {
-            la1tokens[j] = true;
-          }
-          if ((jj_la1_1[i] & (1<<j)) != 0) {
-            la1tokens[32+j] = true;
-          }
-        }
-      }
-    }
-    for (int i = 0; i < 62; i++) {
-      if (la1tokens[i]) {
-        jj_expentry = new int[1];
-        jj_expentry[0] = i;
-        jj_expentries.add(jj_expentry);
-      }
-    }
-    jj_endpos = 0;
-    jj_rescan_token();
-    jj_add_error_token(0, 0);
-    int[][] exptokseq = new int[jj_expentries.size()][];
-    for (int i = 0; i < jj_expentries.size(); i++) {
-      exptokseq[i] = jj_expentries.get(i);
-    }
-    return new ParseException(token, exptokseq, tokenImage);
+	 jj_expentries.clear();
+	 boolean[] la1tokens = new boolean[62];
+	 if (jj_kind >= 0) {
+	   la1tokens[jj_kind] = true;
+	   jj_kind = -1;
+	 }
+	 for (int i = 0; i < 52; i++) {
+	   if (jj_la1[i] == jj_gen) {
+		 for (int j = 0; j < 32; j++) {
+		   if ((jj_la1_0[i] & (1<<j)) != 0) {
+			 la1tokens[j] = true;
+		   }
+		   if ((jj_la1_1[i] & (1<<j)) != 0) {
+			 la1tokens[32+j] = true;
+		   }
+		 }
+	   }
+	 }
+	 for (int i = 0; i < 62; i++) {
+	   if (la1tokens[i]) {
+		 jj_expentry = new int[1];
+		 jj_expentry[0] = i;
+		 jj_expentries.add(jj_expentry);
+	   }
+	 }
+	 jj_endpos = 0;
+	 jj_rescan_token();
+	 jj_add_error_token(0, 0);
+	 int[][] exptokseq = new int[jj_expentries.size()][];
+	 for (int i = 0; i < jj_expentries.size(); i++) {
+	   exptokseq[i] = jj_expentries.get(i);
+	 }
+	 return new ParseException(token, exptokseq, tokenImage);
+  }
+
+  private boolean trace_enabled;
+
+/** Trace enabled. */
+  final public boolean trace_enabled() {
+	 return trace_enabled;
   }
 
   /** Enable tracing. */
@@ -3598,45 +3787,50 @@ public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParser
   }
 
   private void jj_rescan_token() {
-    jj_rescan = true;
-    for (int i = 0; i < 8; i++) {
-    try {
-      JJCalls p = jj_2_rtns[i];
-      do {
-        if (p.gen > jj_gen) {
-          jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
-          switch (i) {
-            case 0: jj_3_1(); break;
-            case 1: jj_3_2(); break;
-            case 2: jj_3_3(); break;
-            case 3: jj_3_4(); break;
-            case 4: jj_3_5(); break;
-            case 5: jj_3_6(); break;
-            case 6: jj_3_7(); break;
-            case 7: jj_3_8(); break;
-          }
-        }
-        p = p.next;
-      } while (p != null);
-      } catch(LookaheadSuccess ls) { }
-    }
-    jj_rescan = false;
+	 jj_rescan = true;
+	 for (int i = 0; i < 8; i++) {
+	   try {
+		 JJCalls p = jj_2_rtns[i];
+
+		 do {
+		   if (p.gen > jj_gen) {
+			 jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
+			 switch (i) {
+			   case 0: jj_3_1(); break;
+			   case 1: jj_3_2(); break;
+			   case 2: jj_3_3(); break;
+			   case 3: jj_3_4(); break;
+			   case 4: jj_3_5(); break;
+			   case 5: jj_3_6(); break;
+			   case 6: jj_3_7(); break;
+			   case 7: jj_3_8(); break;
+			 }
+		   }
+		   p = p.next;
+		 } while (p != null);
+
+		 } catch(LookaheadSuccess ls) { }
+	 }
+	 jj_rescan = false;
   }
 
   private void jj_save(int index, int xla) {
-    JJCalls p = jj_2_rtns[index];
-    while (p.gen > jj_gen) {
-      if (p.next == null) { p = p.next = new JJCalls(); break; }
-      p = p.next;
-    }
-    p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla;
+	 JJCalls p = jj_2_rtns[index];
+	 while (p.gen > jj_gen) {
+	   if (p.next == null) { p = p.next = new JJCalls(); break; }
+	   p = p.next;
+	 }
+
+	 p.gen = jj_gen + xla - jj_la;
+	 p.first = token;
+	 p.arg = xla;
   }
 
   static final class JJCalls {
-    int gen;
-    Token first;
-    int arg;
-    JJCalls next;
+	 int gen;
+	 Token first;
+	 int arg;
+	 JJCalls next;
   }
 
 }
diff --git a/java/org/apache/el/parser/ELParserTokenManager.java b/java/org/apache/el/parser/ELParserTokenManager.java
index 0aeded2..4c4279d 100644
--- a/java/org/apache/el/parser/ELParserTokenManager.java
+++ b/java/org/apache/el/parser/ELParserTokenManager.java
@@ -1,18 +1,17 @@
+/* ELParserTokenManager.java */
 /* Generated By:JJTree&JavaCC: Do not edit this line. ELParserTokenManager.java */
 package org.apache.el.parser;
 
 /** Token Manager. */
 @SuppressWarnings("all") // Ignore warnings in generated code
-public class ELParserTokenManager implements ELParserConstants
-{
+public class ELParserTokenManager implements ELParserConstants {
 java.util.Deque<Integer> deque = new java.util.ArrayDeque<Integer>();
 
   /** Debug output. */
   public  java.io.PrintStream debugStream = System.out;
   /** Set debug output. */
   public  void setDebugStream(java.io.PrintStream ds) { debugStream = ds; }
-private final int jjStopStringLiteralDfa_0(int pos, long active0)
-{
+private final int jjStopStringLiteralDfa_0(int pos, long active0){
    switch (pos)
    {
       case 0:
@@ -26,8 +25,7 @@ private final int jjStopStringLiteralDfa_0(int pos, long active0)
          return -1;
    }
 }
-private final int jjStartNfa_0(int pos, long active0)
-{
+private final int jjStartNfa_0(int pos, long active0){
    return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0), pos + 1);
 }
 private int jjStopAtPos(int pos, int kind)
@@ -36,8 +34,7 @@ private int jjStopAtPos(int pos, int kind)
    jjmatchedPos = pos;
    return pos + 1;
 }
-private int jjMoveStringLiteralDfa0_0()
-{
+private int jjMoveStringLiteralDfa0_0(){
    switch(curChar)
    {
       case 35:
@@ -48,8 +45,7 @@ private int jjMoveStringLiteralDfa0_0()
          return jjMoveNfa_0(7, 0);
    }
 }
-private int jjMoveStringLiteralDfa1_0(long active0)
-{
+private int jjMoveStringLiteralDfa1_0(long active0){
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
       jjStopStringLiteralDfa_0(0, active0);
@@ -59,9 +55,9 @@ private int jjMoveStringLiteralDfa1_0(long active0)
    {
       case 123:
          if ((active0 & 0x4L) != 0L) {
-          return jjStopAtPos(1, 2);
+            return jjStopAtPos(1, 2);
         } else if ((active0 & 0x8L) != 0L) {
-          return jjStopAtPos(1, 3);
+            return jjStopAtPos(1, 3);
         }
          break;
       default :
@@ -86,7 +82,7 @@ private int jjMoveNfa_0(int startState, int curPos)
    {
       if (++jjround == 0x7fffffff) {
         ReInitRounds();
-      }
+    }
       if (curChar < 64)
       {
          long l = 1L << curChar;
@@ -98,62 +94,58 @@ private int jjMoveNfa_0(int startState, int curPos)
                   if ((0xffffffe7ffffffffL & l) != 0L)
                   {
                      if (kind > 1) {
-                      kind = 1;
+                        kind = 1;
                     }
-                     jjCheckNAddStates(0, 4);
+                     { jjCheckNAddStates(0, 4); }
                   }
                   else if ((0x1800000000L & l) != 0L)
                   {
                      if (kind > 1) {
-                      kind = 1;
+                        kind = 1;
                     }
-                     jjCheckNAdd(5);
-                  }
-                  if ((0xffffffe7ffffffffL & l) != 0L) {
-                    jjCheckNAddTwoStates(0, 1);
+                     { jjCheckNAdd(5); }
                   }
+                  if ((0xffffffe7ffffffffL & l) != 0L)
+                     { jjCheckNAddTwoStates(0, 1); }
                   break;
                case 0:
-                  if ((0xffffffe7ffffffffL & l) != 0L) {
-                    jjCheckNAddTwoStates(0, 1);
-                  }
+                  if ((0xffffffe7ffffffffL & l) != 0L)
+                     { jjCheckNAddTwoStates(0, 1); }
                   break;
                case 2:
                   if ((0xffffffe7ffffffffL & l) == 0L) {
                     break;
-                  }
+                }
                   if (kind > 1) {
                     kind = 1;
-                  }
-                  jjCheckNAddStates(0, 4);
+                }
+                  { jjCheckNAddStates(0, 4); }
                   break;
                case 3:
-                  if ((0xffffffe7ffffffffL & l) != 0L) {
-                    jjCheckNAddTwoStates(3, 4);
-                  }
+                  if ((0xffffffe7ffffffffL & l) != 0L)
+                     { jjCheckNAddTwoStates(3, 4); }
                   break;
                case 4:
-                  if ((0x1800000000L & l) != 0L) {
-                    jjCheckNAdd(5);
-                  }
+                  if ((0x1800000000L & l) != 0L)
+                     { jjCheckNAdd(5); }
                   break;
                case 5:
                   if ((0xffffffe7ffffffffL & l) == 0L) {
                     break;
-                  }
+                }
                   if (kind > 1) {
                     kind = 1;
-                  }
-                  jjCheckNAddStates(5, 8);
+                }
+                  { jjCheckNAddStates(5, 8); }
                   break;
                case 6:
                   if ((0x1800000000L & l) == 0L) {
                     break;
-                  }
+                }
                   if (kind > 1) {
                     kind = 1;
-                  }
-                  jjCheckNAddStates(9, 13);
+                }
+                  { jjCheckNAddStates(9, 13); }
                   break;
                default : break;
             }
@@ -169,55 +161,56 @@ private int jjMoveNfa_0(int startState, int curPos)
                case 7:
                   if (kind > 1) {
                     kind = 1;
-                  }
-                  jjCheckNAddStates(0, 4);
-                  if ((0xffffffffefffffffL & l) != 0L) {
-                    jjCheckNAddTwoStates(0, 1);
-                  } else if (curChar == 92)
+                }
+                  { jjCheckNAddStates(0, 4); }
+                  if ((0xffffffffefffffffL & l) != 0L)
+                     { jjCheckNAddTwoStates(0, 1); }
+                  else if (curChar == 92)
                   {
                      if (kind > 1) {
-                      kind = 1;
+                        kind = 1;
                     }
-                     jjCheckNAddStates(14, 17);
+                     { jjCheckNAddStates(14, 17); }
                   }
                   break;
                case 0:
-                  if ((0xffffffffefffffffL & l) != 0L) {
-                    jjCheckNAddTwoStates(0, 1);
-                  }
+                  if ((0xffffffffefffffffL & l) != 0L)
+                     { jjCheckNAddTwoStates(0, 1); }
                   break;
                case 1:
                   if (curChar != 92) {
                     break;
-                  }
+                }
                   if (kind > 1) {
                     kind = 1;
-                  }
-                  jjCheckNAddStates(14, 17);
+                }
+                  { jjCheckNAddStates(14, 17); }
                   break;
                case 2:
                   if (kind > 1) {
                     kind = 1;
-                  }
-                  jjCheckNAddStates(0, 4);
+                }
+                  { jjCheckNAddStates(0, 4); }
                   break;
                case 3:
-                  jjCheckNAddTwoStates(3, 4);
+                  { jjCheckNAddTwoStates(3, 4); }
                   break;
                case 5:
                   if ((0xf7ffffffefffffffL & l) == 0L) {
                     break;
-                  }
+                }
                   if (kind > 1) {
                     kind = 1;
-                  }
-                  jjCheckNAddStates(5, 8);
+                }
+                  { jjCheckNAddStates(5, 8); }
                   break;
                default : break;
             }
          } while(i != startsAt);
-      } else {
-         int hiByte = (int)(curChar >> 8);
+      }
+      else
+      {
+         int hiByte = (curChar >> 8);
          int i1 = hiByte >> 6;
          long l1 = 1L << (hiByte & 077);
          int i2 = (curChar & 0xff) >> 6;
@@ -227,46 +220,47 @@ private int jjMoveNfa_0(int startState, int curPos)
             switch(jjstateSet[--i])
             {
                case 7:
-                  if (jjCanMove_0(hiByte, i1, i2, l1, l2)) {
-                    jjCheckNAddTwoStates(0, 1);
-                  }
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     { jjCheckNAddTwoStates(0, 1); }
                   if (jjCanMove_0(hiByte, i1, i2, l1, l2))
                   {
                      if (kind > 1) {
-                      kind = 1;
+                        kind = 1;
                     }
-                     jjCheckNAddStates(0, 4);
+                     { jjCheckNAddStates(0, 4); }
                   }
                   break;
                case 0:
-                  if (jjCanMove_0(hiByte, i1, i2, l1, l2)) {
-                    jjCheckNAddTwoStates(0, 1);
-                  }
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     { jjCheckNAddTwoStates(0, 1); }
                   break;
                case 2:
                   if (!jjCanMove_0(hiByte, i1, i2, l1, l2)) {
                     break;
-                  }
+                }
                   if (kind > 1) {
                     kind = 1;
-                  }
-                  jjCheckNAddStates(0, 4);
+                }
+                  { jjCheckNAddStates(0, 4); }
                   break;
                case 3:
-                  if (jjCanMove_0(hiByte, i1, i2, l1, l2)) {
-                    jjCheckNAddTwoStates(3, 4);
-                  }
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     { jjCheckNAddTwoStates(3, 4); }
                   break;
                case 5:
                   if (!jjCanMove_0(hiByte, i1, i2, l1, l2)) {
                     break;
-                  }
+                }
                   if (kind > 1) {
                     kind = 1;
-                  }
-                  jjCheckNAddStates(5, 8);
+                }
+                  { jjCheckNAddStates(5, 8); }
                   break;
-               default : break;
+               default : if (i1 == 0 || l1 == 0 || i2 == 0 ||  l2 == 0) {
+                break;
+            } else {
+                break;
+            }
             }
          } while(i != startsAt);
       }
@@ -279,18 +273,17 @@ private int jjMoveNfa_0(int startState, int curPos)
       ++curPos;
       if ((i = jjnewStateCnt) == (startsAt = 8 - (jjnewStateCnt = startsAt))) {
         return curPos;
-      }
+    }
       try { curChar = input_stream.readChar(); }
       catch(java.io.IOException e) { return curPos; }
    }
 }
-private final int jjStopStringLiteralDfa_2(int pos, long active0)
-{
+private final int jjStopStringLiteralDfa_2(int pos, long active0){
    switch (pos)
    {
       case 0:
          if ((active0 & 0x20000L) != 0L) {
-          return 1;
+            return 1;
         }
          if ((active0 & 0x141d555401c000L) != 0L)
          {
@@ -300,7 +293,7 @@ private final int jjStopStringLiteralDfa_2(int pos, long active0)
          return -1;
       case 1:
          if ((active0 & 0x41554000000L) != 0L) {
-          return 30;
+            return 30;
         }
          if ((active0 & 0x1419400001c000L) != 0L)
          {
@@ -311,7 +304,7 @@ private final int jjStopStringLiteralDfa_2(int pos, long active0)
          return -1;
       case 2:
          if ((active0 & 0x14014000000000L) != 0L) {
-          return 30;
+            return 30;
         }
          if ((active0 & 0x18000001c000L) != 0L)
          {
@@ -322,7 +315,7 @@ private final int jjStopStringLiteralDfa_2(int pos, long active0)
          return -1;
       case 3:
          if ((active0 & 0x14000L) != 0L) {
-          return 30;
+            return 30;
         }
          if ((active0 & 0x180000008000L) != 0L)
          {
@@ -333,7 +326,7 @@ private final int jjStopStringLiteralDfa_2(int pos, long active0)
          return -1;
       case 4:
          if ((active0 & 0x80000008000L) != 0L) {
-          return 30;
+            return 30;
         }
          if ((active0 & 0x100000000000L) != 0L)
          {
@@ -378,12 +371,10 @@ private final int jjStopStringLiteralDfa_2(int pos, long active0)
          return -1;
    }
 }
-private final int jjStartNfa_2(int pos, long active0)
-{
+private final int jjStartNfa_2(int pos, long active0){
    return jjMoveNfa_2(jjStopStringLiteralDfa_2(pos, active0), pos + 1);
 }
-private int jjMoveStringLiteralDfa0_2()
-{
+private int jjMoveStringLiteralDfa0_2(){
    switch(curChar)
    {
       case 33:
@@ -462,8 +453,7 @@ private int jjMoveStringLiteralDfa0_2()
          return jjMoveNfa_2(0, 0);
    }
 }
-private int jjMoveStringLiteralDfa1_2(long active0)
-{
+private int jjMoveStringLiteralDfa1_2(long active0){
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
       jjStopStringLiteralDfa_2(0, active0);
@@ -473,36 +463,36 @@ private int jjMoveStringLiteralDfa1_2(long active0)
    {
       case 38:
          if ((active0 & 0x8000000000L) != 0L) {
-          return jjStopAtPos(1, 39);
+            return jjStopAtPos(1, 39);
         }
          break;
       case 61:
          if ((active0 & 0x20000000L) != 0L) {
-          return jjStopAtPos(1, 29);
+            return jjStopAtPos(1, 29);
         } else if ((active0 & 0x80000000L) != 0L) {
-          return jjStopAtPos(1, 31);
+            return jjStopAtPos(1, 31);
         } else if ((active0 & 0x200000000L) != 0L) {
-          return jjStopAtPos(1, 33);
+            return jjStopAtPos(1, 33);
         } else if ((active0 & 0x800000000L) != 0L) {
-          return jjStopAtPos(1, 35);
+            return jjStopAtPos(1, 35);
         } else if ((active0 & 0x20000000000000L) != 0L) {
-          return jjStopAtPos(1, 53);
+            return jjStopAtPos(1, 53);
         }
          break;
       case 62:
          if ((active0 & 0x80000000000000L) != 0L) {
-          return jjStopAtPos(1, 55);
+            return jjStopAtPos(1, 55);
         }
          break;
       case 97:
          return jjMoveStringLiteralDfa2_2(active0, 0x8000L);
       case 101:
          if ((active0 & 0x40000000L) != 0L) {
-          return jjStartNfaWithStates_2(1, 30, 30);
+            return jjStartNfaWithStates_2(1, 30, 30);
         } else if ((active0 & 0x100000000L) != 0L) {
-          return jjStartNfaWithStates_2(1, 32, 30);
+            return jjStartNfaWithStates_2(1, 32, 30);
         } else if ((active0 & 0x1000000000L) != 0L) {
-          return jjStartNfaWithStates_2(1, 36, 30);
+            return jjStartNfaWithStates_2(1, 36, 30);
         }
          break;
       case 105:
@@ -515,26 +505,26 @@ private int jjMoveStringLiteralDfa1_2(long active0)
          return jjMoveStringLiteralDfa2_2(active0, 0x10004000000000L);
       case 113:
          if ((active0 & 0x400000000L) != 0L) {
-          return jjStartNfaWithStates_2(1, 34, 30);
+            return jjStartNfaWithStates_2(1, 34, 30);
         }
          break;
       case 114:
          if ((active0 & 0x40000000000L) != 0L) {
-          return jjStartNfaWithStates_2(1, 42, 30);
+            return jjStartNfaWithStates_2(1, 42, 30);
         }
          return jjMoveStringLiteralDfa2_2(active0, 0x4000L);
       case 116:
          if ((active0 & 0x4000000L) != 0L) {
-          return jjStartNfaWithStates_2(1, 26, 30);
+            return jjStartNfaWithStates_2(1, 26, 30);
         } else if ((active0 & 0x10000000L) != 0L) {
-          return jjStartNfaWithStates_2(1, 28, 30);
+            return jjStartNfaWithStates_2(1, 28, 30);
         }
          break;
       case 117:
          return jjMoveStringLiteralDfa2_2(active0, 0x10000L);
       case 124:
          if ((active0 & 0x20000000000L) != 0L) {
-          return jjStopAtPos(1, 41);
+            return jjStopAtPos(1, 41);
         }
          break;
       default :
@@ -542,11 +532,10 @@ private int jjMoveStringLiteralDfa1_2(long active0)
    }
    return jjStartNfa_2(0, active0);
 }
-private int jjMoveStringLiteralDfa2_2(long old0, long active0)
-{
+private int jjMoveStringLiteralDfa2_2(long old0, long active0){
    if (((active0 &= old0)) == 0L) {
     return jjStartNfa_2(0, old0);
-  }
+}
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
       jjStopStringLiteralDfa_2(1, active0);
@@ -556,9 +545,9 @@ private int jjMoveStringLiteralDfa2_2(long old0, long active0)
    {
       case 100:
          if ((active0 & 0x10000000000L) != 0L) {
-          return jjStartNfaWithStates_2(2, 40, 30);
+            return jjStartNfaWithStates_2(2, 40, 30);
         } else if ((active0 & 0x10000000000000L) != 0L) {
-          return jjStartNfaWithStates_2(2, 52, 30);
+            return jjStartNfaWithStates_2(2, 52, 30);
         }
          break;
       case 108:
@@ -569,14 +558,14 @@ private int jjMoveStringLiteralDfa2_2(long old0, long active0)
          return jjMoveStringLiteralDfa3_2(active0, 0x100000000000L);
       case 116:
          if ((active0 & 0x4000000000L) != 0L) {
-          return jjStartNfaWithStates_2(2, 38, 30);
+            return jjStartNfaWithStates_2(2, 38, 30);
         }
          break;
       case 117:
          return jjMoveStringLiteralDfa3_2(active0, 0x4000L);
       case 118:
          if ((active0 & 0x4000000000000L) != 0L) {
-          return jjStartNfaWithStates_2(2, 50, 30);
+            return jjStartNfaWithStates_2(2, 50, 30);
         }
          break;
       default :
@@ -584,11 +573,10 @@ private int jjMoveStringLiteralDfa2_2(long old0, long active0)
    }
    return jjStartNfa_2(1, active0);
 }
-private int jjMoveStringLiteralDfa3_2(long old0, long active0)
-{
+private int jjMoveStringLiteralDfa3_2(long old0, long active0){
    if (((active0 &= old0)) == 0L) {
     return jjStartNfa_2(1, old0);
-  }
+}
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
       jjStopStringLiteralDfa_2(2, active0);
@@ -598,12 +586,12 @@ private int jjMoveStringLiteralDfa3_2(long old0, long active0)
    {
       case 101:
          if ((active0 & 0x4000L) != 0L) {
-          return jjStartNfaWithStates_2(3, 14, 30);
+            return jjStartNfaWithStates_2(3, 14, 30);
         }
          break;
       case 108:
          if ((active0 & 0x10000L) != 0L) {
-          return jjStartNfaWithStates_2(3, 16, 30);
+            return jjStartNfaWithStates_2(3, 16, 30);
         }
          break;
       case 115:
@@ -615,11 +603,10 @@ private int jjMoveStringLiteralDfa3_2(long old0, long active0)
    }
    return jjStartNfa_2(2, active0);
 }
-private int jjMoveStringLiteralDfa4_2(long old0, long active0)
-{
+private int jjMoveStringLiteralDfa4_2(long old0, long active0){
    if (((active0 &= old0)) == 0L) {
     return jjStartNfa_2(2, old0);
-  }
+}
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
       jjStopStringLiteralDfa_2(3, active0);
@@ -631,12 +618,12 @@ private int jjMoveStringLiteralDfa4_2(long old0, long active0)
          return jjMoveStringLiteralDfa5_2(active0, 0x100000000000L);
       case 101:
          if ((active0 & 0x8000L) != 0L) {
-          return jjStartNfaWithStates_2(4, 15, 30);
+            return jjStartNfaWithStates_2(4, 15, 30);
         }
          break;
       case 121:
          if ((active0 & 0x80000000000L) != 0L) {
-          return jjStartNfaWithStates_2(4, 43, 30);
+            return jjStartNfaWithStates_2(4, 43, 30);
         }
          break;
       default :
@@ -644,11 +631,10 @@ private int jjMoveStringLiteralDfa4_2(long old0, long active0)
    }
    return jjStartNfa_2(3, active0);
 }
-private int jjMoveStringLiteralDfa5_2(long old0, long active0)
-{
+private int jjMoveStringLiteralDfa5_2(long old0, long active0){
    if (((active0 &= old0)) == 0L) {
     return jjStartNfa_2(3, old0);
-  }
+}
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
       jjStopStringLiteralDfa_2(4, active0);
@@ -663,11 +649,10 @@ private int jjMoveStringLiteralDfa5_2(long old0, long active0)
    }
    return jjStartNfa_2(4, active0);
 }
-private int jjMoveStringLiteralDfa6_2(long old0, long active0)
-{
+private int jjMoveStringLiteralDfa6_2(long old0, long active0){
    if (((active0 &= old0)) == 0L) {
     return jjStartNfa_2(4, old0);
-  }
+}
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
       jjStopStringLiteralDfa_2(5, active0);
@@ -682,11 +667,10 @@ private int jjMoveStringLiteralDfa6_2(long old0, long active0)
    }
    return jjStartNfa_2(5, active0);
 }
-private int jjMoveStringLiteralDfa7_2(long old0, long active0)
-{
+private int jjMoveStringLiteralDfa7_2(long old0, long active0){
    if (((active0 &= old0)) == 0L) {
     return jjStartNfa_2(5, old0);
-  }
+}
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
       jjStopStringLiteralDfa_2(6, active0);
@@ -701,11 +685,10 @@ private int jjMoveStringLiteralDfa7_2(long old0, long active0)
    }
    return jjStartNfa_2(6, active0);
 }
-private int jjMoveStringLiteralDfa8_2(long old0, long active0)
-{
+private int jjMoveStringLiteralDfa8_2(long old0, long active0){
    if (((active0 &= old0)) == 0L) {
     return jjStartNfa_2(6, old0);
-  }
+}
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
       jjStopStringLiteralDfa_2(7, active0);
@@ -720,11 +703,10 @@ private int jjMoveStringLiteralDfa8_2(long old0, long active0)
    }
    return jjStartNfa_2(7, active0);
 }
-private int jjMoveStringLiteralDfa9_2(long old0, long active0)
-{
+private int jjMoveStringLiteralDfa9_2(long old0, long active0){
    if (((active0 &= old0)) == 0L) {
     return jjStartNfa_2(7, old0);
-  }
+}
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
       jjStopStringLiteralDfa_2(8, active0);
@@ -734,7 +716,7 @@ private int jjMoveStringLiteralDfa9_2(long old0, long active0)
    {
       case 102:
          if ((active0 & 0x100000000000L) != 0L) {
-          return jjStartNfaWithStates_2(9, 44, 30);
+            return jjStartNfaWithStates_2(9, 44, 30);
         }
          break;
       default :
@@ -779,7 +761,7 @@ private int jjMoveNfa_2(int startState, int curPos)
    {
       if (++jjround == 0x7fffffff) {
         ReInitRounds();
-      }
+    }
       if (curChar < 64)
       {
          long l = 1L << curChar;
@@ -791,204 +773,192 @@ private int jjMoveNfa_2(int startState, int curPos)
                   if ((0x3ff000000000000L & l) != 0L)
                   {
                      if (kind > 10) {
-                      kind = 10;
+                        kind = 10;
                     }
-                     jjCheckNAddStates(18, 22);
+                     { jjCheckNAddStates(18, 22); }
                   }
                   else if ((0x1800000000L & l) != 0L)
                   {
                      if (kind > 56) {
-                      kind = 56;
+                        kind = 56;
                     }
-                     jjCheckNAddTwoStates(28, 29);
-                  }
-                  else if (curChar == 39) {
-                    jjCheckNAddStates(23, 25);
-                  } else if (curChar == 34) {
-                    jjCheckNAddStates(26, 28);
-                  } else if (curChar == 46) {
-                    jjCheckNAdd(1);
+                     { jjCheckNAddTwoStates(28, 29); }
                   }
+                  else if (curChar == 39)
+                     { jjCheckNAddStates(23, 25); }
+                  else if (curChar == 34)
+                     { jjCheckNAddStates(26, 28); }
+                  else if (curChar == 46)
+                     { jjCheckNAdd(1); }
                   break;
                case 30:
                   if ((0x3ff001000000000L & l) != 0L)
                   {
                      if (kind > 57) {
-                      kind = 57;
+                        kind = 57;
                     }
-                     jjCheckNAdd(29);
+                     { jjCheckNAdd(29); }
                   }
                   if ((0x3ff001000000000L & l) != 0L)
                   {
                      if (kind > 56) {
-                      kind = 56;
+                        kind = 56;
                     }
-                     jjCheckNAdd(28);
+                     { jjCheckNAdd(28); }
                   }
                   break;
                case 1:
                   if ((0x3ff000000000000L & l) == 0L) {
                     break;
-                  }
+                }
                   if (kind > 11) {
                     kind = 11;
-                  }
-                  jjCheckNAddTwoStates(1, 2);
+                }
+                  { jjCheckNAddTwoStates(1, 2); }
                   break;
                case 3:
-                  if ((0x280000000000L & l) != 0L) {
-                    jjCheckNAdd(4);
-                  }
+                  if ((0x280000000000L & l) != 0L)
+                     { jjCheckNAdd(4); }
                   break;
                case 4:
                   if ((0x3ff000000000000L & l) == 0L) {
                     break;
-                  }
+                }
                   if (kind > 11) {
                     kind = 11;
-                  }
-                  jjCheckNAdd(4);
+                }
+                  { jjCheckNAdd(4); }
                   break;
                case 5:
-                  if (curChar == 34) {
-                    jjCheckNAddStates(26, 28);
-                  }
+                  if (curChar == 34)
+                     { jjCheckNAddStates(26, 28); }
                   break;
                case 6:
-                  if ((0xfffffffbffffffffL & l) != 0L) {
-                    jjCheckNAddStates(26, 28);
-                  }
+                  if ((0xfffffffbffffffffL & l) != 0L)
+                     { jjCheckNAddStates(26, 28); }
                   break;
                case 8:
-                  if ((0x8400000000L & l) != 0L) {
-                    jjCheckNAddStates(26, 28);
-                  }
+                  if ((0x8400000000L & l) != 0L)
+                     { jjCheckNAddStates(26, 28); }
                   break;
                case 9:
                   if (curChar == 34 && kind > 13) {
                     kind = 13;
-                  }
+                }
                   break;
                case 10:
-                  if (curChar == 39) {
-                    jjCheckNAddStates(23, 25);
-                  }
+                  if (curChar == 39)
+                     { jjCheckNAddStates(23, 25); }
                   break;
                case 11:
-                  if ((0xffffff7fffffffffL & l) != 0L) {
-                    jjCheckNAddStates(23, 25);
-                  }
+                  if ((0xffffff7fffffffffL & l) != 0L)
+                     { jjCheckNAddStates(23, 25); }
                   break;
                case 13:
-                  if ((0x8400000000L & l) != 0L) {
-                    jjCheckNAddStates(23, 25);
-                  }
+                  if ((0x8400000000L & l) != 0L)
+                     { jjCheckNAddStates(23, 25); }
                   break;
                case 14:
                   if (curChar == 39 && kind > 13) {
                     kind = 13;
-                  }
+                }
                   break;
                case 15:
                   if ((0x3ff000000000000L & l) == 0L) {
                     break;
-                  }
+                }
                   if (kind > 10) {
                     kind = 10;
-                  }
-                  jjCheckNAddStates(18, 22);
+                }
+                  { jjCheckNAddStates(18, 22); }
                   break;
                case 16:
                   if ((0x3ff000000000000L & l) == 0L) {
                     break;
-                  }
+                }
                   if (kind > 10) {
                     kind = 10;
-                  }
-                  jjCheckNAdd(16);
+                }
+                  { jjCheckNAdd(16); }
                   break;
                case 17:
-                  if ((0x3ff000000000000L & l) != 0L) {
-                    jjCheckNAddTwoStates(17, 18);
-                  }
+                  if ((0x3ff000000000000L & l) != 0L)
+                     { jjCheckNAddTwoStates(17, 18); }
                   break;
                case 18:
                   if (curChar != 46) {
                     break;
-                  }
+                }
                   if (kind > 11) {
                     kind = 11;
-                  }
-                  jjCheckNAddTwoStates(19, 20);
+                }
+                  { jjCheckNAddTwoStates(19, 20); }
                   break;
                case 19:
                   if ((0x3ff000000000000L & l) == 0L) {
                     break;
-                  }
+                }
                   if (kind > 11) {
                     kind = 11;
-                  }
-                  jjCheckNAddTwoStates(19, 20);
+                }
+                  { jjCheckNAddTwoStates(19, 20); }
                   break;
                case 21:
-                  if ((0x280000000000L & l) != 0L) {
-                    jjCheckNAdd(22);
-                  }
+                  if ((0x280000000000L & l) != 0L)
+                     { jjCheckNAdd(22); }
                   break;
                case 22:
                   if ((0x3ff000000000000L & l) == 0L) {
                     break;
-                  }
+                }
                   if (kind > 11) {
                     kind = 11;
-                  }
-                  jjCheckNAdd(22);
+                }
+                  { jjCheckNAdd(22); }
                   break;
                case 23:
-                  if ((0x3ff000000000000L & l) != 0L) {
-                    jjCheckNAddTwoStates(23, 24);
-                  }
+                  if ((0x3ff000000000000L & l) != 0L)
+                     { jjCheckNAddTwoStates(23, 24); }
                   break;
                case 25:
-                  if ((0x280000000000L & l) != 0L) {
-                    jjCheckNAdd(26);
-                  }
+                  if ((0x280000000000L & l) != 0L)
+                     { jjCheckNAdd(26); }
                   break;
                case 26:
                   if ((0x3ff000000000000L & l) == 0L) {
                     break;
-                  }
+                }
                   if (kind > 11) {
                     kind = 11;
-                  }
-                  jjCheckNAdd(26);
+                }
+                  { jjCheckNAdd(26); }
                   break;
                case 27:
                   if ((0x1800000000L & l) == 0L) {
                     break;
-                  }
+                }
                   if (kind > 56) {
                     kind = 56;
-                  }
-                  jjCheckNAddTwoStates(28, 29);
+                }
+                  { jjCheckNAddTwoStates(28, 29); }
                   break;
                case 28:
                   if ((0x3ff001000000000L & l) == 0L) {
                     break;
-                  }
+                }
                   if (kind > 56) {
                     kind = 56;
-                  }
-                  jjCheckNAdd(28);
+                }
+                  { jjCheckNAdd(28); }
                   break;
                case 29:
                   if ((0x3ff001000000000L & l) == 0L) {
                     break;
-                  }
+                }
                   if (kind > 57) {
                     kind = 57;
-                  }
-                  jjCheckNAdd(29);
+                }
+                  { jjCheckNAdd(29); }
                   break;
                default : break;
             }
@@ -1004,96 +974,91 @@ private int jjMoveNfa_2(int startState, int curPos)
                case 0:
                   if ((0x7fffffe87fffffeL & l) == 0L) {
                     break;
-                  }
+                }
                   if (kind > 56) {
                     kind = 56;
-                  }
-                  jjCheckNAddTwoStates(28, 29);
+                }
+                  { jjCheckNAddTwoStates(28, 29); }
                   break;
                case 30:
                   if ((0x7fffffe87fffffeL & l) != 0L)
                   {
                      if (kind > 57) {
-                      kind = 57;
+                        kind = 57;
                     }
-                     jjCheckNAdd(29);
+                     { jjCheckNAdd(29); }
                   }
                   if ((0x7fffffe87fffffeL & l) != 0L)
                   {
                      if (kind > 56) {
-                      kind = 56;
+                        kind = 56;
                     }
-                     jjCheckNAdd(28);
+                     { jjCheckNAdd(28); }
                   }
                   break;
                case 2:
-                  if ((0x2000000020L & l) != 0L) {
-                    jjAddStates(29, 30);
-                  }
+                  if ((0x2000000020L & l) != 0L)
+                     { jjAddStates(29, 30); }
                   break;
                case 6:
-                  if ((0xffffffffefffffffL & l) != 0L) {
-                    jjCheckNAddStates(26, 28);
-                  }
+                  if ((0xffffffffefffffffL & l) != 0L)
+                     { jjCheckNAddStates(26, 28); }
                   break;
                case 7:
                   if (curChar == 92) {
                     jjstateSet[jjnewStateCnt++] = 8;
-                  }
+                }
                   break;
                case 8:
-                  if (curChar == 92) {
-                    jjCheckNAddStates(26, 28);
-                  }
+                  if (curChar == 92)
+                     { jjCheckNAddStates(26, 28); }
                   break;
                case 11:
-                  if ((0xffffffffefffffffL & l) != 0L) {
-                    jjCheckNAddStates(23, 25);
-                  }
+                  if ((0xffffffffefffffffL & l) != 0L)
+                     { jjCheckNAddStates(23, 25); }
                   break;
                case 12:
                   if (curChar == 92) {
                     jjstateSet[jjnewStateCnt++] = 13;
-                  }
+                }
                   break;
                case 13:
-                  if (curChar == 92) {
-                    jjCheckNAddStates(23, 25);
-                  }
+                  if (curChar == 92)
+                     { jjCheckNAddStates(23, 25); }
                   break;
                case 20:
-                  if ((0x2000000020L & l) != 0L) {
-                    jjAddStates(31, 32);
-                  }
+                  if ((0x2000000020L & l) != 0L)
+                     { jjAddStates(31, 32); }
                   break;
                case 24:
-                  if ((0x2000000020L & l) != 0L) {
-                    jjAddStates(33, 34);
-                  }
+                  if ((0x2000000020L & l) != 0L)
+                     { jjAddStates(33, 34); }
                   break;
                case 28:
                   if ((0x7fffffe87fffffeL & l) == 0L) {
                     break;
-                  }
+                }
                   if (kind > 56) {
                     kind = 56;
-                  }
-                  jjCheckNAdd(28);
+                }
+                  { jjCheckNAdd(28); }
                   break;
                case 29:
                   if ((0x7fffffe87fffffeL & l) == 0L) {
                     break;
-                  }
+                }
                   if (kind > 57) {
                     kind = 57;
-                  }
-                  jjCheckNAdd(29);
+                }
+                  { jjCheckNAdd(29); }
                   break;
                default : break;
             }
          } while(i != startsAt);
-      } else {
-         int hiByte = (int)(curChar >> 8);
+      }
+      else
+      {
+         int hiByte = (curChar >> 8);
          int i1 = hiByte >> 6;
          long l1 = 1L << (hiByte & 077);
          int i2 = (curChar & 0xff) >> 6;
@@ -1105,57 +1070,59 @@ private int jjMoveNfa_2(int startState, int curPos)
                case 0:
                   if (!jjCanMove_1(hiByte, i1, i2, l1, l2)) {
                     break;
-                  }
+                }
                   if (kind > 56) {
                     kind = 56;
-                  }
-                  jjCheckNAddTwoStates(28, 29);
+                }
+                  { jjCheckNAddTwoStates(28, 29); }
                   break;
                case 30:
                   if (jjCanMove_1(hiByte, i1, i2, l1, l2))
                   {
                      if (kind > 56) {
-                      kind = 56;
+                        kind = 56;
                     }
-                     jjCheckNAdd(28);
+                     { jjCheckNAdd(28); }
                   }
                   if (jjCanMove_1(hiByte, i1, i2, l1, l2))
                   {
                      if (kind > 57) {
-                      kind = 57;
+                        kind = 57;
                     }
-                     jjCheckNAdd(29);
+                     { jjCheckNAdd(29); }
                   }
                   break;
                case 6:
-                  if (jjCanMove_0(hiByte, i1, i2, l1, l2)) {
-                    jjAddStates(26, 28);
-                  }
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     { jjAddStates(26, 28); }
                   break;
                case 11:
-                  if (jjCanMove_0(hiByte, i1, i2, l1, l2)) {
-                    jjAddStates(23, 25);
-                  }
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     { jjAddStates(23, 25); }
                   break;
                case 28:
                   if (!jjCanMove_1(hiByte, i1, i2, l1, l2)) {
                     break;
-                  }
+                }
                   if (kind > 56) {
                     kind = 56;
-                  }
-                  jjCheckNAdd(28);
+                }
+                  { jjCheckNAdd(28); }
                   break;
                case 29:
                   if (!jjCanMove_1(hiByte, i1, i2, l1, l2)) {
                     break;
-                  }
+                }
                   if (kind > 57) {
                     kind = 57;
-                  }
-                  jjCheckNAdd(29);
+                }
+                  { jjCheckNAdd(29); }
                   break;
-               default : break;
+               default : if (i1 == 0 || l1 == 0 || i2 == 0 ||  l2 == 0) {
+                break;
+            } else {
+                break;
+            }
             }
          } while(i != startsAt);
       }
@@ -1168,18 +1135,17 @@ private int jjMoveNfa_2(int startState, int curPos)
       ++curPos;
       if ((i = jjnewStateCnt) == (startsAt = 30 - (jjnewStateCnt = startsAt))) {
         return curPos;
-      }
+    }
       try { curChar = input_stream.readChar(); }
       catch(java.io.IOException e) { return curPos; }
    }
 }
-private final int jjStopStringLiteralDfa_1(int pos, long active0)
-{
+private final int jjStopStringLiteralDfa_1(int pos, long active0){
    switch (pos)
    {
       case 0:
          if ((active0 & 0x20000L) != 0L) {
-          return 1;
+            return 1;
         }
          if ((active0 & 0x141d555401c000L) != 0L)
          {
@@ -1189,7 +1155,7 @@ private final int jjStopStringLiteralDfa_1(int pos, long active0)
          return -1;
       case 1:
          if ((active0 & 0x41554000000L) != 0L) {
-          return 30;
+            return 30;
         }
          if ((active0 & 0x1419400001c000L) != 0L)
          {
@@ -1200,7 +1166,7 @@ private final int jjStopStringLiteralDfa_1(int pos, long active0)
          return -1;
       case 2:
          if ((active0 & 0x14014000000000L) != 0L) {
-          return 30;
+            return 30;
         }
          if ((active0 & 0x18000001c000L) != 0L)
          {
@@ -1211,7 +1177,7 @@ private final int jjStopStringLiteralDfa_1(int pos, long active0)
          return -1;
       case 3:
          if ((active0 & 0x14000L) != 0L) {
-          return 30;
+            return 30;
         }
          if ((active0 & 0x180000008000L) != 0L)
          {
@@ -1222,7 +1188,7 @@ private final int jjStopStringLiteralDfa_1(int pos, long active0)
          return -1;
       case 4:
          if ((active0 & 0x80000008000L) != 0L) {
-          return 30;
+            return 30;
         }
          if ((active0 & 0x100000000000L) != 0L)
          {
@@ -1267,12 +1233,10 @@ private final int jjStopStringLiteralDfa_1(int pos, long active0)
          return -1;
    }
 }
-private final int jjStartNfa_1(int pos, long active0)
-{
+private final int jjStartNfa_1(int pos, long active0){
    return jjMoveNfa_1(jjStopStringLiteralDfa_1(pos, active0), pos + 1);
 }
-private int jjMoveStringLiteralDfa0_1()
-{
+private int jjMoveStringLiteralDfa0_1(){
    switch(curChar)
    {
       case 33:
@@ -1351,8 +1315,7 @@ private int jjMoveStringLiteralDfa0_1()
          return jjMoveNfa_1(0, 0);
    }
 }
-private int jjMoveStringLiteralDfa1_1(long active0)
-{
+private int jjMoveStringLiteralDfa1_1(long active0){
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
       jjStopStringLiteralDfa_1(0, active0);
@@ -1362,36 +1325,36 @@ private int jjMoveStringLiteralDfa1_1(long active0)
    {
       case 38:
          if ((active0 & 0x8000000000L) != 0L) {
-          return jjStopAtPos(1, 39);
+            return jjStopAtPos(1, 39);
         }
          break;
       case 61:
          if ((active0 & 0x20000000L) != 0L) {
-          return jjStopAtPos(1, 29);
+            return jjStopAtPos(1, 29);
         } else if ((active0 & 0x80000000L) != 0L) {
-          return jjStopAtPos(1, 31);
+            return jjStopAtPos(1, 31);
         } else if ((active0 & 0x200000000L) != 0L) {
-          return jjStopAtPos(1, 33);
+            return jjStopAtPos(1, 33);
         } else if ((active0 & 0x800000000L) != 0L) {
-          return jjStopAtPos(1, 35);
+            return jjStopAtPos(1, 35);
         } else if ((active0 & 0x20000000000000L) != 0L) {
-          return jjStopAtPos(1, 53);
+            return jjStopAtPos(1, 53);
         }
          break;
       case 62:
          if ((active0 & 0x80000000000000L) != 0L) {
-          return jjStopAtPos(1, 55);
+            return jjStopAtPos(1, 55);
         }
          break;
       case 97:
          return jjMoveStringLiteralDfa2_1(active0, 0x8000L);
       case 101:
          if ((active0 & 0x40000000L) != 0L) {
-          return jjStartNfaWithStates_1(1, 30, 30);
+            return jjStartNfaWithStates_1(1, 30, 30);
         } else if ((active0 & 0x100000000L) != 0L) {
-          return jjStartNfaWithStates_1(1, 32, 30);
+            return jjStartNfaWithStates_1(1, 32, 30);
         } else if ((active0 & 0x1000000000L) != 0L) {
-          return jjStartNfaWithStates_1(1, 36, 30);
+            return jjStartNfaWithStates_1(1, 36, 30);
         }
          break;
       case 105:
@@ -1404,26 +1367,26 @@ private int jjMoveStringLiteralDfa1_1(long active0)
          return jjMoveStringLiteralDfa2_1(active0, 0x10004000000000L);
       case 113:
          if ((active0 & 0x400000000L) != 0L) {
-          return jjStartNfaWithStates_1(1, 34, 30);
+            return jjStartNfaWithStates_1(1, 34, 30);
         }
          break;
       case 114:
          if ((active0 & 0x40000000000L) != 0L) {
-          return jjStartNfaWithStates_1(1, 42, 30);
+            return jjStartNfaWithStates_1(1, 42, 30);
         }
          return jjMoveStringLiteralDfa2_1(active0, 0x4000L);
       case 116:
          if ((active0 & 0x4000000L) != 0L) {
-          return jjStartNfaWithStates_1(1, 26, 30);
+            return jjStartNfaWithStates_1(1, 26, 30);
         } else if ((active0 & 0x10000000L) != 0L) {
-          return jjStartNfaWithStates_1(1, 28, 30);
+            return jjStartNfaWithStates_1(1, 28, 30);
         }
          break;
       case 117:
          return jjMoveStringLiteralDfa2_1(active0, 0x10000L);
       case 124:
          if ((active0 & 0x20000000000L) != 0L) {
-          return jjStopAtPos(1, 41);
+            return jjStopAtPos(1, 41);
         }
          break;
       default :
@@ -1431,11 +1394,10 @@ private int jjMoveStringLiteralDfa1_1(long active0)
    }
    return jjStartNfa_1(0, active0);
 }
-private int jjMoveStringLiteralDfa2_1(long old0, long active0)
-{
+private int jjMoveStringLiteralDfa2_1(long old0, long active0){
    if (((active0 &= old0)) == 0L) {
     return jjStartNfa_1(0, old0);
-  }
+}
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
       jjStopStringLiteralDfa_1(1, active0);
@@ -1445,9 +1407,9 @@ private int jjMoveStringLiteralDfa2_1(long old0, long active0)
    {
       case 100:
          if ((active0 & 0x10000000000L) != 0L) {
-          return jjStartNfaWithStates_1(2, 40, 30);
+            return jjStartNfaWithStates_1(2, 40, 30);
         } else if ((active0 & 0x10000000000000L) != 0L) {
-          return jjStartNfaWithStates_1(2, 52, 30);
+            return jjStartNfaWithStates_1(2, 52, 30);
         }
          break;
       case 108:
@@ -1458,14 +1420,14 @@ private int jjMoveStringLiteralDfa2_1(long old0, long active0)
          return jjMoveStringLiteralDfa3_1(active0, 0x100000000000L);
       case 116:
          if ((active0 & 0x4000000000L) != 0L) {
-          return jjStartNfaWithStates_1(2, 38, 30);
+            return jjStartNfaWithStates_1(2, 38, 30);
         }
          break;
       case 117:
          return jjMoveStringLiteralDfa3_1(active0, 0x4000L);
       case 118:
          if ((active0 & 0x4000000000000L) != 0L) {
-          return jjStartNfaWithStates_1(2, 50, 30);
+            return jjStartNfaWithStates_1(2, 50, 30);
         }
          break;
       default :
@@ -1473,11 +1435,10 @@ private int jjMoveStringLiteralDfa2_1(long old0, long active0)
    }
    return jjStartNfa_1(1, active0);
 }
-private int jjMoveStringLiteralDfa3_1(long old0, long active0)
-{
+private int jjMoveStringLiteralDfa3_1(long old0, long active0){
    if (((active0 &= old0)) == 0L) {
     return jjStartNfa_1(1, old0);
-  }
+}
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
       jjStopStringLiteralDfa_1(2, active0);
@@ -1487,12 +1448,12 @@ private int jjMoveStringLiteralDfa3_1(long old0, long active0)
    {
       case 101:
          if ((active0 & 0x4000L) != 0L) {
-          return jjStartNfaWithStates_1(3, 14, 30);
+            return jjStartNfaWithStates_1(3, 14, 30);
         }
          break;
       case 108:
          if ((active0 & 0x10000L) != 0L) {
-          return jjStartNfaWithStates_1(3, 16, 30);
+            return jjStartNfaWithStates_1(3, 16, 30);
         }
          break;
       case 115:
@@ -1504,11 +1465,10 @@ private int jjMoveStringLiteralDfa3_1(long old0, long active0)
    }
    return jjStartNfa_1(2, active0);
 }
-private int jjMoveStringLiteralDfa4_1(long old0, long active0)
-{
+private int jjMoveStringLiteralDfa4_1(long old0, long active0){
    if (((active0 &= old0)) == 0L) {
     return jjStartNfa_1(2, old0);
-  }
+}
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
       jjStopStringLiteralDfa_1(3, active0);
@@ -1520,12 +1480,12 @@ private int jjMoveStringLiteralDfa4_1(long old0, long active0)
          return jjMoveStringLiteralDfa5_1(active0, 0x100000000000L);
       case 101:
          if ((active0 & 0x8000L) != 0L) {
-          return jjStartNfaWithStates_1(4, 15, 30);
+            return jjStartNfaWithStates_1(4, 15, 30);
         }
          break;
       case 121:
          if ((active0 & 0x80000000000L) != 0L) {
-          return jjStartNfaWithStates_1(4, 43, 30);
+            return jjStartNfaWithStates_1(4, 43, 30);
         }
          break;
       default :
@@ -1533,11 +1493,10 @@ private int jjMoveStringLiteralDfa4_1(long old0, long active0)
    }
    return jjStartNfa_1(3, active0);
 }
-private int jjMoveStringLiteralDfa5_1(long old0, long active0)
-{
+private int jjMoveStringLiteralDfa5_1(long old0, long active0){
    if (((active0 &= old0)) == 0L) {
     return jjStartNfa_1(3, old0);
-  }
+}
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
       jjStopStringLiteralDfa_1(4, active0);
@@ -1552,11 +1511,10 @@ private int jjMoveStringLiteralDfa5_1(long old0, long active0)
    }
    return jjStartNfa_1(4, active0);
 }
-private int jjMoveStringLiteralDfa6_1(long old0, long active0)
-{
+private int jjMoveStringLiteralDfa6_1(long old0, long active0){
    if (((active0 &= old0)) == 0L) {
     return jjStartNfa_1(4, old0);
-  }
+}
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
       jjStopStringLiteralDfa_1(5, active0);
@@ -1571,11 +1529,10 @@ private int jjMoveStringLiteralDfa6_1(long old0, long active0)
    }
    return jjStartNfa_1(5, active0);
 }
-private int jjMoveStringLiteralDfa7_1(long old0, long active0)
-{
+private int jjMoveStringLiteralDfa7_1(long old0, long active0){
    if (((active0 &= old0)) == 0L) {
     return jjStartNfa_1(5, old0);
-  }
+}
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
       jjStopStringLiteralDfa_1(6, active0);
@@ -1590,11 +1547,10 @@ private int jjMoveStringLiteralDfa7_1(long old0, long active0)
    }
    return jjStartNfa_1(6, active0);
 }
-private int jjMoveStringLiteralDfa8_1(long old0, long active0)
-{
+private int jjMoveStringLiteralDfa8_1(long old0, long active0){
    if (((active0 &= old0)) == 0L) {
     return jjStartNfa_1(6, old0);
-  }
+}
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
       jjStopStringLiteralDfa_1(7, active0);
@@ -1609,11 +1565,10 @@ private int jjMoveStringLiteralDfa8_1(long old0, long active0)
    }
    return jjStartNfa_1(7, active0);
 }
-private int jjMoveStringLiteralDfa9_1(long old0, long active0)
-{
+private int jjMoveStringLiteralDfa9_1(long old0, long active0){
    if (((active0 &= old0)) == 0L) {
     return jjStartNfa_1(7, old0);
-  }
+}
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
       jjStopStringLiteralDfa_1(8, active0);
@@ -1623,7 +1578,7 @@ private int jjMoveStringLiteralDfa9_1(long old0, long active0)
    {
       case 102:
          if ((active0 & 0x100000000000L) != 0L) {
-          return jjStartNfaWithStates_1(9, 44, 30);
+            return jjStartNfaWithStates_1(9, 44, 30);
         }
          break;
       default :
@@ -1650,7 +1605,7 @@ private int jjMoveNfa_1(int startState, int curPos)
    {
       if (++jjround == 0x7fffffff) {
         ReInitRounds();
-      }
+    }
       if (curChar < 64)
       {
          long l = 1L << curChar;
@@ -1662,204 +1617,192 @@ private int jjMoveNfa_1(int startState, int curPos)
                   if ((0x3ff000000000000L & l) != 0L)
                   {
                      if (kind > 10) {
-                      kind = 10;
+                        kind = 10;
                     }
-                     jjCheckNAddStates(18, 22);
+                     { jjCheckNAddStates(18, 22); }
                   }
                   else if ((0x1800000000L & l) != 0L)
                   {
                      if (kind > 56) {
-                      kind = 56;
+                        kind = 56;
                     }
-                     jjCheckNAddTwoStates(28, 29);
-                  }
-                  else if (curChar == 39) {
-                    jjCheckNAddStates(23, 25);
-                  } else if (curChar == 34) {
-                    jjCheckNAddStates(26, 28);
-                  } else if (curChar == 46) {
-                    jjCheckNAdd(1);
+                     { jjCheckNAddTwoStates(28, 29); }
                   }
+                  else if (curChar == 39)
+                     { jjCheckNAddStates(23, 25); }
+                  else if (curChar == 34)
+                     { jjCheckNAddStates(26, 28); }
+                  else if (curChar == 46)
+                     { jjCheckNAdd(1); }
                   break;
                case 30:
                   if ((0x3ff001000000000L & l) != 0L)
                   {
                      if (kind > 57) {
-                      kind = 57;
+                        kind = 57;
                     }
-                     jjCheckNAdd(29);
+                     { jjCheckNAdd(29); }
                   }
                   if ((0x3ff001000000000L & l) != 0L)
                   {
                      if (kind > 56) {
-                      kind = 56;
+                        kind = 56;
                     }
-                     jjCheckNAdd(28);
+                     { jjCheckNAdd(28); }
                   }
                   break;
                case 1:
                   if ((0x3ff000000000000L & l) == 0L) {
                     break;
-                  }
+                }
                   if (kind > 11) {
                     kind = 11;
-                  }
-                  jjCheckNAddTwoStates(1, 2);
+                }
+                  { jjCheckNAddTwoStates(1, 2); }
                   break;
                case 3:
-                  if ((0x280000000000L & l) != 0L) {
-                    jjCheckNAdd(4);
-                  }
+                  if ((0x280000000000L & l) != 0L)
+                     { jjCheckNAdd(4); }
                   break;
                case 4:
                   if ((0x3ff000000000000L & l) == 0L) {
                     break;
-                  }
+                }
                   if (kind > 11) {
                     kind = 11;
-                  }
-                  jjCheckNAdd(4);
+                }
+                  { jjCheckNAdd(4); }
                   break;
                case 5:
-                  if (curChar == 34) {
-                    jjCheckNAddStates(26, 28);
-                  }
+                  if (curChar == 34)
+                     { jjCheckNAddStates(26, 28); }
                   break;
                case 6:
-                  if ((0xfffffffbffffffffL & l) != 0L) {
-                    jjCheckNAddStates(26, 28);
-                  }
+                  if ((0xfffffffbffffffffL & l) != 0L)
+                     { jjCheckNAddStates(26, 28); }
                   break;
                case 8:
-                  if ((0x8400000000L & l) != 0L) {
-                    jjCheckNAddStates(26, 28);
-                  }
+                  if ((0x8400000000L & l) != 0L)
+                     { jjCheckNAddStates(26, 28); }
                   break;
                case 9:
                   if (curChar == 34 && kind > 13) {
                     kind = 13;
-                  }
+                }
                   break;
                case 10:
-                  if (curChar == 39) {
-                    jjCheckNAddStates(23, 25);
-                  }
+                  if (curChar == 39)
+                     { jjCheckNAddStates(23, 25); }
                   break;
                case 11:
-                  if ((0xffffff7fffffffffL & l) != 0L) {
-                    jjCheckNAddStates(23, 25);
-                  }
+                  if ((0xffffff7fffffffffL & l) != 0L)
+                     { jjCheckNAddStates(23, 25); }
                   break;
                case 13:
-                  if ((0x8400000000L & l) != 0L) {
-                    jjCheckNAddStates(23, 25);
-                  }
+                  if ((0x8400000000L & l) != 0L)
+                     { jjCheckNAddStates(23, 25); }
                   break;
                case 14:
                   if (curChar == 39 && kind > 13) {
                     kind = 13;
-                  }
+                }
                   break;
                case 15:
                   if ((0x3ff000000000000L & l) == 0L) {
                     break;
-                  }
+                }
                   if (kind > 10) {
                     kind = 10;
-                  }
-                  jjCheckNAddStates(18, 22);
+                }
+                  { jjCheckNAddStates(18, 22); }
                   break;
                case 16:
                   if ((0x3ff000000000000L & l) == 0L) {
                     break;
-                  }
+                }
                   if (kind > 10) {
                     kind = 10;
-                  }
-                  jjCheckNAdd(16);
+                }
+                  { jjCheckNAdd(16); }
                   break;
                case 17:
-                  if ((0x3ff000000000000L & l) != 0L) {
-                    jjCheckNAddTwoStates(17, 18);
-                  }
+                  if ((0x3ff000000000000L & l) != 0L)
+                     { jjCheckNAddTwoStates(17, 18); }
                   break;
                case 18:
                   if (curChar != 46) {
                     break;
-                  }
+                }
                   if (kind > 11) {
                     kind = 11;
-                  }
-                  jjCheckNAddTwoStates(19, 20);
+                }
+                  { jjCheckNAddTwoStates(19, 20); }
                   break;
                case 19:
                   if ((0x3ff000000000000L & l) == 0L) {
                     break;
-                  }
+                }
                   if (kind > 11) {
                     kind = 11;
-                  }
-                  jjCheckNAddTwoStates(19, 20);
+                }
+                  { jjCheckNAddTwoStates(19, 20); }
                   break;
                case 21:
-                  if ((0x280000000000L & l) != 0L) {
-                    jjCheckNAdd(22);
-                  }
+                  if ((0x280000000000L & l) != 0L)
+                     { jjCheckNAdd(22); }
                   break;
                case 22:
                   if ((0x3ff000000000000L & l) == 0L) {
                     break;
-                  }
+                }
                   if (kind > 11) {
                     kind = 11;
-                  }
-                  jjCheckNAdd(22);
+                }
+                  { jjCheckNAdd(22); }
                   break;
                case 23:
-                  if ((0x3ff000000000000L & l) != 0L) {
-                    jjCheckNAddTwoStates(23, 24);
-                  }
+                  if ((0x3ff000000000000L & l) != 0L)
+                     { jjCheckNAddTwoStates(23, 24); }
                   break;
                case 25:
-                  if ((0x280000000000L & l) != 0L) {
-                    jjCheckNAdd(26);
-                  }
+                  if ((0x280000000000L & l) != 0L)
+                     { jjCheckNAdd(26); }
                   break;
                case 26:
                   if ((0x3ff000000000000L & l) == 0L) {
                     break;
-                  }
+                }
                   if (kind > 11) {
                     kind = 11;
-                  }
-                  jjCheckNAdd(26);
+                }
+                  { jjCheckNAdd(26); }
                   break;
                case 27:
                   if ((0x1800000000L & l) == 0L) {
                     break;
-                  }
+                }
                   if (kind > 56) {
                     kind = 56;
-                  }
-                  jjCheckNAddTwoStates(28, 29);
+                }
+                  { jjCheckNAddTwoStates(28, 29); }
                   break;
                case 28:
                   if ((0x3ff001000000000L & l) == 0L) {
                     break;
-                  }
+                }
                   if (kind > 56) {
                     kind = 56;
-                  }
-                  jjCheckNAdd(28);
+                }
+                  { jjCheckNAdd(28); }
                   break;
                case 29:
                   if ((0x3ff001000000000L & l) == 0L) {
                     break;
-                  }
+                }
                   if (kind > 57) {
                     kind = 57;
-                  }
-                  jjCheckNAdd(29);
+                }
+                  { jjCheckNAdd(29); }
                   break;
                default : break;
             }
@@ -1875,96 +1818,91 @@ private int jjMoveNfa_1(int startState, int curPos)
                case 0:
                   if ((0x7fffffe87fffffeL & l) == 0L) {
                     break;
-                  }
+                }
                   if (kind > 56) {
                     kind = 56;
-                  }
-                  jjCheckNAddTwoStates(28, 29);
+                }
+                  { jjCheckNAddTwoStates(28, 29); }
                   break;
                case 30:
                   if ((0x7fffffe87fffffeL & l) != 0L)
                   {
                      if (kind > 57) {
-                      kind = 57;
+                        kind = 57;
                     }
-                     jjCheckNAdd(29);
+                     { jjCheckNAdd(29); }
                   }
                   if ((0x7fffffe87fffffeL & l) != 0L)
                   {
                      if (kind > 56) {
-                      kind = 56;
+                        kind = 56;
                     }
-                     jjCheckNAdd(28);
+                     { jjCheckNAdd(28); }
                   }
                   break;
                case 2:
-                  if ((0x2000000020L & l) != 0L) {
-                    jjAddStates(29, 30);
-                  }
+                  if ((0x2000000020L & l) != 0L)
+                     { jjAddStates(29, 30); }
                   break;
                case 6:
-                  if ((0xffffffffefffffffL & l) != 0L) {
-                    jjCheckNAddStates(26, 28);
-                  }
+                  if ((0xffffffffefffffffL & l) != 0L)
+                     { jjCheckNAddStates(26, 28); }
                   break;
                case 7:
                   if (curChar == 92) {
                     jjstateSet[jjnewStateCnt++] = 8;
-                  }
+                }
                   break;
                case 8:
-                  if (curChar == 92) {
-                    jjCheckNAddStates(26, 28);
-                  }
+                  if (curChar == 92)
+                     { jjCheckNAddStates(26, 28); }
                   break;
                case 11:
-                  if ((0xffffffffefffffffL & l) != 0L) {
-                    jjCheckNAddStates(23, 25);
-                  }
+                  if ((0xffffffffefffffffL & l) != 0L)
+                     { jjCheckNAddStates(23, 25); }
                   break;
                case 12:
                   if (curChar == 92) {
                     jjstateSet[jjnewStateCnt++] = 13;
-                  }
+                }
                   break;
                case 13:
-                  if (curChar == 92) {
-                    jjCheckNAddStates(23, 25);
-                  }
+                  if (curChar == 92)
+                     { jjCheckNAddStates(23, 25); }
                   break;
                case 20:
-                  if ((0x2000000020L & l) != 0L) {
-                    jjAddStates(31, 32);
-                  }
+                  if ((0x2000000020L & l) != 0L)
+                     { jjAddStates(31, 32); }
                   break;
                case 24:
-                  if ((0x2000000020L & l) != 0L) {
-                    jjAddStates(33, 34);
-                  }
+                  if ((0x2000000020L & l) != 0L)
+                     { jjAddStates(33, 34); }
                   break;
                case 28:
                   if ((0x7fffffe87fffffeL & l) == 0L) {
                     break;
-                  }
+                }
                   if (kind > 56) {
                     kind = 56;
-                  }
-                  jjCheckNAdd(28);
+                }
+                  { jjCheckNAdd(28); }
                   break;
                case 29:
                   if ((0x7fffffe87fffffeL & l) == 0L) {
                     break;
-                  }
+                }
                   if (kind > 57) {
                     kind = 57;
-                  }
-                  jjCheckNAdd(29);
+                }
+                  { jjCheckNAdd(29); }
                   break;
                default : break;
             }
          } while(i != startsAt);
-      } else {
-         int hiByte = (int)(curChar >> 8);
+      }
+      else
+      {
+         int hiByte = (curChar >> 8);
          int i1 = hiByte >> 6;
          long l1 = 1L << (hiByte & 077);
          int i2 = (curChar & 0xff) >> 6;
@@ -1976,57 +1914,59 @@ private int jjMoveNfa_1(int startState, int curPos)
                case 0:
                   if (!jjCanMove_1(hiByte, i1, i2, l1, l2)) {
                     break;
-                  }
+                }
                   if (kind > 56) {
                     kind = 56;
-                  }
-                  jjCheckNAddTwoStates(28, 29);
+                }
+                  { jjCheckNAddTwoStates(28, 29); }
                   break;
                case 30:
                   if (jjCanMove_1(hiByte, i1, i2, l1, l2))
                   {
                      if (kind > 56) {
-                      kind = 56;
+                        kind = 56;
                     }
-                     jjCheckNAdd(28);
+                     { jjCheckNAdd(28); }
                   }
                   if (jjCanMove_1(hiByte, i1, i2, l1, l2))
                   {
                      if (kind > 57) {
-                      kind = 57;
+                        kind = 57;
                     }
-                     jjCheckNAdd(29);
+                     { jjCheckNAdd(29); }
                   }
                   break;
                case 6:
-                  if (jjCanMove_0(hiByte, i1, i2, l1, l2)) {
-                    jjAddStates(26, 28);
-                  }
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     { jjAddStates(26, 28); }
                   break;
                case 11:
-                  if (jjCanMove_0(hiByte, i1, i2, l1, l2)) {
-                    jjAddStates(23, 25);
-                  }
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     { jjAddStates(23, 25); }
                   break;
                case 28:
                   if (!jjCanMove_1(hiByte, i1, i2, l1, l2)) {
                     break;
-                  }
+                }
                   if (kind > 56) {
                     kind = 56;
-                  }
-                  jjCheckNAdd(28);
+                }
+                  { jjCheckNAdd(28); }
                   break;
                case 29:
                   if (!jjCanMove_1(hiByte, i1, i2, l1, l2)) {
                     break;
-                  }
+                }
                   if (kind > 57) {
                     kind = 57;
-                  }
-                  jjCheckNAdd(29);
+                }
+                  { jjCheckNAdd(29); }
                   break;
-               default : break;
+               default : if (i1 == 0 || l1 == 0 || i2 == 0 ||  l2 == 0) {
+                break;
+            } else {
+                break;
+            }
             }
          } while(i != startsAt);
       }
@@ -2039,11 +1979,45 @@ private int jjMoveNfa_1(int startState, int curPos)
       ++curPos;
       if ((i = jjnewStateCnt) == (startsAt = 30 - (jjnewStateCnt = startsAt))) {
         return curPos;
-      }
+    }
       try { curChar = input_stream.readChar(); }
       catch(java.io.IOException e) { return curPos; }
    }
 }
+
+/** Token literal values. */
+public static final String[] jjstrLiteralImages = {
+"", null, "\44\173", "\43\173", null, null, null, null, "\173", "\175", null,
+null, null, null, "\164\162\165\145", "\146\141\154\163\145", "\156\165\154\154",
+"\56", "\50", "\51", "\133", "\135", "\72", "\73", "\54", "\76", "\147\164", "\74",
+"\154\164", "\76\75", "\147\145", "\74\75", "\154\145", "\75\75", "\145\161", "\41\75",
+"\156\145", "\41", "\156\157\164", "\46\46", "\141\156\144", "\174\174", "\157\162",
+"\145\155\160\164\171", "\151\156\163\164\141\156\143\145\157\146", "\52", "\53", "\55", "\77", "\57",
+"\144\151\166", "\45", "\155\157\144", "\53\75", "\75", "\55\76", null, null, null, null, null,
+null, };
+protected Token jjFillToken()
+{
+   final Token t;
+   final String curTokenImage;
+   final int beginLine;
+   final int endLine;
+   final int beginColumn;
+   final int endColumn;
+   String im = jjstrLiteralImages[jjmatchedKind];
+   curTokenImage = (im == null) ? input_stream.GetImage() : im;
+   beginLine = input_stream.getBeginLine();
+   beginColumn = input_stream.getBeginColumn();
+   endLine = input_stream.getEndLine();
+   endColumn = input_stream.getEndColumn();
+   t = Token.newToken(jjmatchedKind, curTokenImage);
+
+   t.beginLine = beginLine;
+   t.endLine = endLine;
+   t.beginColumn = beginColumn;
+   t.endColumn = endColumn;
+
+   return t;
+}
 static final int[] jjnextStates = {
    0, 1, 3, 4, 2, 0, 1, 4, 2, 0, 1, 4, 5, 2, 0, 1,
    2, 6, 16, 17, 18, 23, 24, 11, 12, 14, 6, 7, 9, 3, 4, 21,
@@ -2057,7 +2031,7 @@ private static final boolean jjCanMove_0(int hiByte, int i1, int i2, long l1, lo
          return ((jjbitVec2[i2] & l2) != 0L);
       default :
          if ((jjbitVec0[i1] & l1) != 0L) {
-          return true;
+            return true;
         }
          return false;
    }
@@ -2078,122 +2052,12 @@ private static final boolean jjCanMove_1(int hiByte, int i1, int i2, long l1, lo
          return ((jjbitVec8[i2] & l2) != 0L);
       default :
          if ((jjbitVec3[i1] & l1) != 0L) {
-          return true;
+            return true;
         }
          return false;
    }
 }
 
-/** Token literal values. */
-public static final String[] jjstrLiteralImages = {
-"", null, "\44\173", "\43\173", null, null, null, null, "\173", "\175", null,
-null, null, null, "\164\162\165\145", "\146\141\154\163\145", "\156\165\154\154",
-"\56", "\50", "\51", "\133", "\135", "\72", "\73", "\54", "\76", "\147\164", "\74",
-"\154\164", "\76\75", "\147\145", "\74\75", "\154\145", "\75\75", "\145\161", "\41\75",
-"\156\145", "\41", "\156\157\164", "\46\46", "\141\156\144", "\174\174", "\157\162",
-"\145\155\160\164\171", "\151\156\163\164\141\156\143\145\157\146", "\52", "\53", "\55", "\77", "\57",
-"\144\151\166", "\45", "\155\157\144", "\53\75", "\75", "\55\76", null, null, null, null, null,
-null, };
-
-/** Lexer state names. */
-public static final String[] lexStateNames = {
-   "DEFAULT",
-   "IN_EXPRESSION",
-   "IN_SET_OR_MAP",
-};
-
-/** Lex State array. */
-public static final int[] jjnewLexState = {
-   -1, -1, 1, 1, -1, -1, -1, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-};
-static final long[] jjtoToken = {
-   0x23ffffffffffef0fL,
-};
-static final long[] jjtoSkip = {
-   0xf0L,
-};
-protected SimpleCharStream input_stream;
-private final int[] jjrounds = new int[30];
-private final int[] jjstateSet = new int[60];
-private final StringBuilder jjimage = new StringBuilder();
-private StringBuilder image = jjimage;
-private int jjimageLen;
-private int lengthOfMatch;
-protected char curChar;
-/** Constructor. */
-public ELParserTokenManager(SimpleCharStream stream){
-   if (SimpleCharStream.staticFlag) {
-    throw new Error("ERROR: Cannot use a static CharStream class with a non-static lexical analyzer.");
-  }
-   input_stream = stream;
-}
-
-/** Constructor. */
-public ELParserTokenManager(SimpleCharStream stream, int lexState){
-   this(stream);
-   SwitchTo(lexState);
-}
-
-/** Reinitialise parser. */
-public void ReInit(SimpleCharStream stream)
-{
-   jjmatchedPos = jjnewStateCnt = 0;
-   curLexState = defaultLexState;
-   input_stream = stream;
-   ReInitRounds();
-}
-private void ReInitRounds()
-{
-   int i;
-   jjround = 0x80000001;
-   for (i = 30; i-- > 0;) {
-    jjrounds[i] = 0x80000000;
-  }
-}
-
-/** Reinitialise parser. */
-public void ReInit(SimpleCharStream stream, int lexState)
-{
-   ReInit(stream);
-   SwitchTo(lexState);
-}
-
-/** Switch to specified lex state. */
-public void SwitchTo(int lexState)
-{
-   if (lexState >= 3 || lexState < 0) {
-    throw new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE);
-  } else {
-    curLexState = lexState;
-  }
-}
-
-protected Token jjFillToken()
-{
-   final Token t;
-   final String curTokenImage;
-   final int beginLine;
-   final int endLine;
-   final int beginColumn;
-   final int endColumn;
-   String im = jjstrLiteralImages[jjmatchedKind];
-   curTokenImage = (im == null) ? input_stream.GetImage() : im;
-   beginLine = input_stream.getBeginLine();
-   beginColumn = input_stream.getBeginColumn();
-   endLine = input_stream.getEndLine();
-   endColumn = input_stream.getEndColumn();
-   t = Token.newToken(jjmatchedKind, curTokenImage);
-
-   t.beginLine = beginLine;
-   t.endLine = endLine;
-   t.beginColumn = beginColumn;
-   t.endColumn = endColumn;
-
-   return t;
-}
-
 int curLexState = 0;
 int defaultLexState = 0;
 int jjnewStateCnt;
@@ -2214,9 +2078,10 @@ public Token getNextToken()
    {
       curChar = input_stream.BeginToken();
    }
-   catch(java.io.IOException e)
+   catch(Exception e)
    {
       jjmatchedKind = 0;
+      jjmatchedPos = -1;
       matchedToken = jjFillToken();
       return matchedToken;
    }
@@ -2235,7 +2100,7 @@ public Token getNextToken()
        try { input_stream.backup(0);
           while (curChar <= 32 && (0x100002600L & (1L << curChar)) != 0L) {
             curChar = input_stream.BeginToken();
-          }
+        }
        }
        catch (java.io.IOException e1) { continue EOFLoop; }
        jjmatchedKind = 0x7fffffff;
@@ -2250,7 +2115,7 @@ public Token getNextToken()
        try { input_stream.backup(0);
           while (curChar <= 32 && (0x100002600L & (1L << curChar)) != 0L) {
             curChar = input_stream.BeginToken();
-          }
+        }
        }
        catch (java.io.IOException e1) { continue EOFLoop; }
        jjmatchedKind = 0x7fffffff;
@@ -2265,7 +2130,7 @@ public Token getNextToken()
      if (jjmatchedKind != 0x7fffffff)
      {
         if (jjmatchedPos + 1 < curPos) {
-          input_stream.backup(curPos - jjmatchedPos - 1);
+            input_stream.backup(curPos - jjmatchedPos - 1);
         }
         if ((jjtoToken[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
         {
@@ -2273,11 +2138,13 @@ public Token getNextToken()
            TokenLexicalActions(matchedToken);
        if (jjnewLexState[jjmatchedKind] != -1) {
         curLexState = jjnewLexState[jjmatchedKind];
-      }
+    }
            return matchedToken;
-        } else {
+        }
+        else
+        {
          if (jjnewLexState[jjmatchedKind] != -1) {
-          curLexState = jjnewLexState[jjmatchedKind];
+            curLexState = jjnewLexState[jjmatchedKind];
         }
            continue EOFLoop;
         }
@@ -2294,7 +2161,7 @@ public Token getNextToken()
            error_line++;
            error_column = 0;
         } else {
-          error_column++;
+            error_column++;
         }
      }
      if (!EOFSeen) {
@@ -2305,6 +2172,23 @@ public Token getNextToken()
   }
 }
 
+void SkipLexicalActions(Token matchedToken)
+{
+   switch(jjmatchedKind)
+   {
+      default :
+         break;
+   }
+}
+void MoreLexicalActions()
+{
+   jjimageLen += (lengthOfMatch = jjmatchedPos + 1);
+   switch(jjmatchedKind)
+   {
+      default :
+         break;
+   }
+}
 void TokenLexicalActions(Token matchedToken)
 {
    switch(jjmatchedKind)
@@ -2360,4 +2244,96 @@ private void jjCheckNAddStates(int start, int end)
    } while (start++ != end);
 }
 
+    /** Constructor. */
+    public ELParserTokenManager(SimpleCharStream stream){
+
+      if (SimpleCharStream.staticFlag) {
+        throw new Error("ERROR: Cannot use a static CharStream class with a non-static lexical analyzer.");
+    }
+
+    input_stream = stream;
+  }
+
+  /** Constructor. */
+  public ELParserTokenManager (SimpleCharStream stream, int lexState){
+    ReInit(stream);
+    SwitchTo(lexState);
+  }
+
+  /** Reinitialise parser. */
+
+  public void ReInit(SimpleCharStream stream)
+  {
+
+
+    jjmatchedPos =
+    jjnewStateCnt =
+    0;
+    curLexState = defaultLexState;
+    input_stream = stream;
+    ReInitRounds();
+  }
+
+  private void ReInitRounds()
+  {
+    int i;
+    jjround = 0x80000001;
+    for (i = 30; i-- > 0;) {
+        jjrounds[i] = 0x80000000;
+    }
+  }
+
+  /** Reinitialise parser. */
+  public void ReInit(SimpleCharStream stream, int lexState)
+
+  {
+    ReInit(stream);
+    SwitchTo(lexState);
+  }
+
+  /** Switch to specified lex state. */
+  public void SwitchTo(int lexState)
+  {
+    if (lexState >= 3 || lexState < 0) {
+        throw new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE);
+    } else {
+        curLexState = lexState;
+    }
+  }
+
+
+/** Lexer state names. */
+public static final String[] lexStateNames = {
+   "DEFAULT",
+   "IN_EXPRESSION",
+   "IN_SET_OR_MAP",
+};
+
+/** Lex State array. */
+public static final int[] jjnewLexState = {
+   -1, -1, 1, 1, -1, -1, -1, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+};
+static final long[] jjtoToken = {
+   0x23ffffffffffef0fL,
+};
+static final long[] jjtoSkip = {
+   0xf0L,
+};
+static final long[] jjtoSpecial = {
+   0x0L,
+};
+static final long[] jjtoMore = {
+   0x0L,
+};
+    protected SimpleCharStream  input_stream;
+
+    private final int[] jjrounds = new int[30];
+    private final int[] jjstateSet = new int[2 * 30];
+    private final StringBuilder jjimage = new StringBuilder();
+    private StringBuilder image = jjimage;
+    private int jjimageLen;
+    private int lengthOfMatch;
+    protected int curChar;
 }
diff --git a/java/org/apache/el/parser/ELParserTreeConstants.java b/java/org/apache/el/parser/ELParserTreeConstants.java
index 8afe6fa..353ccff 100644
--- a/java/org/apache/el/parser/ELParserTreeConstants.java
+++ b/java/org/apache/el/parser/ELParserTreeConstants.java
@@ -1,4 +1,4 @@
-/* Generated By:JavaCC: Do not edit this line. ELParserTreeConstants.java Version 5.0 */
+/* Generated By:JavaCC: Do not edit this line. ELParserTreeConstants.java Version 7.0.10 */
 package org.apache.el.parser;
 
 public interface ELParserTreeConstants
@@ -94,4 +94,4 @@ public interface ELParserTreeConstants
     "Null",
   };
 }
-/* JavaCC - OriginalChecksum=96680d397165a1214a1ad1f24011d5c1 (do not edit this line) */
+/* JavaCC - OriginalChecksum=4a0b3deb38bd21ee4df7ed00585cdbf6 (do not edit this line) */
diff --git a/java/org/apache/el/parser/JJTELParserState.java b/java/org/apache/el/parser/JJTELParserState.java
index 3ba4d77..8077c72 100644
--- a/java/org/apache/el/parser/JJTELParserState.java
+++ b/java/org/apache/el/parser/JJTELParserState.java
@@ -1,4 +1,4 @@
-/* Generated By:JavaCC: Do not edit this line. JJTELParserState.java Version 5.0 */
+/* Generated By:JavaCC: Do not edit this line. JJTELParserState.java Version 7.0.10 */
 package org.apache.el.parser;
 
 @SuppressWarnings("all") // Ignore warnings in generated code
@@ -121,4 +121,4 @@ public class JJTELParserState {
     }
   }
 }
-/* JavaCC - OriginalChecksum=70ac39f1e0e1eed7476e1dae2dfa25fa (do not edit this line) */
+/* JavaCC - OriginalChecksum=5f71fbb7f7a6d37c4c91e15a8243ab32 (do not edit this line) */
diff --git a/java/org/apache/el/parser/ParseException.java b/java/org/apache/el/parser/ParseException.java
index 02c413a..8ee8fa0 100644
--- a/java/org/apache/el/parser/ParseException.java
+++ b/java/org/apache/el/parser/ParseException.java
@@ -1,5 +1,5 @@
-/* Generated By:JavaCC: Do not edit this line. ParseException.java Version 5.0 */
-/* JavaCCOptions:KEEP_LINE_COL=null */
+/* Generated By:JavaCC: Do not edit this line. ParseException.java Version 7.0 */
+/* JavaCCOptions:KEEP_LINE_COLUMN=true */
 package org.apache.el.parser;
 
 /**
@@ -22,6 +22,11 @@ public class ParseException extends Exception {
   private static final long serialVersionUID = 1L;
 
   /**
+   * The end of line string for this machine.
+   */
+  protected static String EOL = System.getProperty("line.separator", "\n");
+
+  /**
    * This constructor is used by the method "generateParseException"
    * in the generated parser.  Calling this constructor generates
    * a new object of this type with the fields "currentToken",
@@ -61,7 +66,7 @@ public class ParseException extends Exception {
   /**
    * This is the last token that has been consumed successfully.  If
    * this object has been created due to a parse error, the token
-   * followng this token will (therefore) be the first error token.
+   * following this token will (therefore) be the first error token.
    */
   public Token currentToken;
 
@@ -89,7 +94,8 @@ public class ParseException extends Exception {
   private static String initialise(Token currentToken,
                            int[][] expectedTokenSequences,
                            String[] tokenImage) {
-    StringBuffer expected = new StringBuffer();
+
+    StringBuilder expected = new StringBuilder();
     int maxSize = 0;
     for (int i = 0; i < expectedTokenSequences.length; i++) {
       if (maxSize < expectedTokenSequences[i].length) {
@@ -101,14 +107,14 @@ public class ParseException extends Exception {
       if (expectedTokenSequences[i][expectedTokenSequences[i].length - 1] != 0) {
         expected.append("...");
       }
-      expected.append(System.lineSeparator()).append("    ");
+      expected.append(EOL).append("    ");
     }
     String retval = "Encountered \"";
     Token tok = currentToken.next;
     for (int i = 0; i < maxSize; i++) {
       if (i != 0) {
         retval += " ";
-      }
+    }
       if (tok.kind == 0) {
         retval += tokenImage[0];
         break;
@@ -119,30 +125,38 @@ public class ParseException extends Exception {
       retval += " \"";
       tok = tok.next;
     }
-    retval += "\" at line " + currentToken.next.beginLine + ", column " + currentToken.next.beginColumn;
-    retval += "." + System.lineSeparator();
-    if (expectedTokenSequences.length == 1) {
-      retval += "Was expecting:" + System.lineSeparator() + "    ";
+    if (currentToken.next != null) {
+      retval += "\" at line " + currentToken.next.beginLine + ", column " + currentToken.next.beginColumn;
+    }
+    retval += "." + EOL;
+
+
+    if (expectedTokenSequences.length == 0) {
+        // Nothing to add here
     } else {
-      retval += "Was expecting one of:" + System.lineSeparator() + "    ";
+	    if (expectedTokenSequences.length == 1) {
+	      retval += "Was expecting:" + EOL + "    ";
+	    } else {
+	      retval += "Was expecting one of:" + EOL + "    ";
+	    }
+	    retval += expected.toString();
     }
-    retval += expected.toString();
+
     return retval;
   }
 
+
   /**
    * Used to convert raw characters to their escaped version
    * when these raw version cannot be used as part of an ASCII
    * string literal.
    */
   static String add_escapes(String str) {
-      StringBuffer retval = new StringBuffer();
+      StringBuilder retval = new StringBuilder();
       char ch;
       for (int i = 0; i < str.length(); i++) {
         switch (str.charAt(i))
         {
-           case 0 :
-              continue;
            case '\b':
               retval.append("\\b");
               continue;
@@ -170,7 +184,7 @@ public class ParseException extends Exception {
            default:
               if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
                  String s = "0000" + Integer.toString(ch, 16);
-                 retval.append("\\u" + s.substring(s.length() - 4, s.length()));
+                 retval.append("\\u" + s.substring(s.length() - 4));
               } else {
                  retval.append(ch);
               }
@@ -181,4 +195,4 @@ public class ParseException extends Exception {
    }
 
 }
-/* JavaCC - OriginalChecksum=87586a39aa89f164889cc59bc6a7e7ad (do not edit this line) */
+/* JavaCC - OriginalChecksum=7b4787d8879bd4e4e79738c1d4a275eb (do not edit this line) */
diff --git a/java/org/apache/el/parser/SimpleCharStream.java b/java/org/apache/el/parser/SimpleCharStream.java
index 1b3b534..7307fe0 100644
--- a/java/org/apache/el/parser/SimpleCharStream.java
+++ b/java/org/apache/el/parser/SimpleCharStream.java
@@ -1,4 +1,4 @@
-/* Generated By:JavaCC: Do not edit this line. SimpleCharStream.java Version 5.0 */
+/* Generated By:JavaCC: Do not edit this line. SimpleCharStream.java Version 7.0 */
 /* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */
 package org.apache.el.parser;
 
@@ -31,10 +31,12 @@ public class SimpleCharStream
   protected char[] buffer;
   protected int maxNextCharInd = 0;
   protected int inBuf = 0;
-  protected int tabSize = 8;
+  protected int tabSize = 1;
+  protected boolean trackLineColumn = true;
+
+  public void setTabSize(int i) { tabSize = i; }
+  public int getTabSize() { return tabSize; }
 
-  protected void setTabSize(int i) { tabSize = i; }
-  protected int getTabSize(int i) { return tabSize; }
 
 
   protected void ExpandBuff(boolean wrapAround)
@@ -60,7 +62,9 @@ public class SimpleCharStream
         bufcolumn = newbufcolumn;
 
         maxNextCharInd = (bufpos += (bufsize - tokenBegin));
-      } else {
+      }
+      else
+      {
         System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
         buffer = newbuffer;
 
@@ -96,18 +100,18 @@ public class SimpleCharStream
           available = tokenBegin;
         }
         else if (tokenBegin < 0) {
-          bufpos = maxNextCharInd = 0;
+            bufpos = maxNextCharInd = 0;
         } else {
-          ExpandBuff(false);
+            ExpandBuff(false);
         }
       }
       else if (available > tokenBegin) {
         available = bufsize;
-      } else if ((tokenBegin - available) < 2048) {
+    } else if ((tokenBegin - available) < 2048) {
         ExpandBuff(true);
-      } else {
+    } else {
         available = tokenBegin;
-      }
+    }
     }
 
     int i;
@@ -118,7 +122,7 @@ public class SimpleCharStream
         throw new java.io.IOException();
       } else {
         maxNextCharInd += i;
-      }
+    }
       return;
     }
     catch(java.io.IOException e) {
@@ -126,7 +130,7 @@ public class SimpleCharStream
       backup(0);
       if (tokenBegin == -1) {
         tokenBegin = bufpos;
-      }
+    }
       throw e;
     }
   }
@@ -158,7 +162,7 @@ public class SimpleCharStream
         prevCharIsLF = true;
       } else {
         line += (column = 1);
-      }
+    }
     }
 
     switch (c)
@@ -190,13 +194,13 @@ public class SimpleCharStream
 
       if (++bufpos == bufsize) {
         bufpos = 0;
-      }
+    }
 
       return buffer[bufpos];
     }
 
     if (++bufpos >= maxNextCharInd) {
-      FillBuff();
+        FillBuff();
     }
 
     char c = buffer[bufpos];
@@ -250,7 +254,7 @@ public class SimpleCharStream
 
     inBuf += amount;
     if ((bufpos -= amount) < 0) {
-      bufpos += bufsize;
+        bufpos += bufsize;
     }
   }
 
@@ -394,10 +398,10 @@ public class SimpleCharStream
   public String GetImage()
   {
     if (bufpos >= tokenBegin) {
-      return new String(buffer, tokenBegin, bufpos - tokenBegin + 1);
+        return new String(buffer, tokenBegin, bufpos - tokenBegin + 1);
     } else {
-      return new String(buffer, tokenBegin, bufsize - tokenBegin) +
-                            new String(buffer, 0, bufpos + 1);
+        return new String(buffer, tokenBegin, bufsize - tokenBegin) +
+                                new String(buffer, 0, bufpos + 1);
     }
   }
 
@@ -407,7 +411,7 @@ public class SimpleCharStream
     char[] ret = new char[len];
 
     if ((bufpos + 1) >= len) {
-      System.arraycopy(buffer, bufpos - len + 1, ret, 0, len);
+        System.arraycopy(buffer, bufpos - len + 1, ret, 0, len);
     } else
     {
       System.arraycopy(buffer, bufsize - (len - bufpos - 1), ret, 0,
@@ -437,7 +441,9 @@ public class SimpleCharStream
     if (bufpos >= tokenBegin)
     {
       len = bufpos - tokenBegin + inBuf + 1;
-    } else {
+    }
+    else
+    {
       len = bufsize - tokenBegin + bufpos + 1 + inBuf;
     }
 
@@ -461,9 +467,9 @@ public class SimpleCharStream
       while (i++ < len)
       {
         if (bufline[j = start % bufsize] != bufline[++start % bufsize]) {
-          bufline[j] = newLine++;
+            bufline[j] = newLine++;
         } else {
-          bufline[j] = newLine;
+            bufline[j] = newLine;
         }
       }
     }
@@ -471,6 +477,7 @@ public class SimpleCharStream
     line = bufline[j];
     column = bufcolumn[j];
   }
-
+  boolean getTrackLineColumn() { return trackLineColumn; }
+  void setTrackLineColumn(boolean tlc) { trackLineColumn = tlc; }
 }
-/* JavaCC - OriginalChecksum=9ba0db3918bffb8019f00da1e421f339 (do not edit this line) */
+/* JavaCC - OriginalChecksum=1f3491e3824e8fdde2ac2b6c2dc76fe6 (do not edit this line) */
diff --git a/java/org/apache/el/parser/Token.java b/java/org/apache/el/parser/Token.java
index 17fd31e..55f34a7 100644
--- a/java/org/apache/el/parser/Token.java
+++ b/java/org/apache/el/parser/Token.java
@@ -1,5 +1,5 @@
-/* Generated By:JavaCC: Do not edit this line. Token.java Version 5.0 */
-/* JavaCCOptions:TOKEN_EXTENDS=,KEEP_LINE_COL=null,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */
+/* Generated By:JavaCC: Do not edit this line. Token.java Version 7.0 */
+/* JavaCCOptions:TOKEN_EXTENDS=,KEEP_LINE_COLUMN=true,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */
 package org.apache.el.parser;
 
 /**
@@ -98,6 +98,7 @@ public class Token implements java.io.Serializable {
   /**
    * Returns the image.
    */
+  @Override
   public String toString()
   {
     return image;
@@ -129,4 +130,4 @@ public class Token implements java.io.Serializable {
   }
 
 }
-/* JavaCC - OriginalChecksum=3fc97649fffa8b13e1e03af022020b2f (do not edit this line) */
+/* JavaCC - OriginalChecksum=4467a1ea6179d025edd92279d5f99003 (do not edit this line) */
diff --git a/java/org/apache/el/parser/TokenMgrError.java b/java/org/apache/el/parser/TokenMgrError.java
index cf37fb9..3d3b565 100644
--- a/java/org/apache/el/parser/TokenMgrError.java
+++ b/java/org/apache/el/parser/TokenMgrError.java
@@ -1,4 +1,4 @@
-/* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 5.0 */
+/* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 7.0 */
 /* JavaCCOptions: */
 package org.apache.el.parser;
 
@@ -21,22 +21,22 @@ public class TokenMgrError extends Error
   /**
    * Lexical error occurred.
    */
-  static final int LEXICAL_ERROR = 0;
+  public static final int LEXICAL_ERROR = 0;
 
   /**
    * An attempt was made to create a second instance of a static token manager.
    */
-  static final int STATIC_LEXER_ERROR = 1;
+  public static final int STATIC_LEXER_ERROR = 1;
 
   /**
    * Tried to change to an invalid lexical state.
    */
-  static final int INVALID_LEXICAL_STATE = 2;
+  public static final int INVALID_LEXICAL_STATE = 2;
 
   /**
    * Detected (and bailed out of) an infinite loop in the token manager.
    */
-  static final int LOOP_DETECTED = 3;
+  public static final int LOOP_DETECTED = 3;
 
   /**
    * Indicates the reason why the exception is thrown. It will have
@@ -49,13 +49,11 @@ public class TokenMgrError extends Error
    * equivalents in the given string
    */
   protected static final String addEscapes(String str) {
-    StringBuffer retval = new StringBuffer();
+    StringBuilder retval = new StringBuilder();
     char ch;
     for (int i = 0; i < str.length(); i++) {
       switch (str.charAt(i))
       {
-        case 0 :
-          continue;
         case '\b':
           retval.append("\\b");
           continue;
@@ -83,7 +81,7 @@ public class TokenMgrError extends Error
         default:
           if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
             String s = "0000" + Integer.toString(ch, 16);
-            retval.append("\\u" + s.substring(s.length() - 4, s.length()));
+            retval.append("\\u" + s.substring(s.length() - 4));
           } else {
             retval.append(ch);
           }
@@ -105,12 +103,13 @@ public class TokenMgrError extends Error
    *    curchar     : the offending character
    * Note: You can customize the lexical error message by modifying this method.
    */
-  protected static String LexicalError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar) {
-    return "Lexical error at line " +
+  protected static String LexicalErr(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, int curChar) {
+    char curChar1 = (char)curChar;
+    return("Lexical error at line " +
           errorLine + ", column " +
           errorColumn + ".  Encountered: " +
-          (EOFSeen ? "<EOF> " : ("\"" + addEscapes(String.valueOf(curChar)) + "\"") + " (" + (int)curChar + "), ") +
-          "after : \"" + addEscapes(errorAfter) + "\"";
+          (EOFSeen ? "<EOF> " : ("\"" + addEscapes(String.valueOf(curChar1)) + "\"") + " (" + curChar + "), ") +
+          "after : \"" + addEscapes(errorAfter) + "\"");
   }
 
   /**
@@ -122,6 +121,7 @@ public class TokenMgrError extends Error
    *
    * from this method for such cases in the release version of your parser.
    */
+  @Override
   public String getMessage() {
     return super.getMessage();
   }
@@ -141,8 +141,8 @@ public class TokenMgrError extends Error
   }
 
   /** Full Constructor. */
-  public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar, int reason) {
-    this(LexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason);
+  public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, int curChar, int reason) {
+    this(LexicalErr(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason);
   }
 }
-/* JavaCC - OriginalChecksum=de3ff0bacfb0fe749cc8eaf56ae82fea (do not edit this line) */
+/* JavaCC - OriginalChecksum=66bf707ee7f559454e7fb080d48291e1 (do not edit this line) */
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index acadd80..374fe3c 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -105,7 +105,13 @@
   issues do not "pop up" wrt. others).
 -->
 <section name="Tomcat 10.0.13 (markt)" rtext="in development">
-</section>
+  <subsection name="Jasper">
+    <changelog>
+      <update>
+        Regenerate the EL parser using JavaCC 7.0.10. (markt)
+      </update>
+    </changelog>
+  </subsection></section>
 <section name="Tomcat 10.0.12 (markt)" rtext="release in progress">
   <subsection name="Catalina">
     <changelog>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


[tomcat] 02/02: Fix parsing bug for literal Maps constructed using variables.

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch 10.0.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit 29546aca3ab725b309519fd9e5501a23c58f95af
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Thu Sep 30 08:17:53 2021 +0100

    Fix parsing bug for literal Maps constructed using variables.
---
 java/org/apache/el/parser/ELParser.java       | 164 +++++++++++++++++++++++---
 java/org/apache/el/parser/ELParser.jjt        |   2 +-
 test/org/apache/el/parser/TestAstMapData.java |  15 +++
 webapps/docs/changelog.xml                    |   8 +-
 4 files changed, 168 insertions(+), 21 deletions(-)

diff --git a/java/org/apache/el/parser/ELParser.java b/java/org/apache/el/parser/ELParser.java
index 8035c82..7a50b6b 100644
--- a/java/org/apache/el/parser/ELParser.java
+++ b/java/org/apache/el/parser/ELParser.java
@@ -1783,7 +1783,7 @@ if (jjtc000) {
             }
           default:
             jj_la1[40] = jj_gen;
-            if (jj_2_8(3)) {
+            if (jj_2_8(5)) {
               SetData();
             } else {
               switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
@@ -2373,6 +2373,9 @@ if (jjtc000) {
         return true;
     }
     }
+    if (jj_3R_Equality_182_5_40()) {
+        return true;
+    }
     return false;
   }
 
@@ -2397,11 +2400,28 @@ if (jjtc000) {
     return false;
   }
 
+  private boolean jj_3R_ListData_350_26_109()
+ {
+    if (jj_scan_token(COMMA)) {
+        return true;
+    }
+    if (jj_3R_Expression_99_5_36()) {
+        return true;
+    }
+    return false;
+  }
+
   private boolean jj_3R_MapEntry_368_5_107()
  {
     if (jj_3R_Expression_99_5_36()) {
         return true;
     }
+    if (jj_scan_token(COLON)) {
+        return true;
+    }
+    if (jj_3R_Expression_99_5_36()) {
+        return true;
+    }
     return false;
   }
 
@@ -2442,6 +2462,9 @@ if (jjtc000) {
     if (jj_scan_token(COMMA)) {
         return true;
     }
+    if (jj_3R_Expression_99_5_36()) {
+        return true;
+    }
     return false;
   }
 
@@ -2455,6 +2478,9 @@ if (jjtc000) {
         return true;
     }
     }
+    if (jj_3R_And_173_5_34()) {
+        return true;
+    }
     return false;
   }
 
@@ -2479,6 +2505,11 @@ if (jjtc000) {
     if (jj_3R_Expression_99_5_36()) {
         return true;
     }
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_ListData_350_26_109()) { jj_scanpos = xsp; break; }
+    }
     return false;
   }
 
@@ -2572,6 +2603,14 @@ if (jjtc000) {
     return false;
   }
 
+  private boolean jj_3R_MethodParameters_317_31_111()
+ {
+    if (jj_scan_token(COMMA)) {
+        return true;
+    }
+    return false;
+  }
+
   private boolean jj_3R_SetData_342_5_25()
  {
     if (jj_scan_token(START_SET_OR_MAP)) {
@@ -2712,12 +2751,28 @@ if (jjtc000) {
     if (jj_3R_Expression_99_5_36()) {
         return true;
     }
+    if (jj_scan_token(RPAREN)) {
+        return true;
+    }
     return false;
   }
 
-  private boolean jj_3_6()
+  private boolean jj_3R_MethodParameters_317_16_110()
  {
-    if (jj_3R_LambdaExpressionOrInvocation_141_5_23()) {
+    if (jj_3R_Expression_99_5_36()) {
+        return true;
+    }
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_MethodParameters_317_31_111()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  private boolean jj_3R_ValueSuffix_291_41_108()
+ {
+    if (jj_3R_MethodParameters_317_5_106()) {
         return true;
     }
     return false;
@@ -2751,6 +2806,14 @@ if (jjtc000) {
     return false;
   }
 
+  private boolean jj_3_6()
+ {
+    if (jj_3R_LambdaExpressionOrInvocation_141_5_23()) {
+        return true;
+    }
+    return false;
+  }
+
   private boolean jj_3R_LambdaParameters_132_5_32()
  {
     if (jj_3R_Identifier_377_5_38()) {
@@ -2788,6 +2851,14 @@ if (jjtc000) {
     if (jj_scan_token(LPAREN)) {
         return true;
     }
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_MethodParameters_317_16_110()) {
+        jj_scanpos = xsp;
+    }
+    if (jj_scan_token(RPAREN)) {
+        return true;
+    }
     return false;
   }
 
@@ -2815,6 +2886,9 @@ if (jjtc000) {
     if (jj_scan_token(SEMICOLON)) {
         return true;
     }
+    if (jj_3R_Assignment_115_5_20()) {
+        return true;
+    }
     return false;
   }
 
@@ -2823,6 +2897,20 @@ if (jjtc000) {
     if (jj_scan_token(LBRACK)) {
         return true;
     }
+    if (jj_3R_Expression_99_5_36()) {
+        return true;
+    }
+    if (jj_scan_token(RBRACK)) {
+        return true;
+    }
+    return false;
+  }
+
+  private boolean jj_3R_ValueSuffix_291_21_79()
+ {
+    if (jj_3R_BracketSuffix_309_5_91()) {
+        return true;
+    }
     return false;
   }
 
@@ -2839,14 +2927,6 @@ if (jjtc000) {
     return false;
   }
 
-  private boolean jj_3R_ValueSuffix_291_21_79()
- {
-    if (jj_3R_BracketSuffix_309_5_91()) {
-        return true;
-    }
-    return false;
-  }
-
   private boolean jj_3_2()
  {
     if (jj_3R_LambdaExpression_124_5_21()) {
@@ -2873,6 +2953,9 @@ if (jjtc000) {
     if (jj_scan_token(DOT)) {
         return true;
     }
+    if (jj_scan_token(IDENTIFIER)) {
+        return true;
+    }
     return false;
   }
 
@@ -2907,6 +2990,10 @@ if (jjtc000) {
         return true;
     }
     }
+    xsp = jj_scanpos;
+    if (jj_3R_ValueSuffix_291_41_108()) {
+        jj_scanpos = xsp;
+    }
     return false;
   }
 
@@ -3059,6 +3146,9 @@ if (jjtc000) {
         return true;
     }
     }
+    if (jj_3R_Unary_257_9_59()) {
+        return true;
+    }
     return false;
   }
 
@@ -3080,6 +3170,9 @@ if (jjtc000) {
         return true;
     }
     }
+    if (jj_3R_Unary_257_9_59()) {
+        return true;
+    }
     return false;
   }
 
@@ -3104,6 +3197,9 @@ if (jjtc000) {
     if (jj_scan_token(MULT)) {
         return true;
     }
+    if (jj_3R_Unary_257_9_59()) {
+        return true;
+    }
     return false;
   }
 
@@ -3133,6 +3229,9 @@ if (jjtc000) {
     if (jj_scan_token(MINUS)) {
         return true;
     }
+    if (jj_3R_Multiplication_241_5_57()) {
+        return true;
+    }
     return false;
   }
 
@@ -3162,6 +3261,9 @@ if (jjtc000) {
     if (jj_scan_token(PLUS)) {
         return true;
     }
+    if (jj_3R_Multiplication_241_5_57()) {
+        return true;
+    }
     return false;
   }
 
@@ -3220,6 +3322,9 @@ if (jjtc000) {
     if (jj_scan_token(CONCAT)) {
         return true;
     }
+    if (jj_3R_Math_227_5_51()) {
+        return true;
+    }
     return false;
   }
 
@@ -3244,6 +3349,17 @@ if (jjtc000) {
     if (jj_scan_token(COLON)) {
         return true;
     }
+    if (jj_scan_token(IDENTIFIER)) {
+        return true;
+    }
+    return false;
+  }
+
+  private boolean jj_3R_Literal_408_5_80()
+ {
+    if (jj_3R_Boolean_421_5_92()) {
+        return true;
+    }
     return false;
   }
 
@@ -3269,14 +3385,6 @@ if (jjtc000) {
     return false;
   }
 
-  private boolean jj_3R_Literal_408_5_80()
- {
-    if (jj_3R_Boolean_421_5_92()) {
-        return true;
-    }
-    return false;
-  }
-
   private boolean jj_3R_Concatenation_215_6_47()
  {
     if (jj_3R_Math_227_5_51()) {
@@ -3308,6 +3416,9 @@ if (jjtc000) {
         return true;
     }
     }
+    if (jj_3R_Concatenation_215_6_47()) {
+        return true;
+    }
     return false;
   }
 
@@ -3321,6 +3432,9 @@ if (jjtc000) {
         return true;
     }
     }
+    if (jj_3R_Concatenation_215_6_47()) {
+        return true;
+    }
     return false;
   }
 
@@ -3334,6 +3448,9 @@ if (jjtc000) {
         return true;
     }
     }
+    if (jj_3R_Concatenation_215_6_47()) {
+        return true;
+    }
     return false;
   }
 
@@ -3366,6 +3483,9 @@ if (jjtc000) {
         return true;
     }
     }
+    if (jj_3R_Concatenation_215_6_47()) {
+        return true;
+    }
     return false;
   }
 
@@ -3412,6 +3532,9 @@ if (jjtc000) {
         return true;
     }
     }
+    if (jj_3R_Compare_196_5_44()) {
+        return true;
+    }
     return false;
   }
 
@@ -3438,6 +3561,9 @@ if (jjtc000) {
         return true;
     }
     }
+    if (jj_3R_Compare_196_5_44()) {
+        return true;
+    }
     return false;
   }
 
diff --git a/java/org/apache/el/parser/ELParser.jjt b/java/org/apache/el/parser/ELParser.jjt
index d519d2b..ce9c7fe 100644
--- a/java/org/apache/el/parser/ELParser.jjt
+++ b/java/org/apache/el/parser/ELParser.jjt
@@ -327,7 +327,7 @@ void NonLiteral() : {}
     | <LPAREN> Expression() <RPAREN>
     | LOOKAHEAD((<IDENTIFIER> <COLON>)? <IDENTIFIER> <LPAREN>) Function()
     | Identifier()
-    | LOOKAHEAD(3)SetData()
+    | LOOKAHEAD(5)SetData()
     | ListData()
     | MapData()
 }
diff --git a/test/org/apache/el/parser/TestAstMapData.java b/test/org/apache/el/parser/TestAstMapData.java
index 06b5503..f84ca2c 100644
--- a/test/org/apache/el/parser/TestAstMapData.java
+++ b/test/org/apache/el/parser/TestAstMapData.java
@@ -87,4 +87,19 @@ public class TestAstMapData {
         Assert.assertEquals(Map.class, ve.getType(context));
         Assert.assertEquals(simpleMap, ve.getValue(context));
     }
+
+
+    @Test
+    public void testLiteralWithVariable() {
+        ELProcessor elp = new ELProcessor();
+
+        String key = "myKey";
+        String value = "myValue";
+        elp.setVariable("aaa", "'" + key + "'");
+        elp.setVariable("bbb", "'" + value + "'");
+
+        Object result = elp.eval("{ aaa : bbb }.get(aaa)");
+
+        Assert.assertEquals(value, result);
+    }
 }
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index 374fe3c..cf9a7d5 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -110,8 +110,14 @@
       <update>
         Regenerate the EL parser using JavaCC 7.0.10. (markt)
       </update>
+      <fix>
+        Fix a bug that prevented the EL parser correctly parsing a literal Map
+        that used variables rather than literals for both keys and values.
+        (markt)
+      </fix>
     </changelog>
-  </subsection></section>
+  </subsection>
+</section>
 <section name="Tomcat 10.0.12 (markt)" rtext="release in progress">
   <subsection name="Catalina">
     <changelog>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org