merged from HEAD: multiline string literals
diff --git a/plugins/org.eclipse.dltk.javascript.formatter/src/org/eclipse/dltk/javascript/parser/JS.g b/plugins/org.eclipse.dltk.javascript.formatter/src/org/eclipse/dltk/javascript/parser/JS.g
index 8301bad..c2a007a 100644
--- a/plugins/org.eclipse.dltk.javascript.formatter/src/org/eclipse/dltk/javascript/parser/JS.g
+++ b/plugins/org.eclipse.dltk.javascript.formatter/src/org/eclipse/dltk/javascript/parser/JS.g
@@ -584,10 +584,14 @@
 	: '\u2029'
 	;
 
-fragment LineTerminator
+fragment LineTerminatorChar
 	: CR | LF | LS | PS
 	;
-		
+
+fragment LineTerminator
+	: (CR LF?) | LF | LS | PS
+	;
+
 EOL
 	: ( ( CR LF? ) | LF | LS | PS ) { $channel = HIDDEN; }
 	;
@@ -600,7 +604,7 @@
 	;
 
 SingleLineComment
-	: '//' ( ~( LineTerminator ) )* { $channel = HIDDEN; }
+	: '//' ( ~( LineTerminatorChar ) )* { $channel = HIDDEN; }
 	;
 
 // $>
@@ -892,7 +896,7 @@
 */
 	
 fragment CharacterEscapeSequence
-	: ~( DecimalDigit | 'x' | 'u' | LineTerminator ) // Concatenation of SingleEscapeCharacter and NonEscapeCharacter
+	: ~( DecimalDigit | 'x' | 'u' | LineTerminatorChar ) // Concatenation of SingleEscapeCharacter and NonEscapeCharacter
 	;
 
 fragment ZeroToThree
@@ -927,8 +931,8 @@
 	;
 
 StringLiteral
-	: SQUOTE ( ~( SQUOTE | BSLASH | LineTerminator ) | EscapeSequence )* SQUOTE
-	| DQUOTE ( ~( DQUOTE | BSLASH | LineTerminator ) | EscapeSequence )* DQUOTE
+	: SQUOTE ( ~( SQUOTE | BSLASH | LineTerminatorChar ) | EscapeSequence )* SQUOTE
+	| DQUOTE ( ~( DQUOTE | BSLASH | LineTerminatorChar ) | EscapeSequence )* DQUOTE
 	;
 	
 
@@ -937,16 +941,16 @@
 // $<	Regular expression literals (7.8.5)
 
 fragment BackslashSequence
-	: BSLASH ~( LineTerminator )
+	: BSLASH ~( LineTerminatorChar )
 	;
 
 fragment RegularExpressionFirstChar
-	: ~ ( LineTerminator | MUL | BSLASH | DIV )
+	: ~ ( LineTerminatorChar | MUL | BSLASH | DIV )
 	| BackslashSequence
 	;
 
 fragment RegularExpressionChar
-	: ~ ( LineTerminator | BSLASH | DIV )
+	: ~ ( LineTerminatorChar | BSLASH | DIV )
 	| BackslashSequence
 	;
 
diff --git a/plugins/org.eclipse.dltk.javascript.formatter/src/org/eclipse/dltk/javascript/parser/JSLexer.java b/plugins/org.eclipse.dltk.javascript.formatter/src/org/eclipse/dltk/javascript/parser/JSLexer.java
index 03344b3..3cea5ad 100644
--- a/plugins/org.eclipse.dltk.javascript.formatter/src/org/eclipse/dltk/javascript/parser/JSLexer.java
+++ b/plugins/org.eclipse.dltk.javascript.formatter/src/org/eclipse/dltk/javascript/parser/JSLexer.java
@@ -1,4 +1,4 @@
-// $ANTLR 3.0.1 JS.g 2009-09-02 10:05:09
+// $ANTLR 3.0.1 JS.g 2009-09-03 19:32:37
 
 package org.eclipse.dltk.javascript.parser;
 
@@ -13,7 +13,7 @@
     public static final int FUNCTION=18;
     public static final int SHR=94;
     public static final int VT=158;
-    public static final int RegularExpressionChar=196;
+    public static final int RegularExpressionChar=197;
     public static final int CDATA=36;
     public static final int LOCALNAME=134;
     public static final int XRCLOSE=121;
@@ -21,6 +21,7 @@
     public static final int MOD=90;
     public static final int XHOPEN=123;
     public static final int CONST=44;
+    public static final int LineTerminatorChar=168;
     public static final int DQUOTE=155;
     public static final int DO=13;
     public static final int NOT=99;
@@ -33,10 +34,10 @@
     public static final int FINAL=50;
     public static final int FORSTEP=139;
     public static final int IMPORT=54;
-    public static final int EOL=169;
+    public static final int EOL=170;
     public static final int XLCLOSE=120;
-    public static final int PropertyIdentifierSymbols=180;
-    public static final int OctalDigit=182;
+    public static final int PropertyIdentifierSymbols=181;
+    public static final int OctalDigit=183;
     public static final int RETURN=23;
     public static final int THIS=25;
     public static final int ARGS=128;
@@ -56,23 +57,23 @@
     public static final int INT=55;
     public static final int DEFAULT_XML_NAMESPACE=143;
     public static final int FF=159;
-    public static final int OctalEscapeSequence=190;
-    public static final int RegularExpressionFirstChar=195;
+    public static final int OctalEscapeSequence=191;
+    public static final int RegularExpressionFirstChar=196;
     public static final int TYPEOF=28;
     public static final int GT=80;
     public static final int CALL=135;
-    public static final int CharacterEscapeSequence=188;
+    public static final int CharacterEscapeSequence=189;
     public static final int XML=153;
     public static final int LAND=101;
     public static final int PINC=151;
     public static final int PROTECTED=61;
     public static final int LBRACK=74;
     public static final int LBRACE=70;
-    public static final int RegularExpressionLiteral=181;
+    public static final int RegularExpressionLiteral=182;
     public static final int SUB=88;
     public static final int FLOAT=51;
-    public static final int DecimalIntegerLiteral=184;
-    public static final int HexDigit=174;
+    public static final int DecimalIntegerLiteral=185;
+    public static final int HexDigit=175;
     public static final int LPAREN=72;
     public static final int AT=125;
     public static final int IMPLEMENTS=53;
@@ -81,29 +82,29 @@
     public static final int XCCLOSE=119;
     public static final int SHRASS=111;
     public static final int PS=167;
-    public static final int MultiLineComment=170;
+    public static final int MultiLineComment=171;
     public static final int ADD=87;
-    public static final int ZeroToThree=189;
+    public static final int ZeroToThree=190;
     public static final int ITEM=144;
-    public static final int XMLLiteral=197;
-    public static final int UnicodeEscapeSequence=192;
+    public static final int XMLLiteral=198;
+    public static final int UnicodeEscapeSequence=193;
     public static final int SHUASS=112;
     public static final int SET=34;
     public static final int SHORT=63;
     public static final int INSTANCEOF=21;
     public static final int SQUOTE=156;
-    public static final int Tokens=198;
+    public static final int Tokens=199;
     public static final int SAME=85;
     public static final int XHCLOSE=124;
-    public static final int StringLiteral=172;
+    public static final int StringLiteral=173;
     public static final int COLON=104;
     public static final int PAREXPR=149;
     public static final int ENUM=47;
+    public static final int HexIntegerLiteral=188;
     public static final int NBSP=161;
-    public static final int HexIntegerLiteral=187;
     public static final int SP=160;
     public static final int BLOCK=130;
-    public static final int LineTerminator=168;
+    public static final int LineTerminator=169;
     public static final int INTERFACE=56;
     public static final int DIV=116;
     public static final int LONG=57;
@@ -112,19 +113,19 @@
     public static final int LOR=102;
     public static final int LT=79;
     public static final int WHILE=31;
-    public static final int BackslashSequence=194;
+    public static final int BackslashSequence=195;
     public static final int LS=166;
     public static final int CASE=8;
     public static final int NEW=22;
     public static final int CHAR=42;
-    public static final int DecimalDigit=176;
+    public static final int DecimalDigit=177;
     public static final int BYFIELD=131;
     public static final int BREAK=7;
-    public static final int Identifier=179;
+    public static final int Identifier=180;
     public static final int WXML=37;
     public static final int POS=152;
     public static final int DOUBLE=46;
-    public static final int ExponentPart=183;
+    public static final int ExponentPart=184;
     public static final int VAR=29;
     public static final int VOID=30;
     public static final int SUPER=65;
@@ -139,14 +140,14 @@
     public static final int DELETE=12;
     public static final int XCOPEN=118;
     public static final int MUL=89;
-    public static final int IdentifierStartASCII=175;
+    public static final int IdentifierStartASCII=176;
     public static final int TRY=27;
     public static final int NAMESPACE=38;
     public static final int SHLASS=110;
     public static final int COLONCOLON=127;
     public static final int USP=162;
     public static final int ANDASS=113;
-    public static final int IdentifierNameASCIIStart=178;
+    public static final int IdentifierNameASCIIStart=179;
     public static final int QUE=103;
     public static final int OR=97;
     public static final int SETTER=142;
@@ -155,17 +156,17 @@
     public static final int PDEC=150;
     public static final int CATCH=9;
     public static final int FALSE=6;
-    public static final int EscapeSequence=193;
+    public static final int EscapeSequence=194;
     public static final int THROW=26;
     public static final int MULASS=108;
-    public static final int XmlAttribute=173;
+    public static final int XmlAttribute=174;
     public static final int DEC=92;
-    public static final int OctalIntegerLiteral=186;
+    public static final int OctalIntegerLiteral=187;
     public static final int CLASS=43;
-    public static final int HexEscapeSequence=191;
+    public static final int HexEscapeSequence=192;
     public static final int ORASS=114;
     public static final int NAMEDVALUE=146;
-    public static final int SingleLineComment=171;
+    public static final int SingleLineComment=172;
     public static final int GTE=82;
     public static final int FOR=16;
     public static final int DOTDOT=126;
@@ -185,7 +186,7 @@
     public static final int FORITER=138;
     public static final int MODASS=109;
     public static final int DOT=76;
-    public static final int IdentifierPart=177;
+    public static final int IdentifierPart=178;
     public static final int WITH=32;
     public static final int BYTE=41;
     public static final int XOR=98;
@@ -195,7 +196,7 @@
     public static final int DEFAULT=11;
     public static final int ALLCHILDREN=133;
     public static final int TAB=157;
-    public static final int DecimalLiteral=185;
+    public static final int DecimalLiteral=186;
     public static final int TRUE=5;
     public static final int NEQ=84;
     public static final int FINALLY=15;
@@ -205,9 +206,9 @@
     public static final int EXTENDS=49;
     public static final int BSLASH=154;
     public static final int LF=164;
-
+    
     private Token last;
-
+    
     final static boolean isIdentifierKeyword(int token)
     {
     	return token == WXML
@@ -216,7 +217,7 @@
       		|| token == EACH
       		|| token == NAMESPACE; 
     }
-
+    
     private final boolean areRegularExpressionsEnabled()
     {
     	if (last == null)
@@ -321,7 +322,7 @@
     {
     	return Character.isJavaIdentifierStart((char)ch);
     }
-
+    
     public Token nextToken()
     {
     	Token result = super.nextToken();
@@ -331,7 +332,7 @@
     	}
     	return result;		
     }
-
+    
     @Override
     public void emitErrorMessage(String msg) {
     // IGNORE
@@ -2948,8 +2949,8 @@
     }
     // $ANTLR end PS
 
-    // $ANTLR start LineTerminator
-    public final void mLineTerminator() throws RecognitionException {
+    // $ANTLR start LineTerminatorChar
+    public final void mLineTerminatorChar() throws RecognitionException {
         try {
             // JS.g:588:2: ( CR | LF | LS | PS )
             // JS.g:
@@ -2971,16 +2972,12 @@
         finally {
         }
     }
-    // $ANTLR end LineTerminator
+    // $ANTLR end LineTerminatorChar
 
-    // $ANTLR start EOL
-    public final void mEOL() throws RecognitionException {
+    // $ANTLR start LineTerminator
+    public final void mLineTerminator() throws RecognitionException {
         try {
-            int _type = EOL;
-            // JS.g:592:2: ( ( ( CR ( LF )? ) | LF | LS | PS ) )
-            // JS.g:592:4: ( ( CR ( LF )? ) | LF | LS | PS )
-            {
-            // JS.g:592:4: ( ( CR ( LF )? ) | LF | LS | PS )
+            // JS.g:592:2: ( ( CR ( LF )? ) | LF | LS | PS )
             int alt3=4;
             switch ( input.LA(1) ) {
             case '\r':
@@ -3005,20 +3002,20 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("592:4: ( ( CR ( LF )? ) | LF | LS | PS )", 3, 0, input);
+                    new NoViableAltException("591:10: fragment LineTerminator : ( ( CR ( LF )? ) | LF | LS | PS );", 3, 0, input);
 
                 throw nvae;
             }
 
             switch (alt3) {
                 case 1 :
-                    // JS.g:592:6: ( CR ( LF )? )
+                    // JS.g:592:4: ( CR ( LF )? )
                     {
-                    // JS.g:592:6: ( CR ( LF )? )
-                    // JS.g:592:8: CR ( LF )?
+                    // JS.g:592:4: ( CR ( LF )? )
+                    // JS.g:592:5: CR ( LF )?
                     {
                     mCR(); 
-                    // JS.g:592:11: ( LF )?
+                    // JS.g:592:8: ( LF )?
                     int alt2=2;
                     int LA2_0 = input.LA(1);
 
@@ -3027,7 +3024,7 @@
                     }
                     switch (alt2) {
                         case 1 :
-                            // JS.g:592:11: LF
+                            // JS.g:592:8: LF
                             {
                             mLF(); 
 
@@ -3043,21 +3040,119 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:592:19: LF
+                    // JS.g:592:15: LF
                     {
                     mLF(); 
 
                     }
                     break;
                 case 3 :
-                    // JS.g:592:24: LS
+                    // JS.g:592:20: LS
                     {
                     mLS(); 
 
                     }
                     break;
                 case 4 :
-                    // JS.g:592:29: PS
+                    // JS.g:592:25: PS
+                    {
+                    mPS(); 
+
+                    }
+                    break;
+
+            }
+        }
+        finally {
+        }
+    }
+    // $ANTLR end LineTerminator
+
+    // $ANTLR start EOL
+    public final void mEOL() throws RecognitionException {
+        try {
+            int _type = EOL;
+            // JS.g:596:2: ( ( ( CR ( LF )? ) | LF | LS | PS ) )
+            // JS.g:596:4: ( ( CR ( LF )? ) | LF | LS | PS )
+            {
+            // JS.g:596:4: ( ( CR ( LF )? ) | LF | LS | PS )
+            int alt5=4;
+            switch ( input.LA(1) ) {
+            case '\r':
+                {
+                alt5=1;
+                }
+                break;
+            case '\n':
+                {
+                alt5=2;
+                }
+                break;
+            case '\u2028':
+                {
+                alt5=3;
+                }
+                break;
+            case '\u2029':
+                {
+                alt5=4;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("596:4: ( ( CR ( LF )? ) | LF | LS | PS )", 5, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt5) {
+                case 1 :
+                    // JS.g:596:6: ( CR ( LF )? )
+                    {
+                    // JS.g:596:6: ( CR ( LF )? )
+                    // JS.g:596:8: CR ( LF )?
+                    {
+                    mCR(); 
+                    // JS.g:596:11: ( LF )?
+                    int alt4=2;
+                    int LA4_0 = input.LA(1);
+
+                    if ( (LA4_0=='\n') ) {
+                        alt4=1;
+                    }
+                    switch (alt4) {
+                        case 1 :
+                            // JS.g:596:11: LF
+                            {
+                            mLF(); 
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // JS.g:596:19: LF
+                    {
+                    mLF(); 
+
+                    }
+                    break;
+                case 3 :
+                    // JS.g:596:24: LS
+                    {
+                    mLS(); 
+
+                    }
+                    break;
+                case 4 :
+                    // JS.g:596:29: PS
                     {
                     mPS(); 
 
@@ -3081,37 +3176,37 @@
     public final void mMultiLineComment() throws RecognitionException {
         try {
             int _type = MultiLineComment;
-            // JS.g:599:2: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            // JS.g:599:4: '/*' ( options {greedy=false; } : . )* '*/'
+            // JS.g:603:2: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // JS.g:603:4: '/*' ( options {greedy=false; } : . )* '*/'
             {
             match("/*"); 
 
-            // JS.g:599:9: ( options {greedy=false; } : . )*
-            loop4:
+            // JS.g:603:9: ( options {greedy=false; } : . )*
+            loop6:
             do {
-                int alt4=2;
-                int LA4_0 = input.LA(1);
+                int alt6=2;
+                int LA6_0 = input.LA(1);
 
-                if ( (LA4_0=='*') ) {
-                    int LA4_1 = input.LA(2);
+                if ( (LA6_0=='*') ) {
+                    int LA6_1 = input.LA(2);
 
-                    if ( (LA4_1=='/') ) {
-                        alt4=2;
+                    if ( (LA6_1=='/') ) {
+                        alt6=2;
                     }
-                    else if ( ((LA4_1>='\u0000' && LA4_1<='.')||(LA4_1>='0' && LA4_1<='\uFFFE')) ) {
-                        alt4=1;
+                    else if ( ((LA6_1>='\u0000' && LA6_1<='.')||(LA6_1>='0' && LA6_1<='\uFFFE')) ) {
+                        alt6=1;
                     }
 
 
                 }
-                else if ( ((LA4_0>='\u0000' && LA4_0<=')')||(LA4_0>='+' && LA4_0<='\uFFFE')) ) {
-                    alt4=1;
+                else if ( ((LA6_0>='\u0000' && LA6_0<=')')||(LA6_0>='+' && LA6_0<='\uFFFE')) ) {
+                    alt6=1;
                 }
 
 
-                switch (alt4) {
+                switch (alt6) {
             	case 1 :
-            	    // JS.g:599:41: .
+            	    // JS.g:603:41: .
             	    {
             	    matchAny(); 
 
@@ -3119,7 +3214,7 @@
             	    break;
 
             	default :
-            	    break loop4;
+            	    break loop6;
                 }
             } while (true);
 
@@ -3140,25 +3235,25 @@
     public final void mSingleLineComment() throws RecognitionException {
         try {
             int _type = SingleLineComment;
-            // JS.g:603:2: ( '//' (~ ( LineTerminator ) )* )
-            // JS.g:603:4: '//' (~ ( LineTerminator ) )*
+            // JS.g:607:2: ( '//' (~ ( LineTerminatorChar ) )* )
+            // JS.g:607:4: '//' (~ ( LineTerminatorChar ) )*
             {
             match("//"); 
 
-            // JS.g:603:9: (~ ( LineTerminator ) )*
-            loop5:
+            // JS.g:607:9: (~ ( LineTerminatorChar ) )*
+            loop7:
             do {
-                int alt5=2;
-                int LA5_0 = input.LA(1);
+                int alt7=2;
+                int LA7_0 = input.LA(1);
 
-                if ( ((LA5_0>='\u0000' && LA5_0<='\t')||(LA5_0>='\u000B' && LA5_0<='\f')||(LA5_0>='\u000E' && LA5_0<='\u2027')||(LA5_0>='\u202A' && LA5_0<='\uFFFE')) ) {
-                    alt5=1;
+                if ( ((LA7_0>='\u0000' && LA7_0<='\t')||(LA7_0>='\u000B' && LA7_0<='\f')||(LA7_0>='\u000E' && LA7_0<='\u2027')||(LA7_0>='\u202A' && LA7_0<='\uFFFE')) ) {
+                    alt7=1;
                 }
 
 
-                switch (alt5) {
+                switch (alt7) {
             	case 1 :
-            	    // JS.g:603:11: ~ ( LineTerminator )
+            	    // JS.g:607:11: ~ ( LineTerminatorChar )
             	    {
             	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\u2027')||(input.LA(1)>='\u202A' && input.LA(1)<='\uFFFE') ) {
             	        input.consume();
@@ -3175,7 +3270,7 @@
             	    break;
 
             	default :
-            	    break loop5;
+            	    break loop7;
                 }
             } while (true);
 
@@ -3193,8 +3288,8 @@
     // $ANTLR start IdentifierStartASCII
     public final void mIdentifierStartASCII() throws RecognitionException {
         try {
-            // JS.g:712:2: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | BSLASH 'u' HexDigit HexDigit HexDigit HexDigit )
-            int alt6=5;
+            // JS.g:716:2: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | BSLASH 'u' HexDigit HexDigit HexDigit HexDigit )
+            int alt8=5;
             switch ( input.LA(1) ) {
             case 'a':
             case 'b':
@@ -3223,7 +3318,7 @@
             case 'y':
             case 'z':
                 {
-                alt6=1;
+                alt8=1;
                 }
                 break;
             case 'A':
@@ -3253,62 +3348,62 @@
             case 'Y':
             case 'Z':
                 {
-                alt6=2;
+                alt8=2;
                 }
                 break;
             case '$':
                 {
-                alt6=3;
+                alt8=3;
                 }
                 break;
             case '_':
                 {
-                alt6=4;
+                alt8=4;
                 }
                 break;
             case '\\':
                 {
-                alt6=5;
+                alt8=5;
                 }
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("711:10: fragment IdentifierStartASCII : ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | BSLASH 'u' HexDigit HexDigit HexDigit HexDigit );", 6, 0, input);
+                    new NoViableAltException("715:10: fragment IdentifierStartASCII : ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | BSLASH 'u' HexDigit HexDigit HexDigit HexDigit );", 8, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt6) {
+            switch (alt8) {
                 case 1 :
-                    // JS.g:712:4: 'a' .. 'z'
+                    // JS.g:716:4: 'a' .. 'z'
                     {
                     matchRange('a','z'); 
 
                     }
                     break;
                 case 2 :
-                    // JS.g:712:15: 'A' .. 'Z'
+                    // JS.g:716:15: 'A' .. 'Z'
                     {
                     matchRange('A','Z'); 
 
                     }
                     break;
                 case 3 :
-                    // JS.g:713:4: '$'
+                    // JS.g:717:4: '$'
                     {
                     match('$'); 
 
                     }
                     break;
                 case 4 :
-                    // JS.g:714:4: '_'
+                    // JS.g:718:4: '_'
                     {
                     match('_'); 
 
                     }
                     break;
                 case 5 :
-                    // JS.g:715:4: BSLASH 'u' HexDigit HexDigit HexDigit HexDigit
+                    // JS.g:719:4: BSLASH 'u' HexDigit HexDigit HexDigit HexDigit
                     {
                     mBSLASH(); 
                     match('u'); 
@@ -3330,8 +3425,8 @@
     // $ANTLR start IdentifierPart
     public final void mIdentifierPart() throws RecognitionException {
         try {
-            // JS.g:723:2: ( DecimalDigit | IdentifierStartASCII | {...}?)
-            int alt7=3;
+            // JS.g:727:2: ( DecimalDigit | IdentifierStartASCII | {...}?)
+            int alt9=3;
             switch ( input.LA(1) ) {
             case '0':
             case '1':
@@ -3344,7 +3439,7 @@
             case '8':
             case '9':
                 {
-                alt7=1;
+                alt9=1;
                 }
                 break;
             case '$':
@@ -3403,29 +3498,29 @@
             case 'y':
             case 'z':
                 {
-                alt7=2;
+                alt9=2;
                 }
                 break;
             default:
-                alt7=3;}
+                alt9=3;}
 
-            switch (alt7) {
+            switch (alt9) {
                 case 1 :
-                    // JS.g:723:4: DecimalDigit
+                    // JS.g:727:4: DecimalDigit
                     {
                     mDecimalDigit(); 
 
                     }
                     break;
                 case 2 :
-                    // JS.g:724:4: IdentifierStartASCII
+                    // JS.g:728:4: IdentifierStartASCII
                     {
                     mIdentifierStartASCII(); 
 
                     }
                     break;
                 case 3 :
-                    // JS.g:725:4: {...}?
+                    // JS.g:729:4: {...}?
                     {
                     if ( !( isIdentifierPartUnicode(input.LA(1)) ) ) {
                         throw new FailedPredicateException(input, "IdentifierPart", " isIdentifierPartUnicode(input.LA(1)) ");
@@ -3445,27 +3540,27 @@
     // $ANTLR start IdentifierNameASCIIStart
     public final void mIdentifierNameASCIIStart() throws RecognitionException {
         try {
-            // JS.g:729:2: ( IdentifierStartASCII ( IdentifierPart )* )
-            // JS.g:729:4: IdentifierStartASCII ( IdentifierPart )*
+            // JS.g:733:2: ( IdentifierStartASCII ( IdentifierPart )* )
+            // JS.g:733:4: IdentifierStartASCII ( IdentifierPart )*
             {
             mIdentifierStartASCII(); 
-            // JS.g:729:25: ( IdentifierPart )*
-            loop8:
+            // JS.g:733:25: ( IdentifierPart )*
+            loop10:
             do {
-                int alt8=2;
-                int LA8_0 = input.LA(1);
+                int alt10=2;
+                int LA10_0 = input.LA(1);
 
-                if ( (LA8_0=='$'||(LA8_0>='0' && LA8_0<='9')||(LA8_0>='A' && LA8_0<='Z')||LA8_0=='\\'||LA8_0=='_'||(LA8_0>='a' && LA8_0<='z')) ) {
-                    alt8=1;
+                if ( (LA10_0=='$'||(LA10_0>='0' && LA10_0<='9')||(LA10_0>='A' && LA10_0<='Z')||LA10_0=='\\'||LA10_0=='_'||(LA10_0>='a' && LA10_0<='z')) ) {
+                    alt10=1;
                 }
                 else if ( ( isIdentifierPartUnicode(input.LA(1)) ) ) {
-                    alt8=1;
+                    alt10=1;
                 }
 
 
-                switch (alt8) {
+                switch (alt10) {
             	case 1 :
-            	    // JS.g:729:25: IdentifierPart
+            	    // JS.g:733:25: IdentifierPart
             	    {
             	    mIdentifierPart(); 
 
@@ -3473,7 +3568,7 @@
             	    break;
 
             	default :
-            	    break loop8;
+            	    break loop10;
                 }
             } while (true);
 
@@ -3490,25 +3585,25 @@
     public final void mIdentifier() throws RecognitionException {
         try {
             int _type = Identifier;
-            // JS.g:742:3: ( IdentifierNameASCIIStart | )
-            int alt9=2;
-            int LA9_0 = input.LA(1);
+            // JS.g:746:3: ( IdentifierNameASCIIStart | )
+            int alt11=2;
+            int LA11_0 = input.LA(1);
 
-            if ( (LA9_0=='$'||(LA9_0>='A' && LA9_0<='Z')||LA9_0=='\\'||LA9_0=='_'||(LA9_0>='a' && LA9_0<='z')) ) {
-                alt9=1;
+            if ( (LA11_0=='$'||(LA11_0>='A' && LA11_0<='Z')||LA11_0=='\\'||LA11_0=='_'||(LA11_0>='a' && LA11_0<='z')) ) {
+                alt11=1;
             }
             else {
-                alt9=2;}
-            switch (alt9) {
+                alt11=2;}
+            switch (alt11) {
                 case 1 :
-                    // JS.g:742:5: IdentifierNameASCIIStart
+                    // JS.g:746:5: IdentifierNameASCIIStart
                     {
                     mIdentifierNameASCIIStart(); 
 
                     }
                     break;
                 case 2 :
-                    // JS.g:743:5: 
+                    // JS.g:747:5: 
                     {
                      consumeIdentifierUnicodeStart(); 
 
@@ -3526,8 +3621,8 @@
     // $ANTLR start PropertyIdentifierSymbols
     public final void mPropertyIdentifierSymbols() throws RecognitionException {
         try {
-            // JS.g:755:3: ( AT Identifier )
-            // JS.g:755:5: AT Identifier
+            // JS.g:759:3: ( AT Identifier )
+            // JS.g:759:5: AT Identifier
             {
             mAT(); 
             mIdentifier(); 
@@ -3544,8 +3639,8 @@
     public final void mXmlAttribute() throws RecognitionException {
         try {
             int _type = XmlAttribute;
-            // JS.g:759:3: ( PropertyIdentifierSymbols )
-            // JS.g:759:5: PropertyIdentifierSymbols
+            // JS.g:763:3: ( PropertyIdentifierSymbols )
+            // JS.g:763:5: PropertyIdentifierSymbols
             {
             mPropertyIdentifierSymbols(); 
 
@@ -3561,8 +3656,8 @@
     // $ANTLR start DecimalDigit
     public final void mDecimalDigit() throws RecognitionException {
         try {
-            // JS.g:845:2: ( '0' .. '9' )
-            // JS.g:845:4: '0' .. '9'
+            // JS.g:849:2: ( '0' .. '9' )
+            // JS.g:849:4: '0' .. '9'
             {
             matchRange('0','9'); 
 
@@ -3577,7 +3672,7 @@
     // $ANTLR start HexDigit
     public final void mHexDigit() throws RecognitionException {
         try {
-            // JS.g:849:2: ( DecimalDigit | 'a' .. 'f' | 'A' .. 'F' )
+            // JS.g:853:2: ( DecimalDigit | 'a' .. 'f' | 'A' .. 'F' )
             // JS.g:
             {
             if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='F')||(input.LA(1)>='a' && input.LA(1)<='f') ) {
@@ -3602,8 +3697,8 @@
     // $ANTLR start OctalDigit
     public final void mOctalDigit() throws RecognitionException {
         try {
-            // JS.g:853:2: ( '0' .. '7' )
-            // JS.g:853:4: '0' .. '7'
+            // JS.g:857:2: ( '0' .. '7' )
+            // JS.g:857:4: '0' .. '7'
             {
             matchRange('0','7'); 
 
@@ -3618,8 +3713,8 @@
     // $ANTLR start ExponentPart
     public final void mExponentPart() throws RecognitionException {
         try {
-            // JS.g:857:2: ( ( 'e' | 'E' ) ( '+' | '-' )? ( DecimalDigit )+ )
-            // JS.g:857:4: ( 'e' | 'E' ) ( '+' | '-' )? ( DecimalDigit )+
+            // JS.g:861:2: ( ( 'e' | 'E' ) ( '+' | '-' )? ( DecimalDigit )+ )
+            // JS.g:861:4: ( 'e' | 'E' ) ( '+' | '-' )? ( DecimalDigit )+
             {
             if ( input.LA(1)=='E'||input.LA(1)=='e' ) {
                 input.consume();
@@ -3631,14 +3726,14 @@
                 recover(mse);    throw mse;
             }
 
-            // JS.g:857:18: ( '+' | '-' )?
-            int alt10=2;
-            int LA10_0 = input.LA(1);
+            // JS.g:861:18: ( '+' | '-' )?
+            int alt12=2;
+            int LA12_0 = input.LA(1);
 
-            if ( (LA10_0=='+'||LA10_0=='-') ) {
-                alt10=1;
+            if ( (LA12_0=='+'||LA12_0=='-') ) {
+                alt12=1;
             }
-            switch (alt10) {
+            switch (alt12) {
                 case 1 :
                     // JS.g:
                     {
@@ -3658,21 +3753,21 @@
 
             }
 
-            // JS.g:857:33: ( DecimalDigit )+
-            int cnt11=0;
-            loop11:
+            // JS.g:861:33: ( DecimalDigit )+
+            int cnt13=0;
+            loop13:
             do {
-                int alt11=2;
-                int LA11_0 = input.LA(1);
+                int alt13=2;
+                int LA13_0 = input.LA(1);
 
-                if ( ((LA11_0>='0' && LA11_0<='9')) ) {
-                    alt11=1;
+                if ( ((LA13_0>='0' && LA13_0<='9')) ) {
+                    alt13=1;
                 }
 
 
-                switch (alt11) {
+                switch (alt13) {
             	case 1 :
-            	    // JS.g:857:33: DecimalDigit
+            	    // JS.g:861:33: DecimalDigit
             	    {
             	    mDecimalDigit(); 
 
@@ -3680,12 +3775,12 @@
             	    break;
 
             	default :
-            	    if ( cnt11 >= 1 ) break loop11;
+            	    if ( cnt13 >= 1 ) break loop13;
                         EarlyExitException eee =
-                            new EarlyExitException(11, input);
+                            new EarlyExitException(13, input);
                         throw eee;
                 }
-                cnt11++;
+                cnt13++;
             } while (true);
 
 
@@ -3700,48 +3795,48 @@
     // $ANTLR start DecimalIntegerLiteral
     public final void mDecimalIntegerLiteral() throws RecognitionException {
         try {
-            // JS.g:861:2: ( '0' | '1' .. '9' ( DecimalDigit )* )
-            int alt13=2;
-            int LA13_0 = input.LA(1);
+            // JS.g:865:2: ( '0' | '1' .. '9' ( DecimalDigit )* )
+            int alt15=2;
+            int LA15_0 = input.LA(1);
 
-            if ( (LA13_0=='0') ) {
-                alt13=1;
+            if ( (LA15_0=='0') ) {
+                alt15=1;
             }
-            else if ( ((LA13_0>='1' && LA13_0<='9')) ) {
-                alt13=2;
+            else if ( ((LA15_0>='1' && LA15_0<='9')) ) {
+                alt15=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("860:10: fragment DecimalIntegerLiteral : ( '0' | '1' .. '9' ( DecimalDigit )* );", 13, 0, input);
+                    new NoViableAltException("864:10: fragment DecimalIntegerLiteral : ( '0' | '1' .. '9' ( DecimalDigit )* );", 15, 0, input);
 
                 throw nvae;
             }
-            switch (alt13) {
+            switch (alt15) {
                 case 1 :
-                    // JS.g:861:4: '0'
+                    // JS.g:865:4: '0'
                     {
                     match('0'); 
 
                     }
                     break;
                 case 2 :
-                    // JS.g:862:4: '1' .. '9' ( DecimalDigit )*
+                    // JS.g:866:4: '1' .. '9' ( DecimalDigit )*
                     {
                     matchRange('1','9'); 
-                    // JS.g:862:13: ( DecimalDigit )*
-                    loop12:
+                    // JS.g:866:13: ( DecimalDigit )*
+                    loop14:
                     do {
-                        int alt12=2;
-                        int LA12_0 = input.LA(1);
+                        int alt14=2;
+                        int LA14_0 = input.LA(1);
 
-                        if ( ((LA12_0>='0' && LA12_0<='9')) ) {
-                            alt12=1;
+                        if ( ((LA14_0>='0' && LA14_0<='9')) ) {
+                            alt14=1;
                         }
 
 
-                        switch (alt12) {
+                        switch (alt14) {
                     	case 1 :
-                    	    // JS.g:862:13: DecimalDigit
+                    	    // JS.g:866:13: DecimalDigit
                     	    {
                     	    mDecimalDigit(); 
 
@@ -3749,7 +3844,7 @@
                     	    break;
 
                     	default :
-                    	    break loop12;
+                    	    break loop14;
                         }
                     } while (true);
 
@@ -3768,67 +3863,16 @@
     public final void mDecimalLiteral() throws RecognitionException {
         try {
             int _type = DecimalLiteral;
-            // JS.g:866:2: ( DecimalIntegerLiteral '.' ( DecimalDigit )* ( ExponentPart )? | '.' ( DecimalDigit )+ ( ExponentPart )? | DecimalIntegerLiteral ( ExponentPart )? )
-            int alt19=3;
-            alt19 = dfa19.predict(input);
-            switch (alt19) {
+            // JS.g:870:2: ( DecimalIntegerLiteral '.' ( DecimalDigit )* ( ExponentPart )? | '.' ( DecimalDigit )+ ( ExponentPart )? | DecimalIntegerLiteral ( ExponentPart )? )
+            int alt21=3;
+            alt21 = dfa21.predict(input);
+            switch (alt21) {
                 case 1 :
-                    // JS.g:866:4: DecimalIntegerLiteral '.' ( DecimalDigit )* ( ExponentPart )?
+                    // JS.g:870:4: DecimalIntegerLiteral '.' ( DecimalDigit )* ( ExponentPart )?
                     {
                     mDecimalIntegerLiteral(); 
                     match('.'); 
-                    // JS.g:866:30: ( DecimalDigit )*
-                    loop14:
-                    do {
-                        int alt14=2;
-                        int LA14_0 = input.LA(1);
-
-                        if ( ((LA14_0>='0' && LA14_0<='9')) ) {
-                            alt14=1;
-                        }
-
-
-                        switch (alt14) {
-                    	case 1 :
-                    	    // JS.g:866:30: DecimalDigit
-                    	    {
-                    	    mDecimalDigit(); 
-
-                    	    }
-                    	    break;
-
-                    	default :
-                    	    break loop14;
-                        }
-                    } while (true);
-
-                    // JS.g:866:44: ( ExponentPart )?
-                    int alt15=2;
-                    int LA15_0 = input.LA(1);
-
-                    if ( (LA15_0=='E'||LA15_0=='e') ) {
-                        alt15=1;
-                    }
-                    switch (alt15) {
-                        case 1 :
-                            // JS.g:866:44: ExponentPart
-                            {
-                            mExponentPart(); 
-
-                            }
-                            break;
-
-                    }
-
-
-                    }
-                    break;
-                case 2 :
-                    // JS.g:867:4: '.' ( DecimalDigit )+ ( ExponentPart )?
-                    {
-                    match('.'); 
-                    // JS.g:867:8: ( DecimalDigit )+
-                    int cnt16=0;
+                    // JS.g:870:30: ( DecimalDigit )*
                     loop16:
                     do {
                         int alt16=2;
@@ -3841,7 +3885,7 @@
 
                         switch (alt16) {
                     	case 1 :
-                    	    // JS.g:867:8: DecimalDigit
+                    	    // JS.g:870:30: DecimalDigit
                     	    {
                     	    mDecimalDigit(); 
 
@@ -3849,15 +3893,11 @@
                     	    break;
 
                     	default :
-                    	    if ( cnt16 >= 1 ) break loop16;
-                                EarlyExitException eee =
-                                    new EarlyExitException(16, input);
-                                throw eee;
+                    	    break loop16;
                         }
-                        cnt16++;
                     } while (true);
 
-                    // JS.g:867:22: ( ExponentPart )?
+                    // JS.g:870:44: ( ExponentPart )?
                     int alt17=2;
                     int LA17_0 = input.LA(1);
 
@@ -3866,7 +3906,62 @@
                     }
                     switch (alt17) {
                         case 1 :
-                            // JS.g:867:22: ExponentPart
+                            // JS.g:870:44: ExponentPart
+                            {
+                            mExponentPart(); 
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // JS.g:871:4: '.' ( DecimalDigit )+ ( ExponentPart )?
+                    {
+                    match('.'); 
+                    // JS.g:871:8: ( DecimalDigit )+
+                    int cnt18=0;
+                    loop18:
+                    do {
+                        int alt18=2;
+                        int LA18_0 = input.LA(1);
+
+                        if ( ((LA18_0>='0' && LA18_0<='9')) ) {
+                            alt18=1;
+                        }
+
+
+                        switch (alt18) {
+                    	case 1 :
+                    	    // JS.g:871:8: DecimalDigit
+                    	    {
+                    	    mDecimalDigit(); 
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt18 >= 1 ) break loop18;
+                                EarlyExitException eee =
+                                    new EarlyExitException(18, input);
+                                throw eee;
+                        }
+                        cnt18++;
+                    } while (true);
+
+                    // JS.g:871:22: ( ExponentPart )?
+                    int alt19=2;
+                    int LA19_0 = input.LA(1);
+
+                    if ( (LA19_0=='E'||LA19_0=='e') ) {
+                        alt19=1;
+                    }
+                    switch (alt19) {
+                        case 1 :
+                            // JS.g:871:22: ExponentPart
                             {
                             mExponentPart(); 
 
@@ -3879,19 +3974,19 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:868:4: DecimalIntegerLiteral ( ExponentPart )?
+                    // JS.g:872:4: DecimalIntegerLiteral ( ExponentPart )?
                     {
                     mDecimalIntegerLiteral(); 
-                    // JS.g:868:26: ( ExponentPart )?
-                    int alt18=2;
-                    int LA18_0 = input.LA(1);
+                    // JS.g:872:26: ( ExponentPart )?
+                    int alt20=2;
+                    int LA20_0 = input.LA(1);
 
-                    if ( (LA18_0=='E'||LA18_0=='e') ) {
-                        alt18=1;
+                    if ( (LA20_0=='E'||LA20_0=='e') ) {
+                        alt20=1;
                     }
-                    switch (alt18) {
+                    switch (alt20) {
                         case 1 :
-                            // JS.g:868:26: ExponentPart
+                            // JS.g:872:26: ExponentPart
                             {
                             mExponentPart(); 
 
@@ -3916,120 +4011,27 @@
     public final void mOctalIntegerLiteral() throws RecognitionException {
         try {
             int _type = OctalIntegerLiteral;
-            // JS.g:872:2: ( '0' ( OctalDigit )+ )
-            // JS.g:872:4: '0' ( OctalDigit )+
+            // JS.g:876:2: ( '0' ( OctalDigit )+ )
+            // JS.g:876:4: '0' ( OctalDigit )+
             {
             match('0'); 
-            // JS.g:872:8: ( OctalDigit )+
-            int cnt20=0;
-            loop20:
-            do {
-                int alt20=2;
-                int LA20_0 = input.LA(1);
-
-                if ( ((LA20_0>='0' && LA20_0<='7')) ) {
-                    alt20=1;
-                }
-
-
-                switch (alt20) {
-            	case 1 :
-            	    // JS.g:872:8: OctalDigit
-            	    {
-            	    mOctalDigit(); 
-
-            	    }
-            	    break;
-
-            	default :
-            	    if ( cnt20 >= 1 ) break loop20;
-                        EarlyExitException eee =
-                            new EarlyExitException(20, input);
-                        throw eee;
-                }
-                cnt20++;
-            } while (true);
-
-
-            }
-
-            this.type = _type;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end OctalIntegerLiteral
-
-    // $ANTLR start HexIntegerLiteral
-    public final void mHexIntegerLiteral() throws RecognitionException {
-        try {
-            int _type = HexIntegerLiteral;
-            // JS.g:876:2: ( ( '0x' | '0X' ) ( HexDigit )+ )
-            // JS.g:876:4: ( '0x' | '0X' ) ( HexDigit )+
-            {
-            // JS.g:876:4: ( '0x' | '0X' )
-            int alt21=2;
-            int LA21_0 = input.LA(1);
-
-            if ( (LA21_0=='0') ) {
-                int LA21_1 = input.LA(2);
-
-                if ( (LA21_1=='X') ) {
-                    alt21=2;
-                }
-                else if ( (LA21_1=='x') ) {
-                    alt21=1;
-                }
-                else {
-                    NoViableAltException nvae =
-                        new NoViableAltException("876:4: ( '0x' | '0X' )", 21, 1, input);
-
-                    throw nvae;
-                }
-            }
-            else {
-                NoViableAltException nvae =
-                    new NoViableAltException("876:4: ( '0x' | '0X' )", 21, 0, input);
-
-                throw nvae;
-            }
-            switch (alt21) {
-                case 1 :
-                    // JS.g:876:6: '0x'
-                    {
-                    match("0x"); 
-
-
-                    }
-                    break;
-                case 2 :
-                    // JS.g:876:13: '0X'
-                    {
-                    match("0X"); 
-
-
-                    }
-                    break;
-
-            }
-
-            // JS.g:876:20: ( HexDigit )+
+            // JS.g:876:8: ( OctalDigit )+
             int cnt22=0;
             loop22:
             do {
                 int alt22=2;
                 int LA22_0 = input.LA(1);
 
-                if ( ((LA22_0>='0' && LA22_0<='9')||(LA22_0>='A' && LA22_0<='F')||(LA22_0>='a' && LA22_0<='f')) ) {
+                if ( ((LA22_0>='0' && LA22_0<='7')) ) {
                     alt22=1;
                 }
 
 
                 switch (alt22) {
             	case 1 :
-            	    // JS.g:876:20: HexDigit
+            	    // JS.g:876:8: OctalDigit
             	    {
-            	    mHexDigit(); 
+            	    mOctalDigit(); 
 
             	    }
             	    break;
@@ -4051,13 +4053,106 @@
         finally {
         }
     }
+    // $ANTLR end OctalIntegerLiteral
+
+    // $ANTLR start HexIntegerLiteral
+    public final void mHexIntegerLiteral() throws RecognitionException {
+        try {
+            int _type = HexIntegerLiteral;
+            // JS.g:880:2: ( ( '0x' | '0X' ) ( HexDigit )+ )
+            // JS.g:880:4: ( '0x' | '0X' ) ( HexDigit )+
+            {
+            // JS.g:880:4: ( '0x' | '0X' )
+            int alt23=2;
+            int LA23_0 = input.LA(1);
+
+            if ( (LA23_0=='0') ) {
+                int LA23_1 = input.LA(2);
+
+                if ( (LA23_1=='x') ) {
+                    alt23=1;
+                }
+                else if ( (LA23_1=='X') ) {
+                    alt23=2;
+                }
+                else {
+                    NoViableAltException nvae =
+                        new NoViableAltException("880:4: ( '0x' | '0X' )", 23, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("880:4: ( '0x' | '0X' )", 23, 0, input);
+
+                throw nvae;
+            }
+            switch (alt23) {
+                case 1 :
+                    // JS.g:880:6: '0x'
+                    {
+                    match("0x"); 
+
+
+                    }
+                    break;
+                case 2 :
+                    // JS.g:880:13: '0X'
+                    {
+                    match("0X"); 
+
+
+                    }
+                    break;
+
+            }
+
+            // JS.g:880:20: ( HexDigit )+
+            int cnt24=0;
+            loop24:
+            do {
+                int alt24=2;
+                int LA24_0 = input.LA(1);
+
+                if ( ((LA24_0>='0' && LA24_0<='9')||(LA24_0>='A' && LA24_0<='F')||(LA24_0>='a' && LA24_0<='f')) ) {
+                    alt24=1;
+                }
+
+
+                switch (alt24) {
+            	case 1 :
+            	    // JS.g:880:20: HexDigit
+            	    {
+            	    mHexDigit(); 
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt24 >= 1 ) break loop24;
+                        EarlyExitException eee =
+                            new EarlyExitException(24, input);
+                        throw eee;
+                }
+                cnt24++;
+            } while (true);
+
+
+            }
+
+            this.type = _type;
+        }
+        finally {
+        }
+    }
     // $ANTLR end HexIntegerLiteral
 
     // $ANTLR start CharacterEscapeSequence
     public final void mCharacterEscapeSequence() throws RecognitionException {
         try {
-            // JS.g:895:2: (~ ( DecimalDigit | 'x' | 'u' | LineTerminator ) )
-            // JS.g:895:4: ~ ( DecimalDigit | 'x' | 'u' | LineTerminator )
+            // JS.g:899:2: (~ ( DecimalDigit | 'x' | 'u' | LineTerminatorChar ) )
+            // JS.g:899:4: ~ ( DecimalDigit | 'x' | 'u' | LineTerminatorChar )
             {
             if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='/')||(input.LA(1)>=':' && input.LA(1)<='t')||(input.LA(1)>='v' && input.LA(1)<='w')||(input.LA(1)>='y' && input.LA(1)<='\u2027')||(input.LA(1)>='\u202A' && input.LA(1)<='\uFFFE') ) {
                 input.consume();
@@ -4081,8 +4176,8 @@
     // $ANTLR start ZeroToThree
     public final void mZeroToThree() throws RecognitionException {
         try {
-            // JS.g:899:2: ( '0' .. '3' )
-            // JS.g:899:4: '0' .. '3'
+            // JS.g:903:2: ( '0' .. '3' )
+            // JS.g:903:4: '0' .. '3'
             {
             matchRange('0','3'); 
 
@@ -4097,50 +4192,50 @@
     // $ANTLR start OctalEscapeSequence
     public final void mOctalEscapeSequence() throws RecognitionException {
         try {
-            // JS.g:903:2: ( OctalDigit | ZeroToThree OctalDigit | '4' .. '7' OctalDigit | ZeroToThree OctalDigit OctalDigit )
-            int alt23=4;
-            int LA23_0 = input.LA(1);
+            // JS.g:907:2: ( OctalDigit | ZeroToThree OctalDigit | '4' .. '7' OctalDigit | ZeroToThree OctalDigit OctalDigit )
+            int alt25=4;
+            int LA25_0 = input.LA(1);
 
-            if ( ((LA23_0>='0' && LA23_0<='3')) ) {
-                int LA23_1 = input.LA(2);
+            if ( ((LA25_0>='0' && LA25_0<='3')) ) {
+                int LA25_1 = input.LA(2);
 
-                if ( ((LA23_1>='0' && LA23_1<='7')) ) {
-                    int LA23_4 = input.LA(3);
+                if ( ((LA25_1>='0' && LA25_1<='7')) ) {
+                    int LA25_4 = input.LA(3);
 
-                    if ( ((LA23_4>='0' && LA23_4<='7')) ) {
-                        alt23=4;
+                    if ( ((LA25_4>='0' && LA25_4<='7')) ) {
+                        alt25=4;
                     }
                     else {
-                        alt23=2;}
+                        alt25=2;}
                 }
                 else {
-                    alt23=1;}
+                    alt25=1;}
             }
-            else if ( ((LA23_0>='4' && LA23_0<='7')) ) {
-                int LA23_2 = input.LA(2);
+            else if ( ((LA25_0>='4' && LA25_0<='7')) ) {
+                int LA25_2 = input.LA(2);
 
-                if ( ((LA23_2>='0' && LA23_2<='7')) ) {
-                    alt23=3;
+                if ( ((LA25_2>='0' && LA25_2<='7')) ) {
+                    alt25=3;
                 }
                 else {
-                    alt23=1;}
+                    alt25=1;}
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("902:10: fragment OctalEscapeSequence : ( OctalDigit | ZeroToThree OctalDigit | '4' .. '7' OctalDigit | ZeroToThree OctalDigit OctalDigit );", 23, 0, input);
+                    new NoViableAltException("906:10: fragment OctalEscapeSequence : ( OctalDigit | ZeroToThree OctalDigit | '4' .. '7' OctalDigit | ZeroToThree OctalDigit OctalDigit );", 25, 0, input);
 
                 throw nvae;
             }
-            switch (alt23) {
+            switch (alt25) {
                 case 1 :
-                    // JS.g:903:4: OctalDigit
+                    // JS.g:907:4: OctalDigit
                     {
                     mOctalDigit(); 
 
                     }
                     break;
                 case 2 :
-                    // JS.g:904:4: ZeroToThree OctalDigit
+                    // JS.g:908:4: ZeroToThree OctalDigit
                     {
                     mZeroToThree(); 
                     mOctalDigit(); 
@@ -4148,7 +4243,7 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:905:4: '4' .. '7' OctalDigit
+                    // JS.g:909:4: '4' .. '7' OctalDigit
                     {
                     matchRange('4','7'); 
                     mOctalDigit(); 
@@ -4156,7 +4251,7 @@
                     }
                     break;
                 case 4 :
-                    // JS.g:906:4: ZeroToThree OctalDigit OctalDigit
+                    // JS.g:910:4: ZeroToThree OctalDigit OctalDigit
                     {
                     mZeroToThree(); 
                     mOctalDigit(); 
@@ -4175,8 +4270,8 @@
     // $ANTLR start HexEscapeSequence
     public final void mHexEscapeSequence() throws RecognitionException {
         try {
-            // JS.g:910:2: ( 'x' HexDigit HexDigit )
-            // JS.g:910:4: 'x' HexDigit HexDigit
+            // JS.g:914:2: ( 'x' HexDigit HexDigit )
+            // JS.g:914:4: 'x' HexDigit HexDigit
             {
             match('x'); 
             mHexDigit(); 
@@ -4193,8 +4288,8 @@
     // $ANTLR start UnicodeEscapeSequence
     public final void mUnicodeEscapeSequence() throws RecognitionException {
         try {
-            // JS.g:914:2: ( 'u' HexDigit HexDigit HexDigit HexDigit )
-            // JS.g:914:4: 'u' HexDigit HexDigit HexDigit HexDigit
+            // JS.g:918:2: ( 'u' HexDigit HexDigit HexDigit HexDigit )
+            // JS.g:918:4: 'u' HexDigit HexDigit HexDigit HexDigit
             {
             match('u'); 
             mHexDigit(); 
@@ -4213,66 +4308,66 @@
     // $ANTLR start EscapeSequence
     public final void mEscapeSequence() throws RecognitionException {
         try {
-            // JS.g:918:2: ( BSLASH ( CharacterEscapeSequence | OctalEscapeSequence | HexEscapeSequence | UnicodeEscapeSequence | LineTerminator ) )
-            // JS.g:919:2: BSLASH ( CharacterEscapeSequence | OctalEscapeSequence | HexEscapeSequence | UnicodeEscapeSequence | LineTerminator )
+            // JS.g:922:2: ( BSLASH ( CharacterEscapeSequence | OctalEscapeSequence | HexEscapeSequence | UnicodeEscapeSequence | LineTerminator ) )
+            // JS.g:923:2: BSLASH ( CharacterEscapeSequence | OctalEscapeSequence | HexEscapeSequence | UnicodeEscapeSequence | LineTerminator )
             {
             mBSLASH(); 
-            // JS.g:920:2: ( CharacterEscapeSequence | OctalEscapeSequence | HexEscapeSequence | UnicodeEscapeSequence | LineTerminator )
-            int alt24=5;
-            int LA24_0 = input.LA(1);
+            // JS.g:924:2: ( CharacterEscapeSequence | OctalEscapeSequence | HexEscapeSequence | UnicodeEscapeSequence | LineTerminator )
+            int alt26=5;
+            int LA26_0 = input.LA(1);
 
-            if ( ((LA24_0>='\u0000' && LA24_0<='\t')||(LA24_0>='\u000B' && LA24_0<='\f')||(LA24_0>='\u000E' && LA24_0<='/')||(LA24_0>=':' && LA24_0<='t')||(LA24_0>='v' && LA24_0<='w')||(LA24_0>='y' && LA24_0<='\u2027')||(LA24_0>='\u202A' && LA24_0<='\uFFFE')) ) {
-                alt24=1;
+            if ( ((LA26_0>='\u0000' && LA26_0<='\t')||(LA26_0>='\u000B' && LA26_0<='\f')||(LA26_0>='\u000E' && LA26_0<='/')||(LA26_0>=':' && LA26_0<='t')||(LA26_0>='v' && LA26_0<='w')||(LA26_0>='y' && LA26_0<='\u2027')||(LA26_0>='\u202A' && LA26_0<='\uFFFE')) ) {
+                alt26=1;
             }
-            else if ( ((LA24_0>='0' && LA24_0<='7')) ) {
-                alt24=2;
+            else if ( ((LA26_0>='0' && LA26_0<='7')) ) {
+                alt26=2;
             }
-            else if ( (LA24_0=='x') ) {
-                alt24=3;
+            else if ( (LA26_0=='x') ) {
+                alt26=3;
             }
-            else if ( (LA24_0=='u') ) {
-                alt24=4;
+            else if ( (LA26_0=='u') ) {
+                alt26=4;
             }
-            else if ( (LA24_0=='\n'||LA24_0=='\r'||(LA24_0>='\u2028' && LA24_0<='\u2029')) ) {
-                alt24=5;
+            else if ( (LA26_0=='\n'||LA26_0=='\r'||(LA26_0>='\u2028' && LA26_0<='\u2029')) ) {
+                alt26=5;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("920:2: ( CharacterEscapeSequence | OctalEscapeSequence | HexEscapeSequence | UnicodeEscapeSequence | LineTerminator )", 24, 0, input);
+                    new NoViableAltException("924:2: ( CharacterEscapeSequence | OctalEscapeSequence | HexEscapeSequence | UnicodeEscapeSequence | LineTerminator )", 26, 0, input);
 
                 throw nvae;
             }
-            switch (alt24) {
+            switch (alt26) {
                 case 1 :
-                    // JS.g:921:3: CharacterEscapeSequence
+                    // JS.g:925:3: CharacterEscapeSequence
                     {
                     mCharacterEscapeSequence(); 
 
                     }
                     break;
                 case 2 :
-                    // JS.g:922:5: OctalEscapeSequence
+                    // JS.g:926:5: OctalEscapeSequence
                     {
                     mOctalEscapeSequence(); 
 
                     }
                     break;
                 case 3 :
-                    // JS.g:923:5: HexEscapeSequence
+                    // JS.g:927:5: HexEscapeSequence
                     {
                     mHexEscapeSequence(); 
 
                     }
                     break;
                 case 4 :
-                    // JS.g:924:5: UnicodeEscapeSequence
+                    // JS.g:928:5: UnicodeEscapeSequence
                     {
                     mUnicodeEscapeSequence(); 
 
                     }
                     break;
                 case 5 :
-                    // JS.g:925:5: LineTerminator
+                    // JS.g:929:5: LineTerminator
                     {
                     mLineTerminator(); 
 
@@ -4294,44 +4389,44 @@
     public final void mStringLiteral() throws RecognitionException {
         try {
             int _type = StringLiteral;
-            // JS.g:930:2: ( SQUOTE (~ ( SQUOTE | BSLASH | LineTerminator ) | EscapeSequence )* SQUOTE | DQUOTE (~ ( DQUOTE | BSLASH | LineTerminator ) | EscapeSequence )* DQUOTE )
-            int alt27=2;
-            int LA27_0 = input.LA(1);
+            // JS.g:934:2: ( SQUOTE (~ ( SQUOTE | BSLASH | LineTerminatorChar ) | EscapeSequence )* SQUOTE | DQUOTE (~ ( DQUOTE | BSLASH | LineTerminatorChar ) | EscapeSequence )* DQUOTE )
+            int alt29=2;
+            int LA29_0 = input.LA(1);
 
-            if ( (LA27_0=='\'') ) {
-                alt27=1;
+            if ( (LA29_0=='\'') ) {
+                alt29=1;
             }
-            else if ( (LA27_0=='\"') ) {
-                alt27=2;
+            else if ( (LA29_0=='\"') ) {
+                alt29=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("929:1: StringLiteral : ( SQUOTE (~ ( SQUOTE | BSLASH | LineTerminator ) | EscapeSequence )* SQUOTE | DQUOTE (~ ( DQUOTE | BSLASH | LineTerminator ) | EscapeSequence )* DQUOTE );", 27, 0, input);
+                    new NoViableAltException("933:1: StringLiteral : ( SQUOTE (~ ( SQUOTE | BSLASH | LineTerminatorChar ) | EscapeSequence )* SQUOTE | DQUOTE (~ ( DQUOTE | BSLASH | LineTerminatorChar ) | EscapeSequence )* DQUOTE );", 29, 0, input);
 
                 throw nvae;
             }
-            switch (alt27) {
+            switch (alt29) {
                 case 1 :
-                    // JS.g:930:4: SQUOTE (~ ( SQUOTE | BSLASH | LineTerminator ) | EscapeSequence )* SQUOTE
+                    // JS.g:934:4: SQUOTE (~ ( SQUOTE | BSLASH | LineTerminatorChar ) | EscapeSequence )* SQUOTE
                     {
                     mSQUOTE(); 
-                    // JS.g:930:11: (~ ( SQUOTE | BSLASH | LineTerminator ) | EscapeSequence )*
-                    loop25:
+                    // JS.g:934:11: (~ ( SQUOTE | BSLASH | LineTerminatorChar ) | EscapeSequence )*
+                    loop27:
                     do {
-                        int alt25=3;
-                        int LA25_0 = input.LA(1);
+                        int alt27=3;
+                        int LA27_0 = input.LA(1);
 
-                        if ( ((LA25_0>='\u0000' && LA25_0<='\t')||(LA25_0>='\u000B' && LA25_0<='\f')||(LA25_0>='\u000E' && LA25_0<='&')||(LA25_0>='(' && LA25_0<='[')||(LA25_0>=']' && LA25_0<='\u2027')||(LA25_0>='\u202A' && LA25_0<='\uFFFE')) ) {
-                            alt25=1;
+                        if ( ((LA27_0>='\u0000' && LA27_0<='\t')||(LA27_0>='\u000B' && LA27_0<='\f')||(LA27_0>='\u000E' && LA27_0<='&')||(LA27_0>='(' && LA27_0<='[')||(LA27_0>=']' && LA27_0<='\u2027')||(LA27_0>='\u202A' && LA27_0<='\uFFFE')) ) {
+                            alt27=1;
                         }
-                        else if ( (LA25_0=='\\') ) {
-                            alt25=2;
+                        else if ( (LA27_0=='\\') ) {
+                            alt27=2;
                         }
 
 
-                        switch (alt25) {
+                        switch (alt27) {
                     	case 1 :
-                    	    // JS.g:930:13: ~ ( SQUOTE | BSLASH | LineTerminator )
+                    	    // JS.g:934:13: ~ ( SQUOTE | BSLASH | LineTerminatorChar )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\u2027')||(input.LA(1)>='\u202A' && input.LA(1)<='\uFFFE') ) {
                     	        input.consume();
@@ -4347,7 +4442,7 @@
                     	    }
                     	    break;
                     	case 2 :
-                    	    // JS.g:930:53: EscapeSequence
+                    	    // JS.g:934:57: EscapeSequence
                     	    {
                     	    mEscapeSequence(); 
 
@@ -4355,7 +4450,7 @@
                     	    break;
 
                     	default :
-                    	    break loop25;
+                    	    break loop27;
                         }
                     } while (true);
 
@@ -4364,26 +4459,26 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:931:4: DQUOTE (~ ( DQUOTE | BSLASH | LineTerminator ) | EscapeSequence )* DQUOTE
+                    // JS.g:935:4: DQUOTE (~ ( DQUOTE | BSLASH | LineTerminatorChar ) | EscapeSequence )* DQUOTE
                     {
                     mDQUOTE(); 
-                    // JS.g:931:11: (~ ( DQUOTE | BSLASH | LineTerminator ) | EscapeSequence )*
-                    loop26:
+                    // JS.g:935:11: (~ ( DQUOTE | BSLASH | LineTerminatorChar ) | EscapeSequence )*
+                    loop28:
                     do {
-                        int alt26=3;
-                        int LA26_0 = input.LA(1);
+                        int alt28=3;
+                        int LA28_0 = input.LA(1);
 
-                        if ( ((LA26_0>='\u0000' && LA26_0<='\t')||(LA26_0>='\u000B' && LA26_0<='\f')||(LA26_0>='\u000E' && LA26_0<='!')||(LA26_0>='#' && LA26_0<='[')||(LA26_0>=']' && LA26_0<='\u2027')||(LA26_0>='\u202A' && LA26_0<='\uFFFE')) ) {
-                            alt26=1;
+                        if ( ((LA28_0>='\u0000' && LA28_0<='\t')||(LA28_0>='\u000B' && LA28_0<='\f')||(LA28_0>='\u000E' && LA28_0<='!')||(LA28_0>='#' && LA28_0<='[')||(LA28_0>=']' && LA28_0<='\u2027')||(LA28_0>='\u202A' && LA28_0<='\uFFFE')) ) {
+                            alt28=1;
                         }
-                        else if ( (LA26_0=='\\') ) {
-                            alt26=2;
+                        else if ( (LA28_0=='\\') ) {
+                            alt28=2;
                         }
 
 
-                        switch (alt26) {
+                        switch (alt28) {
                     	case 1 :
-                    	    // JS.g:931:13: ~ ( DQUOTE | BSLASH | LineTerminator )
+                    	    // JS.g:935:13: ~ ( DQUOTE | BSLASH | LineTerminatorChar )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\u2027')||(input.LA(1)>='\u202A' && input.LA(1)<='\uFFFE') ) {
                     	        input.consume();
@@ -4399,7 +4494,7 @@
                     	    }
                     	    break;
                     	case 2 :
-                    	    // JS.g:931:53: EscapeSequence
+                    	    // JS.g:935:57: EscapeSequence
                     	    {
                     	    mEscapeSequence(); 
 
@@ -4407,7 +4502,7 @@
                     	    break;
 
                     	default :
-                    	    break loop26;
+                    	    break loop28;
                         }
                     } while (true);
 
@@ -4427,8 +4522,8 @@
     // $ANTLR start BackslashSequence
     public final void mBackslashSequence() throws RecognitionException {
         try {
-            // JS.g:940:2: ( BSLASH ~ ( LineTerminator ) )
-            // JS.g:940:4: BSLASH ~ ( LineTerminator )
+            // JS.g:944:2: ( BSLASH ~ ( LineTerminatorChar ) )
+            // JS.g:944:4: BSLASH ~ ( LineTerminatorChar )
             {
             mBSLASH(); 
             if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\u2027')||(input.LA(1)>='\u202A' && input.LA(1)<='\uFFFE') ) {
@@ -4453,25 +4548,25 @@
     // $ANTLR start RegularExpressionFirstChar
     public final void mRegularExpressionFirstChar() throws RecognitionException {
         try {
-            // JS.g:944:2: (~ ( LineTerminator | MUL | BSLASH | DIV ) | BackslashSequence )
-            int alt28=2;
-            int LA28_0 = input.LA(1);
+            // JS.g:948:2: (~ ( LineTerminatorChar | MUL | BSLASH | DIV ) | BackslashSequence )
+            int alt30=2;
+            int LA30_0 = input.LA(1);
 
-            if ( ((LA28_0>='\u0000' && LA28_0<='\t')||(LA28_0>='\u000B' && LA28_0<='\f')||(LA28_0>='\u000E' && LA28_0<=')')||(LA28_0>='+' && LA28_0<='.')||(LA28_0>='0' && LA28_0<='[')||(LA28_0>=']' && LA28_0<='\u2027')||(LA28_0>='\u202A' && LA28_0<='\uFFFE')) ) {
-                alt28=1;
+            if ( ((LA30_0>='\u0000' && LA30_0<='\t')||(LA30_0>='\u000B' && LA30_0<='\f')||(LA30_0>='\u000E' && LA30_0<=')')||(LA30_0>='+' && LA30_0<='.')||(LA30_0>='0' && LA30_0<='[')||(LA30_0>=']' && LA30_0<='\u2027')||(LA30_0>='\u202A' && LA30_0<='\uFFFE')) ) {
+                alt30=1;
             }
-            else if ( (LA28_0=='\\') ) {
-                alt28=2;
+            else if ( (LA30_0=='\\') ) {
+                alt30=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("943:10: fragment RegularExpressionFirstChar : (~ ( LineTerminator | MUL | BSLASH | DIV ) | BackslashSequence );", 28, 0, input);
+                    new NoViableAltException("947:10: fragment RegularExpressionFirstChar : (~ ( LineTerminatorChar | MUL | BSLASH | DIV ) | BackslashSequence );", 30, 0, input);
 
                 throw nvae;
             }
-            switch (alt28) {
+            switch (alt30) {
                 case 1 :
-                    // JS.g:944:4: ~ ( LineTerminator | MUL | BSLASH | DIV )
+                    // JS.g:948:4: ~ ( LineTerminatorChar | MUL | BSLASH | DIV )
                     {
                     if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<=')')||(input.LA(1)>='+' && input.LA(1)<='.')||(input.LA(1)>='0' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\u2027')||(input.LA(1)>='\u202A' && input.LA(1)<='\uFFFE') ) {
                         input.consume();
@@ -4487,7 +4582,7 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:945:4: BackslashSequence
+                    // JS.g:949:4: BackslashSequence
                     {
                     mBackslashSequence(); 
 
@@ -4504,25 +4599,25 @@
     // $ANTLR start RegularExpressionChar
     public final void mRegularExpressionChar() throws RecognitionException {
         try {
-            // JS.g:949:2: (~ ( LineTerminator | BSLASH | DIV ) | BackslashSequence )
-            int alt29=2;
-            int LA29_0 = input.LA(1);
+            // JS.g:953:2: (~ ( LineTerminatorChar | BSLASH | DIV ) | BackslashSequence )
+            int alt31=2;
+            int LA31_0 = input.LA(1);
 
-            if ( ((LA29_0>='\u0000' && LA29_0<='\t')||(LA29_0>='\u000B' && LA29_0<='\f')||(LA29_0>='\u000E' && LA29_0<='.')||(LA29_0>='0' && LA29_0<='[')||(LA29_0>=']' && LA29_0<='\u2027')||(LA29_0>='\u202A' && LA29_0<='\uFFFE')) ) {
-                alt29=1;
+            if ( ((LA31_0>='\u0000' && LA31_0<='\t')||(LA31_0>='\u000B' && LA31_0<='\f')||(LA31_0>='\u000E' && LA31_0<='.')||(LA31_0>='0' && LA31_0<='[')||(LA31_0>=']' && LA31_0<='\u2027')||(LA31_0>='\u202A' && LA31_0<='\uFFFE')) ) {
+                alt31=1;
             }
-            else if ( (LA29_0=='\\') ) {
-                alt29=2;
+            else if ( (LA31_0=='\\') ) {
+                alt31=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("948:10: fragment RegularExpressionChar : (~ ( LineTerminator | BSLASH | DIV ) | BackslashSequence );", 29, 0, input);
+                    new NoViableAltException("952:10: fragment RegularExpressionChar : (~ ( LineTerminatorChar | BSLASH | DIV ) | BackslashSequence );", 31, 0, input);
 
                 throw nvae;
             }
-            switch (alt29) {
+            switch (alt31) {
                 case 1 :
-                    // JS.g:949:4: ~ ( LineTerminator | BSLASH | DIV )
+                    // JS.g:953:4: ~ ( LineTerminatorChar | BSLASH | DIV )
                     {
                     if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='.')||(input.LA(1)>='0' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\u2027')||(input.LA(1)>='\u202A' && input.LA(1)<='\uFFFE') ) {
                         input.consume();
@@ -4538,7 +4633,7 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:950:4: BackslashSequence
+                    // JS.g:954:4: BackslashSequence
                     {
                     mBackslashSequence(); 
 
@@ -4556,28 +4651,28 @@
     public final void mRegularExpressionLiteral() throws RecognitionException {
         try {
             int _type = RegularExpressionLiteral;
-            // JS.g:954:2: ({...}? => DIV RegularExpressionFirstChar ( RegularExpressionChar )* DIV ( IdentifierPart )* )
-            // JS.g:954:4: {...}? => DIV RegularExpressionFirstChar ( RegularExpressionChar )* DIV ( IdentifierPart )*
+            // JS.g:958:2: ({...}? => DIV RegularExpressionFirstChar ( RegularExpressionChar )* DIV ( IdentifierPart )* )
+            // JS.g:958:4: {...}? => DIV RegularExpressionFirstChar ( RegularExpressionChar )* DIV ( IdentifierPart )*
             {
             if ( !( areRegularExpressionsEnabled() ) ) {
                 throw new FailedPredicateException(input, "RegularExpressionLiteral", " areRegularExpressionsEnabled() ");
             }
             mDIV(); 
             mRegularExpressionFirstChar(); 
-            // JS.g:954:73: ( RegularExpressionChar )*
-            loop30:
+            // JS.g:958:73: ( RegularExpressionChar )*
+            loop32:
             do {
-                int alt30=2;
-                int LA30_0 = input.LA(1);
+                int alt32=2;
+                int LA32_0 = input.LA(1);
 
-                if ( ((LA30_0>='\u0000' && LA30_0<='\t')||(LA30_0>='\u000B' && LA30_0<='\f')||(LA30_0>='\u000E' && LA30_0<='.')||(LA30_0>='0' && LA30_0<='\u2027')||(LA30_0>='\u202A' && LA30_0<='\uFFFE')) ) {
-                    alt30=1;
+                if ( ((LA32_0>='\u0000' && LA32_0<='\t')||(LA32_0>='\u000B' && LA32_0<='\f')||(LA32_0>='\u000E' && LA32_0<='.')||(LA32_0>='0' && LA32_0<='\u2027')||(LA32_0>='\u202A' && LA32_0<='\uFFFE')) ) {
+                    alt32=1;
                 }
 
 
-                switch (alt30) {
+                switch (alt32) {
             	case 1 :
-            	    // JS.g:954:73: RegularExpressionChar
+            	    // JS.g:958:73: RegularExpressionChar
             	    {
             	    mRegularExpressionChar(); 
 
@@ -4585,28 +4680,28 @@
             	    break;
 
             	default :
-            	    break loop30;
+            	    break loop32;
                 }
             } while (true);
 
             mDIV(); 
-            // JS.g:954:100: ( IdentifierPart )*
-            loop31:
+            // JS.g:958:100: ( IdentifierPart )*
+            loop33:
             do {
-                int alt31=2;
-                int LA31_0 = input.LA(1);
+                int alt33=2;
+                int LA33_0 = input.LA(1);
 
-                if ( (LA31_0=='$'||(LA31_0>='0' && LA31_0<='9')||(LA31_0>='A' && LA31_0<='Z')||LA31_0=='\\'||LA31_0=='_'||(LA31_0>='a' && LA31_0<='z')) ) {
-                    alt31=1;
+                if ( (LA33_0=='$'||(LA33_0>='0' && LA33_0<='9')||(LA33_0>='A' && LA33_0<='Z')||LA33_0=='\\'||LA33_0=='_'||(LA33_0>='a' && LA33_0<='z')) ) {
+                    alt33=1;
                 }
                 else if ( ( isIdentifierPartUnicode(input.LA(1)) ) ) {
-                    alt31=1;
+                    alt33=1;
                 }
 
 
-                switch (alt31) {
+                switch (alt33) {
             	case 1 :
-            	    // JS.g:954:100: IdentifierPart
+            	    // JS.g:958:100: IdentifierPart
             	    {
             	    mIdentifierPart(); 
 
@@ -4614,7 +4709,7 @@
             	    break;
 
             	default :
-            	    break loop31;
+            	    break loop33;
                 }
             } while (true);
 
@@ -4630,7 +4725,7 @@
 
     public void mTokens() throws RecognitionException {
         // JS.g:1:8: ( NULL | TRUE | FALSE | BREAK | CASE | CATCH | CONTINUE | DEFAULT | DELETE | DO | ELSE | FINALLY | FOR | EACH | FUNCTION | IF | IN | INSTANCEOF | NEW | RETURN | SWITCH | THIS | THROW | TRY | TYPEOF | VAR | VOID | WHILE | WITH | GET | SET | YIELD | CDATA | WXML | NAMESPACE | ABSTRACT | BOOLEAN | BYTE | CHAR | CLASS | CONST | DEBUGGER | DOUBLE | ENUM | EXPORT | EXTENDS | FINAL | FLOAT | GOTO | IMPLEMENTS | IMPORT | INT | INTERFACE | LONG | NATIVE | PACKAGE | PRIVATE | PROTECTED | PUBLIC | SHORT | STATIC | SUPER | SYNCHRONIZED | THROWS | TRANSIENT | VOLATILE | LBRACE | RBRACE | LPAREN | RPAREN | LBRACK | RBRACK | DOT | SEMIC | COMMA | LT | GT | LTE | GTE | EQ | NEQ | SAME | NSAME | ADD | SUB | MUL | MOD | INC | DEC | SHL | SHR | SHU | AND | OR | XOR | NOT | INV | LAND | LOR | QUE | COLON | ASSIGN | ADDASS | SUBASS | MULASS | MODASS | SHLASS | SHRASS | SHUASS | ANDASS | ORASS | XORASS | DIV | DIVASS | XCOPEN | XCCLOSE | XLCLOSE | XRCLOSE | CDATAOPEN | XHOPEN | XHCLOSE | AT | DOTDOT | COLONCOLON | WhiteSpace | EOL | MultiLineComment | SingleLineComment | Identifier | XmlAttribute | DecimalLiteral | OctalIntegerLiteral | HexIntegerLiteral | StringLiteral | RegularExpressionLiteral )
-        int alt32=135;
+        int alt34=135;
         switch ( input.LA(1) ) {
         case 'n':
             {
@@ -4638,129 +4733,129 @@
             case 'a':
                 {
                 switch ( input.LA(3) ) {
-                case 't':
-                    {
-                    int LA32_146 = input.LA(4);
-
-                    if ( (LA32_146=='i') ) {
-                        int LA32_222 = input.LA(5);
-
-                        if ( (LA32_222=='v') ) {
-                            int LA32_285 = input.LA(6);
-
-                            if ( (LA32_285=='e') ) {
-                                int LA32_338 = input.LA(7);
-
-                                if ( (LA32_338=='$'||(LA32_338>='0' && LA32_338<='9')||(LA32_338>='A' && LA32_338<='Z')||LA32_338=='\\'||LA32_338=='_'||(LA32_338>='a' && LA32_338<='z')) ) {
-                                    alt32=129;
-                                }
-                                else {
-                                    alt32=55;}
-                            }
-                            else {
-                                alt32=129;}
-                        }
-                        else {
-                            alt32=129;}
-                    }
-                    else {
-                        alt32=129;}
-                    }
-                    break;
                 case 'm':
                     {
-                    int LA32_147 = input.LA(4);
+                    int LA34_146 = input.LA(4);
 
-                    if ( (LA32_147=='e') ) {
-                        int LA32_223 = input.LA(5);
+                    if ( (LA34_146=='e') ) {
+                        int LA34_222 = input.LA(5);
 
-                        if ( (LA32_223=='s') ) {
-                            int LA32_286 = input.LA(6);
+                        if ( (LA34_222=='s') ) {
+                            int LA34_285 = input.LA(6);
 
-                            if ( (LA32_286=='p') ) {
-                                int LA32_339 = input.LA(7);
+                            if ( (LA34_285=='p') ) {
+                                int LA34_338 = input.LA(7);
 
-                                if ( (LA32_339=='a') ) {
-                                    int LA32_381 = input.LA(8);
+                                if ( (LA34_338=='a') ) {
+                                    int LA34_380 = input.LA(8);
 
-                                    if ( (LA32_381=='c') ) {
-                                        int LA32_409 = input.LA(9);
+                                    if ( (LA34_380=='c') ) {
+                                        int LA34_409 = input.LA(9);
 
-                                        if ( (LA32_409=='e') ) {
-                                            int LA32_427 = input.LA(10);
+                                        if ( (LA34_409=='e') ) {
+                                            int LA34_427 = input.LA(10);
 
-                                            if ( (LA32_427=='$'||(LA32_427>='0' && LA32_427<='9')||(LA32_427>='A' && LA32_427<='Z')||LA32_427=='\\'||LA32_427=='_'||(LA32_427>='a' && LA32_427<='z')) ) {
-                                                alt32=129;
+                                            if ( (LA34_427=='$'||(LA34_427>='0' && LA34_427<='9')||(LA34_427>='A' && LA34_427<='Z')||LA34_427=='\\'||LA34_427=='_'||(LA34_427>='a' && LA34_427<='z')) ) {
+                                                alt34=129;
                                             }
                                             else {
-                                                alt32=35;}
+                                                alt34=35;}
                                         }
                                         else {
-                                            alt32=129;}
+                                            alt34=129;}
                                     }
                                     else {
-                                        alt32=129;}
+                                        alt34=129;}
                                 }
                                 else {
-                                    alt32=129;}
+                                    alt34=129;}
                             }
                             else {
-                                alt32=129;}
+                                alt34=129;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
+                    }
+                    break;
+                case 't':
+                    {
+                    int LA34_147 = input.LA(4);
+
+                    if ( (LA34_147=='i') ) {
+                        int LA34_223 = input.LA(5);
+
+                        if ( (LA34_223=='v') ) {
+                            int LA34_286 = input.LA(6);
+
+                            if ( (LA34_286=='e') ) {
+                                int LA34_339 = input.LA(7);
+
+                                if ( (LA34_339=='$'||(LA34_339>='0' && LA34_339<='9')||(LA34_339>='A' && LA34_339<='Z')||LA34_339=='\\'||LA34_339=='_'||(LA34_339>='a' && LA34_339<='z')) ) {
+                                    alt34=129;
+                                }
+                                else {
+                                    alt34=55;}
+                            }
+                            else {
+                                alt34=129;}
+                        }
+                        else {
+                            alt34=129;}
+                    }
+                    else {
+                        alt34=129;}
                     }
                     break;
                 default:
-                    alt32=129;}
+                    alt34=129;}
 
                 }
                 break;
             case 'u':
                 {
-                int LA32_52 = input.LA(3);
+                int LA34_52 = input.LA(3);
 
-                if ( (LA32_52=='l') ) {
-                    int LA32_148 = input.LA(4);
+                if ( (LA34_52=='l') ) {
+                    int LA34_148 = input.LA(4);
 
-                    if ( (LA32_148=='l') ) {
-                        int LA32_224 = input.LA(5);
+                    if ( (LA34_148=='l') ) {
+                        int LA34_224 = input.LA(5);
 
-                        if ( (LA32_224=='$'||(LA32_224>='0' && LA32_224<='9')||(LA32_224>='A' && LA32_224<='Z')||LA32_224=='\\'||LA32_224=='_'||(LA32_224>='a' && LA32_224<='z')) ) {
-                            alt32=129;
+                        if ( (LA34_224=='$'||(LA34_224>='0' && LA34_224<='9')||(LA34_224>='A' && LA34_224<='Z')||LA34_224=='\\'||LA34_224=='_'||(LA34_224>='a' && LA34_224<='z')) ) {
+                            alt34=129;
                         }
                         else {
-                            alt32=1;}
+                            alt34=1;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
                 }
                 break;
             case 'e':
                 {
-                int LA32_53 = input.LA(3);
+                int LA34_53 = input.LA(3);
 
-                if ( (LA32_53=='w') ) {
-                    int LA32_149 = input.LA(4);
+                if ( (LA34_53=='w') ) {
+                    int LA34_149 = input.LA(4);
 
-                    if ( (LA32_149=='$'||(LA32_149>='0' && LA32_149<='9')||(LA32_149>='A' && LA32_149<='Z')||LA32_149=='\\'||LA32_149=='_'||(LA32_149>='a' && LA32_149<='z')) ) {
-                        alt32=129;
+                    if ( (LA34_149=='$'||(LA34_149>='0' && LA34_149<='9')||(LA34_149>='A' && LA34_149<='Z')||LA34_149=='\\'||LA34_149=='_'||(LA34_149>='a' && LA34_149<='z')) ) {
+                        alt34=129;
                     }
                     else {
-                        alt32=19;}
+                        alt34=19;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
                 }
                 break;
             default:
-                alt32=129;}
+                alt34=129;}
 
             }
             break;
@@ -4770,24 +4865,41 @@
             case 'h':
                 {
                 switch ( input.LA(3) ) {
+                case 'i':
+                    {
+                    int LA34_150 = input.LA(4);
+
+                    if ( (LA34_150=='s') ) {
+                        int LA34_226 = input.LA(5);
+
+                        if ( (LA34_226=='$'||(LA34_226>='0' && LA34_226<='9')||(LA34_226>='A' && LA34_226<='Z')||LA34_226=='\\'||LA34_226=='_'||(LA34_226>='a' && LA34_226<='z')) ) {
+                            alt34=129;
+                        }
+                        else {
+                            alt34=22;}
+                    }
+                    else {
+                        alt34=129;}
+                    }
+                    break;
                 case 'r':
                     {
-                    int LA32_150 = input.LA(4);
+                    int LA34_151 = input.LA(4);
 
-                    if ( (LA32_150=='o') ) {
-                        int LA32_226 = input.LA(5);
+                    if ( (LA34_151=='o') ) {
+                        int LA34_227 = input.LA(5);
 
-                        if ( (LA32_226=='w') ) {
+                        if ( (LA34_227=='w') ) {
                             switch ( input.LA(6) ) {
                             case 's':
                                 {
-                                int LA32_340 = input.LA(7);
+                                int LA34_340 = input.LA(7);
 
-                                if ( (LA32_340=='$'||(LA32_340>='0' && LA32_340<='9')||(LA32_340>='A' && LA32_340<='Z')||LA32_340=='\\'||LA32_340=='_'||(LA32_340>='a' && LA32_340<='z')) ) {
-                                    alt32=129;
+                                if ( (LA34_340=='$'||(LA34_340>='0' && LA34_340<='9')||(LA34_340>='A' && LA34_340<='Z')||LA34_340=='\\'||LA34_340=='_'||(LA34_340>='a' && LA34_340<='z')) ) {
+                                    alt34=129;
                                 }
                                 else {
-                                    alt32=64;}
+                                    alt34=64;}
                                 }
                                 break;
                             case '$':
@@ -4855,224 +4967,178 @@
                             case 'y':
                             case 'z':
                                 {
-                                alt32=129;
+                                alt34=129;
                                 }
                                 break;
                             default:
-                                alt32=23;}
+                                alt34=23;}
 
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
-                    }
-                    break;
-                case 'i':
-                    {
-                    int LA32_151 = input.LA(4);
-
-                    if ( (LA32_151=='s') ) {
-                        int LA32_227 = input.LA(5);
-
-                        if ( (LA32_227=='$'||(LA32_227>='0' && LA32_227<='9')||(LA32_227>='A' && LA32_227<='Z')||LA32_227=='\\'||LA32_227=='_'||(LA32_227>='a' && LA32_227<='z')) ) {
-                            alt32=129;
-                        }
-                        else {
-                            alt32=22;}
-                    }
-                    else {
-                        alt32=129;}
+                        alt34=129;}
                     }
                     break;
                 default:
-                    alt32=129;}
+                    alt34=129;}
 
                 }
                 break;
             case 'r':
                 {
                 switch ( input.LA(3) ) {
-                case 'a':
-                    {
-                    int LA32_152 = input.LA(4);
-
-                    if ( (LA32_152=='n') ) {
-                        int LA32_228 = input.LA(5);
-
-                        if ( (LA32_228=='s') ) {
-                            int LA32_290 = input.LA(6);
-
-                            if ( (LA32_290=='i') ) {
-                                int LA32_342 = input.LA(7);
-
-                                if ( (LA32_342=='e') ) {
-                                    int LA32_383 = input.LA(8);
-
-                                    if ( (LA32_383=='n') ) {
-                                        int LA32_410 = input.LA(9);
-
-                                        if ( (LA32_410=='t') ) {
-                                            int LA32_428 = input.LA(10);
-
-                                            if ( (LA32_428=='$'||(LA32_428>='0' && LA32_428<='9')||(LA32_428>='A' && LA32_428<='Z')||LA32_428=='\\'||LA32_428=='_'||(LA32_428>='a' && LA32_428<='z')) ) {
-                                                alt32=129;
-                                            }
-                                            else {
-                                                alt32=65;}
-                                        }
-                                        else {
-                                            alt32=129;}
-                                    }
-                                    else {
-                                        alt32=129;}
-                                }
-                                else {
-                                    alt32=129;}
-                            }
-                            else {
-                                alt32=129;}
-                        }
-                        else {
-                            alt32=129;}
-                    }
-                    else {
-                        alt32=129;}
-                    }
-                    break;
                 case 'y':
                     {
-                    int LA32_153 = input.LA(4);
+                    int LA34_152 = input.LA(4);
 
-                    if ( (LA32_153=='$'||(LA32_153>='0' && LA32_153<='9')||(LA32_153>='A' && LA32_153<='Z')||LA32_153=='\\'||LA32_153=='_'||(LA32_153>='a' && LA32_153<='z')) ) {
-                        alt32=129;
+                    if ( (LA34_152=='$'||(LA34_152>='0' && LA34_152<='9')||(LA34_152>='A' && LA34_152<='Z')||LA34_152=='\\'||LA34_152=='_'||(LA34_152>='a' && LA34_152<='z')) ) {
+                        alt34=129;
                     }
                     else {
-                        alt32=24;}
+                        alt34=24;}
+                    }
+                    break;
+                case 'a':
+                    {
+                    int LA34_153 = input.LA(4);
+
+                    if ( (LA34_153=='n') ) {
+                        int LA34_229 = input.LA(5);
+
+                        if ( (LA34_229=='s') ) {
+                            int LA34_290 = input.LA(6);
+
+                            if ( (LA34_290=='i') ) {
+                                int LA34_342 = input.LA(7);
+
+                                if ( (LA34_342=='e') ) {
+                                    int LA34_383 = input.LA(8);
+
+                                    if ( (LA34_383=='n') ) {
+                                        int LA34_410 = input.LA(9);
+
+                                        if ( (LA34_410=='t') ) {
+                                            int LA34_428 = input.LA(10);
+
+                                            if ( (LA34_428=='$'||(LA34_428>='0' && LA34_428<='9')||(LA34_428>='A' && LA34_428<='Z')||LA34_428=='\\'||LA34_428=='_'||(LA34_428>='a' && LA34_428<='z')) ) {
+                                                alt34=129;
+                                            }
+                                            else {
+                                                alt34=65;}
+                                        }
+                                        else {
+                                            alt34=129;}
+                                    }
+                                    else {
+                                        alt34=129;}
+                                }
+                                else {
+                                    alt34=129;}
+                            }
+                            else {
+                                alt34=129;}
+                        }
+                        else {
+                            alt34=129;}
+                    }
+                    else {
+                        alt34=129;}
                     }
                     break;
                 case 'u':
                     {
-                    int LA32_154 = input.LA(4);
+                    int LA34_154 = input.LA(4);
 
-                    if ( (LA32_154=='e') ) {
-                        int LA32_230 = input.LA(5);
+                    if ( (LA34_154=='e') ) {
+                        int LA34_230 = input.LA(5);
 
-                        if ( (LA32_230=='$'||(LA32_230>='0' && LA32_230<='9')||(LA32_230>='A' && LA32_230<='Z')||LA32_230=='\\'||LA32_230=='_'||(LA32_230>='a' && LA32_230<='z')) ) {
-                            alt32=129;
+                        if ( (LA34_230=='$'||(LA34_230>='0' && LA34_230<='9')||(LA34_230>='A' && LA34_230<='Z')||LA34_230=='\\'||LA34_230=='_'||(LA34_230>='a' && LA34_230<='z')) ) {
+                            alt34=129;
                         }
                         else {
-                            alt32=2;}
+                            alt34=2;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                     }
                     break;
                 default:
-                    alt32=129;}
+                    alt34=129;}
 
                 }
                 break;
             case 'y':
                 {
-                int LA32_56 = input.LA(3);
+                int LA34_56 = input.LA(3);
 
-                if ( (LA32_56=='p') ) {
-                    int LA32_155 = input.LA(4);
+                if ( (LA34_56=='p') ) {
+                    int LA34_155 = input.LA(4);
 
-                    if ( (LA32_155=='e') ) {
-                        int LA32_231 = input.LA(5);
+                    if ( (LA34_155=='e') ) {
+                        int LA34_231 = input.LA(5);
 
-                        if ( (LA32_231=='o') ) {
-                            int LA32_292 = input.LA(6);
+                        if ( (LA34_231=='o') ) {
+                            int LA34_292 = input.LA(6);
 
-                            if ( (LA32_292=='f') ) {
-                                int LA32_343 = input.LA(7);
+                            if ( (LA34_292=='f') ) {
+                                int LA34_343 = input.LA(7);
 
-                                if ( (LA32_343=='$'||(LA32_343>='0' && LA32_343<='9')||(LA32_343>='A' && LA32_343<='Z')||LA32_343=='\\'||LA32_343=='_'||(LA32_343>='a' && LA32_343<='z')) ) {
-                                    alt32=129;
+                                if ( (LA34_343=='$'||(LA34_343>='0' && LA34_343<='9')||(LA34_343>='A' && LA34_343<='Z')||LA34_343=='\\'||LA34_343=='_'||(LA34_343>='a' && LA34_343<='z')) ) {
+                                    alt34=129;
                                 }
                                 else {
-                                    alt32=25;}
+                                    alt34=25;}
                             }
                             else {
-                                alt32=129;}
+                                alt34=129;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
                 }
                 break;
             default:
-                alt32=129;}
+                alt34=129;}
 
             }
             break;
         case 'f':
             {
             switch ( input.LA(2) ) {
-            case 'l':
-                {
-                int LA32_57 = input.LA(3);
-
-                if ( (LA32_57=='o') ) {
-                    int LA32_156 = input.LA(4);
-
-                    if ( (LA32_156=='a') ) {
-                        int LA32_232 = input.LA(5);
-
-                        if ( (LA32_232=='t') ) {
-                            int LA32_293 = input.LA(6);
-
-                            if ( (LA32_293=='$'||(LA32_293>='0' && LA32_293<='9')||(LA32_293>='A' && LA32_293<='Z')||LA32_293=='\\'||LA32_293=='_'||(LA32_293>='a' && LA32_293<='z')) ) {
-                                alt32=129;
-                            }
-                            else {
-                                alt32=48;}
-                        }
-                        else {
-                            alt32=129;}
-                    }
-                    else {
-                        alt32=129;}
-                }
-                else {
-                    alt32=129;}
-                }
-                break;
             case 'i':
                 {
-                int LA32_58 = input.LA(3);
+                int LA34_57 = input.LA(3);
 
-                if ( (LA32_58=='n') ) {
-                    int LA32_157 = input.LA(4);
+                if ( (LA34_57=='n') ) {
+                    int LA34_156 = input.LA(4);
 
-                    if ( (LA32_157=='a') ) {
-                        int LA32_233 = input.LA(5);
+                    if ( (LA34_156=='a') ) {
+                        int LA34_232 = input.LA(5);
 
-                        if ( (LA32_233=='l') ) {
+                        if ( (LA34_232=='l') ) {
                             switch ( input.LA(6) ) {
                             case 'l':
                                 {
-                                int LA32_345 = input.LA(7);
+                                int LA34_344 = input.LA(7);
 
-                                if ( (LA32_345=='y') ) {
-                                    int LA32_385 = input.LA(8);
+                                if ( (LA34_344=='y') ) {
+                                    int LA34_385 = input.LA(8);
 
-                                    if ( (LA32_385=='$'||(LA32_385>='0' && LA32_385<='9')||(LA32_385>='A' && LA32_385<='Z')||LA32_385=='\\'||LA32_385=='_'||(LA32_385>='a' && LA32_385<='z')) ) {
-                                        alt32=129;
+                                    if ( (LA34_385=='$'||(LA34_385>='0' && LA34_385<='9')||(LA34_385>='A' && LA34_385<='Z')||LA34_385=='\\'||LA34_385=='_'||(LA34_385>='a' && LA34_385<='z')) ) {
+                                        alt34=129;
                                     }
                                     else {
-                                        alt32=12;}
+                                        alt34=12;}
                                 }
                                 else {
-                                    alt32=129;}
+                                    alt34=129;}
                                 }
                                 break;
                             case '$':
@@ -5140,118 +5206,147 @@
                             case 'y':
                             case 'z':
                                 {
-                                alt32=129;
+                                alt34=129;
                                 }
                                 break;
                             default:
-                                alt32=47;}
+                                alt34=47;}
 
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
                 }
                 break;
-            case 'o':
+            case 'l':
                 {
-                int LA32_59 = input.LA(3);
+                int LA34_58 = input.LA(3);
 
-                if ( (LA32_59=='r') ) {
-                    int LA32_158 = input.LA(4);
+                if ( (LA34_58=='o') ) {
+                    int LA34_157 = input.LA(4);
 
-                    if ( (LA32_158=='$'||(LA32_158>='0' && LA32_158<='9')||(LA32_158>='A' && LA32_158<='Z')||LA32_158=='\\'||LA32_158=='_'||(LA32_158>='a' && LA32_158<='z')) ) {
-                        alt32=129;
+                    if ( (LA34_157=='a') ) {
+                        int LA34_233 = input.LA(5);
+
+                        if ( (LA34_233=='t') ) {
+                            int LA34_294 = input.LA(6);
+
+                            if ( (LA34_294=='$'||(LA34_294>='0' && LA34_294<='9')||(LA34_294>='A' && LA34_294<='Z')||LA34_294=='\\'||LA34_294=='_'||(LA34_294>='a' && LA34_294<='z')) ) {
+                                alt34=129;
+                            }
+                            else {
+                                alt34=48;}
+                        }
+                        else {
+                            alt34=129;}
                     }
                     else {
-                        alt32=13;}
+                        alt34=129;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
                 }
                 break;
             case 'a':
                 {
-                int LA32_60 = input.LA(3);
+                int LA34_59 = input.LA(3);
 
-                if ( (LA32_60=='l') ) {
-                    int LA32_159 = input.LA(4);
+                if ( (LA34_59=='l') ) {
+                    int LA34_158 = input.LA(4);
 
-                    if ( (LA32_159=='s') ) {
-                        int LA32_235 = input.LA(5);
+                    if ( (LA34_158=='s') ) {
+                        int LA34_234 = input.LA(5);
 
-                        if ( (LA32_235=='e') ) {
-                            int LA32_295 = input.LA(6);
+                        if ( (LA34_234=='e') ) {
+                            int LA34_295 = input.LA(6);
 
-                            if ( (LA32_295=='$'||(LA32_295>='0' && LA32_295<='9')||(LA32_295>='A' && LA32_295<='Z')||LA32_295=='\\'||LA32_295=='_'||(LA32_295>='a' && LA32_295<='z')) ) {
-                                alt32=129;
+                            if ( (LA34_295=='$'||(LA34_295>='0' && LA34_295<='9')||(LA34_295>='A' && LA34_295<='Z')||LA34_295=='\\'||LA34_295=='_'||(LA34_295>='a' && LA34_295<='z')) ) {
+                                alt34=129;
                             }
                             else {
-                                alt32=3;}
+                                alt34=3;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
                 }
                 break;
             case 'u':
                 {
-                int LA32_61 = input.LA(3);
+                int LA34_60 = input.LA(3);
 
-                if ( (LA32_61=='n') ) {
-                    int LA32_160 = input.LA(4);
+                if ( (LA34_60=='n') ) {
+                    int LA34_159 = input.LA(4);
 
-                    if ( (LA32_160=='c') ) {
-                        int LA32_236 = input.LA(5);
+                    if ( (LA34_159=='c') ) {
+                        int LA34_235 = input.LA(5);
 
-                        if ( (LA32_236=='t') ) {
-                            int LA32_296 = input.LA(6);
+                        if ( (LA34_235=='t') ) {
+                            int LA34_296 = input.LA(6);
 
-                            if ( (LA32_296=='i') ) {
-                                int LA32_348 = input.LA(7);
+                            if ( (LA34_296=='i') ) {
+                                int LA34_348 = input.LA(7);
 
-                                if ( (LA32_348=='o') ) {
-                                    int LA32_386 = input.LA(8);
+                                if ( (LA34_348=='o') ) {
+                                    int LA34_386 = input.LA(8);
 
-                                    if ( (LA32_386=='n') ) {
-                                        int LA32_412 = input.LA(9);
+                                    if ( (LA34_386=='n') ) {
+                                        int LA34_412 = input.LA(9);
 
-                                        if ( (LA32_412=='$'||(LA32_412>='0' && LA32_412<='9')||(LA32_412>='A' && LA32_412<='Z')||LA32_412=='\\'||LA32_412=='_'||(LA32_412>='a' && LA32_412<='z')) ) {
-                                            alt32=129;
+                                        if ( (LA34_412=='$'||(LA34_412>='0' && LA34_412<='9')||(LA34_412>='A' && LA34_412<='Z')||LA34_412=='\\'||LA34_412=='_'||(LA34_412>='a' && LA34_412<='z')) ) {
+                                            alt34=129;
                                         }
                                         else {
-                                            alt32=15;}
+                                            alt34=15;}
                                     }
                                     else {
-                                        alt32=129;}
+                                        alt34=129;}
                                 }
                                 else {
-                                    alt32=129;}
+                                    alt34=129;}
                             }
                             else {
-                                alt32=129;}
+                                alt34=129;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
+                }
+                break;
+            case 'o':
+                {
+                int LA34_61 = input.LA(3);
+
+                if ( (LA34_61=='r') ) {
+                    int LA34_160 = input.LA(4);
+
+                    if ( (LA34_160=='$'||(LA34_160>='0' && LA34_160<='9')||(LA34_160>='A' && LA34_160<='Z')||LA34_160=='\\'||LA34_160=='_'||(LA34_160>='a' && LA34_160<='z')) ) {
+                        alt34=129;
+                    }
+                    else {
+                        alt34=13;}
+                }
+                else {
+                    alt34=129;}
                 }
                 break;
             default:
-                alt32=129;}
+                alt34=129;}
 
             }
             break;
@@ -5260,99 +5355,99 @@
             switch ( input.LA(2) ) {
             case 'o':
                 {
-                int LA32_62 = input.LA(3);
+                int LA34_62 = input.LA(3);
 
-                if ( (LA32_62=='o') ) {
-                    int LA32_161 = input.LA(4);
+                if ( (LA34_62=='o') ) {
+                    int LA34_161 = input.LA(4);
 
-                    if ( (LA32_161=='l') ) {
-                        int LA32_237 = input.LA(5);
+                    if ( (LA34_161=='l') ) {
+                        int LA34_237 = input.LA(5);
 
-                        if ( (LA32_237=='e') ) {
-                            int LA32_297 = input.LA(6);
+                        if ( (LA34_237=='e') ) {
+                            int LA34_297 = input.LA(6);
 
-                            if ( (LA32_297=='a') ) {
-                                int LA32_349 = input.LA(7);
+                            if ( (LA34_297=='a') ) {
+                                int LA34_349 = input.LA(7);
 
-                                if ( (LA32_349=='n') ) {
-                                    int LA32_387 = input.LA(8);
+                                if ( (LA34_349=='n') ) {
+                                    int LA34_387 = input.LA(8);
 
-                                    if ( (LA32_387=='$'||(LA32_387>='0' && LA32_387<='9')||(LA32_387>='A' && LA32_387<='Z')||LA32_387=='\\'||LA32_387=='_'||(LA32_387>='a' && LA32_387<='z')) ) {
-                                        alt32=129;
+                                    if ( (LA34_387=='$'||(LA34_387>='0' && LA34_387<='9')||(LA34_387>='A' && LA34_387<='Z')||LA34_387=='\\'||LA34_387=='_'||(LA34_387>='a' && LA34_387<='z')) ) {
+                                        alt34=129;
                                     }
                                     else {
-                                        alt32=37;}
+                                        alt34=37;}
                                 }
                                 else {
-                                    alt32=129;}
+                                    alt34=129;}
                             }
                             else {
-                                alt32=129;}
+                                alt34=129;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
                 }
                 break;
             case 'y':
                 {
-                int LA32_63 = input.LA(3);
+                int LA34_63 = input.LA(3);
 
-                if ( (LA32_63=='t') ) {
-                    int LA32_162 = input.LA(4);
+                if ( (LA34_63=='t') ) {
+                    int LA34_162 = input.LA(4);
 
-                    if ( (LA32_162=='e') ) {
-                        int LA32_238 = input.LA(5);
+                    if ( (LA34_162=='e') ) {
+                        int LA34_238 = input.LA(5);
 
-                        if ( (LA32_238=='$'||(LA32_238>='0' && LA32_238<='9')||(LA32_238>='A' && LA32_238<='Z')||LA32_238=='\\'||LA32_238=='_'||(LA32_238>='a' && LA32_238<='z')) ) {
-                            alt32=129;
+                        if ( (LA34_238=='$'||(LA34_238>='0' && LA34_238<='9')||(LA34_238>='A' && LA34_238<='Z')||LA34_238=='\\'||LA34_238=='_'||(LA34_238>='a' && LA34_238<='z')) ) {
+                            alt34=129;
                         }
                         else {
-                            alt32=38;}
+                            alt34=38;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
                 }
                 break;
             case 'r':
                 {
-                int LA32_64 = input.LA(3);
+                int LA34_64 = input.LA(3);
 
-                if ( (LA32_64=='e') ) {
-                    int LA32_163 = input.LA(4);
+                if ( (LA34_64=='e') ) {
+                    int LA34_163 = input.LA(4);
 
-                    if ( (LA32_163=='a') ) {
-                        int LA32_239 = input.LA(5);
+                    if ( (LA34_163=='a') ) {
+                        int LA34_239 = input.LA(5);
 
-                        if ( (LA32_239=='k') ) {
-                            int LA32_299 = input.LA(6);
+                        if ( (LA34_239=='k') ) {
+                            int LA34_299 = input.LA(6);
 
-                            if ( (LA32_299=='$'||(LA32_299>='0' && LA32_299<='9')||(LA32_299>='A' && LA32_299<='Z')||LA32_299=='\\'||LA32_299=='_'||(LA32_299>='a' && LA32_299<='z')) ) {
-                                alt32=129;
+                            if ( (LA34_299=='$'||(LA34_299>='0' && LA34_299<='9')||(LA34_299>='A' && LA34_299<='Z')||LA34_299=='\\'||LA34_299=='_'||(LA34_299>='a' && LA34_299<='z')) ) {
+                                alt34=129;
                             }
                             else {
-                                alt32=4;}
+                                alt34=4;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
                 }
                 break;
             default:
-                alt32=129;}
+                alt34=129;}
 
             }
             break;
@@ -5361,120 +5456,120 @@
             switch ( input.LA(2) ) {
             case 'o':
                 {
-                int LA32_65 = input.LA(3);
+                int LA34_65 = input.LA(3);
 
-                if ( (LA32_65=='n') ) {
+                if ( (LA34_65=='n') ) {
                     switch ( input.LA(4) ) {
-                    case 't':
-                        {
-                        int LA32_240 = input.LA(5);
-
-                        if ( (LA32_240=='i') ) {
-                            int LA32_300 = input.LA(6);
-
-                            if ( (LA32_300=='n') ) {
-                                int LA32_351 = input.LA(7);
-
-                                if ( (LA32_351=='u') ) {
-                                    int LA32_388 = input.LA(8);
-
-                                    if ( (LA32_388=='e') ) {
-                                        int LA32_414 = input.LA(9);
-
-                                        if ( (LA32_414=='$'||(LA32_414>='0' && LA32_414<='9')||(LA32_414>='A' && LA32_414<='Z')||LA32_414=='\\'||LA32_414=='_'||(LA32_414>='a' && LA32_414<='z')) ) {
-                                            alt32=129;
-                                        }
-                                        else {
-                                            alt32=7;}
-                                    }
-                                    else {
-                                        alt32=129;}
-                                }
-                                else {
-                                    alt32=129;}
-                            }
-                            else {
-                                alt32=129;}
-                        }
-                        else {
-                            alt32=129;}
-                        }
-                        break;
                     case 's':
                         {
-                        int LA32_241 = input.LA(5);
+                        int LA34_240 = input.LA(5);
 
-                        if ( (LA32_241=='t') ) {
-                            int LA32_301 = input.LA(6);
+                        if ( (LA34_240=='t') ) {
+                            int LA34_300 = input.LA(6);
 
-                            if ( (LA32_301=='$'||(LA32_301>='0' && LA32_301<='9')||(LA32_301>='A' && LA32_301<='Z')||LA32_301=='\\'||LA32_301=='_'||(LA32_301>='a' && LA32_301<='z')) ) {
-                                alt32=129;
+                            if ( (LA34_300=='$'||(LA34_300>='0' && LA34_300<='9')||(LA34_300>='A' && LA34_300<='Z')||LA34_300=='\\'||LA34_300=='_'||(LA34_300>='a' && LA34_300<='z')) ) {
+                                alt34=129;
                             }
                             else {
-                                alt32=41;}
+                                alt34=41;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
+                        }
+                        break;
+                    case 't':
+                        {
+                        int LA34_241 = input.LA(5);
+
+                        if ( (LA34_241=='i') ) {
+                            int LA34_301 = input.LA(6);
+
+                            if ( (LA34_301=='n') ) {
+                                int LA34_352 = input.LA(7);
+
+                                if ( (LA34_352=='u') ) {
+                                    int LA34_388 = input.LA(8);
+
+                                    if ( (LA34_388=='e') ) {
+                                        int LA34_414 = input.LA(9);
+
+                                        if ( (LA34_414=='$'||(LA34_414>='0' && LA34_414<='9')||(LA34_414>='A' && LA34_414<='Z')||LA34_414=='\\'||LA34_414=='_'||(LA34_414>='a' && LA34_414<='z')) ) {
+                                            alt34=129;
+                                        }
+                                        else {
+                                            alt34=7;}
+                                    }
+                                    else {
+                                        alt34=129;}
+                                }
+                                else {
+                                    alt34=129;}
+                            }
+                            else {
+                                alt34=129;}
+                        }
+                        else {
+                            alt34=129;}
                         }
                         break;
                     default:
-                        alt32=129;}
+                        alt34=129;}
 
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
                 }
                 break;
             case 'l':
                 {
-                int LA32_66 = input.LA(3);
+                int LA34_66 = input.LA(3);
 
-                if ( (LA32_66=='a') ) {
-                    int LA32_165 = input.LA(4);
+                if ( (LA34_66=='a') ) {
+                    int LA34_165 = input.LA(4);
 
-                    if ( (LA32_165=='s') ) {
-                        int LA32_242 = input.LA(5);
+                    if ( (LA34_165=='s') ) {
+                        int LA34_242 = input.LA(5);
 
-                        if ( (LA32_242=='s') ) {
-                            int LA32_302 = input.LA(6);
+                        if ( (LA34_242=='s') ) {
+                            int LA34_302 = input.LA(6);
 
-                            if ( (LA32_302=='$'||(LA32_302>='0' && LA32_302<='9')||(LA32_302>='A' && LA32_302<='Z')||LA32_302=='\\'||LA32_302=='_'||(LA32_302>='a' && LA32_302<='z')) ) {
-                                alt32=129;
+                            if ( (LA34_302=='$'||(LA34_302>='0' && LA34_302<='9')||(LA34_302>='A' && LA34_302<='Z')||LA34_302=='\\'||LA34_302=='_'||(LA34_302>='a' && LA34_302<='z')) ) {
+                                alt34=129;
                             }
                             else {
-                                alt32=40;}
+                                alt34=40;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
                 }
                 break;
             case 'h':
                 {
-                int LA32_67 = input.LA(3);
+                int LA34_67 = input.LA(3);
 
-                if ( (LA32_67=='a') ) {
-                    int LA32_166 = input.LA(4);
+                if ( (LA34_67=='a') ) {
+                    int LA34_166 = input.LA(4);
 
-                    if ( (LA32_166=='r') ) {
-                        int LA32_243 = input.LA(5);
+                    if ( (LA34_166=='r') ) {
+                        int LA34_243 = input.LA(5);
 
-                        if ( (LA32_243=='$'||(LA32_243>='0' && LA32_243<='9')||(LA32_243>='A' && LA32_243<='Z')||LA32_243=='\\'||LA32_243=='_'||(LA32_243>='a' && LA32_243<='z')) ) {
-                            alt32=129;
+                        if ( (LA34_243=='$'||(LA34_243>='0' && LA34_243<='9')||(LA34_243>='A' && LA34_243<='Z')||LA34_243=='\\'||LA34_243=='_'||(LA34_243>='a' && LA34_243<='z')) ) {
+                            alt34=129;
                         }
                         else {
-                            alt32=39;}
+                            alt34=39;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
                 }
                 break;
             case 'a':
@@ -5482,51 +5577,51 @@
                 switch ( input.LA(3) ) {
                 case 't':
                     {
-                    int LA32_167 = input.LA(4);
+                    int LA34_167 = input.LA(4);
 
-                    if ( (LA32_167=='c') ) {
-                        int LA32_244 = input.LA(5);
+                    if ( (LA34_167=='c') ) {
+                        int LA34_244 = input.LA(5);
 
-                        if ( (LA32_244=='h') ) {
-                            int LA32_304 = input.LA(6);
+                        if ( (LA34_244=='h') ) {
+                            int LA34_304 = input.LA(6);
 
-                            if ( (LA32_304=='$'||(LA32_304>='0' && LA32_304<='9')||(LA32_304>='A' && LA32_304<='Z')||LA32_304=='\\'||LA32_304=='_'||(LA32_304>='a' && LA32_304<='z')) ) {
-                                alt32=129;
+                            if ( (LA34_304=='$'||(LA34_304>='0' && LA34_304<='9')||(LA34_304>='A' && LA34_304<='Z')||LA34_304=='\\'||LA34_304=='_'||(LA34_304>='a' && LA34_304<='z')) ) {
+                                alt34=129;
                             }
                             else {
-                                alt32=6;}
+                                alt34=6;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                     }
                     break;
                 case 's':
                     {
-                    int LA32_168 = input.LA(4);
+                    int LA34_168 = input.LA(4);
 
-                    if ( (LA32_168=='e') ) {
-                        int LA32_245 = input.LA(5);
+                    if ( (LA34_168=='e') ) {
+                        int LA34_245 = input.LA(5);
 
-                        if ( (LA32_245=='$'||(LA32_245>='0' && LA32_245<='9')||(LA32_245>='A' && LA32_245<='Z')||LA32_245=='\\'||LA32_245=='_'||(LA32_245>='a' && LA32_245<='z')) ) {
-                            alt32=129;
+                        if ( (LA34_245=='$'||(LA34_245>='0' && LA34_245<='9')||(LA34_245>='A' && LA34_245<='Z')||LA34_245=='\\'||LA34_245=='_'||(LA34_245>='a' && LA34_245<='z')) ) {
+                            alt34=129;
                         }
                         else {
-                            alt32=5;}
+                            alt34=5;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                     }
                     break;
                 default:
-                    alt32=129;}
+                    alt34=129;}
 
                 }
                 break;
             default:
-                alt32=129;}
+                alt34=129;}
 
             }
             break;
@@ -5538,31 +5633,31 @@
                 switch ( input.LA(3) ) {
                 case 'u':
                     {
-                    int LA32_169 = input.LA(4);
+                    int LA34_169 = input.LA(4);
 
-                    if ( (LA32_169=='b') ) {
-                        int LA32_246 = input.LA(5);
+                    if ( (LA34_169=='b') ) {
+                        int LA34_246 = input.LA(5);
 
-                        if ( (LA32_246=='l') ) {
-                            int LA32_306 = input.LA(6);
+                        if ( (LA34_246=='l') ) {
+                            int LA34_306 = input.LA(6);
 
-                            if ( (LA32_306=='e') ) {
-                                int LA32_355 = input.LA(7);
+                            if ( (LA34_306=='e') ) {
+                                int LA34_355 = input.LA(7);
 
-                                if ( (LA32_355=='$'||(LA32_355>='0' && LA32_355<='9')||(LA32_355>='A' && LA32_355<='Z')||LA32_355=='\\'||LA32_355=='_'||(LA32_355>='a' && LA32_355<='z')) ) {
-                                    alt32=129;
+                                if ( (LA34_355=='$'||(LA34_355>='0' && LA34_355<='9')||(LA34_355>='A' && LA34_355<='Z')||LA34_355=='\\'||LA34_355=='_'||(LA34_355>='a' && LA34_355<='z')) ) {
+                                    alt34=129;
                                 }
                                 else {
-                                    alt32=43;}
+                                    alt34=43;}
                             }
                             else {
-                                alt32=129;}
+                                alt34=129;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                     }
                     break;
                 case '$':
@@ -5630,284 +5725,368 @@
                 case 'y':
                 case 'z':
                     {
-                    alt32=129;
+                    alt34=129;
                     }
                     break;
                 default:
-                    alt32=10;}
+                    alt34=10;}
 
                 }
                 break;
             case 'e':
                 {
                 switch ( input.LA(3) ) {
-                case 'b':
-                    {
-                    int LA32_171 = input.LA(4);
-
-                    if ( (LA32_171=='u') ) {
-                        int LA32_247 = input.LA(5);
-
-                        if ( (LA32_247=='g') ) {
-                            int LA32_307 = input.LA(6);
-
-                            if ( (LA32_307=='g') ) {
-                                int LA32_356 = input.LA(7);
-
-                                if ( (LA32_356=='e') ) {
-                                    int LA32_390 = input.LA(8);
-
-                                    if ( (LA32_390=='r') ) {
-                                        int LA32_415 = input.LA(9);
-
-                                        if ( (LA32_415=='$'||(LA32_415>='0' && LA32_415<='9')||(LA32_415>='A' && LA32_415<='Z')||LA32_415=='\\'||LA32_415=='_'||(LA32_415>='a' && LA32_415<='z')) ) {
-                                            alt32=129;
-                                        }
-                                        else {
-                                            alt32=42;}
-                                    }
-                                    else {
-                                        alt32=129;}
-                                }
-                                else {
-                                    alt32=129;}
-                            }
-                            else {
-                                alt32=129;}
-                        }
-                        else {
-                            alt32=129;}
-                    }
-                    else {
-                        alt32=129;}
-                    }
-                    break;
                 case 'l':
                     {
-                    int LA32_172 = input.LA(4);
+                    int LA34_171 = input.LA(4);
 
-                    if ( (LA32_172=='e') ) {
-                        int LA32_248 = input.LA(5);
+                    if ( (LA34_171=='e') ) {
+                        int LA34_247 = input.LA(5);
 
-                        if ( (LA32_248=='t') ) {
-                            int LA32_308 = input.LA(6);
+                        if ( (LA34_247=='t') ) {
+                            int LA34_307 = input.LA(6);
 
-                            if ( (LA32_308=='e') ) {
-                                int LA32_357 = input.LA(7);
+                            if ( (LA34_307=='e') ) {
+                                int LA34_356 = input.LA(7);
 
-                                if ( (LA32_357=='$'||(LA32_357>='0' && LA32_357<='9')||(LA32_357>='A' && LA32_357<='Z')||LA32_357=='\\'||LA32_357=='_'||(LA32_357>='a' && LA32_357<='z')) ) {
-                                    alt32=129;
+                                if ( (LA34_356=='$'||(LA34_356>='0' && LA34_356<='9')||(LA34_356>='A' && LA34_356<='Z')||LA34_356=='\\'||LA34_356=='_'||(LA34_356>='a' && LA34_356<='z')) ) {
+                                    alt34=129;
                                 }
                                 else {
-                                    alt32=9;}
+                                    alt34=9;}
                             }
                             else {
-                                alt32=129;}
+                                alt34=129;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                     }
                     break;
                 case 'f':
                     {
-                    int LA32_173 = input.LA(4);
+                    int LA34_172 = input.LA(4);
 
-                    if ( (LA32_173=='a') ) {
-                        int LA32_249 = input.LA(5);
+                    if ( (LA34_172=='a') ) {
+                        int LA34_248 = input.LA(5);
 
-                        if ( (LA32_249=='u') ) {
-                            int LA32_309 = input.LA(6);
+                        if ( (LA34_248=='u') ) {
+                            int LA34_308 = input.LA(6);
 
-                            if ( (LA32_309=='l') ) {
-                                int LA32_358 = input.LA(7);
+                            if ( (LA34_308=='l') ) {
+                                int LA34_357 = input.LA(7);
 
-                                if ( (LA32_358=='t') ) {
-                                    int LA32_392 = input.LA(8);
+                                if ( (LA34_357=='t') ) {
+                                    int LA34_391 = input.LA(8);
 
-                                    if ( (LA32_392=='$'||(LA32_392>='0' && LA32_392<='9')||(LA32_392>='A' && LA32_392<='Z')||LA32_392=='\\'||LA32_392=='_'||(LA32_392>='a' && LA32_392<='z')) ) {
-                                        alt32=129;
+                                    if ( (LA34_391=='$'||(LA34_391>='0' && LA34_391<='9')||(LA34_391>='A' && LA34_391<='Z')||LA34_391=='\\'||LA34_391=='_'||(LA34_391>='a' && LA34_391<='z')) ) {
+                                        alt34=129;
                                     }
                                     else {
-                                        alt32=8;}
+                                        alt34=8;}
                                 }
                                 else {
-                                    alt32=129;}
+                                    alt34=129;}
                             }
                             else {
-                                alt32=129;}
+                                alt34=129;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
+                    }
+                    break;
+                case 'b':
+                    {
+                    int LA34_173 = input.LA(4);
+
+                    if ( (LA34_173=='u') ) {
+                        int LA34_249 = input.LA(5);
+
+                        if ( (LA34_249=='g') ) {
+                            int LA34_309 = input.LA(6);
+
+                            if ( (LA34_309=='g') ) {
+                                int LA34_358 = input.LA(7);
+
+                                if ( (LA34_358=='e') ) {
+                                    int LA34_392 = input.LA(8);
+
+                                    if ( (LA34_392=='r') ) {
+                                        int LA34_416 = input.LA(9);
+
+                                        if ( (LA34_416=='$'||(LA34_416>='0' && LA34_416<='9')||(LA34_416>='A' && LA34_416<='Z')||LA34_416=='\\'||LA34_416=='_'||(LA34_416>='a' && LA34_416<='z')) ) {
+                                            alt34=129;
+                                        }
+                                        else {
+                                            alt34=42;}
+                                    }
+                                    else {
+                                        alt34=129;}
+                                }
+                                else {
+                                    alt34=129;}
+                            }
+                            else {
+                                alt34=129;}
+                        }
+                        else {
+                            alt34=129;}
+                    }
+                    else {
+                        alt34=129;}
                     }
                     break;
                 default:
-                    alt32=129;}
+                    alt34=129;}
 
                 }
                 break;
             default:
-                alt32=129;}
+                alt34=129;}
 
             }
             break;
         case 'e':
             {
             switch ( input.LA(2) ) {
+            case 'n':
+                {
+                int LA34_71 = input.LA(3);
+
+                if ( (LA34_71=='u') ) {
+                    int LA34_174 = input.LA(4);
+
+                    if ( (LA34_174=='m') ) {
+                        int LA34_250 = input.LA(5);
+
+                        if ( (LA34_250=='$'||(LA34_250>='0' && LA34_250<='9')||(LA34_250>='A' && LA34_250<='Z')||LA34_250=='\\'||LA34_250=='_'||(LA34_250>='a' && LA34_250<='z')) ) {
+                            alt34=129;
+                        }
+                        else {
+                            alt34=44;}
+                    }
+                    else {
+                        alt34=129;}
+                }
+                else {
+                    alt34=129;}
+                }
+                break;
             case 'x':
                 {
                 switch ( input.LA(3) ) {
                 case 't':
                     {
-                    int LA32_174 = input.LA(4);
+                    int LA34_175 = input.LA(4);
 
-                    if ( (LA32_174=='e') ) {
-                        int LA32_250 = input.LA(5);
+                    if ( (LA34_175=='e') ) {
+                        int LA34_251 = input.LA(5);
 
-                        if ( (LA32_250=='n') ) {
-                            int LA32_310 = input.LA(6);
+                        if ( (LA34_251=='n') ) {
+                            int LA34_311 = input.LA(6);
 
-                            if ( (LA32_310=='d') ) {
-                                int LA32_359 = input.LA(7);
+                            if ( (LA34_311=='d') ) {
+                                int LA34_359 = input.LA(7);
 
-                                if ( (LA32_359=='s') ) {
-                                    int LA32_393 = input.LA(8);
+                                if ( (LA34_359=='s') ) {
+                                    int LA34_393 = input.LA(8);
 
-                                    if ( (LA32_393=='$'||(LA32_393>='0' && LA32_393<='9')||(LA32_393>='A' && LA32_393<='Z')||LA32_393=='\\'||LA32_393=='_'||(LA32_393>='a' && LA32_393<='z')) ) {
-                                        alt32=129;
+                                    if ( (LA34_393=='$'||(LA34_393>='0' && LA34_393<='9')||(LA34_393>='A' && LA34_393<='Z')||LA34_393=='\\'||LA34_393=='_'||(LA34_393>='a' && LA34_393<='z')) ) {
+                                        alt34=129;
                                     }
                                     else {
-                                        alt32=46;}
+                                        alt34=46;}
                                 }
                                 else {
-                                    alt32=129;}
+                                    alt34=129;}
                             }
                             else {
-                                alt32=129;}
+                                alt34=129;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                     }
                     break;
                 case 'p':
                     {
-                    int LA32_175 = input.LA(4);
+                    int LA34_176 = input.LA(4);
 
-                    if ( (LA32_175=='o') ) {
-                        int LA32_251 = input.LA(5);
+                    if ( (LA34_176=='o') ) {
+                        int LA34_252 = input.LA(5);
 
-                        if ( (LA32_251=='r') ) {
-                            int LA32_311 = input.LA(6);
+                        if ( (LA34_252=='r') ) {
+                            int LA34_312 = input.LA(6);
 
-                            if ( (LA32_311=='t') ) {
-                                int LA32_360 = input.LA(7);
+                            if ( (LA34_312=='t') ) {
+                                int LA34_360 = input.LA(7);
 
-                                if ( (LA32_360=='$'||(LA32_360>='0' && LA32_360<='9')||(LA32_360>='A' && LA32_360<='Z')||LA32_360=='\\'||LA32_360=='_'||(LA32_360>='a' && LA32_360<='z')) ) {
-                                    alt32=129;
+                                if ( (LA34_360=='$'||(LA34_360>='0' && LA34_360<='9')||(LA34_360>='A' && LA34_360<='Z')||LA34_360=='\\'||LA34_360=='_'||(LA34_360>='a' && LA34_360<='z')) ) {
+                                    alt34=129;
                                 }
                                 else {
-                                    alt32=45;}
+                                    alt34=45;}
                             }
                             else {
-                                alt32=129;}
+                                alt34=129;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                     }
                     break;
                 default:
-                    alt32=129;}
+                    alt34=129;}
 
                 }
                 break;
-            case 'n':
-                {
-                int LA32_72 = input.LA(3);
-
-                if ( (LA32_72=='u') ) {
-                    int LA32_176 = input.LA(4);
-
-                    if ( (LA32_176=='m') ) {
-                        int LA32_252 = input.LA(5);
-
-                        if ( (LA32_252=='$'||(LA32_252>='0' && LA32_252<='9')||(LA32_252>='A' && LA32_252<='Z')||LA32_252=='\\'||LA32_252=='_'||(LA32_252>='a' && LA32_252<='z')) ) {
-                            alt32=129;
-                        }
-                        else {
-                            alt32=44;}
-                    }
-                    else {
-                        alt32=129;}
-                }
-                else {
-                    alt32=129;}
-                }
-                break;
-            case 'a':
-                {
-                int LA32_73 = input.LA(3);
-
-                if ( (LA32_73=='c') ) {
-                    int LA32_177 = input.LA(4);
-
-                    if ( (LA32_177=='h') ) {
-                        int LA32_253 = input.LA(5);
-
-                        if ( (LA32_253=='$'||(LA32_253>='0' && LA32_253<='9')||(LA32_253>='A' && LA32_253<='Z')||LA32_253=='\\'||LA32_253=='_'||(LA32_253>='a' && LA32_253<='z')) ) {
-                            alt32=129;
-                        }
-                        else {
-                            alt32=14;}
-                    }
-                    else {
-                        alt32=129;}
-                }
-                else {
-                    alt32=129;}
-                }
-                break;
             case 'l':
                 {
-                int LA32_74 = input.LA(3);
+                int LA34_73 = input.LA(3);
 
-                if ( (LA32_74=='s') ) {
-                    int LA32_178 = input.LA(4);
+                if ( (LA34_73=='s') ) {
+                    int LA34_177 = input.LA(4);
 
-                    if ( (LA32_178=='e') ) {
-                        int LA32_254 = input.LA(5);
+                    if ( (LA34_177=='e') ) {
+                        int LA34_253 = input.LA(5);
 
-                        if ( (LA32_254=='$'||(LA32_254>='0' && LA32_254<='9')||(LA32_254>='A' && LA32_254<='Z')||LA32_254=='\\'||LA32_254=='_'||(LA32_254>='a' && LA32_254<='z')) ) {
-                            alt32=129;
+                        if ( (LA34_253=='$'||(LA34_253>='0' && LA34_253<='9')||(LA34_253>='A' && LA34_253<='Z')||LA34_253=='\\'||LA34_253=='_'||(LA34_253>='a' && LA34_253<='z')) ) {
+                            alt34=129;
                         }
                         else {
-                            alt32=11;}
+                            alt34=11;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
+                }
+                break;
+            case 'a':
+                {
+                int LA34_74 = input.LA(3);
+
+                if ( (LA34_74=='c') ) {
+                    int LA34_178 = input.LA(4);
+
+                    if ( (LA34_178=='h') ) {
+                        int LA34_254 = input.LA(5);
+
+                        if ( (LA34_254=='$'||(LA34_254>='0' && LA34_254<='9')||(LA34_254>='A' && LA34_254<='Z')||LA34_254=='\\'||LA34_254=='_'||(LA34_254>='a' && LA34_254<='z')) ) {
+                            alt34=129;
+                        }
+                        else {
+                            alt34=14;}
+                    }
+                    else {
+                        alt34=129;}
+                }
+                else {
+                    alt34=129;}
                 }
                 break;
             default:
-                alt32=129;}
+                alt34=129;}
 
             }
             break;
         case 'i':
             {
             switch ( input.LA(2) ) {
+            case 'm':
+                {
+                int LA34_75 = input.LA(3);
+
+                if ( (LA34_75=='p') ) {
+                    switch ( input.LA(4) ) {
+                    case 'o':
+                        {
+                        int LA34_255 = input.LA(5);
+
+                        if ( (LA34_255=='r') ) {
+                            int LA34_315 = input.LA(6);
+
+                            if ( (LA34_315=='t') ) {
+                                int LA34_361 = input.LA(7);
+
+                                if ( (LA34_361=='$'||(LA34_361>='0' && LA34_361<='9')||(LA34_361>='A' && LA34_361<='Z')||LA34_361=='\\'||LA34_361=='_'||(LA34_361>='a' && LA34_361<='z')) ) {
+                                    alt34=129;
+                                }
+                                else {
+                                    alt34=51;}
+                            }
+                            else {
+                                alt34=129;}
+                        }
+                        else {
+                            alt34=129;}
+                        }
+                        break;
+                    case 'l':
+                        {
+                        int LA34_256 = input.LA(5);
+
+                        if ( (LA34_256=='e') ) {
+                            int LA34_316 = input.LA(6);
+
+                            if ( (LA34_316=='m') ) {
+                                int LA34_362 = input.LA(7);
+
+                                if ( (LA34_362=='e') ) {
+                                    int LA34_396 = input.LA(8);
+
+                                    if ( (LA34_396=='n') ) {
+                                        int LA34_418 = input.LA(9);
+
+                                        if ( (LA34_418=='t') ) {
+                                            int LA34_432 = input.LA(10);
+
+                                            if ( (LA34_432=='s') ) {
+                                                int LA34_441 = input.LA(11);
+
+                                                if ( (LA34_441=='$'||(LA34_441>='0' && LA34_441<='9')||(LA34_441>='A' && LA34_441<='Z')||LA34_441=='\\'||LA34_441=='_'||(LA34_441>='a' && LA34_441<='z')) ) {
+                                                    alt34=129;
+                                                }
+                                                else {
+                                                    alt34=50;}
+                                            }
+                                            else {
+                                                alt34=129;}
+                                        }
+                                        else {
+                                            alt34=129;}
+                                    }
+                                    else {
+                                        alt34=129;}
+                                }
+                                else {
+                                    alt34=129;}
+                            }
+                            else {
+                                alt34=129;}
+                        }
+                        else {
+                            alt34=129;}
+                        }
+                        break;
+                    default:
+                        alt34=129;}
+
+                }
+                else {
+                    alt34=129;}
+                }
+                break;
             case 'n':
                 {
                 switch ( input.LA(3) ) {
@@ -5916,43 +6095,43 @@
                     switch ( input.LA(4) ) {
                     case 'e':
                         {
-                        int LA32_255 = input.LA(5);
+                        int LA34_257 = input.LA(5);
 
-                        if ( (LA32_255=='r') ) {
-                            int LA32_315 = input.LA(6);
+                        if ( (LA34_257=='r') ) {
+                            int LA34_317 = input.LA(6);
 
-                            if ( (LA32_315=='f') ) {
-                                int LA32_361 = input.LA(7);
+                            if ( (LA34_317=='f') ) {
+                                int LA34_363 = input.LA(7);
 
-                                if ( (LA32_361=='a') ) {
-                                    int LA32_395 = input.LA(8);
+                                if ( (LA34_363=='a') ) {
+                                    int LA34_397 = input.LA(8);
 
-                                    if ( (LA32_395=='c') ) {
-                                        int LA32_418 = input.LA(9);
+                                    if ( (LA34_397=='c') ) {
+                                        int LA34_419 = input.LA(9);
 
-                                        if ( (LA32_418=='e') ) {
-                                            int LA32_432 = input.LA(10);
+                                        if ( (LA34_419=='e') ) {
+                                            int LA34_433 = input.LA(10);
 
-                                            if ( (LA32_432=='$'||(LA32_432>='0' && LA32_432<='9')||(LA32_432>='A' && LA32_432<='Z')||LA32_432=='\\'||LA32_432=='_'||(LA32_432>='a' && LA32_432<='z')) ) {
-                                                alt32=129;
+                                            if ( (LA34_433=='$'||(LA34_433>='0' && LA34_433<='9')||(LA34_433>='A' && LA34_433<='Z')||LA34_433=='\\'||LA34_433=='_'||(LA34_433>='a' && LA34_433<='z')) ) {
+                                                alt34=129;
                                             }
                                             else {
-                                                alt32=53;}
+                                                alt34=53;}
                                         }
                                         else {
-                                            alt32=129;}
+                                            alt34=129;}
                                     }
                                     else {
-                                        alt32=129;}
+                                        alt34=129;}
                                 }
                                 else {
-                                    alt32=129;}
+                                    alt34=129;}
                             }
                             else {
-                                alt32=129;}
+                                alt34=129;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                         }
                         break;
                     case '$':
@@ -6020,65 +6199,65 @@
                     case 'y':
                     case 'z':
                         {
-                        alt32=129;
+                        alt34=129;
                         }
                         break;
                     default:
-                        alt32=52;}
+                        alt34=52;}
 
                     }
                     break;
                 case 's':
                     {
-                    int LA32_180 = input.LA(4);
+                    int LA34_181 = input.LA(4);
 
-                    if ( (LA32_180=='t') ) {
-                        int LA32_257 = input.LA(5);
+                    if ( (LA34_181=='t') ) {
+                        int LA34_259 = input.LA(5);
 
-                        if ( (LA32_257=='a') ) {
-                            int LA32_316 = input.LA(6);
+                        if ( (LA34_259=='a') ) {
+                            int LA34_318 = input.LA(6);
 
-                            if ( (LA32_316=='n') ) {
-                                int LA32_362 = input.LA(7);
+                            if ( (LA34_318=='n') ) {
+                                int LA34_364 = input.LA(7);
 
-                                if ( (LA32_362=='c') ) {
-                                    int LA32_396 = input.LA(8);
+                                if ( (LA34_364=='c') ) {
+                                    int LA34_398 = input.LA(8);
 
-                                    if ( (LA32_396=='e') ) {
-                                        int LA32_419 = input.LA(9);
+                                    if ( (LA34_398=='e') ) {
+                                        int LA34_420 = input.LA(9);
 
-                                        if ( (LA32_419=='o') ) {
-                                            int LA32_433 = input.LA(10);
+                                        if ( (LA34_420=='o') ) {
+                                            int LA34_434 = input.LA(10);
 
-                                            if ( (LA32_433=='f') ) {
-                                                int LA32_442 = input.LA(11);
+                                            if ( (LA34_434=='f') ) {
+                                                int LA34_443 = input.LA(11);
 
-                                                if ( (LA32_442=='$'||(LA32_442>='0' && LA32_442<='9')||(LA32_442>='A' && LA32_442<='Z')||LA32_442=='\\'||LA32_442=='_'||(LA32_442>='a' && LA32_442<='z')) ) {
-                                                    alt32=129;
+                                                if ( (LA34_443=='$'||(LA34_443>='0' && LA34_443<='9')||(LA34_443>='A' && LA34_443<='Z')||LA34_443=='\\'||LA34_443=='_'||(LA34_443>='a' && LA34_443<='z')) ) {
+                                                    alt34=129;
                                                 }
                                                 else {
-                                                    alt32=18;}
+                                                    alt34=18;}
                                             }
                                             else {
-                                                alt32=129;}
+                                                alt34=129;}
                                         }
                                         else {
-                                            alt32=129;}
+                                            alt34=129;}
                                     }
                                     else {
-                                        alt32=129;}
+                                        alt34=129;}
                                 }
                                 else {
-                                    alt32=129;}
+                                    alt34=129;}
                             }
                             else {
-                                alt32=129;}
+                                alt34=129;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                     }
                     break;
                 case '$':
@@ -6145,153 +6324,69 @@
                 case 'y':
                 case 'z':
                     {
-                    alt32=129;
+                    alt34=129;
                     }
                     break;
                 default:
-                    alt32=17;}
+                    alt34=17;}
 
                 }
                 break;
-            case 'm':
-                {
-                int LA32_76 = input.LA(3);
-
-                if ( (LA32_76=='p') ) {
-                    switch ( input.LA(4) ) {
-                    case 'o':
-                        {
-                        int LA32_258 = input.LA(5);
-
-                        if ( (LA32_258=='r') ) {
-                            int LA32_317 = input.LA(6);
-
-                            if ( (LA32_317=='t') ) {
-                                int LA32_363 = input.LA(7);
-
-                                if ( (LA32_363=='$'||(LA32_363>='0' && LA32_363<='9')||(LA32_363>='A' && LA32_363<='Z')||LA32_363=='\\'||LA32_363=='_'||(LA32_363>='a' && LA32_363<='z')) ) {
-                                    alt32=129;
-                                }
-                                else {
-                                    alt32=51;}
-                            }
-                            else {
-                                alt32=129;}
-                        }
-                        else {
-                            alt32=129;}
-                        }
-                        break;
-                    case 'l':
-                        {
-                        int LA32_259 = input.LA(5);
-
-                        if ( (LA32_259=='e') ) {
-                            int LA32_318 = input.LA(6);
-
-                            if ( (LA32_318=='m') ) {
-                                int LA32_364 = input.LA(7);
-
-                                if ( (LA32_364=='e') ) {
-                                    int LA32_398 = input.LA(8);
-
-                                    if ( (LA32_398=='n') ) {
-                                        int LA32_420 = input.LA(9);
-
-                                        if ( (LA32_420=='t') ) {
-                                            int LA32_434 = input.LA(10);
-
-                                            if ( (LA32_434=='s') ) {
-                                                int LA32_443 = input.LA(11);
-
-                                                if ( (LA32_443=='$'||(LA32_443>='0' && LA32_443<='9')||(LA32_443>='A' && LA32_443<='Z')||LA32_443=='\\'||LA32_443=='_'||(LA32_443>='a' && LA32_443<='z')) ) {
-                                                    alt32=129;
-                                                }
-                                                else {
-                                                    alt32=50;}
-                                            }
-                                            else {
-                                                alt32=129;}
-                                        }
-                                        else {
-                                            alt32=129;}
-                                    }
-                                    else {
-                                        alt32=129;}
-                                }
-                                else {
-                                    alt32=129;}
-                            }
-                            else {
-                                alt32=129;}
-                        }
-                        else {
-                            alt32=129;}
-                        }
-                        break;
-                    default:
-                        alt32=129;}
-
-                }
-                else {
-                    alt32=129;}
-                }
-                break;
             case 'f':
                 {
-                int LA32_77 = input.LA(3);
+                int LA34_77 = input.LA(3);
 
-                if ( (LA32_77=='$'||(LA32_77>='0' && LA32_77<='9')||(LA32_77>='A' && LA32_77<='Z')||LA32_77=='\\'||LA32_77=='_'||(LA32_77>='a' && LA32_77<='z')) ) {
-                    alt32=129;
+                if ( (LA34_77=='$'||(LA34_77>='0' && LA34_77<='9')||(LA34_77>='A' && LA34_77<='Z')||LA34_77=='\\'||LA34_77=='_'||(LA34_77>='a' && LA34_77<='z')) ) {
+                    alt34=129;
                 }
                 else {
-                    alt32=16;}
+                    alt34=16;}
                 }
                 break;
             default:
-                alt32=129;}
+                alt34=129;}
 
             }
             break;
         case 'r':
             {
-            int LA32_9 = input.LA(2);
+            int LA34_9 = input.LA(2);
 
-            if ( (LA32_9=='e') ) {
-                int LA32_78 = input.LA(3);
+            if ( (LA34_9=='e') ) {
+                int LA34_78 = input.LA(3);
 
-                if ( (LA32_78=='t') ) {
-                    int LA32_184 = input.LA(4);
+                if ( (LA34_78=='t') ) {
+                    int LA34_184 = input.LA(4);
 
-                    if ( (LA32_184=='u') ) {
-                        int LA32_260 = input.LA(5);
+                    if ( (LA34_184=='u') ) {
+                        int LA34_260 = input.LA(5);
 
-                        if ( (LA32_260=='r') ) {
-                            int LA32_319 = input.LA(6);
+                        if ( (LA34_260=='r') ) {
+                            int LA34_319 = input.LA(6);
 
-                            if ( (LA32_319=='n') ) {
-                                int LA32_365 = input.LA(7);
+                            if ( (LA34_319=='n') ) {
+                                int LA34_365 = input.LA(7);
 
-                                if ( (LA32_365=='$'||(LA32_365>='0' && LA32_365<='9')||(LA32_365>='A' && LA32_365<='Z')||LA32_365=='\\'||LA32_365=='_'||(LA32_365>='a' && LA32_365<='z')) ) {
-                                    alt32=129;
+                                if ( (LA34_365=='$'||(LA34_365>='0' && LA34_365<='9')||(LA34_365>='A' && LA34_365<='Z')||LA34_365=='\\'||LA34_365=='_'||(LA34_365>='a' && LA34_365<='z')) ) {
+                                    alt34=129;
                                 }
                                 else {
-                                    alt32=20;}
+                                    alt34=20;}
                             }
                             else {
-                                alt32=129;}
+                                alt34=129;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
             }
             else {
-                alt32=129;}
+                alt34=129;}
             }
             break;
         case 's':
@@ -6299,373 +6394,373 @@
             switch ( input.LA(2) ) {
             case 'e':
                 {
-                int LA32_79 = input.LA(3);
+                int LA34_79 = input.LA(3);
 
-                if ( (LA32_79=='t') ) {
-                    int LA32_185 = input.LA(4);
+                if ( (LA34_79=='t') ) {
+                    int LA34_185 = input.LA(4);
 
-                    if ( (LA32_185=='$'||(LA32_185>='0' && LA32_185<='9')||(LA32_185>='A' && LA32_185<='Z')||LA32_185=='\\'||LA32_185=='_'||(LA32_185>='a' && LA32_185<='z')) ) {
-                        alt32=129;
+                    if ( (LA34_185=='$'||(LA34_185>='0' && LA34_185<='9')||(LA34_185>='A' && LA34_185<='Z')||LA34_185=='\\'||LA34_185=='_'||(LA34_185>='a' && LA34_185<='z')) ) {
+                        alt34=129;
                     }
                     else {
-                        alt32=31;}
+                        alt34=31;}
                 }
                 else {
-                    alt32=129;}
-                }
-                break;
-            case 'h':
-                {
-                int LA32_80 = input.LA(3);
-
-                if ( (LA32_80=='o') ) {
-                    int LA32_186 = input.LA(4);
-
-                    if ( (LA32_186=='r') ) {
-                        int LA32_262 = input.LA(5);
-
-                        if ( (LA32_262=='t') ) {
-                            int LA32_320 = input.LA(6);
-
-                            if ( (LA32_320=='$'||(LA32_320>='0' && LA32_320<='9')||(LA32_320>='A' && LA32_320<='Z')||LA32_320=='\\'||LA32_320=='_'||(LA32_320>='a' && LA32_320<='z')) ) {
-                                alt32=129;
-                            }
-                            else {
-                                alt32=60;}
-                        }
-                        else {
-                            alt32=129;}
-                    }
-                    else {
-                        alt32=129;}
-                }
-                else {
-                    alt32=129;}
-                }
-                break;
-            case 't':
-                {
-                int LA32_81 = input.LA(3);
-
-                if ( (LA32_81=='a') ) {
-                    int LA32_187 = input.LA(4);
-
-                    if ( (LA32_187=='t') ) {
-                        int LA32_263 = input.LA(5);
-
-                        if ( (LA32_263=='i') ) {
-                            int LA32_321 = input.LA(6);
-
-                            if ( (LA32_321=='c') ) {
-                                int LA32_367 = input.LA(7);
-
-                                if ( (LA32_367=='$'||(LA32_367>='0' && LA32_367<='9')||(LA32_367>='A' && LA32_367<='Z')||LA32_367=='\\'||LA32_367=='_'||(LA32_367>='a' && LA32_367<='z')) ) {
-                                    alt32=129;
-                                }
-                                else {
-                                    alt32=61;}
-                            }
-                            else {
-                                alt32=129;}
-                        }
-                        else {
-                            alt32=129;}
-                    }
-                    else {
-                        alt32=129;}
-                }
-                else {
-                    alt32=129;}
-                }
-                break;
-            case 'u':
-                {
-                int LA32_82 = input.LA(3);
-
-                if ( (LA32_82=='p') ) {
-                    int LA32_188 = input.LA(4);
-
-                    if ( (LA32_188=='e') ) {
-                        int LA32_264 = input.LA(5);
-
-                        if ( (LA32_264=='r') ) {
-                            int LA32_322 = input.LA(6);
-
-                            if ( (LA32_322=='$'||(LA32_322>='0' && LA32_322<='9')||(LA32_322>='A' && LA32_322<='Z')||LA32_322=='\\'||LA32_322=='_'||(LA32_322>='a' && LA32_322<='z')) ) {
-                                alt32=129;
-                            }
-                            else {
-                                alt32=62;}
-                        }
-                        else {
-                            alt32=129;}
-                    }
-                    else {
-                        alt32=129;}
-                }
-                else {
-                    alt32=129;}
+                    alt34=129;}
                 }
                 break;
             case 'y':
                 {
-                int LA32_83 = input.LA(3);
+                int LA34_80 = input.LA(3);
 
-                if ( (LA32_83=='n') ) {
-                    int LA32_189 = input.LA(4);
+                if ( (LA34_80=='n') ) {
+                    int LA34_186 = input.LA(4);
 
-                    if ( (LA32_189=='c') ) {
-                        int LA32_265 = input.LA(5);
+                    if ( (LA34_186=='c') ) {
+                        int LA34_262 = input.LA(5);
 
-                        if ( (LA32_265=='h') ) {
-                            int LA32_323 = input.LA(6);
+                        if ( (LA34_262=='h') ) {
+                            int LA34_320 = input.LA(6);
 
-                            if ( (LA32_323=='r') ) {
-                                int LA32_369 = input.LA(7);
+                            if ( (LA34_320=='r') ) {
+                                int LA34_366 = input.LA(7);
 
-                                if ( (LA32_369=='o') ) {
-                                    int LA32_401 = input.LA(8);
+                                if ( (LA34_366=='o') ) {
+                                    int LA34_400 = input.LA(8);
 
-                                    if ( (LA32_401=='n') ) {
-                                        int LA32_421 = input.LA(9);
+                                    if ( (LA34_400=='n') ) {
+                                        int LA34_421 = input.LA(9);
 
-                                        if ( (LA32_421=='i') ) {
-                                            int LA32_435 = input.LA(10);
+                                        if ( (LA34_421=='i') ) {
+                                            int LA34_435 = input.LA(10);
 
-                                            if ( (LA32_435=='z') ) {
-                                                int LA32_444 = input.LA(11);
+                                            if ( (LA34_435=='z') ) {
+                                                int LA34_444 = input.LA(11);
 
-                                                if ( (LA32_444=='e') ) {
-                                                    int LA32_448 = input.LA(12);
+                                                if ( (LA34_444=='e') ) {
+                                                    int LA34_448 = input.LA(12);
 
-                                                    if ( (LA32_448=='d') ) {
-                                                        int LA32_449 = input.LA(13);
+                                                    if ( (LA34_448=='d') ) {
+                                                        int LA34_449 = input.LA(13);
 
-                                                        if ( (LA32_449=='$'||(LA32_449>='0' && LA32_449<='9')||(LA32_449>='A' && LA32_449<='Z')||LA32_449=='\\'||LA32_449=='_'||(LA32_449>='a' && LA32_449<='z')) ) {
-                                                            alt32=129;
+                                                        if ( (LA34_449=='$'||(LA34_449>='0' && LA34_449<='9')||(LA34_449>='A' && LA34_449<='Z')||LA34_449=='\\'||LA34_449=='_'||(LA34_449>='a' && LA34_449<='z')) ) {
+                                                            alt34=129;
                                                         }
                                                         else {
-                                                            alt32=63;}
+                                                            alt34=63;}
                                                     }
                                                     else {
-                                                        alt32=129;}
+                                                        alt34=129;}
                                                 }
                                                 else {
-                                                    alt32=129;}
+                                                    alt34=129;}
                                             }
                                             else {
-                                                alt32=129;}
+                                                alt34=129;}
                                         }
                                         else {
-                                            alt32=129;}
+                                            alt34=129;}
                                     }
                                     else {
-                                        alt32=129;}
+                                        alt34=129;}
                                 }
                                 else {
-                                    alt32=129;}
+                                    alt34=129;}
                             }
                             else {
-                                alt32=129;}
+                                alt34=129;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
+                }
+                break;
+            case 'u':
+                {
+                int LA34_81 = input.LA(3);
+
+                if ( (LA34_81=='p') ) {
+                    int LA34_187 = input.LA(4);
+
+                    if ( (LA34_187=='e') ) {
+                        int LA34_263 = input.LA(5);
+
+                        if ( (LA34_263=='r') ) {
+                            int LA34_321 = input.LA(6);
+
+                            if ( (LA34_321=='$'||(LA34_321>='0' && LA34_321<='9')||(LA34_321>='A' && LA34_321<='Z')||LA34_321=='\\'||LA34_321=='_'||(LA34_321>='a' && LA34_321<='z')) ) {
+                                alt34=129;
+                            }
+                            else {
+                                alt34=62;}
+                        }
+                        else {
+                            alt34=129;}
+                    }
+                    else {
+                        alt34=129;}
+                }
+                else {
+                    alt34=129;}
+                }
+                break;
+            case 'h':
+                {
+                int LA34_82 = input.LA(3);
+
+                if ( (LA34_82=='o') ) {
+                    int LA34_188 = input.LA(4);
+
+                    if ( (LA34_188=='r') ) {
+                        int LA34_264 = input.LA(5);
+
+                        if ( (LA34_264=='t') ) {
+                            int LA34_322 = input.LA(6);
+
+                            if ( (LA34_322=='$'||(LA34_322>='0' && LA34_322<='9')||(LA34_322>='A' && LA34_322<='Z')||LA34_322=='\\'||LA34_322=='_'||(LA34_322>='a' && LA34_322<='z')) ) {
+                                alt34=129;
+                            }
+                            else {
+                                alt34=60;}
+                        }
+                        else {
+                            alt34=129;}
+                    }
+                    else {
+                        alt34=129;}
+                }
+                else {
+                    alt34=129;}
+                }
+                break;
+            case 't':
+                {
+                int LA34_83 = input.LA(3);
+
+                if ( (LA34_83=='a') ) {
+                    int LA34_189 = input.LA(4);
+
+                    if ( (LA34_189=='t') ) {
+                        int LA34_265 = input.LA(5);
+
+                        if ( (LA34_265=='i') ) {
+                            int LA34_323 = input.LA(6);
+
+                            if ( (LA34_323=='c') ) {
+                                int LA34_369 = input.LA(7);
+
+                                if ( (LA34_369=='$'||(LA34_369>='0' && LA34_369<='9')||(LA34_369>='A' && LA34_369<='Z')||LA34_369=='\\'||LA34_369=='_'||(LA34_369>='a' && LA34_369<='z')) ) {
+                                    alt34=129;
+                                }
+                                else {
+                                    alt34=61;}
+                            }
+                            else {
+                                alt34=129;}
+                        }
+                        else {
+                            alt34=129;}
+                    }
+                    else {
+                        alt34=129;}
+                }
+                else {
+                    alt34=129;}
                 }
                 break;
             case 'w':
                 {
-                int LA32_84 = input.LA(3);
+                int LA34_84 = input.LA(3);
 
-                if ( (LA32_84=='i') ) {
-                    int LA32_190 = input.LA(4);
+                if ( (LA34_84=='i') ) {
+                    int LA34_190 = input.LA(4);
 
-                    if ( (LA32_190=='t') ) {
-                        int LA32_266 = input.LA(5);
+                    if ( (LA34_190=='t') ) {
+                        int LA34_266 = input.LA(5);
 
-                        if ( (LA32_266=='c') ) {
-                            int LA32_324 = input.LA(6);
+                        if ( (LA34_266=='c') ) {
+                            int LA34_324 = input.LA(6);
 
-                            if ( (LA32_324=='h') ) {
-                                int LA32_370 = input.LA(7);
+                            if ( (LA34_324=='h') ) {
+                                int LA34_370 = input.LA(7);
 
-                                if ( (LA32_370=='$'||(LA32_370>='0' && LA32_370<='9')||(LA32_370>='A' && LA32_370<='Z')||LA32_370=='\\'||LA32_370=='_'||(LA32_370>='a' && LA32_370<='z')) ) {
-                                    alt32=129;
+                                if ( (LA34_370=='$'||(LA34_370>='0' && LA34_370<='9')||(LA34_370>='A' && LA34_370<='Z')||LA34_370=='\\'||LA34_370=='_'||(LA34_370>='a' && LA34_370<='z')) ) {
+                                    alt34=129;
                                 }
                                 else {
-                                    alt32=21;}
+                                    alt34=21;}
                             }
                             else {
-                                alt32=129;}
+                                alt34=129;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
                 }
                 break;
             default:
-                alt32=129;}
+                alt34=129;}
 
             }
             break;
         case 'v':
             {
             switch ( input.LA(2) ) {
+            case 'a':
+                {
+                int LA34_85 = input.LA(3);
+
+                if ( (LA34_85=='r') ) {
+                    int LA34_191 = input.LA(4);
+
+                    if ( (LA34_191=='$'||(LA34_191>='0' && LA34_191<='9')||(LA34_191>='A' && LA34_191<='Z')||LA34_191=='\\'||LA34_191=='_'||(LA34_191>='a' && LA34_191<='z')) ) {
+                        alt34=129;
+                    }
+                    else {
+                        alt34=26;}
+                }
+                else {
+                    alt34=129;}
+                }
+                break;
             case 'o':
                 {
                 switch ( input.LA(3) ) {
                 case 'i':
                     {
-                    int LA32_191 = input.LA(4);
+                    int LA34_192 = input.LA(4);
 
-                    if ( (LA32_191=='d') ) {
-                        int LA32_267 = input.LA(5);
+                    if ( (LA34_192=='d') ) {
+                        int LA34_268 = input.LA(5);
 
-                        if ( (LA32_267=='$'||(LA32_267>='0' && LA32_267<='9')||(LA32_267>='A' && LA32_267<='Z')||LA32_267=='\\'||LA32_267=='_'||(LA32_267>='a' && LA32_267<='z')) ) {
-                            alt32=129;
+                        if ( (LA34_268=='$'||(LA34_268>='0' && LA34_268<='9')||(LA34_268>='A' && LA34_268<='Z')||LA34_268=='\\'||LA34_268=='_'||(LA34_268>='a' && LA34_268<='z')) ) {
+                            alt34=129;
                         }
                         else {
-                            alt32=27;}
+                            alt34=27;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                     }
                     break;
                 case 'l':
                     {
-                    int LA32_192 = input.LA(4);
+                    int LA34_193 = input.LA(4);
 
-                    if ( (LA32_192=='a') ) {
-                        int LA32_268 = input.LA(5);
+                    if ( (LA34_193=='a') ) {
+                        int LA34_269 = input.LA(5);
 
-                        if ( (LA32_268=='t') ) {
-                            int LA32_326 = input.LA(6);
+                        if ( (LA34_269=='t') ) {
+                            int LA34_326 = input.LA(6);
 
-                            if ( (LA32_326=='i') ) {
-                                int LA32_371 = input.LA(7);
+                            if ( (LA34_326=='i') ) {
+                                int LA34_371 = input.LA(7);
 
-                                if ( (LA32_371=='l') ) {
-                                    int LA32_403 = input.LA(8);
+                                if ( (LA34_371=='l') ) {
+                                    int LA34_403 = input.LA(8);
 
-                                    if ( (LA32_403=='e') ) {
-                                        int LA32_422 = input.LA(9);
+                                    if ( (LA34_403=='e') ) {
+                                        int LA34_422 = input.LA(9);
 
-                                        if ( (LA32_422=='$'||(LA32_422>='0' && LA32_422<='9')||(LA32_422>='A' && LA32_422<='Z')||LA32_422=='\\'||LA32_422=='_'||(LA32_422>='a' && LA32_422<='z')) ) {
-                                            alt32=129;
+                                        if ( (LA34_422=='$'||(LA34_422>='0' && LA34_422<='9')||(LA34_422>='A' && LA34_422<='Z')||LA34_422=='\\'||LA34_422=='_'||(LA34_422>='a' && LA34_422<='z')) ) {
+                                            alt34=129;
                                         }
                                         else {
-                                            alt32=66;}
+                                            alt34=66;}
                                     }
                                     else {
-                                        alt32=129;}
+                                        alt34=129;}
                                 }
                                 else {
-                                    alt32=129;}
+                                    alt34=129;}
                             }
                             else {
-                                alt32=129;}
+                                alt34=129;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                     }
                     break;
                 default:
-                    alt32=129;}
+                    alt34=129;}
 
                 }
                 break;
-            case 'a':
-                {
-                int LA32_86 = input.LA(3);
-
-                if ( (LA32_86=='r') ) {
-                    int LA32_193 = input.LA(4);
-
-                    if ( (LA32_193=='$'||(LA32_193>='0' && LA32_193<='9')||(LA32_193>='A' && LA32_193<='Z')||LA32_193=='\\'||LA32_193=='_'||(LA32_193>='a' && LA32_193<='z')) ) {
-                        alt32=129;
-                    }
-                    else {
-                        alt32=26;}
-                }
-                else {
-                    alt32=129;}
-                }
-                break;
             default:
-                alt32=129;}
+                alt34=129;}
 
             }
             break;
         case 'w':
             {
             switch ( input.LA(2) ) {
-            case 'i':
-                {
-                int LA32_87 = input.LA(3);
-
-                if ( (LA32_87=='t') ) {
-                    int LA32_194 = input.LA(4);
-
-                    if ( (LA32_194=='h') ) {
-                        int LA32_270 = input.LA(5);
-
-                        if ( (LA32_270=='$'||(LA32_270>='0' && LA32_270<='9')||(LA32_270>='A' && LA32_270<='Z')||LA32_270=='\\'||LA32_270=='_'||(LA32_270>='a' && LA32_270<='z')) ) {
-                            alt32=129;
-                        }
-                        else {
-                            alt32=29;}
-                    }
-                    else {
-                        alt32=129;}
-                }
-                else {
-                    alt32=129;}
-                }
-                break;
             case 'h':
                 {
-                int LA32_88 = input.LA(3);
+                int LA34_87 = input.LA(3);
 
-                if ( (LA32_88=='i') ) {
-                    int LA32_195 = input.LA(4);
+                if ( (LA34_87=='i') ) {
+                    int LA34_194 = input.LA(4);
 
-                    if ( (LA32_195=='l') ) {
-                        int LA32_271 = input.LA(5);
+                    if ( (LA34_194=='l') ) {
+                        int LA34_270 = input.LA(5);
 
-                        if ( (LA32_271=='e') ) {
-                            int LA32_328 = input.LA(6);
+                        if ( (LA34_270=='e') ) {
+                            int LA34_327 = input.LA(6);
 
-                            if ( (LA32_328=='$'||(LA32_328>='0' && LA32_328<='9')||(LA32_328>='A' && LA32_328<='Z')||LA32_328=='\\'||LA32_328=='_'||(LA32_328>='a' && LA32_328<='z')) ) {
-                                alt32=129;
+                            if ( (LA34_327=='$'||(LA34_327>='0' && LA34_327<='9')||(LA34_327>='A' && LA34_327<='Z')||LA34_327=='\\'||LA34_327=='_'||(LA34_327>='a' && LA34_327<='z')) ) {
+                                alt34=129;
                             }
                             else {
-                                alt32=28;}
+                                alt34=28;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
+                }
+                break;
+            case 'i':
+                {
+                int LA34_88 = input.LA(3);
+
+                if ( (LA34_88=='t') ) {
+                    int LA34_195 = input.LA(4);
+
+                    if ( (LA34_195=='h') ) {
+                        int LA34_271 = input.LA(5);
+
+                        if ( (LA34_271=='$'||(LA34_271>='0' && LA34_271<='9')||(LA34_271>='A' && LA34_271<='Z')||LA34_271=='\\'||LA34_271=='_'||(LA34_271>='a' && LA34_271<='z')) ) {
+                            alt34=129;
+                        }
+                        else {
+                            alt34=29;}
+                    }
+                    else {
+                        alt34=129;}
+                }
+                else {
+                    alt34=129;}
                 }
                 break;
             default:
-                alt32=129;}
+                alt34=129;}
 
             }
             break;
@@ -6674,222 +6769,222 @@
             switch ( input.LA(2) ) {
             case 'o':
                 {
-                int LA32_89 = input.LA(3);
+                int LA34_89 = input.LA(3);
 
-                if ( (LA32_89=='t') ) {
-                    int LA32_196 = input.LA(4);
+                if ( (LA34_89=='t') ) {
+                    int LA34_196 = input.LA(4);
 
-                    if ( (LA32_196=='o') ) {
-                        int LA32_272 = input.LA(5);
+                    if ( (LA34_196=='o') ) {
+                        int LA34_272 = input.LA(5);
 
-                        if ( (LA32_272=='$'||(LA32_272>='0' && LA32_272<='9')||(LA32_272>='A' && LA32_272<='Z')||LA32_272=='\\'||LA32_272=='_'||(LA32_272>='a' && LA32_272<='z')) ) {
-                            alt32=129;
+                        if ( (LA34_272=='$'||(LA34_272>='0' && LA34_272<='9')||(LA34_272>='A' && LA34_272<='Z')||LA34_272=='\\'||LA34_272=='_'||(LA34_272>='a' && LA34_272<='z')) ) {
+                            alt34=129;
                         }
                         else {
-                            alt32=49;}
+                            alt34=49;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
                 }
                 break;
             case 'e':
                 {
-                int LA32_90 = input.LA(3);
+                int LA34_90 = input.LA(3);
 
-                if ( (LA32_90=='t') ) {
-                    int LA32_197 = input.LA(4);
+                if ( (LA34_90=='t') ) {
+                    int LA34_197 = input.LA(4);
 
-                    if ( (LA32_197=='$'||(LA32_197>='0' && LA32_197<='9')||(LA32_197>='A' && LA32_197<='Z')||LA32_197=='\\'||LA32_197=='_'||(LA32_197>='a' && LA32_197<='z')) ) {
-                        alt32=129;
+                    if ( (LA34_197=='$'||(LA34_197>='0' && LA34_197<='9')||(LA34_197>='A' && LA34_197<='Z')||LA34_197=='\\'||LA34_197=='_'||(LA34_197>='a' && LA34_197<='z')) ) {
+                        alt34=129;
                     }
                     else {
-                        alt32=30;}
+                        alt34=30;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
                 }
                 break;
             default:
-                alt32=129;}
+                alt34=129;}
 
             }
             break;
         case 'y':
             {
-            int LA32_14 = input.LA(2);
+            int LA34_14 = input.LA(2);
 
-            if ( (LA32_14=='i') ) {
-                int LA32_91 = input.LA(3);
+            if ( (LA34_14=='i') ) {
+                int LA34_91 = input.LA(3);
 
-                if ( (LA32_91=='e') ) {
-                    int LA32_198 = input.LA(4);
+                if ( (LA34_91=='e') ) {
+                    int LA34_198 = input.LA(4);
 
-                    if ( (LA32_198=='l') ) {
-                        int LA32_274 = input.LA(5);
+                    if ( (LA34_198=='l') ) {
+                        int LA34_274 = input.LA(5);
 
-                        if ( (LA32_274=='d') ) {
-                            int LA32_330 = input.LA(6);
+                        if ( (LA34_274=='d') ) {
+                            int LA34_330 = input.LA(6);
 
-                            if ( (LA32_330=='$'||(LA32_330>='0' && LA32_330<='9')||(LA32_330>='A' && LA32_330<='Z')||LA32_330=='\\'||LA32_330=='_'||(LA32_330>='a' && LA32_330<='z')) ) {
-                                alt32=129;
+                            if ( (LA34_330=='$'||(LA34_330>='0' && LA34_330<='9')||(LA34_330>='A' && LA34_330<='Z')||LA34_330=='\\'||LA34_330=='_'||(LA34_330>='a' && LA34_330<='z')) ) {
+                                alt34=129;
                             }
                             else {
-                                alt32=32;}
+                                alt34=32;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
             }
             else {
-                alt32=129;}
+                alt34=129;}
             }
             break;
         case 'C':
             {
-            int LA32_15 = input.LA(2);
+            int LA34_15 = input.LA(2);
 
-            if ( (LA32_15=='D') ) {
-                int LA32_92 = input.LA(3);
+            if ( (LA34_15=='D') ) {
+                int LA34_92 = input.LA(3);
 
-                if ( (LA32_92=='A') ) {
-                    int LA32_199 = input.LA(4);
+                if ( (LA34_92=='A') ) {
+                    int LA34_199 = input.LA(4);
 
-                    if ( (LA32_199=='T') ) {
-                        int LA32_275 = input.LA(5);
+                    if ( (LA34_199=='T') ) {
+                        int LA34_275 = input.LA(5);
 
-                        if ( (LA32_275=='A') ) {
-                            int LA32_331 = input.LA(6);
+                        if ( (LA34_275=='A') ) {
+                            int LA34_331 = input.LA(6);
 
-                            if ( (LA32_331=='$'||(LA32_331>='0' && LA32_331<='9')||(LA32_331>='A' && LA32_331<='Z')||LA32_331=='\\'||LA32_331=='_'||(LA32_331>='a' && LA32_331<='z')) ) {
-                                alt32=129;
+                            if ( (LA34_331=='$'||(LA34_331>='0' && LA34_331<='9')||(LA34_331>='A' && LA34_331<='Z')||LA34_331=='\\'||LA34_331=='_'||(LA34_331>='a' && LA34_331<='z')) ) {
+                                alt34=129;
                             }
                             else {
-                                alt32=33;}
+                                alt34=33;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
             }
             else {
-                alt32=129;}
+                alt34=129;}
             }
             break;
         case 'x':
             {
-            int LA32_16 = input.LA(2);
+            int LA34_16 = input.LA(2);
 
-            if ( (LA32_16=='m') ) {
-                int LA32_93 = input.LA(3);
+            if ( (LA34_16=='m') ) {
+                int LA34_93 = input.LA(3);
 
-                if ( (LA32_93=='l') ) {
-                    int LA32_200 = input.LA(4);
+                if ( (LA34_93=='l') ) {
+                    int LA34_200 = input.LA(4);
 
-                    if ( (LA32_200=='$'||(LA32_200>='0' && LA32_200<='9')||(LA32_200>='A' && LA32_200<='Z')||LA32_200=='\\'||LA32_200=='_'||(LA32_200>='a' && LA32_200<='z')) ) {
-                        alt32=129;
+                    if ( (LA34_200=='$'||(LA34_200>='0' && LA34_200<='9')||(LA34_200>='A' && LA34_200<='Z')||LA34_200=='\\'||LA34_200=='_'||(LA34_200>='a' && LA34_200<='z')) ) {
+                        alt34=129;
                     }
                     else {
-                        alt32=34;}
+                        alt34=34;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
             }
             else {
-                alt32=129;}
+                alt34=129;}
             }
             break;
         case 'a':
             {
-            int LA32_17 = input.LA(2);
+            int LA34_17 = input.LA(2);
 
-            if ( (LA32_17=='b') ) {
-                int LA32_94 = input.LA(3);
+            if ( (LA34_17=='b') ) {
+                int LA34_94 = input.LA(3);
 
-                if ( (LA32_94=='s') ) {
-                    int LA32_201 = input.LA(4);
+                if ( (LA34_94=='s') ) {
+                    int LA34_201 = input.LA(4);
 
-                    if ( (LA32_201=='t') ) {
-                        int LA32_277 = input.LA(5);
+                    if ( (LA34_201=='t') ) {
+                        int LA34_277 = input.LA(5);
 
-                        if ( (LA32_277=='r') ) {
-                            int LA32_332 = input.LA(6);
+                        if ( (LA34_277=='r') ) {
+                            int LA34_332 = input.LA(6);
 
-                            if ( (LA32_332=='a') ) {
-                                int LA32_375 = input.LA(7);
+                            if ( (LA34_332=='a') ) {
+                                int LA34_375 = input.LA(7);
 
-                                if ( (LA32_375=='c') ) {
-                                    int LA32_404 = input.LA(8);
+                                if ( (LA34_375=='c') ) {
+                                    int LA34_404 = input.LA(8);
 
-                                    if ( (LA32_404=='t') ) {
-                                        int LA32_423 = input.LA(9);
+                                    if ( (LA34_404=='t') ) {
+                                        int LA34_423 = input.LA(9);
 
-                                        if ( (LA32_423=='$'||(LA32_423>='0' && LA32_423<='9')||(LA32_423>='A' && LA32_423<='Z')||LA32_423=='\\'||LA32_423=='_'||(LA32_423>='a' && LA32_423<='z')) ) {
-                                            alt32=129;
+                                        if ( (LA34_423=='$'||(LA34_423>='0' && LA34_423<='9')||(LA34_423>='A' && LA34_423<='Z')||LA34_423=='\\'||LA34_423=='_'||(LA34_423>='a' && LA34_423<='z')) ) {
+                                            alt34=129;
                                         }
                                         else {
-                                            alt32=36;}
+                                            alt34=36;}
                                     }
                                     else {
-                                        alt32=129;}
+                                        alt34=129;}
                                 }
                                 else {
-                                    alt32=129;}
+                                    alt34=129;}
                             }
                             else {
-                                alt32=129;}
+                                alt34=129;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
             }
             else {
-                alt32=129;}
+                alt34=129;}
             }
             break;
         case 'l':
             {
-            int LA32_18 = input.LA(2);
+            int LA34_18 = input.LA(2);
 
-            if ( (LA32_18=='o') ) {
-                int LA32_95 = input.LA(3);
+            if ( (LA34_18=='o') ) {
+                int LA34_95 = input.LA(3);
 
-                if ( (LA32_95=='n') ) {
-                    int LA32_202 = input.LA(4);
+                if ( (LA34_95=='n') ) {
+                    int LA34_202 = input.LA(4);
 
-                    if ( (LA32_202=='g') ) {
-                        int LA32_278 = input.LA(5);
+                    if ( (LA34_202=='g') ) {
+                        int LA34_278 = input.LA(5);
 
-                        if ( (LA32_278=='$'||(LA32_278>='0' && LA32_278<='9')||(LA32_278>='A' && LA32_278<='Z')||LA32_278=='\\'||LA32_278=='_'||(LA32_278>='a' && LA32_278<='z')) ) {
-                            alt32=129;
+                        if ( (LA34_278=='$'||(LA34_278>='0' && LA34_278<='9')||(LA34_278>='A' && LA34_278<='Z')||LA34_278=='\\'||LA34_278=='_'||(LA34_278>='a' && LA34_278<='z')) ) {
+                            alt34=129;
                         }
                         else {
-                            alt32=54;}
+                            alt34=54;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
             }
             else {
-                alt32=129;}
+                alt34=129;}
             }
             break;
         case 'p':
@@ -6897,43 +6992,43 @@
             switch ( input.LA(2) ) {
             case 'a':
                 {
-                int LA32_96 = input.LA(3);
+                int LA34_96 = input.LA(3);
 
-                if ( (LA32_96=='c') ) {
-                    int LA32_203 = input.LA(4);
+                if ( (LA34_96=='c') ) {
+                    int LA34_203 = input.LA(4);
 
-                    if ( (LA32_203=='k') ) {
-                        int LA32_279 = input.LA(5);
+                    if ( (LA34_203=='k') ) {
+                        int LA34_279 = input.LA(5);
 
-                        if ( (LA32_279=='a') ) {
-                            int LA32_334 = input.LA(6);
+                        if ( (LA34_279=='a') ) {
+                            int LA34_334 = input.LA(6);
 
-                            if ( (LA32_334=='g') ) {
-                                int LA32_376 = input.LA(7);
+                            if ( (LA34_334=='g') ) {
+                                int LA34_376 = input.LA(7);
 
-                                if ( (LA32_376=='e') ) {
-                                    int LA32_405 = input.LA(8);
+                                if ( (LA34_376=='e') ) {
+                                    int LA34_405 = input.LA(8);
 
-                                    if ( (LA32_405=='$'||(LA32_405>='0' && LA32_405<='9')||(LA32_405>='A' && LA32_405<='Z')||LA32_405=='\\'||LA32_405=='_'||(LA32_405>='a' && LA32_405<='z')) ) {
-                                        alt32=129;
+                                    if ( (LA34_405=='$'||(LA34_405>='0' && LA34_405<='9')||(LA34_405>='A' && LA34_405<='Z')||LA34_405=='\\'||LA34_405=='_'||(LA34_405>='a' && LA34_405<='z')) ) {
+                                        alt34=129;
                                     }
                                     else {
-                                        alt32=56;}
+                                        alt34=56;}
                                 }
                                 else {
-                                    alt32=129;}
+                                    alt34=129;}
                             }
                             else {
-                                alt32=129;}
+                                alt34=129;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
                 }
                 break;
             case 'r':
@@ -6941,159 +7036,159 @@
                 switch ( input.LA(3) ) {
                 case 'i':
                     {
-                    int LA32_204 = input.LA(4);
+                    int LA34_204 = input.LA(4);
 
-                    if ( (LA32_204=='v') ) {
-                        int LA32_280 = input.LA(5);
+                    if ( (LA34_204=='v') ) {
+                        int LA34_280 = input.LA(5);
 
-                        if ( (LA32_280=='a') ) {
-                            int LA32_335 = input.LA(6);
+                        if ( (LA34_280=='a') ) {
+                            int LA34_335 = input.LA(6);
 
-                            if ( (LA32_335=='t') ) {
-                                int LA32_377 = input.LA(7);
+                            if ( (LA34_335=='t') ) {
+                                int LA34_377 = input.LA(7);
 
-                                if ( (LA32_377=='e') ) {
-                                    int LA32_406 = input.LA(8);
+                                if ( (LA34_377=='e') ) {
+                                    int LA34_406 = input.LA(8);
 
-                                    if ( (LA32_406=='$'||(LA32_406>='0' && LA32_406<='9')||(LA32_406>='A' && LA32_406<='Z')||LA32_406=='\\'||LA32_406=='_'||(LA32_406>='a' && LA32_406<='z')) ) {
-                                        alt32=129;
+                                    if ( (LA34_406=='$'||(LA34_406>='0' && LA34_406<='9')||(LA34_406>='A' && LA34_406<='Z')||LA34_406=='\\'||LA34_406=='_'||(LA34_406>='a' && LA34_406<='z')) ) {
+                                        alt34=129;
                                     }
                                     else {
-                                        alt32=57;}
+                                        alt34=57;}
                                 }
                                 else {
-                                    alt32=129;}
+                                    alt34=129;}
                             }
                             else {
-                                alt32=129;}
+                                alt34=129;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                     }
                     break;
                 case 'o':
                     {
-                    int LA32_205 = input.LA(4);
+                    int LA34_205 = input.LA(4);
 
-                    if ( (LA32_205=='t') ) {
-                        int LA32_281 = input.LA(5);
+                    if ( (LA34_205=='t') ) {
+                        int LA34_281 = input.LA(5);
 
-                        if ( (LA32_281=='e') ) {
-                            int LA32_336 = input.LA(6);
+                        if ( (LA34_281=='e') ) {
+                            int LA34_336 = input.LA(6);
 
-                            if ( (LA32_336=='c') ) {
-                                int LA32_378 = input.LA(7);
+                            if ( (LA34_336=='c') ) {
+                                int LA34_378 = input.LA(7);
 
-                                if ( (LA32_378=='t') ) {
-                                    int LA32_407 = input.LA(8);
+                                if ( (LA34_378=='t') ) {
+                                    int LA34_407 = input.LA(8);
 
-                                    if ( (LA32_407=='e') ) {
-                                        int LA32_426 = input.LA(9);
+                                    if ( (LA34_407=='e') ) {
+                                        int LA34_426 = input.LA(9);
 
-                                        if ( (LA32_426=='d') ) {
-                                            int LA32_438 = input.LA(10);
+                                        if ( (LA34_426=='d') ) {
+                                            int LA34_438 = input.LA(10);
 
-                                            if ( (LA32_438=='$'||(LA32_438>='0' && LA32_438<='9')||(LA32_438>='A' && LA32_438<='Z')||LA32_438=='\\'||LA32_438=='_'||(LA32_438>='a' && LA32_438<='z')) ) {
-                                                alt32=129;
+                                            if ( (LA34_438=='$'||(LA34_438>='0' && LA34_438<='9')||(LA34_438>='A' && LA34_438<='Z')||LA34_438=='\\'||LA34_438=='_'||(LA34_438>='a' && LA34_438<='z')) ) {
+                                                alt34=129;
                                             }
                                             else {
-                                                alt32=58;}
+                                                alt34=58;}
                                         }
                                         else {
-                                            alt32=129;}
+                                            alt34=129;}
                                     }
                                     else {
-                                        alt32=129;}
+                                        alt34=129;}
                                 }
                                 else {
-                                    alt32=129;}
+                                    alt34=129;}
                             }
                             else {
-                                alt32=129;}
+                                alt34=129;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                     }
                     break;
                 default:
-                    alt32=129;}
+                    alt34=129;}
 
                 }
                 break;
             case 'u':
                 {
-                int LA32_98 = input.LA(3);
+                int LA34_98 = input.LA(3);
 
-                if ( (LA32_98=='b') ) {
-                    int LA32_206 = input.LA(4);
+                if ( (LA34_98=='b') ) {
+                    int LA34_206 = input.LA(4);
 
-                    if ( (LA32_206=='l') ) {
-                        int LA32_282 = input.LA(5);
+                    if ( (LA34_206=='l') ) {
+                        int LA34_282 = input.LA(5);
 
-                        if ( (LA32_282=='i') ) {
-                            int LA32_337 = input.LA(6);
+                        if ( (LA34_282=='i') ) {
+                            int LA34_337 = input.LA(6);
 
-                            if ( (LA32_337=='c') ) {
-                                int LA32_379 = input.LA(7);
+                            if ( (LA34_337=='c') ) {
+                                int LA34_379 = input.LA(7);
 
-                                if ( (LA32_379=='$'||(LA32_379>='0' && LA32_379<='9')||(LA32_379>='A' && LA32_379<='Z')||LA32_379=='\\'||LA32_379=='_'||(LA32_379>='a' && LA32_379<='z')) ) {
-                                    alt32=129;
+                                if ( (LA34_379=='$'||(LA34_379>='0' && LA34_379<='9')||(LA34_379>='A' && LA34_379<='Z')||LA34_379=='\\'||LA34_379=='_'||(LA34_379>='a' && LA34_379<='z')) ) {
+                                    alt34=129;
                                 }
                                 else {
-                                    alt32=59;}
+                                    alt34=59;}
                             }
                             else {
-                                alt32=129;}
+                                alt34=129;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
                 }
                 break;
             default:
-                alt32=129;}
+                alt34=129;}
 
             }
             break;
         case '{':
             {
-            alt32=67;
+            alt34=67;
             }
             break;
         case '}':
             {
-            alt32=68;
+            alt34=68;
             }
             break;
         case '(':
             {
-            alt32=69;
+            alt34=69;
             }
             break;
         case ')':
             {
-            alt32=70;
+            alt34=70;
             }
             break;
         case '[':
             {
-            alt32=71;
+            alt34=71;
             }
             break;
         case ']':
             {
-            alt32=72;
+            alt34=72;
             }
             break;
         case '.':
@@ -7101,7 +7196,7 @@
             switch ( input.LA(2) ) {
             case '.':
                 {
-                alt32=123;
+                alt34=123;
                 }
                 break;
             case '0':
@@ -7115,61 +7210,56 @@
             case '8':
             case '9':
                 {
-                alt32=131;
+                alt34=131;
                 }
                 break;
             default:
-                alt32=73;}
+                alt34=73;}
 
             }
             break;
         case ';':
             {
-            alt32=74;
+            alt34=74;
             }
             break;
         case ',':
             {
-            alt32=75;
+            alt34=75;
             }
             break;
         case '<':
             {
             switch ( input.LA(2) ) {
-            case '=':
-                {
-                alt32=78;
-                }
-                break;
             case '<':
                 {
-                int LA32_102 = input.LA(3);
+                int LA34_101 = input.LA(3);
 
-                if ( (LA32_102=='=') ) {
-                    alt32=107;
+                if ( (LA34_101=='=') ) {
+                    alt34=107;
                 }
                 else {
-                    alt32=90;}
+                    alt34=90;}
                 }
                 break;
-            case '/':
+            case '=':
                 {
-                alt32=117;
+                alt34=78;
                 }
                 break;
             case '!':
                 {
-                int LA32_104 = input.LA(3);
+                int LA34_103 = input.LA(3);
 
-                if ( (LA32_104=='-') ) {
-                    alt32=115;
+                if ( (LA34_103=='-') ) {
+                    alt34=115;
                 }
-                else if ( (LA32_104=='[') ) {
-                    alt32=119;
+                else if ( (LA34_103=='[') ) {
+                    alt34=119;
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("1:1: Tokens : ( NULL | TRUE | FALSE | BREAK | CASE | CATCH | CONTINUE | DEFAULT | DELETE | DO | ELSE | FINALLY | FOR | EACH | FUNCTION | IF | IN | INSTANCEOF | NEW | RETURN | SWITCH | THIS | THROW | TRY | TYPEOF | VAR | VOID | WHILE | WITH | GET | SET | YIELD | CDATA | WXML | NAMESPACE | ABSTRACT | BOOLEAN | BYTE | CHAR | CLASS | CONST | DEBUGGER | DOUBLE | ENUM | EXPORT | EXTENDS | FINAL | FLOAT | GOTO | IMPLEMENTS | IMPORT | INT | INTERFACE | LONG | NATIVE | PACKAGE | PRIVATE | PROTECTED | PUBLIC | SHORT | STATIC | SUPER | SYNCHRONIZED | THROWS | TRANSIENT | VOLATILE | LBRACE | RBRACE | LPAREN | RPAREN | LBRACK | RBRACK | DOT | SEMIC | COMMA | LT | GT | LTE | GTE | EQ | NEQ | SAME | NSAME | ADD | SUB | MUL | MOD | INC | DEC | SHL | SHR | SHU | AND | OR | XOR | NOT | INV | LAND | LOR | QUE | COLON | ASSIGN | ADDASS | SUBASS | MULASS | MODASS | SHLASS | SHRASS | SHUASS | ANDASS | ORASS | XORASS | DIV | DIVASS | XCOPEN | XCCLOSE | XLCLOSE | XRCLOSE | CDATAOPEN | XHOPEN | XHCLOSE | AT | DOTDOT | COLONCOLON | WhiteSpace | EOL | MultiLineComment | SingleLineComment | Identifier | XmlAttribute | DecimalLiteral | OctalIntegerLiteral | HexIntegerLiteral | StringLiteral | RegularExpressionLiteral );", 32, 104, input);
+                        new NoViableAltException("1:1: Tokens : ( NULL | TRUE | FALSE | BREAK | CASE | CATCH | CONTINUE | DEFAULT | DELETE | DO | ELSE | FINALLY | FOR | EACH | FUNCTION | IF | IN | INSTANCEOF | NEW | RETURN | SWITCH | THIS | THROW | TRY | TYPEOF | VAR | VOID | WHILE | WITH | GET | SET | YIELD | CDATA | WXML | NAMESPACE | ABSTRACT | BOOLEAN | BYTE | CHAR | CLASS | CONST | DEBUGGER | DOUBLE | ENUM | EXPORT | EXTENDS | FINAL | FLOAT | GOTO | IMPLEMENTS | IMPORT | INT | INTERFACE | LONG | NATIVE | PACKAGE | PRIVATE | PROTECTED | PUBLIC | SHORT | STATIC | SUPER | SYNCHRONIZED | THROWS | TRANSIENT | VOLATILE | LBRACE | RBRACE | LPAREN | RPAREN | LBRACK | RBRACK | DOT | SEMIC | COMMA | LT | GT | LTE | GTE | EQ | NEQ | SAME | NSAME | ADD | SUB | MUL | MOD | INC | DEC | SHL | SHR | SHU | AND | OR | XOR | NOT | INV | LAND | LOR | QUE | COLON | ASSIGN | ADDASS | SUBASS | MULASS | MODASS | SHLASS | SHRASS | SHUASS | ANDASS | ORASS | XORASS | DIV | DIVASS | XCOPEN | XCCLOSE | XLCLOSE | XRCLOSE | CDATAOPEN | XHOPEN | XHCLOSE | AT | DOTDOT | COLONCOLON | WhiteSpace | EOL | MultiLineComment | SingleLineComment | Identifier | XmlAttribute | DecimalLiteral | OctalIntegerLiteral | HexIntegerLiteral | StringLiteral | RegularExpressionLiteral );", 34, 103, input);
 
                     throw nvae;
                 }
@@ -7177,83 +7267,88 @@
                 break;
             case '?':
                 {
-                alt32=120;
+                alt34=120;
+                }
+                break;
+            case '/':
+                {
+                alt34=117;
                 }
                 break;
             default:
-                alt32=76;}
+                alt34=76;}
 
             }
             break;
         case '>':
             {
             switch ( input.LA(2) ) {
-            case '=':
-                {
-                alt32=79;
-                }
-                break;
             case '>':
                 {
                 switch ( input.LA(3) ) {
                 case '=':
                     {
-                    alt32=108;
+                    alt34=108;
                     }
                     break;
                 case '>':
                     {
-                    int LA32_212 = input.LA(4);
+                    int LA34_212 = input.LA(4);
 
-                    if ( (LA32_212=='=') ) {
-                        alt32=109;
+                    if ( (LA34_212=='=') ) {
+                        alt34=109;
                     }
                     else {
-                        alt32=92;}
+                        alt34=92;}
                     }
                     break;
                 default:
-                    alt32=91;}
+                    alt34=91;}
 
                 }
                 break;
+            case '=':
+                {
+                alt34=79;
+                }
+                break;
             default:
-                alt32=77;}
+                alt34=77;}
 
             }
             break;
         case '=':
             {
-            int LA32_31 = input.LA(2);
+            int LA34_31 = input.LA(2);
 
-            if ( (LA32_31=='=') ) {
-                int LA32_110 = input.LA(3);
+            if ( (LA34_31=='=') ) {
+                int LA34_110 = input.LA(3);
 
-                if ( (LA32_110=='=') ) {
-                    alt32=82;
+                if ( (LA34_110=='=') ) {
+                    alt34=82;
                 }
                 else {
-                    alt32=80;}
+                    alt34=80;}
             }
             else {
-                alt32=102;}
+                alt34=102;}
             }
             break;
         case '!':
             {
-            int LA32_32 = input.LA(2);
+            int LA34_32 = input.LA(2);
 
-            if ( (LA32_32=='=') ) {
-                int LA32_112 = input.LA(3);
+            if ( (LA34_32=='=') ) {
+                int LA34_112 = input.LA(3);
 
-                if ( (LA32_112=='=') ) {
-                    alt32=83;
+                if ( (LA34_112=='=') ) {
+                    alt34=83;
                 }
                 else {
-                    alt32=81;}
+                    alt34=81;}
             }
             else {
-                alt32=96;}
+                alt34=96;}
             }
             break;
         case '+':
@@ -7261,16 +7356,16 @@
             switch ( input.LA(2) ) {
             case '=':
                 {
-                alt32=103;
+                alt34=103;
                 }
                 break;
             case '+':
                 {
-                alt32=88;
+                alt34=88;
                 }
                 break;
             default:
-                alt32=84;}
+                alt34=84;}
 
             }
             break;
@@ -7279,165 +7374,165 @@
             switch ( input.LA(2) ) {
             case '=':
                 {
-                alt32=104;
+                alt34=104;
                 }
                 break;
             case '-':
                 {
-                int LA32_118 = input.LA(3);
+                int LA34_118 = input.LA(3);
 
-                if ( (LA32_118=='>') ) {
-                    alt32=116;
+                if ( (LA34_118=='>') ) {
+                    alt34=116;
                 }
                 else {
-                    alt32=89;}
+                    alt34=89;}
                 }
                 break;
             default:
-                alt32=85;}
+                alt34=85;}
 
             }
             break;
         case '*':
             {
-            int LA32_35 = input.LA(2);
+            int LA34_35 = input.LA(2);
 
-            if ( (LA32_35=='=') ) {
-                alt32=105;
+            if ( (LA34_35=='=') ) {
+                alt34=105;
             }
             else {
-                alt32=86;}
+                alt34=86;}
             }
             break;
         case '%':
             {
-            int LA32_36 = input.LA(2);
+            int LA34_36 = input.LA(2);
 
-            if ( (LA32_36=='=') ) {
-                alt32=106;
+            if ( (LA34_36=='=') ) {
+                alt34=106;
             }
             else {
-                alt32=87;}
+                alt34=87;}
             }
             break;
         case '&':
             {
             switch ( input.LA(2) ) {
-            case '=':
-                {
-                alt32=110;
-                }
-                break;
             case '&':
                 {
-                alt32=98;
+                alt34=98;
+                }
+                break;
+            case '=':
+                {
+                alt34=110;
                 }
                 break;
             default:
-                alt32=93;}
+                alt34=93;}
 
             }
             break;
         case '|':
             {
             switch ( input.LA(2) ) {
-            case '=':
-                {
-                alt32=111;
-                }
-                break;
             case '|':
                 {
-                alt32=99;
+                alt34=99;
+                }
+                break;
+            case '=':
+                {
+                alt34=111;
                 }
                 break;
             default:
-                alt32=94;}
+                alt34=94;}
 
             }
             break;
         case '^':
             {
-            int LA32_39 = input.LA(2);
+            int LA34_39 = input.LA(2);
 
-            if ( (LA32_39=='=') ) {
-                alt32=112;
+            if ( (LA34_39=='=') ) {
+                alt34=112;
             }
             else {
-                alt32=95;}
+                alt34=95;}
             }
             break;
         case '~':
             {
-            alt32=97;
+            alt34=97;
             }
             break;
         case '?':
             {
-            int LA32_41 = input.LA(2);
+            int LA34_41 = input.LA(2);
 
-            if ( (LA32_41=='>') ) {
-                alt32=121;
+            if ( (LA34_41=='>') ) {
+                alt34=121;
             }
             else {
-                alt32=100;}
+                alt34=100;}
             }
             break;
         case ':':
             {
-            int LA32_42 = input.LA(2);
+            int LA34_42 = input.LA(2);
 
-            if ( (LA32_42==':') ) {
-                alt32=124;
+            if ( (LA34_42==':') ) {
+                alt34=124;
             }
             else {
-                alt32=101;}
+                alt34=101;}
             }
             break;
         case '/':
             {
-            int LA32_43 = input.LA(2);
+            int LA34_43 = input.LA(2);
 
-            if ( (LA32_43=='=') ) {
-                int LA32_136 = input.LA(3);
+            if ( (LA34_43=='=') ) {
+                int LA34_136 = input.LA(3);
 
-                if ( ((LA32_136>='\u0000' && LA32_136<='\t')||(LA32_136>='\u000B' && LA32_136<='\f')||(LA32_136>='\u000E' && LA32_136<='\u2027')||(LA32_136>='\u202A' && LA32_136<='\uFFFE')) && ( areRegularExpressionsEnabled() )) {
-                    alt32=135;
+                if ( ((LA34_136>='\u0000' && LA34_136<='\t')||(LA34_136>='\u000B' && LA34_136<='\f')||(LA34_136>='\u000E' && LA34_136<='\u2027')||(LA34_136>='\u202A' && LA34_136<='\uFFFE')) && ( areRegularExpressionsEnabled() )) {
+                    alt34=135;
                 }
                 else {
-                    alt32=114;}
+                    alt34=114;}
             }
-            else if ( (LA32_43=='/') ) {
-                alt32=128;
+            else if ( (LA34_43=='*') ) {
+                alt34=127;
             }
-            else if ( (LA32_43=='>') ) {
-                int LA32_138 = input.LA(3);
+            else if ( (LA34_43=='/') ) {
+                alt34=128;
+            }
+            else if ( (LA34_43=='>') ) {
+                int LA34_139 = input.LA(3);
 
-                if ( ((LA32_138>='\u0000' && LA32_138<='\t')||(LA32_138>='\u000B' && LA32_138<='\f')||(LA32_138>='\u000E' && LA32_138<='\u2027')||(LA32_138>='\u202A' && LA32_138<='\uFFFE')) && ( areRegularExpressionsEnabled() )) {
-                    alt32=135;
+                if ( ((LA34_139>='\u0000' && LA34_139<='\t')||(LA34_139>='\u000B' && LA34_139<='\f')||(LA34_139>='\u000E' && LA34_139<='\u2027')||(LA34_139>='\u202A' && LA34_139<='\uFFFE')) && ( areRegularExpressionsEnabled() )) {
+                    alt34=135;
                 }
                 else {
-                    alt32=118;}
+                    alt34=118;}
             }
-            else if ( (LA32_43=='*') ) {
-                alt32=127;
-            }
-            else if ( ((LA32_43>='\u0000' && LA32_43<='\t')||(LA32_43>='\u000B' && LA32_43<='\f')||(LA32_43>='\u000E' && LA32_43<=')')||(LA32_43>='+' && LA32_43<='.')||(LA32_43>='0' && LA32_43<='<')||(LA32_43>='?' && LA32_43<='\u2027')||(LA32_43>='\u202A' && LA32_43<='\uFFFE')) && ( areRegularExpressionsEnabled() )) {
-                alt32=135;
+            else if ( ((LA34_43>='\u0000' && LA34_43<='\t')||(LA34_43>='\u000B' && LA34_43<='\f')||(LA34_43>='\u000E' && LA34_43<=')')||(LA34_43>='+' && LA34_43<='.')||(LA34_43>='0' && LA34_43<='<')||(LA34_43>='?' && LA34_43<='\u2027')||(LA34_43>='\u202A' && LA34_43<='\uFFFE')) && ( areRegularExpressionsEnabled() )) {
+                alt34=135;
             }
             else {
-                alt32=113;}
+                alt34=113;}
             }
             break;
         case '@':
             {
-            int LA32_44 = input.LA(2);
+            int LA34_44 = input.LA(2);
 
-            if ( (LA32_44=='$'||(LA32_44>='A' && LA32_44<='Z')||LA32_44=='\\'||LA32_44=='_'||(LA32_44>='a' && LA32_44<='z')) ) {
-                alt32=130;
+            if ( (LA34_44=='$'||(LA34_44>='A' && LA34_44<='Z')||LA34_44=='\\'||LA34_44=='_'||(LA34_44>='a' && LA34_44<='z')) ) {
+                alt34=130;
             }
             else {
-                alt32=122;}
+                alt34=122;}
             }
             break;
         case '\t':
@@ -7462,7 +7557,7 @@
         case '\u205F':
         case '\u3000':
             {
-            alt32=125;
+            alt34=125;
             }
             break;
         case '\n':
@@ -7470,7 +7565,7 @@
         case '\u2028':
         case '\u2029':
             {
-            alt32=126;
+            alt34=126;
             }
             break;
         case '0':
@@ -7479,7 +7574,7 @@
             case 'X':
             case 'x':
                 {
-                alt32=133;
+                alt34=133;
                 }
                 break;
             case '0':
@@ -7491,11 +7586,11 @@
             case '6':
             case '7':
                 {
-                alt32=132;
+                alt34=132;
                 }
                 break;
             default:
-                alt32=131;}
+                alt34=131;}
 
             }
             break;
@@ -7509,19 +7604,19 @@
         case '8':
         case '9':
             {
-            alt32=131;
+            alt34=131;
             }
             break;
         case '\"':
         case '\'':
             {
-            alt32=134;
+            alt34=134;
             }
             break;
         default:
-            alt32=129;}
+            alt34=129;}
 
-        switch (alt32) {
+        switch (alt34) {
             case 1 :
                 // JS.g:1:10: NULL
                 {
@@ -8473,20 +8568,20 @@
     }
 
 
-    protected DFA19 dfa19 = new DFA19(this);
-    static final String DFA19_eotS =
+    protected DFA21 dfa21 = new DFA21(this);
+    static final String DFA21_eotS =
         "\1\uffff\2\4\3\uffff\1\4";
-    static final String DFA19_eofS =
+    static final String DFA21_eofS =
         "\7\uffff";
-    static final String DFA19_minS =
+    static final String DFA21_minS =
         "\3\56\3\uffff\1\56";
-    static final String DFA19_maxS =
+    static final String DFA21_maxS =
         "\1\71\1\56\1\71\3\uffff\1\71";
-    static final String DFA19_acceptS =
+    static final String DFA21_acceptS =
         "\3\uffff\1\2\1\3\1\1\1\uffff";
-    static final String DFA19_specialS =
+    static final String DFA21_specialS =
         "\7\uffff}>";
-    static final String[] DFA19_transitionS = {
+    static final String[] DFA21_transitionS = {
             "\1\3\1\uffff\1\1\11\2",
             "\1\5",
             "\1\5\1\uffff\12\6",
@@ -8496,37 +8591,37 @@
             "\1\5\1\uffff\12\6"
     };
 
-    static final short[] DFA19_eot = DFA.unpackEncodedString(DFA19_eotS);
-    static final short[] DFA19_eof = DFA.unpackEncodedString(DFA19_eofS);
-    static final char[] DFA19_min = DFA.unpackEncodedStringToUnsignedChars(DFA19_minS);
-    static final char[] DFA19_max = DFA.unpackEncodedStringToUnsignedChars(DFA19_maxS);
-    static final short[] DFA19_accept = DFA.unpackEncodedString(DFA19_acceptS);
-    static final short[] DFA19_special = DFA.unpackEncodedString(DFA19_specialS);
-    static final short[][] DFA19_transition;
+    static final short[] DFA21_eot = DFA.unpackEncodedString(DFA21_eotS);
+    static final short[] DFA21_eof = DFA.unpackEncodedString(DFA21_eofS);
+    static final char[] DFA21_min = DFA.unpackEncodedStringToUnsignedChars(DFA21_minS);
+    static final char[] DFA21_max = DFA.unpackEncodedStringToUnsignedChars(DFA21_maxS);
+    static final short[] DFA21_accept = DFA.unpackEncodedString(DFA21_acceptS);
+    static final short[] DFA21_special = DFA.unpackEncodedString(DFA21_specialS);
+    static final short[][] DFA21_transition;
 
     static {
-        int numStates = DFA19_transitionS.length;
-        DFA19_transition = new short[numStates][];
+        int numStates = DFA21_transitionS.length;
+        DFA21_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA19_transition[i] = DFA.unpackEncodedString(DFA19_transitionS[i]);
+            DFA21_transition[i] = DFA.unpackEncodedString(DFA21_transitionS[i]);
         }
     }
 
-    class DFA19 extends DFA {
+    class DFA21 extends DFA {
 
-        public DFA19(BaseRecognizer recognizer) {
+        public DFA21(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 19;
-            this.eot = DFA19_eot;
-            this.eof = DFA19_eof;
-            this.min = DFA19_min;
-            this.max = DFA19_max;
-            this.accept = DFA19_accept;
-            this.special = DFA19_special;
-            this.transition = DFA19_transition;
+            this.decisionNumber = 21;
+            this.eot = DFA21_eot;
+            this.eof = DFA21_eof;
+            this.min = DFA21_min;
+            this.max = DFA21_max;
+            this.accept = DFA21_accept;
+            this.special = DFA21_special;
+            this.transition = DFA21_transition;
         }
         public String getDescription() {
-            return "865:1: DecimalLiteral : ( DecimalIntegerLiteral '.' ( DecimalDigit )* ( ExponentPart )? | '.' ( DecimalDigit )+ ( ExponentPart )? | DecimalIntegerLiteral ( ExponentPart )? );";
+            return "869:1: DecimalLiteral : ( DecimalIntegerLiteral '.' ( DecimalDigit )* ( ExponentPart )? | '.' ( DecimalDigit )+ ( ExponentPart )? | DecimalIntegerLiteral ( ExponentPart )? );";
         }
     }
  
diff --git a/plugins/org.eclipse.dltk.javascript.formatter/src/org/eclipse/dltk/javascript/parser/JSParser.java b/plugins/org.eclipse.dltk.javascript.formatter/src/org/eclipse/dltk/javascript/parser/JSParser.java
index 1ff620f..5043cf9 100644
--- a/plugins/org.eclipse.dltk.javascript.formatter/src/org/eclipse/dltk/javascript/parser/JSParser.java
+++ b/plugins/org.eclipse.dltk.javascript.formatter/src/org/eclipse/dltk/javascript/parser/JSParser.java
@@ -1,4 +1,4 @@
-// $ANTLR 3.0.1 JS.g 2009-09-02 10:05:08
+// $ANTLR 3.0.1 JS.g 2009-09-03 19:32:37
 
 package org.eclipse.dltk.javascript.parser;
 
@@ -13,13 +13,13 @@
 
 public class JSParser extends Parser {
     public static final String[] tokenNames = new String[] {
-        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "NULL", "TRUE", "FALSE", "BREAK", "CASE", "CATCH", "CONTINUE", "DEFAULT", "DELETE", "DO", "ELSE", "FINALLY", "FOR", "EACH", "FUNCTION", "IF", "IN", "INSTANCEOF", "NEW", "RETURN", "SWITCH", "THIS", "THROW", "TRY", "TYPEOF", "VAR", "VOID", "WHILE", "WITH", "GET", "SET", "YIELD", "CDATA", "WXML", "NAMESPACE", "ABSTRACT", "BOOLEAN", "BYTE", "CHAR", "CLASS", "CONST", "DEBUGGER", "DOUBLE", "ENUM", "EXPORT", "EXTENDS", "FINAL", "FLOAT", "GOTO", "IMPLEMENTS", "IMPORT", "INT", "INTERFACE", "LONG", "NATIVE", "PACKAGE", "PRIVATE", "PROTECTED", "PUBLIC", "SHORT", "STATIC", "SUPER", "SYNCHRONIZED", "THROWS", "TRANSIENT", "VOLATILE", "LBRACE", "RBRACE", "LPAREN", "RPAREN", "LBRACK", "RBRACK", "DOT", "SEMIC", "COMMA", "LT", "GT", "LTE", "GTE", "EQ", "NEQ", "SAME", "NSAME", "ADD", "SUB", "MUL", "MOD", "INC", "DEC", "SHL", "SHR", "SHU", "AND", "OR", "XOR", "NOT", "INV", "LAND", "LOR", "QUE", "COLON", "ASSIGN", "ADDASS", "SUBASS", "MULASS", "MODASS", "SHLASS", "SHRASS", "SHUASS", "ANDASS", "ORASS", "XORASS", "DIV", "DIVASS", "XCOPEN", "XCCLOSE", "XLCLOSE", "XRCLOSE", "CDATAOPEN", "XHOPEN", "XHCLOSE", "AT", "DOTDOT", "COLONCOLON", "ARGS", "ARRAY", "BLOCK", "BYFIELD", "BYINDEX", "ALLCHILDREN", "LOCALNAME", "CALL", "CEXPR", "EXPR", "FORITER", "FORSTEP", "FOREACH", "GETTER", "SETTER", "DEFAULT_XML_NAMESPACE", "ITEM", "LABELLED", "NAMEDVALUE", "NEG", "OBJECT", "PAREXPR", "PDEC", "PINC", "POS", "XML", "BSLASH", "DQUOTE", "SQUOTE", "TAB", "VT", "FF", "SP", "NBSP", "USP", "WhiteSpace", "LF", "CR", "LS", "PS", "LineTerminator", "EOL", "MultiLineComment", "SingleLineComment", "StringLiteral", "XmlAttribute", "HexDigit", "IdentifierStartASCII", "DecimalDigit", "IdentifierPart", "IdentifierNameASCIIStart", "Identifier", "PropertyIdentifierSymbols", "RegularExpressionLiteral", "OctalDigit", "ExponentPart", "DecimalIntegerLiteral", "DecimalLiteral", "OctalIntegerLiteral", "HexIntegerLiteral", "CharacterEscapeSequence", "ZeroToThree", "OctalEscapeSequence", "HexEscapeSequence", "UnicodeEscapeSequence", "EscapeSequence", "BackslashSequence", "RegularExpressionFirstChar", "RegularExpressionChar", "XMLLiteral"
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "NULL", "TRUE", "FALSE", "BREAK", "CASE", "CATCH", "CONTINUE", "DEFAULT", "DELETE", "DO", "ELSE", "FINALLY", "FOR", "EACH", "FUNCTION", "IF", "IN", "INSTANCEOF", "NEW", "RETURN", "SWITCH", "THIS", "THROW", "TRY", "TYPEOF", "VAR", "VOID", "WHILE", "WITH", "GET", "SET", "YIELD", "CDATA", "WXML", "NAMESPACE", "ABSTRACT", "BOOLEAN", "BYTE", "CHAR", "CLASS", "CONST", "DEBUGGER", "DOUBLE", "ENUM", "EXPORT", "EXTENDS", "FINAL", "FLOAT", "GOTO", "IMPLEMENTS", "IMPORT", "INT", "INTERFACE", "LONG", "NATIVE", "PACKAGE", "PRIVATE", "PROTECTED", "PUBLIC", "SHORT", "STATIC", "SUPER", "SYNCHRONIZED", "THROWS", "TRANSIENT", "VOLATILE", "LBRACE", "RBRACE", "LPAREN", "RPAREN", "LBRACK", "RBRACK", "DOT", "SEMIC", "COMMA", "LT", "GT", "LTE", "GTE", "EQ", "NEQ", "SAME", "NSAME", "ADD", "SUB", "MUL", "MOD", "INC", "DEC", "SHL", "SHR", "SHU", "AND", "OR", "XOR", "NOT", "INV", "LAND", "LOR", "QUE", "COLON", "ASSIGN", "ADDASS", "SUBASS", "MULASS", "MODASS", "SHLASS", "SHRASS", "SHUASS", "ANDASS", "ORASS", "XORASS", "DIV", "DIVASS", "XCOPEN", "XCCLOSE", "XLCLOSE", "XRCLOSE", "CDATAOPEN", "XHOPEN", "XHCLOSE", "AT", "DOTDOT", "COLONCOLON", "ARGS", "ARRAY", "BLOCK", "BYFIELD", "BYINDEX", "ALLCHILDREN", "LOCALNAME", "CALL", "CEXPR", "EXPR", "FORITER", "FORSTEP", "FOREACH", "GETTER", "SETTER", "DEFAULT_XML_NAMESPACE", "ITEM", "LABELLED", "NAMEDVALUE", "NEG", "OBJECT", "PAREXPR", "PDEC", "PINC", "POS", "XML", "BSLASH", "DQUOTE", "SQUOTE", "TAB", "VT", "FF", "SP", "NBSP", "USP", "WhiteSpace", "LF", "CR", "LS", "PS", "LineTerminatorChar", "LineTerminator", "EOL", "MultiLineComment", "SingleLineComment", "StringLiteral", "XmlAttribute", "HexDigit", "IdentifierStartASCII", "DecimalDigit", "IdentifierPart", "IdentifierNameASCIIStart", "Identifier", "PropertyIdentifierSymbols", "RegularExpressionLiteral", "OctalDigit", "ExponentPart", "DecimalIntegerLiteral", "DecimalLiteral", "OctalIntegerLiteral", "HexIntegerLiteral", "CharacterEscapeSequence", "ZeroToThree", "OctalEscapeSequence", "HexEscapeSequence", "UnicodeEscapeSequence", "EscapeSequence", "BackslashSequence", "RegularExpressionFirstChar", "RegularExpressionChar", "XMLLiteral"
     };
     public static final int PACKAGE=59;
     public static final int FUNCTION=18;
     public static final int SHR=94;
     public static final int VT=158;
-    public static final int RegularExpressionChar=196;
+    public static final int RegularExpressionChar=197;
     public static final int CDATA=36;
     public static final int XRCLOSE=121;
     public static final int LOCALNAME=134;
@@ -29,6 +29,7 @@
     public static final int XHOPEN=123;
     public static final int DO=13;
     public static final int DQUOTE=155;
+    public static final int LineTerminatorChar=168;
     public static final int NOT=99;
     public static final int EOF=-1;
     public static final int CEXPR=136;
@@ -39,10 +40,10 @@
     public static final int FINAL=50;
     public static final int FORSTEP=139;
     public static final int IMPORT=54;
-    public static final int EOL=169;
+    public static final int EOL=170;
     public static final int XLCLOSE=120;
-    public static final int PropertyIdentifierSymbols=180;
-    public static final int OctalDigit=182;
+    public static final int PropertyIdentifierSymbols=181;
+    public static final int OctalDigit=183;
     public static final int RETURN=23;
     public static final int THIS=25;
     public static final int ARGS=128;
@@ -62,12 +63,12 @@
     public static final int INT=55;
     public static final int DEFAULT_XML_NAMESPACE=143;
     public static final int FF=159;
-    public static final int OctalEscapeSequence=190;
-    public static final int RegularExpressionFirstChar=195;
+    public static final int OctalEscapeSequence=191;
+    public static final int RegularExpressionFirstChar=196;
     public static final int TYPEOF=28;
     public static final int GT=80;
     public static final int CALL=135;
-    public static final int CharacterEscapeSequence=188;
+    public static final int CharacterEscapeSequence=189;
     public static final int LAND=101;
     public static final int XML=153;
     public static final int PINC=151;
@@ -75,10 +76,10 @@
     public static final int LBRACK=74;
     public static final int LBRACE=70;
     public static final int SUB=88;
-    public static final int RegularExpressionLiteral=181;
+    public static final int RegularExpressionLiteral=182;
     public static final int FLOAT=51;
-    public static final int DecimalIntegerLiteral=184;
-    public static final int HexDigit=174;
+    public static final int DecimalIntegerLiteral=185;
+    public static final int HexDigit=175;
     public static final int LPAREN=72;
     public static final int AT=125;
     public static final int IMPLEMENTS=53;
@@ -87,12 +88,12 @@
     public static final int XCCLOSE=119;
     public static final int SHRASS=111;
     public static final int PS=167;
-    public static final int MultiLineComment=170;
+    public static final int MultiLineComment=171;
     public static final int ADD=87;
-    public static final int ZeroToThree=189;
+    public static final int ZeroToThree=190;
     public static final int ITEM=144;
-    public static final int XMLLiteral=197;
-    public static final int UnicodeEscapeSequence=192;
+    public static final int XMLLiteral=198;
+    public static final int UnicodeEscapeSequence=193;
     public static final int SHUASS=112;
     public static final int SHORT=63;
     public static final int SET=34;
@@ -101,14 +102,14 @@
     public static final int SAME=85;
     public static final int XHCLOSE=124;
     public static final int COLON=104;
-    public static final int StringLiteral=172;
+    public static final int StringLiteral=173;
     public static final int PAREXPR=149;
     public static final int ENUM=47;
+    public static final int HexIntegerLiteral=188;
     public static final int NBSP=161;
-    public static final int HexIntegerLiteral=187;
     public static final int SP=160;
     public static final int BLOCK=130;
-    public static final int LineTerminator=168;
+    public static final int LineTerminator=169;
     public static final int INTERFACE=56;
     public static final int DIV=116;
     public static final int LONG=57;
@@ -117,19 +118,19 @@
     public static final int LOR=102;
     public static final int LT=79;
     public static final int WHILE=31;
-    public static final int BackslashSequence=194;
+    public static final int BackslashSequence=195;
     public static final int LS=166;
     public static final int CASE=8;
     public static final int NEW=22;
     public static final int CHAR=42;
-    public static final int DecimalDigit=176;
+    public static final int DecimalDigit=177;
     public static final int BYFIELD=131;
     public static final int BREAK=7;
-    public static final int Identifier=179;
+    public static final int Identifier=180;
     public static final int WXML=37;
     public static final int POS=152;
     public static final int DOUBLE=46;
-    public static final int ExponentPart=183;
+    public static final int ExponentPart=184;
     public static final int VAR=29;
     public static final int VOID=30;
     public static final int SUPER=65;
@@ -144,14 +145,14 @@
     public static final int DELETE=12;
     public static final int XCOPEN=118;
     public static final int MUL=89;
-    public static final int IdentifierStartASCII=175;
+    public static final int IdentifierStartASCII=176;
     public static final int TRY=27;
     public static final int NAMESPACE=38;
     public static final int SHLASS=110;
     public static final int COLONCOLON=127;
     public static final int USP=162;
     public static final int ANDASS=113;
-    public static final int IdentifierNameASCIIStart=178;
+    public static final int IdentifierNameASCIIStart=179;
     public static final int QUE=103;
     public static final int OR=97;
     public static final int SETTER=142;
@@ -160,17 +161,17 @@
     public static final int PDEC=150;
     public static final int CATCH=9;
     public static final int FALSE=6;
-    public static final int EscapeSequence=193;
+    public static final int EscapeSequence=194;
     public static final int THROW=26;
     public static final int MULASS=108;
-    public static final int XmlAttribute=173;
+    public static final int XmlAttribute=174;
     public static final int DEC=92;
-    public static final int OctalIntegerLiteral=186;
+    public static final int OctalIntegerLiteral=187;
     public static final int CLASS=43;
-    public static final int HexEscapeSequence=191;
+    public static final int HexEscapeSequence=192;
     public static final int ORASS=114;
     public static final int NAMEDVALUE=146;
-    public static final int SingleLineComment=171;
+    public static final int SingleLineComment=172;
     public static final int GTE=82;
     public static final int FOR=16;
     public static final int DOTDOT=126;
@@ -190,7 +191,7 @@
     public static final int FORITER=138;
     public static final int MODASS=109;
     public static final int DOT=76;
-    public static final int IdentifierPart=177;
+    public static final int IdentifierPart=178;
     public static final int WITH=32;
     public static final int BYTE=41;
     public static final int XOR=98;
@@ -200,7 +201,7 @@
     public static final int DEFAULT=11;
     public static final int ALLCHILDREN=133;
     public static final int TAB=157;
-    public static final int DecimalLiteral=185;
+    public static final int DecimalLiteral=186;
     public static final int TRUE=5;
     public static final int NEQ=84;
     public static final int FINALLY=15;
@@ -227,7 +228,7 @@
     public String[] getTokenNames() { return tokenNames; }
     public String getGrammarFileName() { return "JS.g"; }
 
-
+    
     private final boolean isLeftHandSideAssign(RuleReturnScope lhs, Object[] cached)
     {
     	if (cached[0] != null)
@@ -267,7 +268,7 @@
     	cached[0] = new Boolean(result);
     	return result;
     }
-
+    
     private final static boolean isLeftHandSideExpression(RuleReturnScope lhs)
     {
     	if (lhs.getTree() == null) // e.g. during backtracking
@@ -324,7 +325,7 @@
     	cached[0] = new Boolean(result);
     	return result;
     }
-
+    
     private final void promoteEOL(ParserRuleReturnScope rule)
     {
     	// Get current token and its type (the possibly offending token).
@@ -368,7 +369,7 @@
     };
 
     // $ANTLR start token
-    // JS.g:610:1: token : ( reservedWord | identifier | punctuator | numericLiteral | StringLiteral | XmlAttribute );
+    // JS.g:614:1: token : ( reservedWord | identifier | punctuator | numericLiteral | StringLiteral | XmlAttribute );
     public final token_return token() throws RecognitionException {
         token_return retval = new token_return();
         retval.start = input.LT(1);
@@ -390,7 +391,7 @@
         Object XmlAttribute6_tree=null;
 
         try {
-            // JS.g:611:2: ( reservedWord | identifier | punctuator | numericLiteral | StringLiteral | XmlAttribute )
+            // JS.g:615:2: ( reservedWord | identifier | punctuator | numericLiteral | StringLiteral | XmlAttribute )
             int alt1=6;
             switch ( input.LA(1) ) {
             case NULL:
@@ -541,18 +542,18 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("610:1: token : ( reservedWord | identifier | punctuator | numericLiteral | StringLiteral | XmlAttribute );", 1, 0, input);
+                    new NoViableAltException("614:1: token : ( reservedWord | identifier | punctuator | numericLiteral | StringLiteral | XmlAttribute );", 1, 0, input);
 
                 throw nvae;
             }
 
             switch (alt1) {
                 case 1 :
-                    // JS.g:611:4: reservedWord
+                    // JS.g:615:4: reservedWord
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_reservedWord_in_token1969);
+                    pushFollow(FOLLOW_reservedWord_in_token1997);
                     reservedWord1=reservedWord();
                     _fsp--;
 
@@ -561,11 +562,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:612:4: identifier
+                    // JS.g:616:4: identifier
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_identifier_in_token1974);
+                    pushFollow(FOLLOW_identifier_in_token2002);
                     identifier2=identifier();
                     _fsp--;
 
@@ -574,11 +575,11 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:613:4: punctuator
+                    // JS.g:617:4: punctuator
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_punctuator_in_token1979);
+                    pushFollow(FOLLOW_punctuator_in_token2007);
                     punctuator3=punctuator();
                     _fsp--;
 
@@ -587,11 +588,11 @@
                     }
                     break;
                 case 4 :
-                    // JS.g:614:4: numericLiteral
+                    // JS.g:618:4: numericLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_numericLiteral_in_token1984);
+                    pushFollow(FOLLOW_numericLiteral_in_token2012);
                     numericLiteral4=numericLiteral();
                     _fsp--;
 
@@ -600,12 +601,12 @@
                     }
                     break;
                 case 5 :
-                    // JS.g:615:4: StringLiteral
+                    // JS.g:619:4: StringLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
                     StringLiteral5=(Token)input.LT(1);
-                    match(input,StringLiteral,FOLLOW_StringLiteral_in_token1989); 
+                    match(input,StringLiteral,FOLLOW_StringLiteral_in_token2017); 
                     StringLiteral5_tree = (Object)adaptor.create(StringLiteral5);
                     adaptor.addChild(root_0, StringLiteral5_tree);
 
@@ -613,12 +614,12 @@
                     }
                     break;
                 case 6 :
-                    // JS.g:616:4: XmlAttribute
+                    // JS.g:620:4: XmlAttribute
                     {
                     root_0 = (Object)adaptor.nil();
 
                     XmlAttribute6=(Token)input.LT(1);
-                    match(input,XmlAttribute,FOLLOW_XmlAttribute_in_token1994); 
+                    match(input,XmlAttribute,FOLLOW_XmlAttribute_in_token2022); 
                     XmlAttribute6_tree = (Object)adaptor.create(XmlAttribute6);
                     adaptor.addChild(root_0, XmlAttribute6_tree);
 
@@ -649,7 +650,7 @@
     };
 
     // $ANTLR start reservedWord
-    // JS.g:622:1: reservedWord : ( keyword | futureReservedWord | NULL | booleanLiteral );
+    // JS.g:626:1: reservedWord : ( keyword | futureReservedWord | NULL | booleanLiteral );
     public final reservedWord_return reservedWord() throws RecognitionException {
         reservedWord_return retval = new reservedWord_return();
         retval.start = input.LT(1);
@@ -667,7 +668,7 @@
         Object NULL9_tree=null;
 
         try {
-            // JS.g:623:2: ( keyword | futureReservedWord | NULL | booleanLiteral )
+            // JS.g:627:2: ( keyword | futureReservedWord | NULL | booleanLiteral )
             int alt2=4;
             switch ( input.LA(1) ) {
             case BREAK:
@@ -753,18 +754,18 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("622:1: reservedWord : ( keyword | futureReservedWord | NULL | booleanLiteral );", 2, 0, input);
+                    new NoViableAltException("626:1: reservedWord : ( keyword | futureReservedWord | NULL | booleanLiteral );", 2, 0, input);
 
                 throw nvae;
             }
 
             switch (alt2) {
                 case 1 :
-                    // JS.g:623:4: keyword
+                    // JS.g:627:4: keyword
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_keyword_in_reservedWord2009);
+                    pushFollow(FOLLOW_keyword_in_reservedWord2037);
                     keyword7=keyword();
                     _fsp--;
 
@@ -773,11 +774,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:624:4: futureReservedWord
+                    // JS.g:628:4: futureReservedWord
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_futureReservedWord_in_reservedWord2014);
+                    pushFollow(FOLLOW_futureReservedWord_in_reservedWord2042);
                     futureReservedWord8=futureReservedWord();
                     _fsp--;
 
@@ -786,12 +787,12 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:625:4: NULL
+                    // JS.g:629:4: NULL
                     {
                     root_0 = (Object)adaptor.nil();
 
                     NULL9=(Token)input.LT(1);
-                    match(input,NULL,FOLLOW_NULL_in_reservedWord2019); 
+                    match(input,NULL,FOLLOW_NULL_in_reservedWord2047); 
                     NULL9_tree = (Object)adaptor.create(NULL9);
                     adaptor.addChild(root_0, NULL9_tree);
 
@@ -799,11 +800,11 @@
                     }
                     break;
                 case 4 :
-                    // JS.g:626:4: booleanLiteral
+                    // JS.g:630:4: booleanLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_booleanLiteral_in_reservedWord2024);
+                    pushFollow(FOLLOW_booleanLiteral_in_reservedWord2052);
                     booleanLiteral10=booleanLiteral();
                     _fsp--;
 
@@ -835,7 +836,7 @@
     };
 
     // $ANTLR start keyword
-    // JS.g:633:1: keyword : ( BREAK | CASE | CATCH | CONTINUE | DEFAULT | DELETE | DO | ELSE | FINALLY | FOR | EACH | FUNCTION | GET | SET | IF | IN | INSTANCEOF | NEW | RETURN | SWITCH | THIS | THROW | TRY | TYPEOF | VAR | VOID | WHILE | WITH | NAMESPACE | XML | YIELD );
+    // JS.g:637:1: keyword : ( BREAK | CASE | CATCH | CONTINUE | DEFAULT | DELETE | DO | ELSE | FINALLY | FOR | EACH | FUNCTION | GET | SET | IF | IN | INSTANCEOF | NEW | RETURN | SWITCH | THIS | THROW | TRY | TYPEOF | VAR | VOID | WHILE | WITH | NAMESPACE | XML | YIELD );
     public final keyword_return keyword() throws RecognitionException {
         keyword_return retval = new keyword_return();
         retval.start = input.LT(1);
@@ -847,7 +848,7 @@
         Object set11_tree=null;
 
         try {
-            // JS.g:634:2: ( BREAK | CASE | CATCH | CONTINUE | DEFAULT | DELETE | DO | ELSE | FINALLY | FOR | EACH | FUNCTION | GET | SET | IF | IN | INSTANCEOF | NEW | RETURN | SWITCH | THIS | THROW | TRY | TYPEOF | VAR | VOID | WHILE | WITH | NAMESPACE | XML | YIELD )
+            // JS.g:638:2: ( BREAK | CASE | CATCH | CONTINUE | DEFAULT | DELETE | DO | ELSE | FINALLY | FOR | EACH | FUNCTION | GET | SET | IF | IN | INSTANCEOF | NEW | RETURN | SWITCH | THIS | THROW | TRY | TYPEOF | VAR | VOID | WHILE | WITH | NAMESPACE | XML | YIELD )
             // JS.g:
             {
             root_0 = (Object)adaptor.nil();
@@ -889,7 +890,7 @@
     };
 
     // $ANTLR start futureReservedWord
-    // JS.g:671:1: futureReservedWord : ( ABSTRACT | BOOLEAN | BYTE | CHAR | CLASS | CONST | DEBUGGER | DOUBLE | ENUM | EXPORT | EXTENDS | FINAL | FLOAT | GOTO | IMPLEMENTS | IMPORT | INT | INTERFACE | LONG | NATIVE | PACKAGE | PRIVATE | PROTECTED | PUBLIC | SHORT | STATIC | SUPER | SYNCHRONIZED | THROWS | TRANSIENT | VOLATILE );
+    // JS.g:675:1: futureReservedWord : ( ABSTRACT | BOOLEAN | BYTE | CHAR | CLASS | CONST | DEBUGGER | DOUBLE | ENUM | EXPORT | EXTENDS | FINAL | FLOAT | GOTO | IMPLEMENTS | IMPORT | INT | INTERFACE | LONG | NATIVE | PACKAGE | PRIVATE | PROTECTED | PUBLIC | SHORT | STATIC | SUPER | SYNCHRONIZED | THROWS | TRANSIENT | VOLATILE );
     public final futureReservedWord_return futureReservedWord() throws RecognitionException {
         futureReservedWord_return retval = new futureReservedWord_return();
         retval.start = input.LT(1);
@@ -901,7 +902,7 @@
         Object set12_tree=null;
 
         try {
-            // JS.g:672:2: ( ABSTRACT | BOOLEAN | BYTE | CHAR | CLASS | CONST | DEBUGGER | DOUBLE | ENUM | EXPORT | EXTENDS | FINAL | FLOAT | GOTO | IMPLEMENTS | IMPORT | INT | INTERFACE | LONG | NATIVE | PACKAGE | PRIVATE | PROTECTED | PUBLIC | SHORT | STATIC | SUPER | SYNCHRONIZED | THROWS | TRANSIENT | VOLATILE )
+            // JS.g:676:2: ( ABSTRACT | BOOLEAN | BYTE | CHAR | CLASS | CONST | DEBUGGER | DOUBLE | ENUM | EXPORT | EXTENDS | FINAL | FLOAT | GOTO | IMPLEMENTS | IMPORT | INT | INTERFACE | LONG | NATIVE | PACKAGE | PRIVATE | PROTECTED | PUBLIC | SHORT | STATIC | SUPER | SYNCHRONIZED | THROWS | TRANSIENT | VOLATILE )
             // JS.g:
             {
             root_0 = (Object)adaptor.nil();
@@ -943,7 +944,7 @@
     };
 
     // $ANTLR start identifier
-    // JS.g:745:1: identifier : ( WXML | GET | SET | EACH | NAMESPACE | Identifier );
+    // JS.g:749:1: identifier : ( WXML | GET | SET | EACH | NAMESPACE | Identifier );
     public final identifier_return identifier() throws RecognitionException {
         identifier_return retval = new identifier_return();
         retval.start = input.LT(1);
@@ -955,7 +956,7 @@
         Object set13_tree=null;
 
         try {
-            // JS.g:746:3: ( WXML | GET | SET | EACH | NAMESPACE | Identifier )
+            // JS.g:750:3: ( WXML | GET | SET | EACH | NAMESPACE | Identifier )
             // JS.g:
             {
             root_0 = (Object)adaptor.nil();
@@ -997,7 +998,7 @@
     };
 
     // $ANTLR start punctuator
-    // JS.g:766:1: punctuator : ( LBRACE | RBRACE | LPAREN | RPAREN | LBRACK | RBRACK | DOT | SEMIC | COMMA | LT | GT | LTE | GTE | EQ | NEQ | SAME | NSAME | ADD | SUB | MUL | MOD | INC | DEC | SHL | SHR | SHU | AND | OR | XOR | NOT | INV | LAND | LOR | QUE | COLON | ASSIGN | ADDASS | SUBASS | MULASS | MODASS | SHLASS | SHRASS | SHUASS | ANDASS | ORASS | XORASS | DIV | DIVASS | DOTDOT | COLONCOLON );
+    // JS.g:770:1: punctuator : ( LBRACE | RBRACE | LPAREN | RPAREN | LBRACK | RBRACK | DOT | SEMIC | COMMA | LT | GT | LTE | GTE | EQ | NEQ | SAME | NSAME | ADD | SUB | MUL | MOD | INC | DEC | SHL | SHR | SHU | AND | OR | XOR | NOT | INV | LAND | LOR | QUE | COLON | ASSIGN | ADDASS | SUBASS | MULASS | MODASS | SHLASS | SHRASS | SHUASS | ANDASS | ORASS | XORASS | DIV | DIVASS | DOTDOT | COLONCOLON );
     public final punctuator_return punctuator() throws RecognitionException {
         punctuator_return retval = new punctuator_return();
         retval.start = input.LT(1);
@@ -1009,7 +1010,7 @@
         Object set14_tree=null;
 
         try {
-            // JS.g:767:2: ( LBRACE | RBRACE | LPAREN | RPAREN | LBRACK | RBRACK | DOT | SEMIC | COMMA | LT | GT | LTE | GTE | EQ | NEQ | SAME | NSAME | ADD | SUB | MUL | MOD | INC | DEC | SHL | SHR | SHU | AND | OR | XOR | NOT | INV | LAND | LOR | QUE | COLON | ASSIGN | ADDASS | SUBASS | MULASS | MODASS | SHLASS | SHRASS | SHUASS | ANDASS | ORASS | XORASS | DIV | DIVASS | DOTDOT | COLONCOLON )
+            // JS.g:771:2: ( LBRACE | RBRACE | LPAREN | RPAREN | LBRACK | RBRACK | DOT | SEMIC | COMMA | LT | GT | LTE | GTE | EQ | NEQ | SAME | NSAME | ADD | SUB | MUL | MOD | INC | DEC | SHL | SHR | SHU | AND | OR | XOR | NOT | INV | LAND | LOR | QUE | COLON | ASSIGN | ADDASS | SUBASS | MULASS | MODASS | SHLASS | SHRASS | SHUASS | ANDASS | ORASS | XORASS | DIV | DIVASS | DOTDOT | COLONCOLON )
             // JS.g:
             {
             root_0 = (Object)adaptor.nil();
@@ -1051,7 +1052,7 @@
     };
 
     // $ANTLR start literal
-    // JS.g:824:1: literal : ( NULL | booleanLiteral | numericLiteral | StringLiteral | RegularExpressionLiteral );
+    // JS.g:828:1: literal : ( NULL | booleanLiteral | numericLiteral | StringLiteral | RegularExpressionLiteral );
     public final literal_return literal() throws RecognitionException {
         literal_return retval = new literal_return();
         retval.start = input.LT(1);
@@ -1071,7 +1072,7 @@
         Object RegularExpressionLiteral19_tree=null;
 
         try {
-            // JS.g:825:2: ( NULL | booleanLiteral | numericLiteral | StringLiteral | RegularExpressionLiteral )
+            // JS.g:829:2: ( NULL | booleanLiteral | numericLiteral | StringLiteral | RegularExpressionLiteral )
             int alt3=5;
             switch ( input.LA(1) ) {
             case NULL:
@@ -1104,19 +1105,19 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("824:1: literal : ( NULL | booleanLiteral | numericLiteral | StringLiteral | RegularExpressionLiteral );", 3, 0, input);
+                    new NoViableAltException("828:1: literal : ( NULL | booleanLiteral | numericLiteral | StringLiteral | RegularExpressionLiteral );", 3, 0, input);
 
                 throw nvae;
             }
 
             switch (alt3) {
                 case 1 :
-                    // JS.g:825:4: NULL
+                    // JS.g:829:4: NULL
                     {
                     root_0 = (Object)adaptor.nil();
 
                     NULL15=(Token)input.LT(1);
-                    match(input,NULL,FOLLOW_NULL_in_literal2819); 
+                    match(input,NULL,FOLLOW_NULL_in_literal2847); 
                     NULL15_tree = (Object)adaptor.create(NULL15);
                     adaptor.addChild(root_0, NULL15_tree);
 
@@ -1124,11 +1125,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:826:4: booleanLiteral
+                    // JS.g:830:4: booleanLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_booleanLiteral_in_literal2824);
+                    pushFollow(FOLLOW_booleanLiteral_in_literal2852);
                     booleanLiteral16=booleanLiteral();
                     _fsp--;
 
@@ -1137,11 +1138,11 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:827:4: numericLiteral
+                    // JS.g:831:4: numericLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_numericLiteral_in_literal2829);
+                    pushFollow(FOLLOW_numericLiteral_in_literal2857);
                     numericLiteral17=numericLiteral();
                     _fsp--;
 
@@ -1150,12 +1151,12 @@
                     }
                     break;
                 case 4 :
-                    // JS.g:828:4: StringLiteral
+                    // JS.g:832:4: StringLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
                     StringLiteral18=(Token)input.LT(1);
-                    match(input,StringLiteral,FOLLOW_StringLiteral_in_literal2834); 
+                    match(input,StringLiteral,FOLLOW_StringLiteral_in_literal2862); 
                     StringLiteral18_tree = (Object)adaptor.create(StringLiteral18);
                     adaptor.addChild(root_0, StringLiteral18_tree);
 
@@ -1163,12 +1164,12 @@
                     }
                     break;
                 case 5 :
-                    // JS.g:829:4: RegularExpressionLiteral
+                    // JS.g:833:4: RegularExpressionLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
                     RegularExpressionLiteral19=(Token)input.LT(1);
-                    match(input,RegularExpressionLiteral,FOLLOW_RegularExpressionLiteral_in_literal2839); 
+                    match(input,RegularExpressionLiteral,FOLLOW_RegularExpressionLiteral_in_literal2867); 
                     RegularExpressionLiteral19_tree = (Object)adaptor.create(RegularExpressionLiteral19);
                     adaptor.addChild(root_0, RegularExpressionLiteral19_tree);
 
@@ -1199,7 +1200,7 @@
     };
 
     // $ANTLR start booleanLiteral
-    // JS.g:832:1: booleanLiteral : ( TRUE | FALSE );
+    // JS.g:836:1: booleanLiteral : ( TRUE | FALSE );
     public final booleanLiteral_return booleanLiteral() throws RecognitionException {
         booleanLiteral_return retval = new booleanLiteral_return();
         retval.start = input.LT(1);
@@ -1211,7 +1212,7 @@
         Object set20_tree=null;
 
         try {
-            // JS.g:833:2: ( TRUE | FALSE )
+            // JS.g:837:2: ( TRUE | FALSE )
             // JS.g:
             {
             root_0 = (Object)adaptor.nil();
@@ -1253,7 +1254,7 @@
     };
 
     // $ANTLR start numericLiteral
-    // JS.g:879:1: numericLiteral : ( DecimalLiteral | OctalIntegerLiteral | HexIntegerLiteral );
+    // JS.g:883:1: numericLiteral : ( DecimalLiteral | OctalIntegerLiteral | HexIntegerLiteral );
     public final numericLiteral_return numericLiteral() throws RecognitionException {
         numericLiteral_return retval = new numericLiteral_return();
         retval.start = input.LT(1);
@@ -1265,7 +1266,7 @@
         Object set21_tree=null;
 
         try {
-            // JS.g:880:2: ( DecimalLiteral | OctalIntegerLiteral | HexIntegerLiteral )
+            // JS.g:884:2: ( DecimalLiteral | OctalIntegerLiteral | HexIntegerLiteral )
             // JS.g:
             {
             root_0 = (Object)adaptor.nil();
@@ -1307,7 +1308,7 @@
     };
 
     // $ANTLR start primaryExpression
-    // JS.g:975:1: primaryExpression : ( THIS | identifier | XmlAttribute | literal | arrayLiteral | objectLiteral | parenExpression );
+    // JS.g:979:1: primaryExpression : ( THIS | identifier | XmlAttribute | literal | arrayLiteral | objectLiteral | parenExpression );
     public final primaryExpression_return primaryExpression() throws RecognitionException {
         primaryExpression_return retval = new primaryExpression_return();
         retval.start = input.LT(1);
@@ -1331,7 +1332,7 @@
         Object XmlAttribute24_tree=null;
 
         try {
-            // JS.g:976:2: ( THIS | identifier | XmlAttribute | literal | arrayLiteral | objectLiteral | parenExpression )
+            // JS.g:980:2: ( THIS | identifier | XmlAttribute | literal | arrayLiteral | objectLiteral | parenExpression )
             int alt4=7;
             switch ( input.LA(1) ) {
             case THIS:
@@ -1383,19 +1384,19 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("975:1: primaryExpression : ( THIS | identifier | XmlAttribute | literal | arrayLiteral | objectLiteral | parenExpression );", 4, 0, input);
+                    new NoViableAltException("979:1: primaryExpression : ( THIS | identifier | XmlAttribute | literal | arrayLiteral | objectLiteral | parenExpression );", 4, 0, input);
 
                 throw nvae;
             }
 
             switch (alt4) {
                 case 1 :
-                    // JS.g:976:4: THIS
+                    // JS.g:980:4: THIS
                     {
                     root_0 = (Object)adaptor.nil();
 
                     THIS22=(Token)input.LT(1);
-                    match(input,THIS,FOLLOW_THIS_in_primaryExpression3468); 
+                    match(input,THIS,FOLLOW_THIS_in_primaryExpression3496); 
                     THIS22_tree = (Object)adaptor.create(THIS22);
                     adaptor.addChild(root_0, THIS22_tree);
 
@@ -1403,11 +1404,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:977:4: identifier
+                    // JS.g:981:4: identifier
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_identifier_in_primaryExpression3473);
+                    pushFollow(FOLLOW_identifier_in_primaryExpression3501);
                     identifier23=identifier();
                     _fsp--;
 
@@ -1416,12 +1417,12 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:978:4: XmlAttribute
+                    // JS.g:982:4: XmlAttribute
                     {
                     root_0 = (Object)adaptor.nil();
 
                     XmlAttribute24=(Token)input.LT(1);
-                    match(input,XmlAttribute,FOLLOW_XmlAttribute_in_primaryExpression3478); 
+                    match(input,XmlAttribute,FOLLOW_XmlAttribute_in_primaryExpression3506); 
                     XmlAttribute24_tree = (Object)adaptor.create(XmlAttribute24);
                     adaptor.addChild(root_0, XmlAttribute24_tree);
 
@@ -1429,11 +1430,11 @@
                     }
                     break;
                 case 4 :
-                    // JS.g:979:4: literal
+                    // JS.g:983:4: literal
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_literal_in_primaryExpression3483);
+                    pushFollow(FOLLOW_literal_in_primaryExpression3511);
                     literal25=literal();
                     _fsp--;
 
@@ -1442,11 +1443,11 @@
                     }
                     break;
                 case 5 :
-                    // JS.g:980:4: arrayLiteral
+                    // JS.g:984:4: arrayLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_arrayLiteral_in_primaryExpression3488);
+                    pushFollow(FOLLOW_arrayLiteral_in_primaryExpression3516);
                     arrayLiteral26=arrayLiteral();
                     _fsp--;
 
@@ -1455,11 +1456,11 @@
                     }
                     break;
                 case 6 :
-                    // JS.g:981:4: objectLiteral
+                    // JS.g:985:4: objectLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_objectLiteral_in_primaryExpression3493);
+                    pushFollow(FOLLOW_objectLiteral_in_primaryExpression3521);
                     objectLiteral27=objectLiteral();
                     _fsp--;
 
@@ -1468,11 +1469,11 @@
                     }
                     break;
                 case 7 :
-                    // JS.g:982:4: parenExpression
+                    // JS.g:986:4: parenExpression
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_parenExpression_in_primaryExpression3498);
+                    pushFollow(FOLLOW_parenExpression_in_primaryExpression3526);
                     parenExpression28=parenExpression();
                     _fsp--;
 
@@ -1504,7 +1505,7 @@
     };
 
     // $ANTLR start parenExpression
-    // JS.g:985:1: parenExpression : lpar= LPAREN expression RPAREN -> ^( PAREXPR[$lpar, \"PAREXPR\"] expression ) ;
+    // JS.g:989:1: parenExpression : lpar= LPAREN expression RPAREN -> ^( PAREXPR[$lpar, \"PAREXPR\"] expression ) ;
     public final parenExpression_return parenExpression() throws RecognitionException {
         parenExpression_return retval = new parenExpression_return();
         retval.start = input.LT(1);
@@ -1522,20 +1523,20 @@
         RewriteRuleTokenStream stream_LPAREN=new RewriteRuleTokenStream(adaptor,"token LPAREN");
         RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
         try {
-            // JS.g:986:3: (lpar= LPAREN expression RPAREN -> ^( PAREXPR[$lpar, \"PAREXPR\"] expression ) )
-            // JS.g:986:5: lpar= LPAREN expression RPAREN
+            // JS.g:990:3: (lpar= LPAREN expression RPAREN -> ^( PAREXPR[$lpar, \"PAREXPR\"] expression ) )
+            // JS.g:990:5: lpar= LPAREN expression RPAREN
             {
             lpar=(Token)input.LT(1);
-            match(input,LPAREN,FOLLOW_LPAREN_in_parenExpression3514); 
+            match(input,LPAREN,FOLLOW_LPAREN_in_parenExpression3542); 
             stream_LPAREN.add(lpar);
 
-            pushFollow(FOLLOW_expression_in_parenExpression3516);
+            pushFollow(FOLLOW_expression_in_parenExpression3544);
             expression29=expression();
             _fsp--;
 
             stream_expression.add(expression29.getTree());
             RPAREN30=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_parenExpression3518); 
+            match(input,RPAREN,FOLLOW_RPAREN_in_parenExpression3546); 
             stream_RPAREN.add(RPAREN30);
 
 
@@ -1549,9 +1550,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 986:37: -> ^( PAREXPR[$lpar, \"PAREXPR\"] expression )
+            // 990:37: -> ^( PAREXPR[$lpar, \"PAREXPR\"] expression )
             {
-                // JS.g:986:40: ^( PAREXPR[$lpar, \"PAREXPR\"] expression )
+                // JS.g:990:40: ^( PAREXPR[$lpar, \"PAREXPR\"] expression )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(PAREXPR, lpar,  "PAREXPR"), root_1);
@@ -1589,7 +1590,7 @@
     };
 
     // $ANTLR start arrayLiteral
-    // JS.g:989:1: arrayLiteral : lb= LBRACK ( arrayItem ( COMMA arrayItem )* )? RBRACK -> ^( ARRAY[$lb, \"ARRAY\"] ( arrayItem )* ) ;
+    // JS.g:993:1: arrayLiteral : lb= LBRACK ( arrayItem ( COMMA arrayItem )* )? RBRACK -> ^( ARRAY[$lb, \"ARRAY\"] ( arrayItem )* ) ;
     public final arrayLiteral_return arrayLiteral() throws RecognitionException {
         arrayLiteral_return retval = new arrayLiteral_return();
         retval.start = input.LT(1);
@@ -1612,14 +1613,14 @@
         RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
         RewriteRuleSubtreeStream stream_arrayItem=new RewriteRuleSubtreeStream(adaptor,"rule arrayItem");
         try {
-            // JS.g:990:2: (lb= LBRACK ( arrayItem ( COMMA arrayItem )* )? RBRACK -> ^( ARRAY[$lb, \"ARRAY\"] ( arrayItem )* ) )
-            // JS.g:990:4: lb= LBRACK ( arrayItem ( COMMA arrayItem )* )? RBRACK
+            // JS.g:994:2: (lb= LBRACK ( arrayItem ( COMMA arrayItem )* )? RBRACK -> ^( ARRAY[$lb, \"ARRAY\"] ( arrayItem )* ) )
+            // JS.g:994:4: lb= LBRACK ( arrayItem ( COMMA arrayItem )* )? RBRACK
             {
             lb=(Token)input.LT(1);
-            match(input,LBRACK,FOLLOW_LBRACK_in_arrayLiteral3543); 
+            match(input,LBRACK,FOLLOW_LBRACK_in_arrayLiteral3571); 
             stream_LBRACK.add(lb);
 
-            // JS.g:990:14: ( arrayItem ( COMMA arrayItem )* )?
+            // JS.g:994:14: ( arrayItem ( COMMA arrayItem )* )?
             int alt6=2;
             int LA6_0 = input.LA(1);
 
@@ -1635,14 +1636,14 @@
             }
             switch (alt6) {
                 case 1 :
-                    // JS.g:990:16: arrayItem ( COMMA arrayItem )*
+                    // JS.g:994:16: arrayItem ( COMMA arrayItem )*
                     {
-                    pushFollow(FOLLOW_arrayItem_in_arrayLiteral3547);
+                    pushFollow(FOLLOW_arrayItem_in_arrayLiteral3575);
                     arrayItem31=arrayItem();
                     _fsp--;
 
                     stream_arrayItem.add(arrayItem31.getTree());
-                    // JS.g:990:26: ( COMMA arrayItem )*
+                    // JS.g:994:26: ( COMMA arrayItem )*
                     loop5:
                     do {
                         int alt5=2;
@@ -1655,13 +1656,13 @@
 
                         switch (alt5) {
                     	case 1 :
-                    	    // JS.g:990:28: COMMA arrayItem
+                    	    // JS.g:994:28: COMMA arrayItem
                     	    {
                     	    COMMA32=(Token)input.LT(1);
-                    	    match(input,COMMA,FOLLOW_COMMA_in_arrayLiteral3551); 
+                    	    match(input,COMMA,FOLLOW_COMMA_in_arrayLiteral3579); 
                     	    stream_COMMA.add(COMMA32);
 
-                    	    pushFollow(FOLLOW_arrayItem_in_arrayLiteral3553);
+                    	    pushFollow(FOLLOW_arrayItem_in_arrayLiteral3581);
                     	    arrayItem33=arrayItem();
                     	    _fsp--;
 
@@ -1682,7 +1683,7 @@
             }
 
             RBRACK34=(Token)input.LT(1);
-            match(input,RBRACK,FOLLOW_RBRACK_in_arrayLiteral3561); 
+            match(input,RBRACK,FOLLOW_RBRACK_in_arrayLiteral3589); 
             stream_RBRACK.add(RBRACK34);
 
 
@@ -1696,14 +1697,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 991:2: -> ^( ARRAY[$lb, \"ARRAY\"] ( arrayItem )* )
+            // 995:2: -> ^( ARRAY[$lb, \"ARRAY\"] ( arrayItem )* )
             {
-                // JS.g:991:5: ^( ARRAY[$lb, \"ARRAY\"] ( arrayItem )* )
+                // JS.g:995:5: ^( ARRAY[$lb, \"ARRAY\"] ( arrayItem )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(ARRAY, lb,  "ARRAY"), root_1);
 
-                // JS.g:991:28: ( arrayItem )*
+                // JS.g:995:28: ( arrayItem )*
                 while ( stream_arrayItem.hasNext() ) {
                     adaptor.addChild(root_1, stream_arrayItem.next());
 
@@ -1741,7 +1742,7 @@
     };
 
     // $ANTLR start arrayItem
-    // JS.g:994:1: arrayItem : (expr= assignmentExpression | {...}?) -> ^( ITEM ( $expr)? ) ;
+    // JS.g:998:1: arrayItem : (expr= assignmentExpression | {...}?) -> ^( ITEM ( $expr)? ) ;
     public final arrayItem_return arrayItem() throws RecognitionException {
         arrayItem_return retval = new arrayItem_return();
         retval.start = input.LT(1);
@@ -1753,10 +1754,10 @@
 
         RewriteRuleSubtreeStream stream_assignmentExpression=new RewriteRuleSubtreeStream(adaptor,"rule assignmentExpression");
         try {
-            // JS.g:995:2: ( (expr= assignmentExpression | {...}?) -> ^( ITEM ( $expr)? ) )
-            // JS.g:995:4: (expr= assignmentExpression | {...}?)
+            // JS.g:999:2: ( (expr= assignmentExpression | {...}?) -> ^( ITEM ( $expr)? ) )
+            // JS.g:999:4: (expr= assignmentExpression | {...}?)
             {
-            // JS.g:995:4: (expr= assignmentExpression | {...}?)
+            // JS.g:999:4: (expr= assignmentExpression | {...}?)
             int alt7=2;
             int LA7_0 = input.LA(1);
 
@@ -1768,15 +1769,15 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("995:4: (expr= assignmentExpression | {...}?)", 7, 0, input);
+                    new NoViableAltException("999:4: (expr= assignmentExpression | {...}?)", 7, 0, input);
 
                 throw nvae;
             }
             switch (alt7) {
                 case 1 :
-                    // JS.g:995:6: expr= assignmentExpression
+                    // JS.g:999:6: expr= assignmentExpression
                     {
-                    pushFollow(FOLLOW_assignmentExpression_in_arrayItem3589);
+                    pushFollow(FOLLOW_assignmentExpression_in_arrayItem3617);
                     expr=assignmentExpression();
                     _fsp--;
 
@@ -1785,7 +1786,7 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:995:34: {...}?
+                    // JS.g:999:34: {...}?
                     {
                     if ( !( input.LA(1) == COMMA ) ) {
                         throw new FailedPredicateException(input, "arrayItem", " input.LA(1) == COMMA ");
@@ -1808,14 +1809,14 @@
             RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"token expr",expr!=null?expr.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 996:2: -> ^( ITEM ( $expr)? )
+            // 1000:2: -> ^( ITEM ( $expr)? )
             {
-                // JS.g:996:5: ^( ITEM ( $expr)? )
+                // JS.g:1000:5: ^( ITEM ( $expr)? )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(ITEM, "ITEM"), root_1);
 
-                // JS.g:996:13: ( $expr)?
+                // JS.g:1000:13: ( $expr)?
                 if ( stream_expr.hasNext() ) {
                     adaptor.addChild(root_1, stream_expr.next());
 
@@ -1853,7 +1854,7 @@
     };
 
     // $ANTLR start objectLiteral
-    // JS.g:999:1: objectLiteral : lb= LBRACE ( objectPropertyInitializer ( COMMA objectPropertyInitializer )* )? RBRACE -> ^( OBJECT[$lb, \"OBJECT\"] ( objectPropertyInitializer )* ) ;
+    // JS.g:1003:1: objectLiteral : lb= LBRACE ( objectPropertyInitializer ( COMMA objectPropertyInitializer )* )? RBRACE -> ^( OBJECT[$lb, \"OBJECT\"] ( objectPropertyInitializer )* ) ;
     public final objectLiteral_return objectLiteral() throws RecognitionException {
         objectLiteral_return retval = new objectLiteral_return();
         retval.start = input.LT(1);
@@ -1876,14 +1877,14 @@
         RewriteRuleTokenStream stream_LBRACE=new RewriteRuleTokenStream(adaptor,"token LBRACE");
         RewriteRuleSubtreeStream stream_objectPropertyInitializer=new RewriteRuleSubtreeStream(adaptor,"rule objectPropertyInitializer");
         try {
-            // JS.g:1000:2: (lb= LBRACE ( objectPropertyInitializer ( COMMA objectPropertyInitializer )* )? RBRACE -> ^( OBJECT[$lb, \"OBJECT\"] ( objectPropertyInitializer )* ) )
-            // JS.g:1000:4: lb= LBRACE ( objectPropertyInitializer ( COMMA objectPropertyInitializer )* )? RBRACE
+            // JS.g:1004:2: (lb= LBRACE ( objectPropertyInitializer ( COMMA objectPropertyInitializer )* )? RBRACE -> ^( OBJECT[$lb, \"OBJECT\"] ( objectPropertyInitializer )* ) )
+            // JS.g:1004:4: lb= LBRACE ( objectPropertyInitializer ( COMMA objectPropertyInitializer )* )? RBRACE
             {
             lb=(Token)input.LT(1);
-            match(input,LBRACE,FOLLOW_LBRACE_in_objectLiteral3621); 
+            match(input,LBRACE,FOLLOW_LBRACE_in_objectLiteral3649); 
             stream_LBRACE.add(lb);
 
-            // JS.g:1000:14: ( objectPropertyInitializer ( COMMA objectPropertyInitializer )* )?
+            // JS.g:1004:14: ( objectPropertyInitializer ( COMMA objectPropertyInitializer )* )?
             int alt9=2;
             int LA9_0 = input.LA(1);
 
@@ -1892,14 +1893,14 @@
             }
             switch (alt9) {
                 case 1 :
-                    // JS.g:1000:16: objectPropertyInitializer ( COMMA objectPropertyInitializer )*
+                    // JS.g:1004:16: objectPropertyInitializer ( COMMA objectPropertyInitializer )*
                     {
-                    pushFollow(FOLLOW_objectPropertyInitializer_in_objectLiteral3625);
+                    pushFollow(FOLLOW_objectPropertyInitializer_in_objectLiteral3653);
                     objectPropertyInitializer35=objectPropertyInitializer();
                     _fsp--;
 
                     stream_objectPropertyInitializer.add(objectPropertyInitializer35.getTree());
-                    // JS.g:1000:42: ( COMMA objectPropertyInitializer )*
+                    // JS.g:1004:42: ( COMMA objectPropertyInitializer )*
                     loop8:
                     do {
                         int alt8=2;
@@ -1912,13 +1913,13 @@
 
                         switch (alt8) {
                     	case 1 :
-                    	    // JS.g:1000:44: COMMA objectPropertyInitializer
+                    	    // JS.g:1004:44: COMMA objectPropertyInitializer
                     	    {
                     	    COMMA36=(Token)input.LT(1);
-                    	    match(input,COMMA,FOLLOW_COMMA_in_objectLiteral3629); 
+                    	    match(input,COMMA,FOLLOW_COMMA_in_objectLiteral3657); 
                     	    stream_COMMA.add(COMMA36);
 
-                    	    pushFollow(FOLLOW_objectPropertyInitializer_in_objectLiteral3631);
+                    	    pushFollow(FOLLOW_objectPropertyInitializer_in_objectLiteral3659);
                     	    objectPropertyInitializer37=objectPropertyInitializer();
                     	    _fsp--;
 
@@ -1939,7 +1940,7 @@
             }
 
             RBRACE38=(Token)input.LT(1);
-            match(input,RBRACE,FOLLOW_RBRACE_in_objectLiteral3639); 
+            match(input,RBRACE,FOLLOW_RBRACE_in_objectLiteral3667); 
             stream_RBRACE.add(RBRACE38);
 
 
@@ -1953,14 +1954,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1001:2: -> ^( OBJECT[$lb, \"OBJECT\"] ( objectPropertyInitializer )* )
+            // 1005:2: -> ^( OBJECT[$lb, \"OBJECT\"] ( objectPropertyInitializer )* )
             {
-                // JS.g:1001:5: ^( OBJECT[$lb, \"OBJECT\"] ( objectPropertyInitializer )* )
+                // JS.g:1005:5: ^( OBJECT[$lb, \"OBJECT\"] ( objectPropertyInitializer )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(OBJECT, lb,  "OBJECT"), root_1);
 
-                // JS.g:1001:30: ( objectPropertyInitializer )*
+                // JS.g:1005:30: ( objectPropertyInitializer )*
                 while ( stream_objectPropertyInitializer.hasNext() ) {
                     adaptor.addChild(root_1, stream_objectPropertyInitializer.next());
 
@@ -1998,7 +1999,7 @@
     };
 
     // $ANTLR start objectPropertyInitializer
-    // JS.g:1004:1: objectPropertyInitializer : ( nameValuePair | getMethodDeclaration | setMethodDeclaration );
+    // JS.g:1008:1: objectPropertyInitializer : ( nameValuePair | getMethodDeclaration | setMethodDeclaration );
     public final objectPropertyInitializer_return objectPropertyInitializer() throws RecognitionException {
         objectPropertyInitializer_return retval = new objectPropertyInitializer_return();
         retval.start = input.LT(1);
@@ -2014,7 +2015,7 @@
 
 
         try {
-            // JS.g:1005:3: ( nameValuePair | getMethodDeclaration | setMethodDeclaration )
+            // JS.g:1009:3: ( nameValuePair | getMethodDeclaration | setMethodDeclaration )
             int alt10=3;
             switch ( input.LA(1) ) {
             case GET:
@@ -2029,7 +2030,7 @@
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("1004:1: objectPropertyInitializer : ( nameValuePair | getMethodDeclaration | setMethodDeclaration );", 10, 1, input);
+                        new NoViableAltException("1008:1: objectPropertyInitializer : ( nameValuePair | getMethodDeclaration | setMethodDeclaration );", 10, 1, input);
 
                     throw nvae;
                 }
@@ -2060,7 +2061,7 @@
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("1004:1: objectPropertyInitializer : ( nameValuePair | getMethodDeclaration | setMethodDeclaration );", 10, 3, input);
+                        new NoViableAltException("1008:1: objectPropertyInitializer : ( nameValuePair | getMethodDeclaration | setMethodDeclaration );", 10, 3, input);
 
                     throw nvae;
                 }
@@ -2068,18 +2069,18 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("1004:1: objectPropertyInitializer : ( nameValuePair | getMethodDeclaration | setMethodDeclaration );", 10, 0, input);
+                    new NoViableAltException("1008:1: objectPropertyInitializer : ( nameValuePair | getMethodDeclaration | setMethodDeclaration );", 10, 0, input);
 
                 throw nvae;
             }
 
             switch (alt10) {
                 case 1 :
-                    // JS.g:1005:5: nameValuePair
+                    // JS.g:1009:5: nameValuePair
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_nameValuePair_in_objectPropertyInitializer3664);
+                    pushFollow(FOLLOW_nameValuePair_in_objectPropertyInitializer3692);
                     nameValuePair39=nameValuePair();
                     _fsp--;
 
@@ -2088,11 +2089,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1006:5: getMethodDeclaration
+                    // JS.g:1010:5: getMethodDeclaration
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_getMethodDeclaration_in_objectPropertyInitializer3671);
+                    pushFollow(FOLLOW_getMethodDeclaration_in_objectPropertyInitializer3699);
                     getMethodDeclaration40=getMethodDeclaration();
                     _fsp--;
 
@@ -2101,11 +2102,11 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:1007:5: setMethodDeclaration
+                    // JS.g:1011:5: setMethodDeclaration
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_setMethodDeclaration_in_objectPropertyInitializer3677);
+                    pushFollow(FOLLOW_setMethodDeclaration_in_objectPropertyInitializer3705);
                     setMethodDeclaration41=setMethodDeclaration();
                     _fsp--;
 
@@ -2137,7 +2138,7 @@
     };
 
     // $ANTLR start nameValuePair
-    // JS.g:1010:1: nameValuePair : propertyName COLON assignmentExpression -> ^( NAMEDVALUE propertyName assignmentExpression ) ;
+    // JS.g:1014:1: nameValuePair : propertyName COLON assignmentExpression -> ^( NAMEDVALUE propertyName assignmentExpression ) ;
     public final nameValuePair_return nameValuePair() throws RecognitionException {
         nameValuePair_return retval = new nameValuePair_return();
         retval.start = input.LT(1);
@@ -2155,19 +2156,19 @@
         RewriteRuleSubtreeStream stream_propertyName=new RewriteRuleSubtreeStream(adaptor,"rule propertyName");
         RewriteRuleSubtreeStream stream_assignmentExpression=new RewriteRuleSubtreeStream(adaptor,"rule assignmentExpression");
         try {
-            // JS.g:1011:2: ( propertyName COLON assignmentExpression -> ^( NAMEDVALUE propertyName assignmentExpression ) )
-            // JS.g:1011:4: propertyName COLON assignmentExpression
+            // JS.g:1015:2: ( propertyName COLON assignmentExpression -> ^( NAMEDVALUE propertyName assignmentExpression ) )
+            // JS.g:1015:4: propertyName COLON assignmentExpression
             {
-            pushFollow(FOLLOW_propertyName_in_nameValuePair3690);
+            pushFollow(FOLLOW_propertyName_in_nameValuePair3718);
             propertyName42=propertyName();
             _fsp--;
 
             stream_propertyName.add(propertyName42.getTree());
             COLON43=(Token)input.LT(1);
-            match(input,COLON,FOLLOW_COLON_in_nameValuePair3692); 
+            match(input,COLON,FOLLOW_COLON_in_nameValuePair3720); 
             stream_COLON.add(COLON43);
 
-            pushFollow(FOLLOW_assignmentExpression_in_nameValuePair3694);
+            pushFollow(FOLLOW_assignmentExpression_in_nameValuePair3722);
             assignmentExpression44=assignmentExpression();
             _fsp--;
 
@@ -2183,9 +2184,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1012:2: -> ^( NAMEDVALUE propertyName assignmentExpression )
+            // 1016:2: -> ^( NAMEDVALUE propertyName assignmentExpression )
             {
-                // JS.g:1012:5: ^( NAMEDVALUE propertyName assignmentExpression )
+                // JS.g:1016:5: ^( NAMEDVALUE propertyName assignmentExpression )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(NAMEDVALUE, "NAMEDVALUE"), root_1);
@@ -2224,7 +2225,7 @@
     };
 
     // $ANTLR start propertyName
-    // JS.g:1015:1: propertyName : ( identifier | StringLiteral | numericLiteral | XmlAttribute );
+    // JS.g:1019:1: propertyName : ( identifier | StringLiteral | numericLiteral | XmlAttribute );
     public final propertyName_return propertyName() throws RecognitionException {
         propertyName_return retval = new propertyName_return();
         retval.start = input.LT(1);
@@ -2242,7 +2243,7 @@
         Object XmlAttribute48_tree=null;
 
         try {
-            // JS.g:1016:2: ( identifier | StringLiteral | numericLiteral | XmlAttribute )
+            // JS.g:1020:2: ( identifier | StringLiteral | numericLiteral | XmlAttribute )
             int alt11=4;
             switch ( input.LA(1) ) {
             case EACH:
@@ -2274,18 +2275,18 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("1015:1: propertyName : ( identifier | StringLiteral | numericLiteral | XmlAttribute );", 11, 0, input);
+                    new NoViableAltException("1019:1: propertyName : ( identifier | StringLiteral | numericLiteral | XmlAttribute );", 11, 0, input);
 
                 throw nvae;
             }
 
             switch (alt11) {
                 case 1 :
-                    // JS.g:1016:4: identifier
+                    // JS.g:1020:4: identifier
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_identifier_in_propertyName3718);
+                    pushFollow(FOLLOW_identifier_in_propertyName3746);
                     identifier45=identifier();
                     _fsp--;
 
@@ -2294,12 +2295,12 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1017:4: StringLiteral
+                    // JS.g:1021:4: StringLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
                     StringLiteral46=(Token)input.LT(1);
-                    match(input,StringLiteral,FOLLOW_StringLiteral_in_propertyName3723); 
+                    match(input,StringLiteral,FOLLOW_StringLiteral_in_propertyName3751); 
                     StringLiteral46_tree = (Object)adaptor.create(StringLiteral46);
                     adaptor.addChild(root_0, StringLiteral46_tree);
 
@@ -2307,11 +2308,11 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:1018:4: numericLiteral
+                    // JS.g:1022:4: numericLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_numericLiteral_in_propertyName3728);
+                    pushFollow(FOLLOW_numericLiteral_in_propertyName3756);
                     numericLiteral47=numericLiteral();
                     _fsp--;
 
@@ -2320,12 +2321,12 @@
                     }
                     break;
                 case 4 :
-                    // JS.g:1019:4: XmlAttribute
+                    // JS.g:1023:4: XmlAttribute
                     {
                     root_0 = (Object)adaptor.nil();
 
                     XmlAttribute48=(Token)input.LT(1);
-                    match(input,XmlAttribute,FOLLOW_XmlAttribute_in_propertyName3733); 
+                    match(input,XmlAttribute,FOLLOW_XmlAttribute_in_propertyName3761); 
                     XmlAttribute48_tree = (Object)adaptor.create(XmlAttribute48);
                     adaptor.addChild(root_0, XmlAttribute48_tree);
 
@@ -2356,7 +2357,7 @@
     };
 
     // $ANTLR start memberExpression
-    // JS.g:1031:1: memberExpression : ( primaryExpression | functionExpression | newExpression );
+    // JS.g:1035:1: memberExpression : ( primaryExpression | functionExpression | newExpression );
     public final memberExpression_return memberExpression() throws RecognitionException {
         memberExpression_return retval = new memberExpression_return();
         retval.start = input.LT(1);
@@ -2372,7 +2373,7 @@
 
 
         try {
-            // JS.g:1032:2: ( primaryExpression | functionExpression | newExpression )
+            // JS.g:1036:2: ( primaryExpression | functionExpression | newExpression )
             int alt12=3;
             switch ( input.LA(1) ) {
             case NULL:
@@ -2410,18 +2411,18 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("1031:1: memberExpression : ( primaryExpression | functionExpression | newExpression );", 12, 0, input);
+                    new NoViableAltException("1035:1: memberExpression : ( primaryExpression | functionExpression | newExpression );", 12, 0, input);
 
                 throw nvae;
             }
 
             switch (alt12) {
                 case 1 :
-                    // JS.g:1032:4: primaryExpression
+                    // JS.g:1036:4: primaryExpression
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_primaryExpression_in_memberExpression3751);
+                    pushFollow(FOLLOW_primaryExpression_in_memberExpression3779);
                     primaryExpression49=primaryExpression();
                     _fsp--;
 
@@ -2430,11 +2431,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1033:4: functionExpression
+                    // JS.g:1037:4: functionExpression
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_functionExpression_in_memberExpression3756);
+                    pushFollow(FOLLOW_functionExpression_in_memberExpression3784);
                     functionExpression50=functionExpression();
                     _fsp--;
 
@@ -2443,11 +2444,11 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:1034:4: newExpression
+                    // JS.g:1038:4: newExpression
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_newExpression_in_memberExpression3761);
+                    pushFollow(FOLLOW_newExpression_in_memberExpression3789);
                     newExpression51=newExpression();
                     _fsp--;
 
@@ -2479,7 +2480,7 @@
     };
 
     // $ANTLR start newExpression
-    // JS.g:1037:1: newExpression : NEW memberExpression ;
+    // JS.g:1041:1: newExpression : NEW memberExpression ;
     public final newExpression_return newExpression() throws RecognitionException {
         newExpression_return retval = new newExpression_return();
         retval.start = input.LT(1);
@@ -2493,17 +2494,17 @@
         Object NEW52_tree=null;
 
         try {
-            // JS.g:1038:2: ( NEW memberExpression )
-            // JS.g:1038:4: NEW memberExpression
+            // JS.g:1042:2: ( NEW memberExpression )
+            // JS.g:1042:4: NEW memberExpression
             {
             root_0 = (Object)adaptor.nil();
 
             NEW52=(Token)input.LT(1);
-            match(input,NEW,FOLLOW_NEW_in_newExpression3772); 
+            match(input,NEW,FOLLOW_NEW_in_newExpression3800); 
             NEW52_tree = (Object)adaptor.create(NEW52);
             root_0 = (Object)adaptor.becomeRoot(NEW52_tree, root_0);
 
-            pushFollow(FOLLOW_memberExpression_in_newExpression3775);
+            pushFollow(FOLLOW_memberExpression_in_newExpression3803);
             memberExpression53=memberExpression();
             _fsp--;
 
@@ -2533,7 +2534,7 @@
     };
 
     // $ANTLR start arguments
-    // JS.g:1042:1: arguments : LPAREN ( assignmentExpression ( COMMA assignmentExpression )* )? RPAREN -> ^( ARGS ( assignmentExpression )* ) ;
+    // JS.g:1046:1: arguments : LPAREN ( assignmentExpression ( COMMA assignmentExpression )* )? RPAREN -> ^( ARGS ( assignmentExpression )* ) ;
     public final arguments_return arguments() throws RecognitionException {
         arguments_return retval = new arguments_return();
         retval.start = input.LT(1);
@@ -2556,14 +2557,14 @@
         RewriteRuleTokenStream stream_LPAREN=new RewriteRuleTokenStream(adaptor,"token LPAREN");
         RewriteRuleSubtreeStream stream_assignmentExpression=new RewriteRuleSubtreeStream(adaptor,"rule assignmentExpression");
         try {
-            // JS.g:1043:2: ( LPAREN ( assignmentExpression ( COMMA assignmentExpression )* )? RPAREN -> ^( ARGS ( assignmentExpression )* ) )
-            // JS.g:1043:4: LPAREN ( assignmentExpression ( COMMA assignmentExpression )* )? RPAREN
+            // JS.g:1047:2: ( LPAREN ( assignmentExpression ( COMMA assignmentExpression )* )? RPAREN -> ^( ARGS ( assignmentExpression )* ) )
+            // JS.g:1047:4: LPAREN ( assignmentExpression ( COMMA assignmentExpression )* )? RPAREN
             {
             LPAREN54=(Token)input.LT(1);
-            match(input,LPAREN,FOLLOW_LPAREN_in_arguments3788); 
+            match(input,LPAREN,FOLLOW_LPAREN_in_arguments3816); 
             stream_LPAREN.add(LPAREN54);
 
-            // JS.g:1043:11: ( assignmentExpression ( COMMA assignmentExpression )* )?
+            // JS.g:1047:11: ( assignmentExpression ( COMMA assignmentExpression )* )?
             int alt14=2;
             int LA14_0 = input.LA(1);
 
@@ -2572,14 +2573,14 @@
             }
             switch (alt14) {
                 case 1 :
-                    // JS.g:1043:13: assignmentExpression ( COMMA assignmentExpression )*
+                    // JS.g:1047:13: assignmentExpression ( COMMA assignmentExpression )*
                     {
-                    pushFollow(FOLLOW_assignmentExpression_in_arguments3792);
+                    pushFollow(FOLLOW_assignmentExpression_in_arguments3820);
                     assignmentExpression55=assignmentExpression();
                     _fsp--;
 
                     stream_assignmentExpression.add(assignmentExpression55.getTree());
-                    // JS.g:1043:34: ( COMMA assignmentExpression )*
+                    // JS.g:1047:34: ( COMMA assignmentExpression )*
                     loop13:
                     do {
                         int alt13=2;
@@ -2592,13 +2593,13 @@
 
                         switch (alt13) {
                     	case 1 :
-                    	    // JS.g:1043:36: COMMA assignmentExpression
+                    	    // JS.g:1047:36: COMMA assignmentExpression
                     	    {
                     	    COMMA56=(Token)input.LT(1);
-                    	    match(input,COMMA,FOLLOW_COMMA_in_arguments3796); 
+                    	    match(input,COMMA,FOLLOW_COMMA_in_arguments3824); 
                     	    stream_COMMA.add(COMMA56);
 
-                    	    pushFollow(FOLLOW_assignmentExpression_in_arguments3798);
+                    	    pushFollow(FOLLOW_assignmentExpression_in_arguments3826);
                     	    assignmentExpression57=assignmentExpression();
                     	    _fsp--;
 
@@ -2619,7 +2620,7 @@
             }
 
             RPAREN58=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_arguments3806); 
+            match(input,RPAREN,FOLLOW_RPAREN_in_arguments3834); 
             stream_RPAREN.add(RPAREN58);
 
 
@@ -2633,14 +2634,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1044:2: -> ^( ARGS ( assignmentExpression )* )
+            // 1048:2: -> ^( ARGS ( assignmentExpression )* )
             {
-                // JS.g:1044:5: ^( ARGS ( assignmentExpression )* )
+                // JS.g:1048:5: ^( ARGS ( assignmentExpression )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(ARGS, "ARGS"), root_1);
 
-                // JS.g:1044:13: ( assignmentExpression )*
+                // JS.g:1048:13: ( assignmentExpression )*
                 while ( stream_assignmentExpression.hasNext() ) {
                     adaptor.addChild(root_1, stream_assignmentExpression.next());
 
@@ -2678,7 +2679,7 @@
     };
 
     // $ANTLR start leftHandSideExpression
-    // JS.g:1047:1: leftHandSideExpression : ( memberExpression -> memberExpression ) ( arguments -> ^( CALL $leftHandSideExpression arguments ) | LBRACK expression RBRACK -> ^( BYINDEX $leftHandSideExpression expression ) | DOT rightHandSideExpression -> ^( BYFIELD $leftHandSideExpression rightHandSideExpression ) | DOTDOT expression -> ^( ALLCHILDREN $leftHandSideExpression expression ) | COLONCOLON expression -> ^( LOCALNAME $leftHandSideExpression expression ) )* ;
+    // JS.g:1051:1: leftHandSideExpression : ( memberExpression -> memberExpression ) ( arguments -> ^( CALL $leftHandSideExpression arguments ) | LBRACK expression RBRACK -> ^( BYINDEX $leftHandSideExpression expression ) | DOT rightHandSideExpression -> ^( BYFIELD $leftHandSideExpression rightHandSideExpression ) | DOTDOT expression -> ^( ALLCHILDREN $leftHandSideExpression expression ) | COLONCOLON expression -> ^( LOCALNAME $leftHandSideExpression expression ) )* ;
     public final leftHandSideExpression_return leftHandSideExpression() throws RecognitionException {
         leftHandSideExpression_return retval = new leftHandSideExpression_return();
         retval.start = input.LT(1);
@@ -2718,13 +2719,13 @@
         RewriteRuleSubtreeStream stream_arguments=new RewriteRuleSubtreeStream(adaptor,"rule arguments");
         RewriteRuleSubtreeStream stream_rightHandSideExpression=new RewriteRuleSubtreeStream(adaptor,"rule rightHandSideExpression");
         try {
-            // JS.g:1048:3: ( ( memberExpression -> memberExpression ) ( arguments -> ^( CALL $leftHandSideExpression arguments ) | LBRACK expression RBRACK -> ^( BYINDEX $leftHandSideExpression expression ) | DOT rightHandSideExpression -> ^( BYFIELD $leftHandSideExpression rightHandSideExpression ) | DOTDOT expression -> ^( ALLCHILDREN $leftHandSideExpression expression ) | COLONCOLON expression -> ^( LOCALNAME $leftHandSideExpression expression ) )* )
-            // JS.g:1049:3: ( memberExpression -> memberExpression ) ( arguments -> ^( CALL $leftHandSideExpression arguments ) | LBRACK expression RBRACK -> ^( BYINDEX $leftHandSideExpression expression ) | DOT rightHandSideExpression -> ^( BYFIELD $leftHandSideExpression rightHandSideExpression ) | DOTDOT expression -> ^( ALLCHILDREN $leftHandSideExpression expression ) | COLONCOLON expression -> ^( LOCALNAME $leftHandSideExpression expression ) )*
+            // JS.g:1052:3: ( ( memberExpression -> memberExpression ) ( arguments -> ^( CALL $leftHandSideExpression arguments ) | LBRACK expression RBRACK -> ^( BYINDEX $leftHandSideExpression expression ) | DOT rightHandSideExpression -> ^( BYFIELD $leftHandSideExpression rightHandSideExpression ) | DOTDOT expression -> ^( ALLCHILDREN $leftHandSideExpression expression ) | COLONCOLON expression -> ^( LOCALNAME $leftHandSideExpression expression ) )* )
+            // JS.g:1053:3: ( memberExpression -> memberExpression ) ( arguments -> ^( CALL $leftHandSideExpression arguments ) | LBRACK expression RBRACK -> ^( BYINDEX $leftHandSideExpression expression ) | DOT rightHandSideExpression -> ^( BYFIELD $leftHandSideExpression rightHandSideExpression ) | DOTDOT expression -> ^( ALLCHILDREN $leftHandSideExpression expression ) | COLONCOLON expression -> ^( LOCALNAME $leftHandSideExpression expression ) )*
             {
-            // JS.g:1049:3: ( memberExpression -> memberExpression )
-            // JS.g:1050:5: memberExpression
+            // JS.g:1053:3: ( memberExpression -> memberExpression )
+            // JS.g:1054:5: memberExpression
             {
-            pushFollow(FOLLOW_memberExpression_in_leftHandSideExpression3839);
+            pushFollow(FOLLOW_memberExpression_in_leftHandSideExpression3867);
             memberExpression59=memberExpression();
             _fsp--;
 
@@ -2740,7 +2741,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1050:25: -> memberExpression
+            // 1054:25: -> memberExpression
             {
                 adaptor.addChild(root_0, stream_memberExpression.next());
 
@@ -2750,7 +2751,7 @@
 
             }
 
-            // JS.g:1052:3: ( arguments -> ^( CALL $leftHandSideExpression arguments ) | LBRACK expression RBRACK -> ^( BYINDEX $leftHandSideExpression expression ) | DOT rightHandSideExpression -> ^( BYFIELD $leftHandSideExpression rightHandSideExpression ) | DOTDOT expression -> ^( ALLCHILDREN $leftHandSideExpression expression ) | COLONCOLON expression -> ^( LOCALNAME $leftHandSideExpression expression ) )*
+            // JS.g:1056:3: ( arguments -> ^( CALL $leftHandSideExpression arguments ) | LBRACK expression RBRACK -> ^( BYINDEX $leftHandSideExpression expression ) | DOT rightHandSideExpression -> ^( BYFIELD $leftHandSideExpression rightHandSideExpression ) | DOTDOT expression -> ^( ALLCHILDREN $leftHandSideExpression expression ) | COLONCOLON expression -> ^( LOCALNAME $leftHandSideExpression expression ) )*
             loop15:
             do {
                 int alt15=6;
@@ -2785,16 +2786,16 @@
 
                 switch (alt15) {
             	case 1 :
-            	    // JS.g:1053:5: arguments
+            	    // JS.g:1057:5: arguments
             	    {
-            	    pushFollow(FOLLOW_arguments_in_leftHandSideExpression3860);
+            	    pushFollow(FOLLOW_arguments_in_leftHandSideExpression3888);
             	    arguments60=arguments();
             	    _fsp--;
 
             	    stream_arguments.add(arguments60.getTree());
 
             	    // AST REWRITE
-            	    // elements: leftHandSideExpression, arguments
+            	    // elements: arguments, leftHandSideExpression
             	    // token labels: 
             	    // rule labels: retval
             	    // token list labels: 
@@ -2803,9 +2804,9 @@
             	    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             	    root_0 = (Object)adaptor.nil();
-            	    // 1053:19: -> ^( CALL $leftHandSideExpression arguments )
+            	    // 1057:19: -> ^( CALL $leftHandSideExpression arguments )
             	    {
-            	        // JS.g:1053:22: ^( CALL $leftHandSideExpression arguments )
+            	        // JS.g:1057:22: ^( CALL $leftHandSideExpression arguments )
             	        {
             	        Object root_1 = (Object)adaptor.nil();
             	        root_1 = (Object)adaptor.becomeRoot(adaptor.create(CALL, "CALL"), root_1);
@@ -2823,24 +2824,24 @@
             	    }
             	    break;
             	case 2 :
-            	    // JS.g:1054:7: LBRACK expression RBRACK
+            	    // JS.g:1058:7: LBRACK expression RBRACK
             	    {
             	    LBRACK61=(Token)input.LT(1);
-            	    match(input,LBRACK,FOLLOW_LBRACK_in_leftHandSideExpression3885); 
+            	    match(input,LBRACK,FOLLOW_LBRACK_in_leftHandSideExpression3913); 
             	    stream_LBRACK.add(LBRACK61);
 
-            	    pushFollow(FOLLOW_expression_in_leftHandSideExpression3887);
+            	    pushFollow(FOLLOW_expression_in_leftHandSideExpression3915);
             	    expression62=expression();
             	    _fsp--;
 
             	    stream_expression.add(expression62.getTree());
             	    RBRACK63=(Token)input.LT(1);
-            	    match(input,RBRACK,FOLLOW_RBRACK_in_leftHandSideExpression3889); 
+            	    match(input,RBRACK,FOLLOW_RBRACK_in_leftHandSideExpression3917); 
             	    stream_RBRACK.add(RBRACK63);
 
 
             	    // AST REWRITE
-            	    // elements: leftHandSideExpression, expression
+            	    // elements: expression, leftHandSideExpression
             	    // token labels: 
             	    // rule labels: retval
             	    // token list labels: 
@@ -2849,9 +2850,9 @@
             	    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             	    root_0 = (Object)adaptor.nil();
-            	    // 1054:33: -> ^( BYINDEX $leftHandSideExpression expression )
+            	    // 1058:33: -> ^( BYINDEX $leftHandSideExpression expression )
             	    {
-            	        // JS.g:1054:36: ^( BYINDEX $leftHandSideExpression expression )
+            	        // JS.g:1058:36: ^( BYINDEX $leftHandSideExpression expression )
             	        {
             	        Object root_1 = (Object)adaptor.nil();
             	        root_1 = (Object)adaptor.becomeRoot(adaptor.create(BYINDEX, "BYINDEX"), root_1);
@@ -2869,13 +2870,13 @@
             	    }
             	    break;
             	case 3 :
-            	    // JS.g:1055:7: DOT rightHandSideExpression
+            	    // JS.g:1059:7: DOT rightHandSideExpression
             	    {
             	    DOT64=(Token)input.LT(1);
-            	    match(input,DOT,FOLLOW_DOT_in_leftHandSideExpression3911); 
+            	    match(input,DOT,FOLLOW_DOT_in_leftHandSideExpression3939); 
             	    stream_DOT.add(DOT64);
 
-            	    pushFollow(FOLLOW_rightHandSideExpression_in_leftHandSideExpression3913);
+            	    pushFollow(FOLLOW_rightHandSideExpression_in_leftHandSideExpression3941);
             	    rightHandSideExpression65=rightHandSideExpression();
             	    _fsp--;
 
@@ -2891,9 +2892,9 @@
             	    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             	    root_0 = (Object)adaptor.nil();
-            	    // 1055:35: -> ^( BYFIELD $leftHandSideExpression rightHandSideExpression )
+            	    // 1059:35: -> ^( BYFIELD $leftHandSideExpression rightHandSideExpression )
             	    {
-            	        // JS.g:1055:38: ^( BYFIELD $leftHandSideExpression rightHandSideExpression )
+            	        // JS.g:1059:38: ^( BYFIELD $leftHandSideExpression rightHandSideExpression )
             	        {
             	        Object root_1 = (Object)adaptor.nil();
             	        root_1 = (Object)adaptor.becomeRoot(adaptor.create(BYFIELD, "BYFIELD"), root_1);
@@ -2911,13 +2912,13 @@
             	    }
             	    break;
             	case 4 :
-            	    // JS.g:1056:7: DOTDOT expression
+            	    // JS.g:1060:7: DOTDOT expression
             	    {
             	    DOTDOT66=(Token)input.LT(1);
-            	    match(input,DOTDOT,FOLLOW_DOTDOT_in_leftHandSideExpression3934); 
+            	    match(input,DOTDOT,FOLLOW_DOTDOT_in_leftHandSideExpression3962); 
             	    stream_DOTDOT.add(DOTDOT66);
 
-            	    pushFollow(FOLLOW_expression_in_leftHandSideExpression3936);
+            	    pushFollow(FOLLOW_expression_in_leftHandSideExpression3964);
             	    expression67=expression();
             	    _fsp--;
 
@@ -2933,9 +2934,9 @@
             	    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             	    root_0 = (Object)adaptor.nil();
-            	    // 1056:25: -> ^( ALLCHILDREN $leftHandSideExpression expression )
+            	    // 1060:25: -> ^( ALLCHILDREN $leftHandSideExpression expression )
             	    {
-            	        // JS.g:1056:28: ^( ALLCHILDREN $leftHandSideExpression expression )
+            	        // JS.g:1060:28: ^( ALLCHILDREN $leftHandSideExpression expression )
             	        {
             	        Object root_1 = (Object)adaptor.nil();
             	        root_1 = (Object)adaptor.becomeRoot(adaptor.create(ALLCHILDREN, "ALLCHILDREN"), root_1);
@@ -2953,13 +2954,13 @@
             	    }
             	    break;
             	case 5 :
-            	    // JS.g:1057:7: COLONCOLON expression
+            	    // JS.g:1061:7: COLONCOLON expression
             	    {
             	    COLONCOLON68=(Token)input.LT(1);
-            	    match(input,COLONCOLON,FOLLOW_COLONCOLON_in_leftHandSideExpression3955); 
+            	    match(input,COLONCOLON,FOLLOW_COLONCOLON_in_leftHandSideExpression3983); 
             	    stream_COLONCOLON.add(COLONCOLON68);
 
-            	    pushFollow(FOLLOW_expression_in_leftHandSideExpression3957);
+            	    pushFollow(FOLLOW_expression_in_leftHandSideExpression3985);
             	    expression69=expression();
             	    _fsp--;
 
@@ -2975,9 +2976,9 @@
             	    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             	    root_0 = (Object)adaptor.nil();
-            	    // 1057:29: -> ^( LOCALNAME $leftHandSideExpression expression )
+            	    // 1061:29: -> ^( LOCALNAME $leftHandSideExpression expression )
             	    {
-            	        // JS.g:1057:32: ^( LOCALNAME $leftHandSideExpression expression )
+            	        // JS.g:1061:32: ^( LOCALNAME $leftHandSideExpression expression )
             	        {
             	        Object root_1 = (Object)adaptor.nil();
             	        root_1 = (Object)adaptor.becomeRoot(adaptor.create(LOCALNAME, "LOCALNAME"), root_1);
@@ -3025,7 +3026,7 @@
     };
 
     // $ANTLR start rightHandSideExpression
-    // JS.g:1061:1: rightHandSideExpression : ( parenExpression | identifier | XmlAttribute | MUL );
+    // JS.g:1065:1: rightHandSideExpression : ( parenExpression | identifier | XmlAttribute | MUL );
     public final rightHandSideExpression_return rightHandSideExpression() throws RecognitionException {
         rightHandSideExpression_return retval = new rightHandSideExpression_return();
         retval.start = input.LT(1);
@@ -3043,7 +3044,7 @@
         Object MUL73_tree=null;
 
         try {
-            // JS.g:1062:3: ( parenExpression | identifier | XmlAttribute | MUL )
+            // JS.g:1066:3: ( parenExpression | identifier | XmlAttribute | MUL )
             int alt16=4;
             switch ( input.LA(1) ) {
             case LPAREN:
@@ -3073,18 +3074,18 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("1061:1: rightHandSideExpression : ( parenExpression | identifier | XmlAttribute | MUL );", 16, 0, input);
+                    new NoViableAltException("1065:1: rightHandSideExpression : ( parenExpression | identifier | XmlAttribute | MUL );", 16, 0, input);
 
                 throw nvae;
             }
 
             switch (alt16) {
                 case 1 :
-                    // JS.g:1062:5: parenExpression
+                    // JS.g:1066:5: parenExpression
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_parenExpression_in_rightHandSideExpression3986);
+                    pushFollow(FOLLOW_parenExpression_in_rightHandSideExpression4014);
                     parenExpression70=parenExpression();
                     _fsp--;
 
@@ -3093,11 +3094,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1063:5: identifier
+                    // JS.g:1067:5: identifier
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_identifier_in_rightHandSideExpression3993);
+                    pushFollow(FOLLOW_identifier_in_rightHandSideExpression4021);
                     identifier71=identifier();
                     _fsp--;
 
@@ -3106,12 +3107,12 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:1064:5: XmlAttribute
+                    // JS.g:1068:5: XmlAttribute
                     {
                     root_0 = (Object)adaptor.nil();
 
                     XmlAttribute72=(Token)input.LT(1);
-                    match(input,XmlAttribute,FOLLOW_XmlAttribute_in_rightHandSideExpression3999); 
+                    match(input,XmlAttribute,FOLLOW_XmlAttribute_in_rightHandSideExpression4027); 
                     XmlAttribute72_tree = (Object)adaptor.create(XmlAttribute72);
                     adaptor.addChild(root_0, XmlAttribute72_tree);
 
@@ -3119,12 +3120,12 @@
                     }
                     break;
                 case 4 :
-                    // JS.g:1065:5: MUL
+                    // JS.g:1069:5: MUL
                     {
                     root_0 = (Object)adaptor.nil();
 
                     MUL73=(Token)input.LT(1);
-                    match(input,MUL,FOLLOW_MUL_in_rightHandSideExpression4005); 
+                    match(input,MUL,FOLLOW_MUL_in_rightHandSideExpression4033); 
                     MUL73_tree = (Object)adaptor.create(MUL73);
                     adaptor.addChild(root_0, MUL73_tree);
 
@@ -3155,7 +3156,7 @@
     };
 
     // $ANTLR start postfixExpression
-    // JS.g:1098:1: postfixExpression : leftHandSideExpression ( postfixOperator )? ;
+    // JS.g:1102:1: postfixExpression : leftHandSideExpression ( postfixOperator )? ;
     public final postfixExpression_return postfixExpression() throws RecognitionException {
         postfixExpression_return retval = new postfixExpression_return();
         retval.start = input.LT(1);
@@ -3169,18 +3170,18 @@
 
 
         try {
-            // JS.g:1099:2: ( leftHandSideExpression ( postfixOperator )? )
-            // JS.g:1099:4: leftHandSideExpression ( postfixOperator )?
+            // JS.g:1103:2: ( leftHandSideExpression ( postfixOperator )? )
+            // JS.g:1103:4: leftHandSideExpression ( postfixOperator )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_leftHandSideExpression_in_postfixExpression4043);
+            pushFollow(FOLLOW_leftHandSideExpression_in_postfixExpression4071);
             leftHandSideExpression74=leftHandSideExpression();
             _fsp--;
 
             adaptor.addChild(root_0, leftHandSideExpression74.getTree());
              if (input.LA(1) == INC || input.LA(1) == DEC) promoteEOL(null); 
-            // JS.g:1099:95: ( postfixOperator )?
+            // JS.g:1103:95: ( postfixOperator )?
             int alt17=2;
             int LA17_0 = input.LA(1);
 
@@ -3192,9 +3193,9 @@
             }
             switch (alt17) {
                 case 1 :
-                    // JS.g:1099:97: postfixOperator
+                    // JS.g:1103:97: postfixOperator
                     {
-                    pushFollow(FOLLOW_postfixOperator_in_postfixExpression4049);
+                    pushFollow(FOLLOW_postfixOperator_in_postfixExpression4077);
                     postfixOperator75=postfixOperator();
                     _fsp--;
 
@@ -3230,7 +3231,7 @@
     };
 
     // $ANTLR start postfixOperator
-    // JS.g:1102:1: postfixOperator : (op= INC | op= DEC );
+    // JS.g:1106:1: postfixOperator : (op= INC | op= DEC );
     public final postfixOperator_return postfixOperator() throws RecognitionException {
         postfixOperator_return retval = new postfixOperator_return();
         retval.start = input.LT(1);
@@ -3242,7 +3243,7 @@
         Object op_tree=null;
 
         try {
-            // JS.g:1103:2: (op= INC | op= DEC )
+            // JS.g:1107:2: (op= INC | op= DEC )
             int alt18=2;
             int LA18_0 = input.LA(1);
 
@@ -3254,18 +3255,18 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("1102:1: postfixOperator : (op= INC | op= DEC );", 18, 0, input);
+                    new NoViableAltException("1106:1: postfixOperator : (op= INC | op= DEC );", 18, 0, input);
 
                 throw nvae;
             }
             switch (alt18) {
                 case 1 :
-                    // JS.g:1103:4: op= INC
+                    // JS.g:1107:4: op= INC
                     {
                     root_0 = (Object)adaptor.nil();
 
                     op=(Token)input.LT(1);
-                    match(input,INC,FOLLOW_INC_in_postfixOperator4067); 
+                    match(input,INC,FOLLOW_INC_in_postfixOperator4095); 
                     op_tree = (Object)adaptor.create(op);
                     adaptor.addChild(root_0, op_tree);
 
@@ -3274,12 +3275,12 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1104:4: op= DEC
+                    // JS.g:1108:4: op= DEC
                     {
                     root_0 = (Object)adaptor.nil();
 
                     op=(Token)input.LT(1);
-                    match(input,DEC,FOLLOW_DEC_in_postfixOperator4076); 
+                    match(input,DEC,FOLLOW_DEC_in_postfixOperator4104); 
                     op_tree = (Object)adaptor.create(op);
                     adaptor.addChild(root_0, op_tree);
 
@@ -3311,7 +3312,7 @@
     };
 
     // $ANTLR start unaryExpression
-    // JS.g:1111:1: unaryExpression : ( postfixExpression | unaryOperator unaryExpression | XMLLiteral );
+    // JS.g:1115:1: unaryExpression : ( postfixExpression | unaryOperator unaryExpression | XMLLiteral );
     public final unaryExpression_return unaryExpression() throws RecognitionException {
         unaryExpression_return retval = new unaryExpression_return();
         retval.start = input.LT(1);
@@ -3329,7 +3330,7 @@
         Object XMLLiteral79_tree=null;
 
         try {
-            // JS.g:1112:2: ( postfixExpression | unaryOperator unaryExpression | XMLLiteral )
+            // JS.g:1116:2: ( postfixExpression | unaryOperator unaryExpression | XMLLiteral )
             int alt19=3;
             switch ( input.LA(1) ) {
             case NULL:
@@ -3378,18 +3379,18 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("1111:1: unaryExpression : ( postfixExpression | unaryOperator unaryExpression | XMLLiteral );", 19, 0, input);
+                    new NoViableAltException("1115:1: unaryExpression : ( postfixExpression | unaryOperator unaryExpression | XMLLiteral );", 19, 0, input);
 
                 throw nvae;
             }
 
             switch (alt19) {
                 case 1 :
-                    // JS.g:1112:4: postfixExpression
+                    // JS.g:1116:4: postfixExpression
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_postfixExpression_in_unaryExpression4093);
+                    pushFollow(FOLLOW_postfixExpression_in_unaryExpression4121);
                     postfixExpression76=postfixExpression();
                     _fsp--;
 
@@ -3398,16 +3399,16 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1113:4: unaryOperator unaryExpression
+                    // JS.g:1117:4: unaryOperator unaryExpression
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_unaryOperator_in_unaryExpression4098);
+                    pushFollow(FOLLOW_unaryOperator_in_unaryExpression4126);
                     unaryOperator77=unaryOperator();
                     _fsp--;
 
                     root_0 = (Object)adaptor.becomeRoot(unaryOperator77.getTree(), root_0);
-                    pushFollow(FOLLOW_unaryExpression_in_unaryExpression4101);
+                    pushFollow(FOLLOW_unaryExpression_in_unaryExpression4129);
                     unaryExpression78=unaryExpression();
                     _fsp--;
 
@@ -3416,12 +3417,12 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:1114:5: XMLLiteral
+                    // JS.g:1118:5: XMLLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
                     XMLLiteral79=(Token)input.LT(1);
-                    match(input,XMLLiteral,FOLLOW_XMLLiteral_in_unaryExpression4107); 
+                    match(input,XMLLiteral,FOLLOW_XMLLiteral_in_unaryExpression4135); 
                     XMLLiteral79_tree = (Object)adaptor.create(XMLLiteral79);
                     adaptor.addChild(root_0, XMLLiteral79_tree);
 
@@ -3452,7 +3453,7 @@
     };
 
     // $ANTLR start unaryOperator
-    // JS.g:1117:1: unaryOperator : ( DELETE | VOID | TYPEOF | INC | DEC | op= ADD | op= SUB | INV | NOT | YIELD );
+    // JS.g:1121:1: unaryOperator : ( DELETE | VOID | TYPEOF | INC | DEC | op= ADD | op= SUB | INV | NOT | YIELD );
     public final unaryOperator_return unaryOperator() throws RecognitionException {
         unaryOperator_return retval = new unaryOperator_return();
         retval.start = input.LT(1);
@@ -3480,7 +3481,7 @@
         Object YIELD87_tree=null;
 
         try {
-            // JS.g:1118:2: ( DELETE | VOID | TYPEOF | INC | DEC | op= ADD | op= SUB | INV | NOT | YIELD )
+            // JS.g:1122:2: ( DELETE | VOID | TYPEOF | INC | DEC | op= ADD | op= SUB | INV | NOT | YIELD )
             int alt20=10;
             switch ( input.LA(1) ) {
             case DELETE:
@@ -3535,19 +3536,19 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("1117:1: unaryOperator : ( DELETE | VOID | TYPEOF | INC | DEC | op= ADD | op= SUB | INV | NOT | YIELD );", 20, 0, input);
+                    new NoViableAltException("1121:1: unaryOperator : ( DELETE | VOID | TYPEOF | INC | DEC | op= ADD | op= SUB | INV | NOT | YIELD );", 20, 0, input);
 
                 throw nvae;
             }
 
             switch (alt20) {
                 case 1 :
-                    // JS.g:1118:4: DELETE
+                    // JS.g:1122:4: DELETE
                     {
                     root_0 = (Object)adaptor.nil();
 
                     DELETE80=(Token)input.LT(1);
-                    match(input,DELETE,FOLLOW_DELETE_in_unaryOperator4119); 
+                    match(input,DELETE,FOLLOW_DELETE_in_unaryOperator4147); 
                     DELETE80_tree = (Object)adaptor.create(DELETE80);
                     adaptor.addChild(root_0, DELETE80_tree);
 
@@ -3555,12 +3556,12 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1119:4: VOID
+                    // JS.g:1123:4: VOID
                     {
                     root_0 = (Object)adaptor.nil();
 
                     VOID81=(Token)input.LT(1);
-                    match(input,VOID,FOLLOW_VOID_in_unaryOperator4124); 
+                    match(input,VOID,FOLLOW_VOID_in_unaryOperator4152); 
                     VOID81_tree = (Object)adaptor.create(VOID81);
                     adaptor.addChild(root_0, VOID81_tree);
 
@@ -3568,12 +3569,12 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:1120:4: TYPEOF
+                    // JS.g:1124:4: TYPEOF
                     {
                     root_0 = (Object)adaptor.nil();
 
                     TYPEOF82=(Token)input.LT(1);
-                    match(input,TYPEOF,FOLLOW_TYPEOF_in_unaryOperator4129); 
+                    match(input,TYPEOF,FOLLOW_TYPEOF_in_unaryOperator4157); 
                     TYPEOF82_tree = (Object)adaptor.create(TYPEOF82);
                     adaptor.addChild(root_0, TYPEOF82_tree);
 
@@ -3581,12 +3582,12 @@
                     }
                     break;
                 case 4 :
-                    // JS.g:1121:4: INC
+                    // JS.g:1125:4: INC
                     {
                     root_0 = (Object)adaptor.nil();
 
                     INC83=(Token)input.LT(1);
-                    match(input,INC,FOLLOW_INC_in_unaryOperator4134); 
+                    match(input,INC,FOLLOW_INC_in_unaryOperator4162); 
                     INC83_tree = (Object)adaptor.create(INC83);
                     adaptor.addChild(root_0, INC83_tree);
 
@@ -3594,12 +3595,12 @@
                     }
                     break;
                 case 5 :
-                    // JS.g:1122:4: DEC
+                    // JS.g:1126:4: DEC
                     {
                     root_0 = (Object)adaptor.nil();
 
                     DEC84=(Token)input.LT(1);
-                    match(input,DEC,FOLLOW_DEC_in_unaryOperator4139); 
+                    match(input,DEC,FOLLOW_DEC_in_unaryOperator4167); 
                     DEC84_tree = (Object)adaptor.create(DEC84);
                     adaptor.addChild(root_0, DEC84_tree);
 
@@ -3607,12 +3608,12 @@
                     }
                     break;
                 case 6 :
-                    // JS.g:1123:4: op= ADD
+                    // JS.g:1127:4: op= ADD
                     {
                     root_0 = (Object)adaptor.nil();
 
                     op=(Token)input.LT(1);
-                    match(input,ADD,FOLLOW_ADD_in_unaryOperator4146); 
+                    match(input,ADD,FOLLOW_ADD_in_unaryOperator4174); 
                     op_tree = (Object)adaptor.create(op);
                     adaptor.addChild(root_0, op_tree);
 
@@ -3621,12 +3622,12 @@
                     }
                     break;
                 case 7 :
-                    // JS.g:1124:4: op= SUB
+                    // JS.g:1128:4: op= SUB
                     {
                     root_0 = (Object)adaptor.nil();
 
                     op=(Token)input.LT(1);
-                    match(input,SUB,FOLLOW_SUB_in_unaryOperator4155); 
+                    match(input,SUB,FOLLOW_SUB_in_unaryOperator4183); 
                     op_tree = (Object)adaptor.create(op);
                     adaptor.addChild(root_0, op_tree);
 
@@ -3635,12 +3636,12 @@
                     }
                     break;
                 case 8 :
-                    // JS.g:1125:4: INV
+                    // JS.g:1129:4: INV
                     {
                     root_0 = (Object)adaptor.nil();
 
                     INV85=(Token)input.LT(1);
-                    match(input,INV,FOLLOW_INV_in_unaryOperator4162); 
+                    match(input,INV,FOLLOW_INV_in_unaryOperator4190); 
                     INV85_tree = (Object)adaptor.create(INV85);
                     adaptor.addChild(root_0, INV85_tree);
 
@@ -3648,12 +3649,12 @@
                     }
                     break;
                 case 9 :
-                    // JS.g:1126:4: NOT
+                    // JS.g:1130:4: NOT
                     {
                     root_0 = (Object)adaptor.nil();
 
                     NOT86=(Token)input.LT(1);
-                    match(input,NOT,FOLLOW_NOT_in_unaryOperator4167); 
+                    match(input,NOT,FOLLOW_NOT_in_unaryOperator4195); 
                     NOT86_tree = (Object)adaptor.create(NOT86);
                     adaptor.addChild(root_0, NOT86_tree);
 
@@ -3661,12 +3662,12 @@
                     }
                     break;
                 case 10 :
-                    // JS.g:1127:4: YIELD
+                    // JS.g:1131:4: YIELD
                     {
                     root_0 = (Object)adaptor.nil();
 
                     YIELD87=(Token)input.LT(1);
-                    match(input,YIELD,FOLLOW_YIELD_in_unaryOperator4172); 
+                    match(input,YIELD,FOLLOW_YIELD_in_unaryOperator4200); 
                     YIELD87_tree = (Object)adaptor.create(YIELD87);
                     adaptor.addChild(root_0, YIELD87_tree);
 
@@ -3697,7 +3698,7 @@
     };
 
     // $ANTLR start namespaceStatement
-    // JS.g:1154:1: namespaceStatement : DEFAULT WXML NAMESPACE ASSIGN StringLiteral semic -> ^( DEFAULT_XML_NAMESPACE DEFAULT WXML ASSIGN StringLiteral ) ;
+    // JS.g:1158:1: namespaceStatement : DEFAULT WXML NAMESPACE ASSIGN StringLiteral semic -> ^( DEFAULT_XML_NAMESPACE DEFAULT WXML ASSIGN StringLiteral ) ;
     public final namespaceStatement_return namespaceStatement() throws RecognitionException {
         namespaceStatement_return retval = new namespaceStatement_return();
         retval.start = input.LT(1);
@@ -3724,37 +3725,37 @@
         RewriteRuleTokenStream stream_ASSIGN=new RewriteRuleTokenStream(adaptor,"token ASSIGN");
         RewriteRuleSubtreeStream stream_semic=new RewriteRuleSubtreeStream(adaptor,"rule semic");
         try {
-            // JS.g:1155:3: ( DEFAULT WXML NAMESPACE ASSIGN StringLiteral semic -> ^( DEFAULT_XML_NAMESPACE DEFAULT WXML ASSIGN StringLiteral ) )
-            // JS.g:1155:5: DEFAULT WXML NAMESPACE ASSIGN StringLiteral semic
+            // JS.g:1159:3: ( DEFAULT WXML NAMESPACE ASSIGN StringLiteral semic -> ^( DEFAULT_XML_NAMESPACE DEFAULT WXML ASSIGN StringLiteral ) )
+            // JS.g:1159:5: DEFAULT WXML NAMESPACE ASSIGN StringLiteral semic
             {
             DEFAULT88=(Token)input.LT(1);
-            match(input,DEFAULT,FOLLOW_DEFAULT_in_namespaceStatement4208); 
+            match(input,DEFAULT,FOLLOW_DEFAULT_in_namespaceStatement4236); 
             stream_DEFAULT.add(DEFAULT88);
 
             WXML89=(Token)input.LT(1);
-            match(input,WXML,FOLLOW_WXML_in_namespaceStatement4210); 
+            match(input,WXML,FOLLOW_WXML_in_namespaceStatement4238); 
             stream_WXML.add(WXML89);
 
             NAMESPACE90=(Token)input.LT(1);
-            match(input,NAMESPACE,FOLLOW_NAMESPACE_in_namespaceStatement4212); 
+            match(input,NAMESPACE,FOLLOW_NAMESPACE_in_namespaceStatement4240); 
             stream_NAMESPACE.add(NAMESPACE90);
 
             ASSIGN91=(Token)input.LT(1);
-            match(input,ASSIGN,FOLLOW_ASSIGN_in_namespaceStatement4214); 
+            match(input,ASSIGN,FOLLOW_ASSIGN_in_namespaceStatement4242); 
             stream_ASSIGN.add(ASSIGN91);
 
             StringLiteral92=(Token)input.LT(1);
-            match(input,StringLiteral,FOLLOW_StringLiteral_in_namespaceStatement4216); 
+            match(input,StringLiteral,FOLLOW_StringLiteral_in_namespaceStatement4244); 
             stream_StringLiteral.add(StringLiteral92);
 
-            pushFollow(FOLLOW_semic_in_namespaceStatement4218);
+            pushFollow(FOLLOW_semic_in_namespaceStatement4246);
             semic93=semic();
             _fsp--;
 
             stream_semic.add(semic93.getTree());
 
             // AST REWRITE
-            // elements: StringLiteral, DEFAULT, ASSIGN, WXML
+            // elements: StringLiteral, ASSIGN, WXML, DEFAULT
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -3763,9 +3764,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1156:5: -> ^( DEFAULT_XML_NAMESPACE DEFAULT WXML ASSIGN StringLiteral )
+            // 1160:5: -> ^( DEFAULT_XML_NAMESPACE DEFAULT WXML ASSIGN StringLiteral )
             {
-                // JS.g:1156:8: ^( DEFAULT_XML_NAMESPACE DEFAULT WXML ASSIGN StringLiteral )
+                // JS.g:1160:8: ^( DEFAULT_XML_NAMESPACE DEFAULT WXML ASSIGN StringLiteral )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(DEFAULT_XML_NAMESPACE, "DEFAULT_XML_NAMESPACE"), root_1);
@@ -3806,7 +3807,7 @@
     };
 
     // $ANTLR start multiplicativeExpression
-    // JS.g:1161:1: multiplicativeExpression : unaryExpression ( ( MUL | DIV | MOD ) unaryExpression )* ;
+    // JS.g:1165:1: multiplicativeExpression : unaryExpression ( ( MUL | DIV | MOD ) unaryExpression )* ;
     public final multiplicativeExpression_return multiplicativeExpression() throws RecognitionException {
         multiplicativeExpression_return retval = new multiplicativeExpression_return();
         retval.start = input.LT(1);
@@ -3822,17 +3823,17 @@
         Object set95_tree=null;
 
         try {
-            // JS.g:1162:2: ( unaryExpression ( ( MUL | DIV | MOD ) unaryExpression )* )
-            // JS.g:1162:4: unaryExpression ( ( MUL | DIV | MOD ) unaryExpression )*
+            // JS.g:1166:2: ( unaryExpression ( ( MUL | DIV | MOD ) unaryExpression )* )
+            // JS.g:1166:4: unaryExpression ( ( MUL | DIV | MOD ) unaryExpression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_unaryExpression_in_multiplicativeExpression4250);
+            pushFollow(FOLLOW_unaryExpression_in_multiplicativeExpression4278);
             unaryExpression94=unaryExpression();
             _fsp--;
 
             adaptor.addChild(root_0, unaryExpression94.getTree());
-            // JS.g:1162:20: ( ( MUL | DIV | MOD ) unaryExpression )*
+            // JS.g:1166:20: ( ( MUL | DIV | MOD ) unaryExpression )*
             loop21:
             do {
                 int alt21=2;
@@ -3845,7 +3846,7 @@
 
                 switch (alt21) {
             	case 1 :
-            	    // JS.g:1162:22: ( MUL | DIV | MOD ) unaryExpression
+            	    // JS.g:1166:22: ( MUL | DIV | MOD ) unaryExpression
             	    {
             	    set95=(Token)input.LT(1);
             	    if ( (input.LA(1)>=MUL && input.LA(1)<=MOD)||input.LA(1)==DIV ) {
@@ -3856,10 +3857,10 @@
             	    else {
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_multiplicativeExpression4254);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_multiplicativeExpression4282);    throw mse;
             	    }
 
-            	    pushFollow(FOLLOW_unaryExpression_in_multiplicativeExpression4269);
+            	    pushFollow(FOLLOW_unaryExpression_in_multiplicativeExpression4297);
             	    unaryExpression96=unaryExpression();
             	    _fsp--;
 
@@ -3898,7 +3899,7 @@
     };
 
     // $ANTLR start additiveExpression
-    // JS.g:1169:1: additiveExpression : multiplicativeExpression ( ( ADD | SUB ) multiplicativeExpression )* ;
+    // JS.g:1173:1: additiveExpression : multiplicativeExpression ( ( ADD | SUB ) multiplicativeExpression )* ;
     public final additiveExpression_return additiveExpression() throws RecognitionException {
         additiveExpression_return retval = new additiveExpression_return();
         retval.start = input.LT(1);
@@ -3914,17 +3915,17 @@
         Object set98_tree=null;
 
         try {
-            // JS.g:1170:2: ( multiplicativeExpression ( ( ADD | SUB ) multiplicativeExpression )* )
-            // JS.g:1170:4: multiplicativeExpression ( ( ADD | SUB ) multiplicativeExpression )*
+            // JS.g:1174:2: ( multiplicativeExpression ( ( ADD | SUB ) multiplicativeExpression )* )
+            // JS.g:1174:4: multiplicativeExpression ( ( ADD | SUB ) multiplicativeExpression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_multiplicativeExpression_in_additiveExpression4287);
+            pushFollow(FOLLOW_multiplicativeExpression_in_additiveExpression4315);
             multiplicativeExpression97=multiplicativeExpression();
             _fsp--;
 
             adaptor.addChild(root_0, multiplicativeExpression97.getTree());
-            // JS.g:1170:29: ( ( ADD | SUB ) multiplicativeExpression )*
+            // JS.g:1174:29: ( ( ADD | SUB ) multiplicativeExpression )*
             loop22:
             do {
                 int alt22=2;
@@ -3937,7 +3938,7 @@
 
                 switch (alt22) {
             	case 1 :
-            	    // JS.g:1170:31: ( ADD | SUB ) multiplicativeExpression
+            	    // JS.g:1174:31: ( ADD | SUB ) multiplicativeExpression
             	    {
             	    set98=(Token)input.LT(1);
             	    if ( (input.LA(1)>=ADD && input.LA(1)<=SUB) ) {
@@ -3948,10 +3949,10 @@
             	    else {
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_additiveExpression4291);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_additiveExpression4319);    throw mse;
             	    }
 
-            	    pushFollow(FOLLOW_multiplicativeExpression_in_additiveExpression4302);
+            	    pushFollow(FOLLOW_multiplicativeExpression_in_additiveExpression4330);
             	    multiplicativeExpression99=multiplicativeExpression();
             	    _fsp--;
 
@@ -3990,7 +3991,7 @@
     };
 
     // $ANTLR start shiftExpression
-    // JS.g:1177:1: shiftExpression : additiveExpression ( ( SHL | SHR | SHU ) additiveExpression )* ;
+    // JS.g:1181:1: shiftExpression : additiveExpression ( ( SHL | SHR | SHU ) additiveExpression )* ;
     public final shiftExpression_return shiftExpression() throws RecognitionException {
         shiftExpression_return retval = new shiftExpression_return();
         retval.start = input.LT(1);
@@ -4006,17 +4007,17 @@
         Object set101_tree=null;
 
         try {
-            // JS.g:1178:2: ( additiveExpression ( ( SHL | SHR | SHU ) additiveExpression )* )
-            // JS.g:1178:4: additiveExpression ( ( SHL | SHR | SHU ) additiveExpression )*
+            // JS.g:1182:2: ( additiveExpression ( ( SHL | SHR | SHU ) additiveExpression )* )
+            // JS.g:1182:4: additiveExpression ( ( SHL | SHR | SHU ) additiveExpression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_additiveExpression_in_shiftExpression4321);
+            pushFollow(FOLLOW_additiveExpression_in_shiftExpression4349);
             additiveExpression100=additiveExpression();
             _fsp--;
 
             adaptor.addChild(root_0, additiveExpression100.getTree());
-            // JS.g:1178:23: ( ( SHL | SHR | SHU ) additiveExpression )*
+            // JS.g:1182:23: ( ( SHL | SHR | SHU ) additiveExpression )*
             loop23:
             do {
                 int alt23=2;
@@ -4029,7 +4030,7 @@
 
                 switch (alt23) {
             	case 1 :
-            	    // JS.g:1178:25: ( SHL | SHR | SHU ) additiveExpression
+            	    // JS.g:1182:25: ( SHL | SHR | SHU ) additiveExpression
             	    {
             	    set101=(Token)input.LT(1);
             	    if ( (input.LA(1)>=SHL && input.LA(1)<=SHU) ) {
@@ -4040,10 +4041,10 @@
             	    else {
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_shiftExpression4325);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_shiftExpression4353);    throw mse;
             	    }
 
-            	    pushFollow(FOLLOW_additiveExpression_in_shiftExpression4340);
+            	    pushFollow(FOLLOW_additiveExpression_in_shiftExpression4368);
             	    additiveExpression102=additiveExpression();
             	    _fsp--;
 
@@ -4082,7 +4083,7 @@
     };
 
     // $ANTLR start relationalExpression
-    // JS.g:1185:1: relationalExpression : shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF | IN ) shiftExpression )* ;
+    // JS.g:1189:1: relationalExpression : shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF | IN ) shiftExpression )* ;
     public final relationalExpression_return relationalExpression() throws RecognitionException {
         relationalExpression_return retval = new relationalExpression_return();
         retval.start = input.LT(1);
@@ -4098,17 +4099,17 @@
         Object set104_tree=null;
 
         try {
-            // JS.g:1186:2: ( shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF | IN ) shiftExpression )* )
-            // JS.g:1186:4: shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF | IN ) shiftExpression )*
+            // JS.g:1190:2: ( shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF | IN ) shiftExpression )* )
+            // JS.g:1190:4: shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF | IN ) shiftExpression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_shiftExpression_in_relationalExpression4359);
+            pushFollow(FOLLOW_shiftExpression_in_relationalExpression4387);
             shiftExpression103=shiftExpression();
             _fsp--;
 
             adaptor.addChild(root_0, shiftExpression103.getTree());
-            // JS.g:1186:20: ( ( LT | GT | LTE | GTE | INSTANCEOF | IN ) shiftExpression )*
+            // JS.g:1190:20: ( ( LT | GT | LTE | GTE | INSTANCEOF | IN ) shiftExpression )*
             loop24:
             do {
                 int alt24=2;
@@ -4124,7 +4125,7 @@
 
                 switch (alt24) {
             	case 1 :
-            	    // JS.g:1186:22: ( LT | GT | LTE | GTE | INSTANCEOF | IN ) shiftExpression
+            	    // JS.g:1190:22: ( LT | GT | LTE | GTE | INSTANCEOF | IN ) shiftExpression
             	    {
             	    set104=(Token)input.LT(1);
             	    if ( (input.LA(1)>=IN && input.LA(1)<=INSTANCEOF)||(input.LA(1)>=LT && input.LA(1)<=GTE) ) {
@@ -4135,10 +4136,10 @@
             	    else {
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_relationalExpression4363);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_relationalExpression4391);    throw mse;
             	    }
 
-            	    pushFollow(FOLLOW_shiftExpression_in_relationalExpression4390);
+            	    pushFollow(FOLLOW_shiftExpression_in_relationalExpression4418);
             	    shiftExpression105=shiftExpression();
             	    _fsp--;
 
@@ -4177,7 +4178,7 @@
     };
 
     // $ANTLR start relationalExpressionNoIn
-    // JS.g:1189:1: relationalExpressionNoIn : shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF ) shiftExpression )* ;
+    // JS.g:1193:1: relationalExpressionNoIn : shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF ) shiftExpression )* ;
     public final relationalExpressionNoIn_return relationalExpressionNoIn() throws RecognitionException {
         relationalExpressionNoIn_return retval = new relationalExpressionNoIn_return();
         retval.start = input.LT(1);
@@ -4193,17 +4194,17 @@
         Object set107_tree=null;
 
         try {
-            // JS.g:1190:2: ( shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF ) shiftExpression )* )
-            // JS.g:1190:4: shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF ) shiftExpression )*
+            // JS.g:1194:2: ( shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF ) shiftExpression )* )
+            // JS.g:1194:4: shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF ) shiftExpression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_shiftExpression_in_relationalExpressionNoIn4404);
+            pushFollow(FOLLOW_shiftExpression_in_relationalExpressionNoIn4432);
             shiftExpression106=shiftExpression();
             _fsp--;
 
             adaptor.addChild(root_0, shiftExpression106.getTree());
-            // JS.g:1190:20: ( ( LT | GT | LTE | GTE | INSTANCEOF ) shiftExpression )*
+            // JS.g:1194:20: ( ( LT | GT | LTE | GTE | INSTANCEOF ) shiftExpression )*
             loop25:
             do {
                 int alt25=2;
@@ -4216,7 +4217,7 @@
 
                 switch (alt25) {
             	case 1 :
-            	    // JS.g:1190:22: ( LT | GT | LTE | GTE | INSTANCEOF ) shiftExpression
+            	    // JS.g:1194:22: ( LT | GT | LTE | GTE | INSTANCEOF ) shiftExpression
             	    {
             	    set107=(Token)input.LT(1);
             	    if ( input.LA(1)==INSTANCEOF||(input.LA(1)>=LT && input.LA(1)<=GTE) ) {
@@ -4227,10 +4228,10 @@
             	    else {
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_relationalExpressionNoIn4408);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_relationalExpressionNoIn4436);    throw mse;
             	    }
 
-            	    pushFollow(FOLLOW_shiftExpression_in_relationalExpressionNoIn4431);
+            	    pushFollow(FOLLOW_shiftExpression_in_relationalExpressionNoIn4459);
             	    shiftExpression108=shiftExpression();
             	    _fsp--;
 
@@ -4269,7 +4270,7 @@
     };
 
     // $ANTLR start equalityExpression
-    // JS.g:1197:1: equalityExpression : relationalExpression ( ( EQ | NEQ | SAME | NSAME ) relationalExpression )* ;
+    // JS.g:1201:1: equalityExpression : relationalExpression ( ( EQ | NEQ | SAME | NSAME ) relationalExpression )* ;
     public final equalityExpression_return equalityExpression() throws RecognitionException {
         equalityExpression_return retval = new equalityExpression_return();
         retval.start = input.LT(1);
@@ -4285,17 +4286,17 @@
         Object set110_tree=null;
 
         try {
-            // JS.g:1198:2: ( relationalExpression ( ( EQ | NEQ | SAME | NSAME ) relationalExpression )* )
-            // JS.g:1198:4: relationalExpression ( ( EQ | NEQ | SAME | NSAME ) relationalExpression )*
+            // JS.g:1202:2: ( relationalExpression ( ( EQ | NEQ | SAME | NSAME ) relationalExpression )* )
+            // JS.g:1202:4: relationalExpression ( ( EQ | NEQ | SAME | NSAME ) relationalExpression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_relationalExpression_in_equalityExpression4450);
+            pushFollow(FOLLOW_relationalExpression_in_equalityExpression4478);
             relationalExpression109=relationalExpression();
             _fsp--;
 
             adaptor.addChild(root_0, relationalExpression109.getTree());
-            // JS.g:1198:25: ( ( EQ | NEQ | SAME | NSAME ) relationalExpression )*
+            // JS.g:1202:25: ( ( EQ | NEQ | SAME | NSAME ) relationalExpression )*
             loop26:
             do {
                 int alt26=2;
@@ -4308,7 +4309,7 @@
 
                 switch (alt26) {
             	case 1 :
-            	    // JS.g:1198:27: ( EQ | NEQ | SAME | NSAME ) relationalExpression
+            	    // JS.g:1202:27: ( EQ | NEQ | SAME | NSAME ) relationalExpression
             	    {
             	    set110=(Token)input.LT(1);
             	    if ( (input.LA(1)>=EQ && input.LA(1)<=NSAME) ) {
@@ -4319,10 +4320,10 @@
             	    else {
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_equalityExpression4454);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_equalityExpression4482);    throw mse;
             	    }
 
-            	    pushFollow(FOLLOW_relationalExpression_in_equalityExpression4473);
+            	    pushFollow(FOLLOW_relationalExpression_in_equalityExpression4501);
             	    relationalExpression111=relationalExpression();
             	    _fsp--;
 
@@ -4361,7 +4362,7 @@
     };
 
     // $ANTLR start equalityExpressionNoIn
-    // JS.g:1201:1: equalityExpressionNoIn : relationalExpressionNoIn ( ( EQ | NEQ | SAME | NSAME ) relationalExpressionNoIn )* ;
+    // JS.g:1205:1: equalityExpressionNoIn : relationalExpressionNoIn ( ( EQ | NEQ | SAME | NSAME ) relationalExpressionNoIn )* ;
     public final equalityExpressionNoIn_return equalityExpressionNoIn() throws RecognitionException {
         equalityExpressionNoIn_return retval = new equalityExpressionNoIn_return();
         retval.start = input.LT(1);
@@ -4377,17 +4378,17 @@
         Object set113_tree=null;
 
         try {
-            // JS.g:1202:2: ( relationalExpressionNoIn ( ( EQ | NEQ | SAME | NSAME ) relationalExpressionNoIn )* )
-            // JS.g:1202:4: relationalExpressionNoIn ( ( EQ | NEQ | SAME | NSAME ) relationalExpressionNoIn )*
+            // JS.g:1206:2: ( relationalExpressionNoIn ( ( EQ | NEQ | SAME | NSAME ) relationalExpressionNoIn )* )
+            // JS.g:1206:4: relationalExpressionNoIn ( ( EQ | NEQ | SAME | NSAME ) relationalExpressionNoIn )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_relationalExpressionNoIn_in_equalityExpressionNoIn4487);
+            pushFollow(FOLLOW_relationalExpressionNoIn_in_equalityExpressionNoIn4515);
             relationalExpressionNoIn112=relationalExpressionNoIn();
             _fsp--;
 
             adaptor.addChild(root_0, relationalExpressionNoIn112.getTree());
-            // JS.g:1202:29: ( ( EQ | NEQ | SAME | NSAME ) relationalExpressionNoIn )*
+            // JS.g:1206:29: ( ( EQ | NEQ | SAME | NSAME ) relationalExpressionNoIn )*
             loop27:
             do {
                 int alt27=2;
@@ -4400,7 +4401,7 @@
 
                 switch (alt27) {
             	case 1 :
-            	    // JS.g:1202:31: ( EQ | NEQ | SAME | NSAME ) relationalExpressionNoIn
+            	    // JS.g:1206:31: ( EQ | NEQ | SAME | NSAME ) relationalExpressionNoIn
             	    {
             	    set113=(Token)input.LT(1);
             	    if ( (input.LA(1)>=EQ && input.LA(1)<=NSAME) ) {
@@ -4411,10 +4412,10 @@
             	    else {
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_equalityExpressionNoIn4491);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_equalityExpressionNoIn4519);    throw mse;
             	    }
 
-            	    pushFollow(FOLLOW_relationalExpressionNoIn_in_equalityExpressionNoIn4510);
+            	    pushFollow(FOLLOW_relationalExpressionNoIn_in_equalityExpressionNoIn4538);
             	    relationalExpressionNoIn114=relationalExpressionNoIn();
             	    _fsp--;
 
@@ -4453,7 +4454,7 @@
     };
 
     // $ANTLR start bitwiseANDExpression
-    // JS.g:1209:1: bitwiseANDExpression : equalityExpression ( AND equalityExpression )* ;
+    // JS.g:1213:1: bitwiseANDExpression : equalityExpression ( AND equalityExpression )* ;
     public final bitwiseANDExpression_return bitwiseANDExpression() throws RecognitionException {
         bitwiseANDExpression_return retval = new bitwiseANDExpression_return();
         retval.start = input.LT(1);
@@ -4469,17 +4470,17 @@
         Object AND116_tree=null;
 
         try {
-            // JS.g:1210:2: ( equalityExpression ( AND equalityExpression )* )
-            // JS.g:1210:4: equalityExpression ( AND equalityExpression )*
+            // JS.g:1214:2: ( equalityExpression ( AND equalityExpression )* )
+            // JS.g:1214:4: equalityExpression ( AND equalityExpression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_equalityExpression_in_bitwiseANDExpression4530);
+            pushFollow(FOLLOW_equalityExpression_in_bitwiseANDExpression4558);
             equalityExpression115=equalityExpression();
             _fsp--;
 
             adaptor.addChild(root_0, equalityExpression115.getTree());
-            // JS.g:1210:23: ( AND equalityExpression )*
+            // JS.g:1214:23: ( AND equalityExpression )*
             loop28:
             do {
                 int alt28=2;
@@ -4492,14 +4493,14 @@
 
                 switch (alt28) {
             	case 1 :
-            	    // JS.g:1210:25: AND equalityExpression
+            	    // JS.g:1214:25: AND equalityExpression
             	    {
             	    AND116=(Token)input.LT(1);
-            	    match(input,AND,FOLLOW_AND_in_bitwiseANDExpression4534); 
+            	    match(input,AND,FOLLOW_AND_in_bitwiseANDExpression4562); 
             	    AND116_tree = (Object)adaptor.create(AND116);
             	    root_0 = (Object)adaptor.becomeRoot(AND116_tree, root_0);
 
-            	    pushFollow(FOLLOW_equalityExpression_in_bitwiseANDExpression4537);
+            	    pushFollow(FOLLOW_equalityExpression_in_bitwiseANDExpression4565);
             	    equalityExpression117=equalityExpression();
             	    _fsp--;
 
@@ -4538,7 +4539,7 @@
     };
 
     // $ANTLR start bitwiseANDExpressionNoIn
-    // JS.g:1213:1: bitwiseANDExpressionNoIn : equalityExpressionNoIn ( AND equalityExpressionNoIn )* ;
+    // JS.g:1217:1: bitwiseANDExpressionNoIn : equalityExpressionNoIn ( AND equalityExpressionNoIn )* ;
     public final bitwiseANDExpressionNoIn_return bitwiseANDExpressionNoIn() throws RecognitionException {
         bitwiseANDExpressionNoIn_return retval = new bitwiseANDExpressionNoIn_return();
         retval.start = input.LT(1);
@@ -4554,17 +4555,17 @@
         Object AND119_tree=null;
 
         try {
-            // JS.g:1214:2: ( equalityExpressionNoIn ( AND equalityExpressionNoIn )* )
-            // JS.g:1214:4: equalityExpressionNoIn ( AND equalityExpressionNoIn )*
+            // JS.g:1218:2: ( equalityExpressionNoIn ( AND equalityExpressionNoIn )* )
+            // JS.g:1218:4: equalityExpressionNoIn ( AND equalityExpressionNoIn )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_equalityExpressionNoIn_in_bitwiseANDExpressionNoIn4551);
+            pushFollow(FOLLOW_equalityExpressionNoIn_in_bitwiseANDExpressionNoIn4579);
             equalityExpressionNoIn118=equalityExpressionNoIn();
             _fsp--;
 
             adaptor.addChild(root_0, equalityExpressionNoIn118.getTree());
-            // JS.g:1214:27: ( AND equalityExpressionNoIn )*
+            // JS.g:1218:27: ( AND equalityExpressionNoIn )*
             loop29:
             do {
                 int alt29=2;
@@ -4577,14 +4578,14 @@
 
                 switch (alt29) {
             	case 1 :
-            	    // JS.g:1214:29: AND equalityExpressionNoIn
+            	    // JS.g:1218:29: AND equalityExpressionNoIn
             	    {
             	    AND119=(Token)input.LT(1);
-            	    match(input,AND,FOLLOW_AND_in_bitwiseANDExpressionNoIn4555); 
+            	    match(input,AND,FOLLOW_AND_in_bitwiseANDExpressionNoIn4583); 
             	    AND119_tree = (Object)adaptor.create(AND119);
             	    root_0 = (Object)adaptor.becomeRoot(AND119_tree, root_0);
 
-            	    pushFollow(FOLLOW_equalityExpressionNoIn_in_bitwiseANDExpressionNoIn4558);
+            	    pushFollow(FOLLOW_equalityExpressionNoIn_in_bitwiseANDExpressionNoIn4586);
             	    equalityExpressionNoIn120=equalityExpressionNoIn();
             	    _fsp--;
 
@@ -4623,7 +4624,7 @@
     };
 
     // $ANTLR start bitwiseXORExpression
-    // JS.g:1217:1: bitwiseXORExpression : bitwiseANDExpression ( XOR bitwiseANDExpression )* ;
+    // JS.g:1221:1: bitwiseXORExpression : bitwiseANDExpression ( XOR bitwiseANDExpression )* ;
     public final bitwiseXORExpression_return bitwiseXORExpression() throws RecognitionException {
         bitwiseXORExpression_return retval = new bitwiseXORExpression_return();
         retval.start = input.LT(1);
@@ -4639,17 +4640,17 @@
         Object XOR122_tree=null;
 
         try {
-            // JS.g:1218:2: ( bitwiseANDExpression ( XOR bitwiseANDExpression )* )
-            // JS.g:1218:4: bitwiseANDExpression ( XOR bitwiseANDExpression )*
+            // JS.g:1222:2: ( bitwiseANDExpression ( XOR bitwiseANDExpression )* )
+            // JS.g:1222:4: bitwiseANDExpression ( XOR bitwiseANDExpression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_bitwiseANDExpression_in_bitwiseXORExpression4574);
+            pushFollow(FOLLOW_bitwiseANDExpression_in_bitwiseXORExpression4602);
             bitwiseANDExpression121=bitwiseANDExpression();
             _fsp--;
 
             adaptor.addChild(root_0, bitwiseANDExpression121.getTree());
-            // JS.g:1218:25: ( XOR bitwiseANDExpression )*
+            // JS.g:1222:25: ( XOR bitwiseANDExpression )*
             loop30:
             do {
                 int alt30=2;
@@ -4662,14 +4663,14 @@
 
                 switch (alt30) {
             	case 1 :
-            	    // JS.g:1218:27: XOR bitwiseANDExpression
+            	    // JS.g:1222:27: XOR bitwiseANDExpression
             	    {
             	    XOR122=(Token)input.LT(1);
-            	    match(input,XOR,FOLLOW_XOR_in_bitwiseXORExpression4578); 
+            	    match(input,XOR,FOLLOW_XOR_in_bitwiseXORExpression4606); 
             	    XOR122_tree = (Object)adaptor.create(XOR122);
             	    root_0 = (Object)adaptor.becomeRoot(XOR122_tree, root_0);
 
-            	    pushFollow(FOLLOW_bitwiseANDExpression_in_bitwiseXORExpression4581);
+            	    pushFollow(FOLLOW_bitwiseANDExpression_in_bitwiseXORExpression4609);
             	    bitwiseANDExpression123=bitwiseANDExpression();
             	    _fsp--;
 
@@ -4708,7 +4709,7 @@
     };
 
     // $ANTLR start bitwiseXORExpressionNoIn
-    // JS.g:1221:1: bitwiseXORExpressionNoIn : bitwiseANDExpressionNoIn ( XOR bitwiseANDExpressionNoIn )* ;
+    // JS.g:1225:1: bitwiseXORExpressionNoIn : bitwiseANDExpressionNoIn ( XOR bitwiseANDExpressionNoIn )* ;
     public final bitwiseXORExpressionNoIn_return bitwiseXORExpressionNoIn() throws RecognitionException {
         bitwiseXORExpressionNoIn_return retval = new bitwiseXORExpressionNoIn_return();
         retval.start = input.LT(1);
@@ -4724,17 +4725,17 @@
         Object XOR125_tree=null;
 
         try {
-            // JS.g:1222:2: ( bitwiseANDExpressionNoIn ( XOR bitwiseANDExpressionNoIn )* )
-            // JS.g:1222:4: bitwiseANDExpressionNoIn ( XOR bitwiseANDExpressionNoIn )*
+            // JS.g:1226:2: ( bitwiseANDExpressionNoIn ( XOR bitwiseANDExpressionNoIn )* )
+            // JS.g:1226:4: bitwiseANDExpressionNoIn ( XOR bitwiseANDExpressionNoIn )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_bitwiseANDExpressionNoIn_in_bitwiseXORExpressionNoIn4597);
+            pushFollow(FOLLOW_bitwiseANDExpressionNoIn_in_bitwiseXORExpressionNoIn4625);
             bitwiseANDExpressionNoIn124=bitwiseANDExpressionNoIn();
             _fsp--;
 
             adaptor.addChild(root_0, bitwiseANDExpressionNoIn124.getTree());
-            // JS.g:1222:29: ( XOR bitwiseANDExpressionNoIn )*
+            // JS.g:1226:29: ( XOR bitwiseANDExpressionNoIn )*
             loop31:
             do {
                 int alt31=2;
@@ -4747,14 +4748,14 @@
 
                 switch (alt31) {
             	case 1 :
-            	    // JS.g:1222:31: XOR bitwiseANDExpressionNoIn
+            	    // JS.g:1226:31: XOR bitwiseANDExpressionNoIn
             	    {
             	    XOR125=(Token)input.LT(1);
-            	    match(input,XOR,FOLLOW_XOR_in_bitwiseXORExpressionNoIn4601); 
+            	    match(input,XOR,FOLLOW_XOR_in_bitwiseXORExpressionNoIn4629); 
             	    XOR125_tree = (Object)adaptor.create(XOR125);
             	    root_0 = (Object)adaptor.becomeRoot(XOR125_tree, root_0);
 
-            	    pushFollow(FOLLOW_bitwiseANDExpressionNoIn_in_bitwiseXORExpressionNoIn4604);
+            	    pushFollow(FOLLOW_bitwiseANDExpressionNoIn_in_bitwiseXORExpressionNoIn4632);
             	    bitwiseANDExpressionNoIn126=bitwiseANDExpressionNoIn();
             	    _fsp--;
 
@@ -4793,7 +4794,7 @@
     };
 
     // $ANTLR start bitwiseORExpression
-    // JS.g:1225:1: bitwiseORExpression : bitwiseXORExpression ( OR bitwiseXORExpression )* ;
+    // JS.g:1229:1: bitwiseORExpression : bitwiseXORExpression ( OR bitwiseXORExpression )* ;
     public final bitwiseORExpression_return bitwiseORExpression() throws RecognitionException {
         bitwiseORExpression_return retval = new bitwiseORExpression_return();
         retval.start = input.LT(1);
@@ -4809,17 +4810,17 @@
         Object OR128_tree=null;
 
         try {
-            // JS.g:1226:2: ( bitwiseXORExpression ( OR bitwiseXORExpression )* )
-            // JS.g:1226:4: bitwiseXORExpression ( OR bitwiseXORExpression )*
+            // JS.g:1230:2: ( bitwiseXORExpression ( OR bitwiseXORExpression )* )
+            // JS.g:1230:4: bitwiseXORExpression ( OR bitwiseXORExpression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_bitwiseXORExpression_in_bitwiseORExpression4619);
+            pushFollow(FOLLOW_bitwiseXORExpression_in_bitwiseORExpression4647);
             bitwiseXORExpression127=bitwiseXORExpression();
             _fsp--;
 
             adaptor.addChild(root_0, bitwiseXORExpression127.getTree());
-            // JS.g:1226:25: ( OR bitwiseXORExpression )*
+            // JS.g:1230:25: ( OR bitwiseXORExpression )*
             loop32:
             do {
                 int alt32=2;
@@ -4832,14 +4833,14 @@
 
                 switch (alt32) {
             	case 1 :
-            	    // JS.g:1226:27: OR bitwiseXORExpression
+            	    // JS.g:1230:27: OR bitwiseXORExpression
             	    {
             	    OR128=(Token)input.LT(1);
-            	    match(input,OR,FOLLOW_OR_in_bitwiseORExpression4623); 
+            	    match(input,OR,FOLLOW_OR_in_bitwiseORExpression4651); 
             	    OR128_tree = (Object)adaptor.create(OR128);
             	    root_0 = (Object)adaptor.becomeRoot(OR128_tree, root_0);
 
-            	    pushFollow(FOLLOW_bitwiseXORExpression_in_bitwiseORExpression4626);
+            	    pushFollow(FOLLOW_bitwiseXORExpression_in_bitwiseORExpression4654);
             	    bitwiseXORExpression129=bitwiseXORExpression();
             	    _fsp--;
 
@@ -4878,7 +4879,7 @@
     };
 
     // $ANTLR start bitwiseORExpressionNoIn
-    // JS.g:1229:1: bitwiseORExpressionNoIn : bitwiseXORExpressionNoIn ( OR bitwiseXORExpressionNoIn )* ;
+    // JS.g:1233:1: bitwiseORExpressionNoIn : bitwiseXORExpressionNoIn ( OR bitwiseXORExpressionNoIn )* ;
     public final bitwiseORExpressionNoIn_return bitwiseORExpressionNoIn() throws RecognitionException {
         bitwiseORExpressionNoIn_return retval = new bitwiseORExpressionNoIn_return();
         retval.start = input.LT(1);
@@ -4894,17 +4895,17 @@
         Object OR131_tree=null;
 
         try {
-            // JS.g:1230:2: ( bitwiseXORExpressionNoIn ( OR bitwiseXORExpressionNoIn )* )
-            // JS.g:1230:4: bitwiseXORExpressionNoIn ( OR bitwiseXORExpressionNoIn )*
+            // JS.g:1234:2: ( bitwiseXORExpressionNoIn ( OR bitwiseXORExpressionNoIn )* )
+            // JS.g:1234:4: bitwiseXORExpressionNoIn ( OR bitwiseXORExpressionNoIn )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_bitwiseXORExpressionNoIn_in_bitwiseORExpressionNoIn4641);
+            pushFollow(FOLLOW_bitwiseXORExpressionNoIn_in_bitwiseORExpressionNoIn4669);
             bitwiseXORExpressionNoIn130=bitwiseXORExpressionNoIn();
             _fsp--;
 
             adaptor.addChild(root_0, bitwiseXORExpressionNoIn130.getTree());
-            // JS.g:1230:29: ( OR bitwiseXORExpressionNoIn )*
+            // JS.g:1234:29: ( OR bitwiseXORExpressionNoIn )*
             loop33:
             do {
                 int alt33=2;
@@ -4917,14 +4918,14 @@
 
                 switch (alt33) {
             	case 1 :
-            	    // JS.g:1230:31: OR bitwiseXORExpressionNoIn
+            	    // JS.g:1234:31: OR bitwiseXORExpressionNoIn
             	    {
             	    OR131=(Token)input.LT(1);
-            	    match(input,OR,FOLLOW_OR_in_bitwiseORExpressionNoIn4645); 
+            	    match(input,OR,FOLLOW_OR_in_bitwiseORExpressionNoIn4673); 
             	    OR131_tree = (Object)adaptor.create(OR131);
             	    root_0 = (Object)adaptor.becomeRoot(OR131_tree, root_0);
 
-            	    pushFollow(FOLLOW_bitwiseXORExpressionNoIn_in_bitwiseORExpressionNoIn4648);
+            	    pushFollow(FOLLOW_bitwiseXORExpressionNoIn_in_bitwiseORExpressionNoIn4676);
             	    bitwiseXORExpressionNoIn132=bitwiseXORExpressionNoIn();
             	    _fsp--;
 
@@ -4963,7 +4964,7 @@
     };
 
     // $ANTLR start logicalANDExpression
-    // JS.g:1237:1: logicalANDExpression : bitwiseORExpression ( LAND bitwiseORExpression )* ;
+    // JS.g:1241:1: logicalANDExpression : bitwiseORExpression ( LAND bitwiseORExpression )* ;
     public final logicalANDExpression_return logicalANDExpression() throws RecognitionException {
         logicalANDExpression_return retval = new logicalANDExpression_return();
         retval.start = input.LT(1);
@@ -4979,17 +4980,17 @@
         Object LAND134_tree=null;
 
         try {
-            // JS.g:1238:2: ( bitwiseORExpression ( LAND bitwiseORExpression )* )
-            // JS.g:1238:4: bitwiseORExpression ( LAND bitwiseORExpression )*
+            // JS.g:1242:2: ( bitwiseORExpression ( LAND bitwiseORExpression )* )
+            // JS.g:1242:4: bitwiseORExpression ( LAND bitwiseORExpression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_bitwiseORExpression_in_logicalANDExpression4667);
+            pushFollow(FOLLOW_bitwiseORExpression_in_logicalANDExpression4695);
             bitwiseORExpression133=bitwiseORExpression();
             _fsp--;
 
             adaptor.addChild(root_0, bitwiseORExpression133.getTree());
-            // JS.g:1238:24: ( LAND bitwiseORExpression )*
+            // JS.g:1242:24: ( LAND bitwiseORExpression )*
             loop34:
             do {
                 int alt34=2;
@@ -5002,14 +5003,14 @@
 
                 switch (alt34) {
             	case 1 :
-            	    // JS.g:1238:26: LAND bitwiseORExpression
+            	    // JS.g:1242:26: LAND bitwiseORExpression
             	    {
             	    LAND134=(Token)input.LT(1);
-            	    match(input,LAND,FOLLOW_LAND_in_logicalANDExpression4671); 
+            	    match(input,LAND,FOLLOW_LAND_in_logicalANDExpression4699); 
             	    LAND134_tree = (Object)adaptor.create(LAND134);
             	    root_0 = (Object)adaptor.becomeRoot(LAND134_tree, root_0);
 
-            	    pushFollow(FOLLOW_bitwiseORExpression_in_logicalANDExpression4674);
+            	    pushFollow(FOLLOW_bitwiseORExpression_in_logicalANDExpression4702);
             	    bitwiseORExpression135=bitwiseORExpression();
             	    _fsp--;
 
@@ -5048,7 +5049,7 @@
     };
 
     // $ANTLR start logicalANDExpressionNoIn
-    // JS.g:1241:1: logicalANDExpressionNoIn : bitwiseORExpressionNoIn ( LAND bitwiseORExpressionNoIn )* ;
+    // JS.g:1245:1: logicalANDExpressionNoIn : bitwiseORExpressionNoIn ( LAND bitwiseORExpressionNoIn )* ;
     public final logicalANDExpressionNoIn_return logicalANDExpressionNoIn() throws RecognitionException {
         logicalANDExpressionNoIn_return retval = new logicalANDExpressionNoIn_return();
         retval.start = input.LT(1);
@@ -5064,17 +5065,17 @@
         Object LAND137_tree=null;
 
         try {
-            // JS.g:1242:2: ( bitwiseORExpressionNoIn ( LAND bitwiseORExpressionNoIn )* )
-            // JS.g:1242:4: bitwiseORExpressionNoIn ( LAND bitwiseORExpressionNoIn )*
+            // JS.g:1246:2: ( bitwiseORExpressionNoIn ( LAND bitwiseORExpressionNoIn )* )
+            // JS.g:1246:4: bitwiseORExpressionNoIn ( LAND bitwiseORExpressionNoIn )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_bitwiseORExpressionNoIn_in_logicalANDExpressionNoIn4688);
+            pushFollow(FOLLOW_bitwiseORExpressionNoIn_in_logicalANDExpressionNoIn4716);
             bitwiseORExpressionNoIn136=bitwiseORExpressionNoIn();
             _fsp--;
 
             adaptor.addChild(root_0, bitwiseORExpressionNoIn136.getTree());
-            // JS.g:1242:28: ( LAND bitwiseORExpressionNoIn )*
+            // JS.g:1246:28: ( LAND bitwiseORExpressionNoIn )*
             loop35:
             do {
                 int alt35=2;
@@ -5087,14 +5088,14 @@
 
                 switch (alt35) {
             	case 1 :
-            	    // JS.g:1242:30: LAND bitwiseORExpressionNoIn
+            	    // JS.g:1246:30: LAND bitwiseORExpressionNoIn
             	    {
             	    LAND137=(Token)input.LT(1);
-            	    match(input,LAND,FOLLOW_LAND_in_logicalANDExpressionNoIn4692); 
+            	    match(input,LAND,FOLLOW_LAND_in_logicalANDExpressionNoIn4720); 
             	    LAND137_tree = (Object)adaptor.create(LAND137);
             	    root_0 = (Object)adaptor.becomeRoot(LAND137_tree, root_0);
 
-            	    pushFollow(FOLLOW_bitwiseORExpressionNoIn_in_logicalANDExpressionNoIn4695);
+            	    pushFollow(FOLLOW_bitwiseORExpressionNoIn_in_logicalANDExpressionNoIn4723);
             	    bitwiseORExpressionNoIn138=bitwiseORExpressionNoIn();
             	    _fsp--;
 
@@ -5133,7 +5134,7 @@
     };
 
     // $ANTLR start logicalORExpression
-    // JS.g:1245:1: logicalORExpression : logicalANDExpression ( LOR logicalANDExpression )* ;
+    // JS.g:1249:1: logicalORExpression : logicalANDExpression ( LOR logicalANDExpression )* ;
     public final logicalORExpression_return logicalORExpression() throws RecognitionException {
         logicalORExpression_return retval = new logicalORExpression_return();
         retval.start = input.LT(1);
@@ -5149,17 +5150,17 @@
         Object LOR140_tree=null;
 
         try {
-            // JS.g:1246:2: ( logicalANDExpression ( LOR logicalANDExpression )* )
-            // JS.g:1246:4: logicalANDExpression ( LOR logicalANDExpression )*
+            // JS.g:1250:2: ( logicalANDExpression ( LOR logicalANDExpression )* )
+            // JS.g:1250:4: logicalANDExpression ( LOR logicalANDExpression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_logicalANDExpression_in_logicalORExpression4710);
+            pushFollow(FOLLOW_logicalANDExpression_in_logicalORExpression4738);
             logicalANDExpression139=logicalANDExpression();
             _fsp--;
 
             adaptor.addChild(root_0, logicalANDExpression139.getTree());
-            // JS.g:1246:25: ( LOR logicalANDExpression )*
+            // JS.g:1250:25: ( LOR logicalANDExpression )*
             loop36:
             do {
                 int alt36=2;
@@ -5172,14 +5173,14 @@
 
                 switch (alt36) {
             	case 1 :
-            	    // JS.g:1246:27: LOR logicalANDExpression
+            	    // JS.g:1250:27: LOR logicalANDExpression
             	    {
             	    LOR140=(Token)input.LT(1);
-            	    match(input,LOR,FOLLOW_LOR_in_logicalORExpression4714); 
+            	    match(input,LOR,FOLLOW_LOR_in_logicalORExpression4742); 
             	    LOR140_tree = (Object)adaptor.create(LOR140);
             	    root_0 = (Object)adaptor.becomeRoot(LOR140_tree, root_0);
 
-            	    pushFollow(FOLLOW_logicalANDExpression_in_logicalORExpression4717);
+            	    pushFollow(FOLLOW_logicalANDExpression_in_logicalORExpression4745);
             	    logicalANDExpression141=logicalANDExpression();
             	    _fsp--;
 
@@ -5218,7 +5219,7 @@
     };
 
     // $ANTLR start logicalORExpressionNoIn
-    // JS.g:1249:1: logicalORExpressionNoIn : logicalANDExpressionNoIn ( LOR logicalANDExpressionNoIn )* ;
+    // JS.g:1253:1: logicalORExpressionNoIn : logicalANDExpressionNoIn ( LOR logicalANDExpressionNoIn )* ;
     public final logicalORExpressionNoIn_return logicalORExpressionNoIn() throws RecognitionException {
         logicalORExpressionNoIn_return retval = new logicalORExpressionNoIn_return();
         retval.start = input.LT(1);
@@ -5234,17 +5235,17 @@
         Object LOR143_tree=null;
 
         try {
-            // JS.g:1250:2: ( logicalANDExpressionNoIn ( LOR logicalANDExpressionNoIn )* )
-            // JS.g:1250:4: logicalANDExpressionNoIn ( LOR logicalANDExpressionNoIn )*
+            // JS.g:1254:2: ( logicalANDExpressionNoIn ( LOR logicalANDExpressionNoIn )* )
+            // JS.g:1254:4: logicalANDExpressionNoIn ( LOR logicalANDExpressionNoIn )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_logicalANDExpressionNoIn_in_logicalORExpressionNoIn4732);
+            pushFollow(FOLLOW_logicalANDExpressionNoIn_in_logicalORExpressionNoIn4760);
             logicalANDExpressionNoIn142=logicalANDExpressionNoIn();
             _fsp--;
 
             adaptor.addChild(root_0, logicalANDExpressionNoIn142.getTree());
-            // JS.g:1250:29: ( LOR logicalANDExpressionNoIn )*
+            // JS.g:1254:29: ( LOR logicalANDExpressionNoIn )*
             loop37:
             do {
                 int alt37=2;
@@ -5257,14 +5258,14 @@
 
                 switch (alt37) {
             	case 1 :
-            	    // JS.g:1250:31: LOR logicalANDExpressionNoIn
+            	    // JS.g:1254:31: LOR logicalANDExpressionNoIn
             	    {
             	    LOR143=(Token)input.LT(1);
-            	    match(input,LOR,FOLLOW_LOR_in_logicalORExpressionNoIn4736); 
+            	    match(input,LOR,FOLLOW_LOR_in_logicalORExpressionNoIn4764); 
             	    LOR143_tree = (Object)adaptor.create(LOR143);
             	    root_0 = (Object)adaptor.becomeRoot(LOR143_tree, root_0);
 
-            	    pushFollow(FOLLOW_logicalANDExpressionNoIn_in_logicalORExpressionNoIn4739);
+            	    pushFollow(FOLLOW_logicalANDExpressionNoIn_in_logicalORExpressionNoIn4767);
             	    logicalANDExpressionNoIn144=logicalANDExpressionNoIn();
             	    _fsp--;
 
@@ -5303,7 +5304,7 @@
     };
 
     // $ANTLR start conditionalExpression
-    // JS.g:1257:1: conditionalExpression : logicalORExpression ( QUE assignmentExpression COLON assignmentExpression )? ;
+    // JS.g:1261:1: conditionalExpression : logicalORExpression ( QUE assignmentExpression COLON assignmentExpression )? ;
     public final conditionalExpression_return conditionalExpression() throws RecognitionException {
         conditionalExpression_return retval = new conditionalExpression_return();
         retval.start = input.LT(1);
@@ -5323,17 +5324,17 @@
         Object COLON148_tree=null;
 
         try {
-            // JS.g:1258:2: ( logicalORExpression ( QUE assignmentExpression COLON assignmentExpression )? )
-            // JS.g:1258:4: logicalORExpression ( QUE assignmentExpression COLON assignmentExpression )?
+            // JS.g:1262:2: ( logicalORExpression ( QUE assignmentExpression COLON assignmentExpression )? )
+            // JS.g:1262:4: logicalORExpression ( QUE assignmentExpression COLON assignmentExpression )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_logicalORExpression_in_conditionalExpression4758);
+            pushFollow(FOLLOW_logicalORExpression_in_conditionalExpression4786);
             logicalORExpression145=logicalORExpression();
             _fsp--;
 
             adaptor.addChild(root_0, logicalORExpression145.getTree());
-            // JS.g:1258:24: ( QUE assignmentExpression COLON assignmentExpression )?
+            // JS.g:1262:24: ( QUE assignmentExpression COLON assignmentExpression )?
             int alt38=2;
             int LA38_0 = input.LA(1);
 
@@ -5342,21 +5343,21 @@
             }
             switch (alt38) {
                 case 1 :
-                    // JS.g:1258:26: QUE assignmentExpression COLON assignmentExpression
+                    // JS.g:1262:26: QUE assignmentExpression COLON assignmentExpression
                     {
                     QUE146=(Token)input.LT(1);
-                    match(input,QUE,FOLLOW_QUE_in_conditionalExpression4762); 
+                    match(input,QUE,FOLLOW_QUE_in_conditionalExpression4790); 
                     QUE146_tree = (Object)adaptor.create(QUE146);
                     root_0 = (Object)adaptor.becomeRoot(QUE146_tree, root_0);
 
-                    pushFollow(FOLLOW_assignmentExpression_in_conditionalExpression4765);
+                    pushFollow(FOLLOW_assignmentExpression_in_conditionalExpression4793);
                     assignmentExpression147=assignmentExpression();
                     _fsp--;
 
                     adaptor.addChild(root_0, assignmentExpression147.getTree());
                     COLON148=(Token)input.LT(1);
-                    match(input,COLON,FOLLOW_COLON_in_conditionalExpression4767); 
-                    pushFollow(FOLLOW_assignmentExpression_in_conditionalExpression4770);
+                    match(input,COLON,FOLLOW_COLON_in_conditionalExpression4795); 
+                    pushFollow(FOLLOW_assignmentExpression_in_conditionalExpression4798);
                     assignmentExpression149=assignmentExpression();
                     _fsp--;
 
@@ -5392,7 +5393,7 @@
     };
 
     // $ANTLR start conditionalExpressionNoIn
-    // JS.g:1261:1: conditionalExpressionNoIn : logicalORExpressionNoIn ( QUE assignmentExpressionNoIn COLON assignmentExpressionNoIn )? ;
+    // JS.g:1265:1: conditionalExpressionNoIn : logicalORExpressionNoIn ( QUE assignmentExpressionNoIn COLON assignmentExpressionNoIn )? ;
     public final conditionalExpressionNoIn_return conditionalExpressionNoIn() throws RecognitionException {
         conditionalExpressionNoIn_return retval = new conditionalExpressionNoIn_return();
         retval.start = input.LT(1);
@@ -5412,17 +5413,17 @@
         Object COLON153_tree=null;
 
         try {
-            // JS.g:1262:2: ( logicalORExpressionNoIn ( QUE assignmentExpressionNoIn COLON assignmentExpressionNoIn )? )
-            // JS.g:1262:4: logicalORExpressionNoIn ( QUE assignmentExpressionNoIn COLON assignmentExpressionNoIn )?
+            // JS.g:1266:2: ( logicalORExpressionNoIn ( QUE assignmentExpressionNoIn COLON assignmentExpressionNoIn )? )
+            // JS.g:1266:4: logicalORExpressionNoIn ( QUE assignmentExpressionNoIn COLON assignmentExpressionNoIn )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_logicalORExpressionNoIn_in_conditionalExpressionNoIn4784);
+            pushFollow(FOLLOW_logicalORExpressionNoIn_in_conditionalExpressionNoIn4812);
             logicalORExpressionNoIn150=logicalORExpressionNoIn();
             _fsp--;
 
             adaptor.addChild(root_0, logicalORExpressionNoIn150.getTree());
-            // JS.g:1262:28: ( QUE assignmentExpressionNoIn COLON assignmentExpressionNoIn )?
+            // JS.g:1266:28: ( QUE assignmentExpressionNoIn COLON assignmentExpressionNoIn )?
             int alt39=2;
             int LA39_0 = input.LA(1);
 
@@ -5431,21 +5432,21 @@
             }
             switch (alt39) {
                 case 1 :
-                    // JS.g:1262:30: QUE assignmentExpressionNoIn COLON assignmentExpressionNoIn
+                    // JS.g:1266:30: QUE assignmentExpressionNoIn COLON assignmentExpressionNoIn
                     {
                     QUE151=(Token)input.LT(1);
-                    match(input,QUE,FOLLOW_QUE_in_conditionalExpressionNoIn4788); 
+                    match(input,QUE,FOLLOW_QUE_in_conditionalExpressionNoIn4816); 
                     QUE151_tree = (Object)adaptor.create(QUE151);
                     root_0 = (Object)adaptor.becomeRoot(QUE151_tree, root_0);
 
-                    pushFollow(FOLLOW_assignmentExpressionNoIn_in_conditionalExpressionNoIn4791);
+                    pushFollow(FOLLOW_assignmentExpressionNoIn_in_conditionalExpressionNoIn4819);
                     assignmentExpressionNoIn152=assignmentExpressionNoIn();
                     _fsp--;
 
                     adaptor.addChild(root_0, assignmentExpressionNoIn152.getTree());
                     COLON153=(Token)input.LT(1);
-                    match(input,COLON,FOLLOW_COLON_in_conditionalExpressionNoIn4793); 
-                    pushFollow(FOLLOW_assignmentExpressionNoIn_in_conditionalExpressionNoIn4796);
+                    match(input,COLON,FOLLOW_COLON_in_conditionalExpressionNoIn4821); 
+                    pushFollow(FOLLOW_assignmentExpressionNoIn_in_conditionalExpressionNoIn4824);
                     assignmentExpressionNoIn154=assignmentExpressionNoIn();
                     _fsp--;
 
@@ -5481,7 +5482,7 @@
     };
 
     // $ANTLR start assignmentExpression
-    // JS.g:1291:1: assignmentExpression : lhs= conditionalExpression ({...}? assignmentOperator assignmentExpression )? ;
+    // JS.g:1295:1: assignmentExpression : lhs= conditionalExpression ({...}? assignmentOperator assignmentExpression )? ;
     public final assignmentExpression_return assignmentExpression() throws RecognitionException {
         assignmentExpression_return retval = new assignmentExpression_return();
         retval.start = input.LT(1);
@@ -5496,21 +5497,21 @@
 
 
 
-
+        
         	Object[] isLhs = new Object[1];
 
         try {
-            // JS.g:1296:2: (lhs= conditionalExpression ({...}? assignmentOperator assignmentExpression )? )
-            // JS.g:1296:4: lhs= conditionalExpression ({...}? assignmentOperator assignmentExpression )?
+            // JS.g:1300:2: (lhs= conditionalExpression ({...}? assignmentOperator assignmentExpression )? )
+            // JS.g:1300:4: lhs= conditionalExpression ({...}? assignmentOperator assignmentExpression )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_conditionalExpression_in_assignmentExpression4824);
+            pushFollow(FOLLOW_conditionalExpression_in_assignmentExpression4852);
             lhs=conditionalExpression();
             _fsp--;
 
             adaptor.addChild(root_0, lhs.getTree());
-            // JS.g:1297:2: ({...}? assignmentOperator assignmentExpression )?
+            // JS.g:1301:2: ({...}? assignmentOperator assignmentExpression )?
             int alt40=2;
             int LA40_0 = input.LA(1);
 
@@ -5523,17 +5524,17 @@
             }
             switch (alt40) {
                 case 1 :
-                    // JS.g:1297:4: {...}? assignmentOperator assignmentExpression
+                    // JS.g:1301:4: {...}? assignmentOperator assignmentExpression
                     {
                     if ( !( isLeftHandSideAssign(lhs, isLhs) ) ) {
                         throw new FailedPredicateException(input, "assignmentExpression", " isLeftHandSideAssign(lhs, isLhs) ");
                     }
-                    pushFollow(FOLLOW_assignmentOperator_in_assignmentExpression4831);
+                    pushFollow(FOLLOW_assignmentOperator_in_assignmentExpression4859);
                     assignmentOperator155=assignmentOperator();
                     _fsp--;
 
                     root_0 = (Object)adaptor.becomeRoot(assignmentOperator155.getTree(), root_0);
-                    pushFollow(FOLLOW_assignmentExpression_in_assignmentExpression4834);
+                    pushFollow(FOLLOW_assignmentExpression_in_assignmentExpression4862);
                     assignmentExpression156=assignmentExpression();
                     _fsp--;
 
@@ -5569,7 +5570,7 @@
     };
 
     // $ANTLR start assignmentOperator
-    // JS.g:1300:1: assignmentOperator : ( ASSIGN | MULASS | DIVASS | MODASS | ADDASS | SUBASS | SHLASS | SHRASS | SHUASS | ANDASS | XORASS | ORASS );
+    // JS.g:1304:1: assignmentOperator : ( ASSIGN | MULASS | DIVASS | MODASS | ADDASS | SUBASS | SHLASS | SHRASS | SHUASS | ANDASS | XORASS | ORASS );
     public final assignmentOperator_return assignmentOperator() throws RecognitionException {
         assignmentOperator_return retval = new assignmentOperator_return();
         retval.start = input.LT(1);
@@ -5581,7 +5582,7 @@
         Object set157_tree=null;
 
         try {
-            // JS.g:1301:3: ( ASSIGN | MULASS | DIVASS | MODASS | ADDASS | SUBASS | SHLASS | SHRASS | SHUASS | ANDASS | XORASS | ORASS )
+            // JS.g:1305:3: ( ASSIGN | MULASS | DIVASS | MODASS | ADDASS | SUBASS | SHLASS | SHRASS | SHUASS | ANDASS | XORASS | ORASS )
             // JS.g:
             {
             root_0 = (Object)adaptor.nil();
@@ -5623,7 +5624,7 @@
     };
 
     // $ANTLR start assignmentExpressionNoIn
-    // JS.g:1304:1: assignmentExpressionNoIn : lhs= conditionalExpressionNoIn ({...}? assignmentOperator assignmentExpressionNoIn )? ;
+    // JS.g:1308:1: assignmentExpressionNoIn : lhs= conditionalExpressionNoIn ({...}? assignmentOperator assignmentExpressionNoIn )? ;
     public final assignmentExpressionNoIn_return assignmentExpressionNoIn() throws RecognitionException {
         assignmentExpressionNoIn_return retval = new assignmentExpressionNoIn_return();
         retval.start = input.LT(1);
@@ -5638,21 +5639,21 @@
 
 
 
-
+        
         	Object[] isLhs = new Object[1];
 
         try {
-            // JS.g:1309:2: (lhs= conditionalExpressionNoIn ({...}? assignmentOperator assignmentExpressionNoIn )? )
-            // JS.g:1309:4: lhs= conditionalExpressionNoIn ({...}? assignmentOperator assignmentExpressionNoIn )?
+            // JS.g:1313:2: (lhs= conditionalExpressionNoIn ({...}? assignmentOperator assignmentExpressionNoIn )? )
+            // JS.g:1313:4: lhs= conditionalExpressionNoIn ({...}? assignmentOperator assignmentExpressionNoIn )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_conditionalExpressionNoIn_in_assignmentExpressionNoIn4912);
+            pushFollow(FOLLOW_conditionalExpressionNoIn_in_assignmentExpressionNoIn4940);
             lhs=conditionalExpressionNoIn();
             _fsp--;
 
             adaptor.addChild(root_0, lhs.getTree());
-            // JS.g:1310:2: ({...}? assignmentOperator assignmentExpressionNoIn )?
+            // JS.g:1314:2: ({...}? assignmentOperator assignmentExpressionNoIn )?
             int alt41=2;
             int LA41_0 = input.LA(1);
 
@@ -5665,17 +5666,17 @@
             }
             switch (alt41) {
                 case 1 :
-                    // JS.g:1310:4: {...}? assignmentOperator assignmentExpressionNoIn
+                    // JS.g:1314:4: {...}? assignmentOperator assignmentExpressionNoIn
                     {
                     if ( !( isLeftHandSideAssign(lhs, isLhs) ) ) {
                         throw new FailedPredicateException(input, "assignmentExpressionNoIn", " isLeftHandSideAssign(lhs, isLhs) ");
                     }
-                    pushFollow(FOLLOW_assignmentOperator_in_assignmentExpressionNoIn4919);
+                    pushFollow(FOLLOW_assignmentOperator_in_assignmentExpressionNoIn4947);
                     assignmentOperator158=assignmentOperator();
                     _fsp--;
 
                     root_0 = (Object)adaptor.becomeRoot(assignmentOperator158.getTree(), root_0);
-                    pushFollow(FOLLOW_assignmentExpressionNoIn_in_assignmentExpressionNoIn4922);
+                    pushFollow(FOLLOW_assignmentExpressionNoIn_in_assignmentExpressionNoIn4950);
                     assignmentExpressionNoIn159=assignmentExpressionNoIn();
                     _fsp--;
 
@@ -5711,7 +5712,7 @@
     };
 
     // $ANTLR start expression
-    // JS.g:1317:1: expression : exprs+= assignmentExpression ( COMMA exprs+= assignmentExpression )* -> { $exprs.size() > 1 }? ^( CEXPR ( $exprs)+ ) -> $exprs;
+    // JS.g:1321:1: expression : exprs+= assignmentExpression ( COMMA exprs+= assignmentExpression )* -> { $exprs.size() > 1 }? ^( CEXPR ( $exprs)+ ) -> $exprs;
     public final expression_return expression() throws RecognitionException {
         expression_return retval = new expression_return();
         retval.start = input.LT(1);
@@ -5725,10 +5726,10 @@
         RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
         RewriteRuleSubtreeStream stream_assignmentExpression=new RewriteRuleSubtreeStream(adaptor,"rule assignmentExpression");
         try {
-            // JS.g:1318:2: (exprs+= assignmentExpression ( COMMA exprs+= assignmentExpression )* -> { $exprs.size() > 1 }? ^( CEXPR ( $exprs)+ ) -> $exprs)
-            // JS.g:1318:4: exprs+= assignmentExpression ( COMMA exprs+= assignmentExpression )*
+            // JS.g:1322:2: (exprs+= assignmentExpression ( COMMA exprs+= assignmentExpression )* -> { $exprs.size() > 1 }? ^( CEXPR ( $exprs)+ ) -> $exprs)
+            // JS.g:1322:4: exprs+= assignmentExpression ( COMMA exprs+= assignmentExpression )*
             {
-            pushFollow(FOLLOW_assignmentExpression_in_expression4944);
+            pushFollow(FOLLOW_assignmentExpression_in_expression4972);
             exprs=assignmentExpression();
             _fsp--;
 
@@ -5736,7 +5737,7 @@
             if (list_exprs==null) list_exprs=new ArrayList();
             list_exprs.add(exprs);
 
-            // JS.g:1318:32: ( COMMA exprs+= assignmentExpression )*
+            // JS.g:1322:32: ( COMMA exprs+= assignmentExpression )*
             loop42:
             do {
                 int alt42=2;
@@ -5749,13 +5750,13 @@
 
                 switch (alt42) {
             	case 1 :
-            	    // JS.g:1318:34: COMMA exprs+= assignmentExpression
+            	    // JS.g:1322:34: COMMA exprs+= assignmentExpression
             	    {
             	    COMMA160=(Token)input.LT(1);
-            	    match(input,COMMA,FOLLOW_COMMA_in_expression4948); 
+            	    match(input,COMMA,FOLLOW_COMMA_in_expression4976); 
             	    stream_COMMA.add(COMMA160);
 
-            	    pushFollow(FOLLOW_assignmentExpression_in_expression4952);
+            	    pushFollow(FOLLOW_assignmentExpression_in_expression4980);
             	    exprs=assignmentExpression();
             	    _fsp--;
 
@@ -5783,9 +5784,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
             RewriteRuleSubtreeStream stream_exprs=new RewriteRuleSubtreeStream(adaptor,"token exprs",list_exprs);
             root_0 = (Object)adaptor.nil();
-            // 1319:2: -> { $exprs.size() > 1 }? ^( CEXPR ( $exprs)+ )
+            // 1323:2: -> { $exprs.size() > 1 }? ^( CEXPR ( $exprs)+ )
             if ( list_exprs.size() > 1 ) {
-                // JS.g:1319:28: ^( CEXPR ( $exprs)+ )
+                // JS.g:1323:28: ^( CEXPR ( $exprs)+ )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(CEXPR, "CEXPR"), root_1);
@@ -5803,7 +5804,7 @@
                 }
 
             }
-            else // 1320:2: -> $exprs
+            else // 1324:2: -> $exprs
             {
                 adaptor.addChild(root_0, ((ParserRuleReturnScope)stream_exprs.next()).getTree());
 
@@ -5835,7 +5836,7 @@
     };
 
     // $ANTLR start expressionNoIn
-    // JS.g:1323:1: expressionNoIn : exprs+= assignmentExpressionNoIn ( COMMA exprs+= assignmentExpressionNoIn )* -> { $exprs.size() > 1 }? ^( CEXPR ( $exprs)+ ) -> $exprs;
+    // JS.g:1327:1: expressionNoIn : exprs+= assignmentExpressionNoIn ( COMMA exprs+= assignmentExpressionNoIn )* -> { $exprs.size() > 1 }? ^( CEXPR ( $exprs)+ ) -> $exprs;
     public final expressionNoIn_return expressionNoIn() throws RecognitionException {
         expressionNoIn_return retval = new expressionNoIn_return();
         retval.start = input.LT(1);
@@ -5849,10 +5850,10 @@
         RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
         RewriteRuleSubtreeStream stream_assignmentExpressionNoIn=new RewriteRuleSubtreeStream(adaptor,"rule assignmentExpressionNoIn");
         try {
-            // JS.g:1324:2: (exprs+= assignmentExpressionNoIn ( COMMA exprs+= assignmentExpressionNoIn )* -> { $exprs.size() > 1 }? ^( CEXPR ( $exprs)+ ) -> $exprs)
-            // JS.g:1324:4: exprs+= assignmentExpressionNoIn ( COMMA exprs+= assignmentExpressionNoIn )*
+            // JS.g:1328:2: (exprs+= assignmentExpressionNoIn ( COMMA exprs+= assignmentExpressionNoIn )* -> { $exprs.size() > 1 }? ^( CEXPR ( $exprs)+ ) -> $exprs)
+            // JS.g:1328:4: exprs+= assignmentExpressionNoIn ( COMMA exprs+= assignmentExpressionNoIn )*
             {
-            pushFollow(FOLLOW_assignmentExpressionNoIn_in_expressionNoIn4989);
+            pushFollow(FOLLOW_assignmentExpressionNoIn_in_expressionNoIn5017);
             exprs=assignmentExpressionNoIn();
             _fsp--;
 
@@ -5860,7 +5861,7 @@
             if (list_exprs==null) list_exprs=new ArrayList();
             list_exprs.add(exprs);
 
-            // JS.g:1324:36: ( COMMA exprs+= assignmentExpressionNoIn )*
+            // JS.g:1328:36: ( COMMA exprs+= assignmentExpressionNoIn )*
             loop43:
             do {
                 int alt43=2;
@@ -5873,13 +5874,13 @@
 
                 switch (alt43) {
             	case 1 :
-            	    // JS.g:1324:38: COMMA exprs+= assignmentExpressionNoIn
+            	    // JS.g:1328:38: COMMA exprs+= assignmentExpressionNoIn
             	    {
             	    COMMA161=(Token)input.LT(1);
-            	    match(input,COMMA,FOLLOW_COMMA_in_expressionNoIn4993); 
+            	    match(input,COMMA,FOLLOW_COMMA_in_expressionNoIn5021); 
             	    stream_COMMA.add(COMMA161);
 
-            	    pushFollow(FOLLOW_assignmentExpressionNoIn_in_expressionNoIn4997);
+            	    pushFollow(FOLLOW_assignmentExpressionNoIn_in_expressionNoIn5025);
             	    exprs=assignmentExpressionNoIn();
             	    _fsp--;
 
@@ -5907,9 +5908,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
             RewriteRuleSubtreeStream stream_exprs=new RewriteRuleSubtreeStream(adaptor,"token exprs",list_exprs);
             root_0 = (Object)adaptor.nil();
-            // 1325:2: -> { $exprs.size() > 1 }? ^( CEXPR ( $exprs)+ )
+            // 1329:2: -> { $exprs.size() > 1 }? ^( CEXPR ( $exprs)+ )
             if ( list_exprs.size() > 1 ) {
-                // JS.g:1325:28: ^( CEXPR ( $exprs)+ )
+                // JS.g:1329:28: ^( CEXPR ( $exprs)+ )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(CEXPR, "CEXPR"), root_1);
@@ -5927,7 +5928,7 @@
                 }
 
             }
-            else // 1326:2: -> $exprs
+            else // 1330:2: -> $exprs
             {
                 adaptor.addChild(root_0, ((ParserRuleReturnScope)stream_exprs.next()).getTree());
 
@@ -5959,7 +5960,7 @@
     };
 
     // $ANTLR start semic
-    // JS.g:1351:1: semic : ( SEMIC | EOF | RBRACE | EOL | MultiLineComment );
+    // JS.g:1355:1: semic : ( SEMIC | EOF | RBRACE | EOL | MultiLineComment );
     public final semic_return semic() throws RecognitionException {
         semic_return retval = new semic_return();
         retval.start = input.LT(1);
@@ -5978,14 +5979,14 @@
         Object EOL165_tree=null;
         Object MultiLineComment166_tree=null;
 
-
+        
         	// Mark current position so we can unconsume a RBRACE.
         	int marker = input.mark();
         	// Promote EOL if appropriate	
         	promoteEOL(retval);
 
         try {
-            // JS.g:1359:2: ( SEMIC | EOF | RBRACE | EOL | MultiLineComment )
+            // JS.g:1363:2: ( SEMIC | EOF | RBRACE | EOL | MultiLineComment )
             int alt44=5;
             switch ( input.LA(1) ) {
             case SEMIC:
@@ -6015,19 +6016,19 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("1351:1: semic : ( SEMIC | EOF | RBRACE | EOL | MultiLineComment );", 44, 0, input);
+                    new NoViableAltException("1355:1: semic : ( SEMIC | EOF | RBRACE | EOL | MultiLineComment );", 44, 0, input);
 
                 throw nvae;
             }
 
             switch (alt44) {
                 case 1 :
-                    // JS.g:1359:4: SEMIC
+                    // JS.g:1363:4: SEMIC
                     {
                     root_0 = (Object)adaptor.nil();
 
                     SEMIC162=(Token)input.LT(1);
-                    match(input,SEMIC,FOLLOW_SEMIC_in_semic5048); 
+                    match(input,SEMIC,FOLLOW_SEMIC_in_semic5076); 
                     SEMIC162_tree = (Object)adaptor.create(SEMIC162);
                     adaptor.addChild(root_0, SEMIC162_tree);
 
@@ -6035,12 +6036,12 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1360:4: EOF
+                    // JS.g:1364:4: EOF
                     {
                     root_0 = (Object)adaptor.nil();
 
                     EOF163=(Token)input.LT(1);
-                    match(input,EOF,FOLLOW_EOF_in_semic5053); 
+                    match(input,EOF,FOLLOW_EOF_in_semic5081); 
                     EOF163_tree = (Object)adaptor.create(EOF163);
                     adaptor.addChild(root_0, EOF163_tree);
 
@@ -6048,12 +6049,12 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:1361:4: RBRACE
+                    // JS.g:1365:4: RBRACE
                     {
                     root_0 = (Object)adaptor.nil();
 
                     RBRACE164=(Token)input.LT(1);
-                    match(input,RBRACE,FOLLOW_RBRACE_in_semic5058); 
+                    match(input,RBRACE,FOLLOW_RBRACE_in_semic5086); 
                     RBRACE164_tree = (Object)adaptor.create(RBRACE164);
                     adaptor.addChild(root_0, RBRACE164_tree);
 
@@ -6062,12 +6063,12 @@
                     }
                     break;
                 case 4 :
-                    // JS.g:1362:4: EOL
+                    // JS.g:1366:4: EOL
                     {
                     root_0 = (Object)adaptor.nil();
 
                     EOL165=(Token)input.LT(1);
-                    match(input,EOL,FOLLOW_EOL_in_semic5065); 
+                    match(input,EOL,FOLLOW_EOL_in_semic5093); 
                     EOL165_tree = (Object)adaptor.create(EOL165);
                     adaptor.addChild(root_0, EOL165_tree);
 
@@ -6075,12 +6076,12 @@
                     }
                     break;
                 case 5 :
-                    // JS.g:1362:10: MultiLineComment
+                    // JS.g:1366:10: MultiLineComment
                     {
                     root_0 = (Object)adaptor.nil();
 
                     MultiLineComment166=(Token)input.LT(1);
-                    match(input,MultiLineComment,FOLLOW_MultiLineComment_in_semic5069); 
+                    match(input,MultiLineComment,FOLLOW_MultiLineComment_in_semic5097); 
                     MultiLineComment166_tree = (Object)adaptor.create(MultiLineComment166);
                     adaptor.addChild(root_0, MultiLineComment166_tree);
 
@@ -6111,7 +6112,7 @@
     };
 
     // $ANTLR start statement
-    // JS.g:1370:1: statement options {k=1; } : ({...}? block | statementTail );
+    // JS.g:1374:1: statement options {k=1; } : ({...}? block | statementTail );
     public final statement_return statement() throws RecognitionException {
         statement_return retval = new statement_return();
         retval.start = input.LT(1);
@@ -6125,7 +6126,7 @@
 
 
         try {
-            // JS.g:1375:2: ({...}? block | statementTail )
+            // JS.g:1379:2: ({...}? block | statementTail )
             int alt45=2;
             int LA45_0 = input.LA(1);
 
@@ -6140,7 +6141,7 @@
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("1370:1: statement options {k=1; } : ({...}? block | statementTail );", 45, 1, input);
+                        new NoViableAltException("1374:1: statement options {k=1; } : ({...}? block | statementTail );", 45, 1, input);
 
                     throw nvae;
                 }
@@ -6150,20 +6151,20 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("1370:1: statement options {k=1; } : ({...}? block | statementTail );", 45, 0, input);
+                    new NoViableAltException("1374:1: statement options {k=1; } : ({...}? block | statementTail );", 45, 0, input);
 
                 throw nvae;
             }
             switch (alt45) {
                 case 1 :
-                    // JS.g:1375:4: {...}? block
+                    // JS.g:1379:4: {...}? block
                     {
                     root_0 = (Object)adaptor.nil();
 
                     if ( !( input.LA(1) == LBRACE ) ) {
                         throw new FailedPredicateException(input, "statement", " input.LA(1) == LBRACE ");
                     }
-                    pushFollow(FOLLOW_block_in_statement5098);
+                    pushFollow(FOLLOW_block_in_statement5126);
                     block167=block();
                     _fsp--;
 
@@ -6172,11 +6173,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1376:4: statementTail
+                    // JS.g:1380:4: statementTail
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_statementTail_in_statement5103);
+                    pushFollow(FOLLOW_statementTail_in_statement5131);
                     statementTail168=statementTail();
                     _fsp--;
 
@@ -6208,7 +6209,7 @@
     };
 
     // $ANTLR start statementTail
-    // JS.g:1379:1: statementTail : ( variableStatement | emptyStatement | expressionStatement | ifStatement | iterationStatement | continueStatement | breakStatement | returnStatement | withStatement | labelledStatement | switchStatement | throwStatement | tryStatement | constStatement | namespaceStatement );
+    // JS.g:1383:1: statementTail : ( variableStatement | emptyStatement | expressionStatement | ifStatement | iterationStatement | continueStatement | breakStatement | returnStatement | withStatement | labelledStatement | switchStatement | throwStatement | tryStatement | constStatement | namespaceStatement );
     public final statementTail_return statementTail() throws RecognitionException {
         statementTail_return retval = new statementTail_return();
         retval.start = input.LT(1);
@@ -6248,7 +6249,7 @@
 
 
         try {
-            // JS.g:1380:2: ( variableStatement | emptyStatement | expressionStatement | ifStatement | iterationStatement | continueStatement | breakStatement | returnStatement | withStatement | labelledStatement | switchStatement | throwStatement | tryStatement | constStatement | namespaceStatement )
+            // JS.g:1384:2: ( variableStatement | emptyStatement | expressionStatement | ifStatement | iterationStatement | continueStatement | breakStatement | returnStatement | withStatement | labelledStatement | switchStatement | throwStatement | tryStatement | constStatement | namespaceStatement )
             int alt46=15;
             switch ( input.LA(1) ) {
             case VAR:
@@ -6308,7 +6309,7 @@
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("1379:1: statementTail : ( variableStatement | emptyStatement | expressionStatement | ifStatement | iterationStatement | continueStatement | breakStatement | returnStatement | withStatement | labelledStatement | switchStatement | throwStatement | tryStatement | constStatement | namespaceStatement );", 46, 4, input);
+                        new NoViableAltException("1383:1: statementTail : ( variableStatement | emptyStatement | expressionStatement | ifStatement | iterationStatement | continueStatement | breakStatement | returnStatement | withStatement | labelledStatement | switchStatement | throwStatement | tryStatement | constStatement | namespaceStatement );", 46, 4, input);
 
                     throw nvae;
                 }
@@ -6373,18 +6374,18 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("1379:1: statementTail : ( variableStatement | emptyStatement | expressionStatement | ifStatement | iterationStatement | continueStatement | breakStatement | returnStatement | withStatement | labelledStatement | switchStatement | throwStatement | tryStatement | constStatement | namespaceStatement );", 46, 0, input);
+                    new NoViableAltException("1383:1: statementTail : ( variableStatement | emptyStatement | expressionStatement | ifStatement | iterationStatement | continueStatement | breakStatement | returnStatement | withStatement | labelledStatement | switchStatement | throwStatement | tryStatement | constStatement | namespaceStatement );", 46, 0, input);
 
                 throw nvae;
             }
 
             switch (alt46) {
                 case 1 :
-                    // JS.g:1380:4: variableStatement
+                    // JS.g:1384:4: variableStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_variableStatement_in_statementTail5115);
+                    pushFollow(FOLLOW_variableStatement_in_statementTail5143);
                     variableStatement169=variableStatement();
                     _fsp--;
 
@@ -6393,11 +6394,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1381:4: emptyStatement
+                    // JS.g:1385:4: emptyStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_emptyStatement_in_statementTail5120);
+                    pushFollow(FOLLOW_emptyStatement_in_statementTail5148);
                     emptyStatement170=emptyStatement();
                     _fsp--;
 
@@ -6406,11 +6407,11 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:1382:4: expressionStatement
+                    // JS.g:1386:4: expressionStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_expressionStatement_in_statementTail5125);
+                    pushFollow(FOLLOW_expressionStatement_in_statementTail5153);
                     expressionStatement171=expressionStatement();
                     _fsp--;
 
@@ -6419,11 +6420,11 @@
                     }
                     break;
                 case 4 :
-                    // JS.g:1383:4: ifStatement
+                    // JS.g:1387:4: ifStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_ifStatement_in_statementTail5130);
+                    pushFollow(FOLLOW_ifStatement_in_statementTail5158);
                     ifStatement172=ifStatement();
                     _fsp--;
 
@@ -6432,11 +6433,11 @@
                     }
                     break;
                 case 5 :
-                    // JS.g:1384:4: iterationStatement
+                    // JS.g:1388:4: iterationStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_iterationStatement_in_statementTail5135);
+                    pushFollow(FOLLOW_iterationStatement_in_statementTail5163);
                     iterationStatement173=iterationStatement();
                     _fsp--;
 
@@ -6445,11 +6446,11 @@
                     }
                     break;
                 case 6 :
-                    // JS.g:1385:4: continueStatement
+                    // JS.g:1389:4: continueStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_continueStatement_in_statementTail5140);
+                    pushFollow(FOLLOW_continueStatement_in_statementTail5168);
                     continueStatement174=continueStatement();
                     _fsp--;
 
@@ -6458,11 +6459,11 @@
                     }
                     break;
                 case 7 :
-                    // JS.g:1386:4: breakStatement
+                    // JS.g:1390:4: breakStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_breakStatement_in_statementTail5145);
+                    pushFollow(FOLLOW_breakStatement_in_statementTail5173);
                     breakStatement175=breakStatement();
                     _fsp--;
 
@@ -6471,11 +6472,11 @@
                     }
                     break;
                 case 8 :
-                    // JS.g:1387:4: returnStatement
+                    // JS.g:1391:4: returnStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_returnStatement_in_statementTail5150);
+                    pushFollow(FOLLOW_returnStatement_in_statementTail5178);
                     returnStatement176=returnStatement();
                     _fsp--;
 
@@ -6484,11 +6485,11 @@
                     }
                     break;
                 case 9 :
-                    // JS.g:1388:4: withStatement
+                    // JS.g:1392:4: withStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_withStatement_in_statementTail5155);
+                    pushFollow(FOLLOW_withStatement_in_statementTail5183);
                     withStatement177=withStatement();
                     _fsp--;
 
@@ -6497,11 +6498,11 @@
                     }
                     break;
                 case 10 :
-                    // JS.g:1389:4: labelledStatement
+                    // JS.g:1393:4: labelledStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_labelledStatement_in_statementTail5160);
+                    pushFollow(FOLLOW_labelledStatement_in_statementTail5188);
                     labelledStatement178=labelledStatement();
                     _fsp--;
 
@@ -6510,11 +6511,11 @@
                     }
                     break;
                 case 11 :
-                    // JS.g:1390:4: switchStatement
+                    // JS.g:1394:4: switchStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_switchStatement_in_statementTail5165);
+                    pushFollow(FOLLOW_switchStatement_in_statementTail5193);
                     switchStatement179=switchStatement();
                     _fsp--;
 
@@ -6523,11 +6524,11 @@
                     }
                     break;
                 case 12 :
-                    // JS.g:1391:4: throwStatement
+                    // JS.g:1395:4: throwStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_throwStatement_in_statementTail5170);
+                    pushFollow(FOLLOW_throwStatement_in_statementTail5198);
                     throwStatement180=throwStatement();
                     _fsp--;
 
@@ -6536,11 +6537,11 @@
                     }
                     break;
                 case 13 :
-                    // JS.g:1392:4: tryStatement
+                    // JS.g:1396:4: tryStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_tryStatement_in_statementTail5175);
+                    pushFollow(FOLLOW_tryStatement_in_statementTail5203);
                     tryStatement181=tryStatement();
                     _fsp--;
 
@@ -6549,11 +6550,11 @@
                     }
                     break;
                 case 14 :
-                    // JS.g:1393:4: constStatement
+                    // JS.g:1397:4: constStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_constStatement_in_statementTail5180);
+                    pushFollow(FOLLOW_constStatement_in_statementTail5208);
                     constStatement182=constStatement();
                     _fsp--;
 
@@ -6562,11 +6563,11 @@
                     }
                     break;
                 case 15 :
-                    // JS.g:1394:4: namespaceStatement
+                    // JS.g:1398:4: namespaceStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_namespaceStatement_in_statementTail5185);
+                    pushFollow(FOLLOW_namespaceStatement_in_statementTail5213);
                     namespaceStatement183=namespaceStatement();
                     _fsp--;
 
@@ -6598,7 +6599,7 @@
     };
 
     // $ANTLR start block
-    // JS.g:1399:1: block : lb= LBRACE ( statement )* RBRACE -> ^( BLOCK[$lb, \"BLOCK\"] ( statement )* ) ;
+    // JS.g:1403:1: block : lb= LBRACE ( statement )* RBRACE -> ^( BLOCK[$lb, \"BLOCK\"] ( statement )* ) ;
     public final block_return block() throws RecognitionException {
         block_return retval = new block_return();
         retval.start = input.LT(1);
@@ -6616,14 +6617,14 @@
         RewriteRuleTokenStream stream_LBRACE=new RewriteRuleTokenStream(adaptor,"token LBRACE");
         RewriteRuleSubtreeStream stream_statement=new RewriteRuleSubtreeStream(adaptor,"rule statement");
         try {
-            // JS.g:1400:2: (lb= LBRACE ( statement )* RBRACE -> ^( BLOCK[$lb, \"BLOCK\"] ( statement )* ) )
-            // JS.g:1400:4: lb= LBRACE ( statement )* RBRACE
+            // JS.g:1404:2: (lb= LBRACE ( statement )* RBRACE -> ^( BLOCK[$lb, \"BLOCK\"] ( statement )* ) )
+            // JS.g:1404:4: lb= LBRACE ( statement )* RBRACE
             {
             lb=(Token)input.LT(1);
-            match(input,LBRACE,FOLLOW_LBRACE_in_block5200); 
+            match(input,LBRACE,FOLLOW_LBRACE_in_block5228); 
             stream_LBRACE.add(lb);
 
-            // JS.g:1400:14: ( statement )*
+            // JS.g:1404:14: ( statement )*
             loop47:
             do {
                 int alt47=2;
@@ -6636,9 +6637,9 @@
 
                 switch (alt47) {
             	case 1 :
-            	    // JS.g:1400:14: statement
+            	    // JS.g:1404:14: statement
             	    {
-            	    pushFollow(FOLLOW_statement_in_block5202);
+            	    pushFollow(FOLLOW_statement_in_block5230);
             	    statement184=statement();
             	    _fsp--;
 
@@ -6653,7 +6654,7 @@
             } while (true);
 
             RBRACE185=(Token)input.LT(1);
-            match(input,RBRACE,FOLLOW_RBRACE_in_block5205); 
+            match(input,RBRACE,FOLLOW_RBRACE_in_block5233); 
             stream_RBRACE.add(RBRACE185);
 
 
@@ -6667,14 +6668,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1401:2: -> ^( BLOCK[$lb, \"BLOCK\"] ( statement )* )
+            // 1405:2: -> ^( BLOCK[$lb, \"BLOCK\"] ( statement )* )
             {
-                // JS.g:1401:5: ^( BLOCK[$lb, \"BLOCK\"] ( statement )* )
+                // JS.g:1405:5: ^( BLOCK[$lb, \"BLOCK\"] ( statement )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(BLOCK, lb,  "BLOCK"), root_1);
 
-                // JS.g:1401:28: ( statement )*
+                // JS.g:1405:28: ( statement )*
                 while ( stream_statement.hasNext() ) {
                     adaptor.addChild(root_1, stream_statement.next());
 
@@ -6712,7 +6713,7 @@
     };
 
     // $ANTLR start variableStatement
-    // JS.g:1408:1: variableStatement : VAR variableDeclaration ( COMMA variableDeclaration )* semic -> ^( VAR ( variableDeclaration )+ ) ;
+    // JS.g:1412:1: variableStatement : VAR variableDeclaration ( COMMA variableDeclaration )* semic -> ^( VAR ( variableDeclaration )+ ) ;
     public final variableStatement_return variableStatement() throws RecognitionException {
         variableStatement_return retval = new variableStatement_return();
         retval.start = input.LT(1);
@@ -6735,19 +6736,19 @@
         RewriteRuleSubtreeStream stream_variableDeclaration=new RewriteRuleSubtreeStream(adaptor,"rule variableDeclaration");
         RewriteRuleSubtreeStream stream_semic=new RewriteRuleSubtreeStream(adaptor,"rule semic");
         try {
-            // JS.g:1409:2: ( VAR variableDeclaration ( COMMA variableDeclaration )* semic -> ^( VAR ( variableDeclaration )+ ) )
-            // JS.g:1409:4: VAR variableDeclaration ( COMMA variableDeclaration )* semic
+            // JS.g:1413:2: ( VAR variableDeclaration ( COMMA variableDeclaration )* semic -> ^( VAR ( variableDeclaration )+ ) )
+            // JS.g:1413:4: VAR variableDeclaration ( COMMA variableDeclaration )* semic
             {
             VAR186=(Token)input.LT(1);
-            match(input,VAR,FOLLOW_VAR_in_variableStatement5234); 
+            match(input,VAR,FOLLOW_VAR_in_variableStatement5262); 
             stream_VAR.add(VAR186);
 
-            pushFollow(FOLLOW_variableDeclaration_in_variableStatement5236);
+            pushFollow(FOLLOW_variableDeclaration_in_variableStatement5264);
             variableDeclaration187=variableDeclaration();
             _fsp--;
 
             stream_variableDeclaration.add(variableDeclaration187.getTree());
-            // JS.g:1409:28: ( COMMA variableDeclaration )*
+            // JS.g:1413:28: ( COMMA variableDeclaration )*
             loop48:
             do {
                 int alt48=2;
@@ -6760,13 +6761,13 @@
 
                 switch (alt48) {
             	case 1 :
-            	    // JS.g:1409:30: COMMA variableDeclaration
+            	    // JS.g:1413:30: COMMA variableDeclaration
             	    {
             	    COMMA188=(Token)input.LT(1);
-            	    match(input,COMMA,FOLLOW_COMMA_in_variableStatement5240); 
+            	    match(input,COMMA,FOLLOW_COMMA_in_variableStatement5268); 
             	    stream_COMMA.add(COMMA188);
 
-            	    pushFollow(FOLLOW_variableDeclaration_in_variableStatement5242);
+            	    pushFollow(FOLLOW_variableDeclaration_in_variableStatement5270);
             	    variableDeclaration189=variableDeclaration();
             	    _fsp--;
 
@@ -6780,7 +6781,7 @@
                 }
             } while (true);
 
-            pushFollow(FOLLOW_semic_in_variableStatement5247);
+            pushFollow(FOLLOW_semic_in_variableStatement5275);
             semic190=semic();
             _fsp--;
 
@@ -6796,9 +6797,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1410:2: -> ^( VAR ( variableDeclaration )+ )
+            // 1414:2: -> ^( VAR ( variableDeclaration )+ )
             {
-                // JS.g:1410:5: ^( VAR ( variableDeclaration )+ )
+                // JS.g:1414:5: ^( VAR ( variableDeclaration )+ )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_VAR.next(), root_1);
@@ -6843,7 +6844,7 @@
     };
 
     // $ANTLR start variableDeclaration
-    // JS.g:1413:1: variableDeclaration : identifier ( ASSIGN assignmentExpression )? ;
+    // JS.g:1417:1: variableDeclaration : identifier ( ASSIGN assignmentExpression )? ;
     public final variableDeclaration_return variableDeclaration() throws RecognitionException {
         variableDeclaration_return retval = new variableDeclaration_return();
         retval.start = input.LT(1);
@@ -6859,17 +6860,17 @@
         Object ASSIGN192_tree=null;
 
         try {
-            // JS.g:1414:2: ( identifier ( ASSIGN assignmentExpression )? )
-            // JS.g:1414:4: identifier ( ASSIGN assignmentExpression )?
+            // JS.g:1418:2: ( identifier ( ASSIGN assignmentExpression )? )
+            // JS.g:1418:4: identifier ( ASSIGN assignmentExpression )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_identifier_in_variableDeclaration5270);
+            pushFollow(FOLLOW_identifier_in_variableDeclaration5298);
             identifier191=identifier();
             _fsp--;
 
             adaptor.addChild(root_0, identifier191.getTree());
-            // JS.g:1414:15: ( ASSIGN assignmentExpression )?
+            // JS.g:1418:15: ( ASSIGN assignmentExpression )?
             int alt49=2;
             int LA49_0 = input.LA(1);
 
@@ -6878,14 +6879,14 @@
             }
             switch (alt49) {
                 case 1 :
-                    // JS.g:1414:17: ASSIGN assignmentExpression
+                    // JS.g:1418:17: ASSIGN assignmentExpression
                     {
                     ASSIGN192=(Token)input.LT(1);
-                    match(input,ASSIGN,FOLLOW_ASSIGN_in_variableDeclaration5274); 
+                    match(input,ASSIGN,FOLLOW_ASSIGN_in_variableDeclaration5302); 
                     ASSIGN192_tree = (Object)adaptor.create(ASSIGN192);
                     root_0 = (Object)adaptor.becomeRoot(ASSIGN192_tree, root_0);
 
-                    pushFollow(FOLLOW_assignmentExpression_in_variableDeclaration5277);
+                    pushFollow(FOLLOW_assignmentExpression_in_variableDeclaration5305);
                     assignmentExpression193=assignmentExpression();
                     _fsp--;
 
@@ -6921,7 +6922,7 @@
     };
 
     // $ANTLR start variableDeclarationNoIn
-    // JS.g:1417:1: variableDeclarationNoIn : identifier ( ASSIGN assignmentExpressionNoIn )? ;
+    // JS.g:1421:1: variableDeclarationNoIn : identifier ( ASSIGN assignmentExpressionNoIn )? ;
     public final variableDeclarationNoIn_return variableDeclarationNoIn() throws RecognitionException {
         variableDeclarationNoIn_return retval = new variableDeclarationNoIn_return();
         retval.start = input.LT(1);
@@ -6937,17 +6938,17 @@
         Object ASSIGN195_tree=null;
 
         try {
-            // JS.g:1418:2: ( identifier ( ASSIGN assignmentExpressionNoIn )? )
-            // JS.g:1418:4: identifier ( ASSIGN assignmentExpressionNoIn )?
+            // JS.g:1422:2: ( identifier ( ASSIGN assignmentExpressionNoIn )? )
+            // JS.g:1422:4: identifier ( ASSIGN assignmentExpressionNoIn )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_identifier_in_variableDeclarationNoIn5292);
+            pushFollow(FOLLOW_identifier_in_variableDeclarationNoIn5320);
             identifier194=identifier();
             _fsp--;
 
             adaptor.addChild(root_0, identifier194.getTree());
-            // JS.g:1418:15: ( ASSIGN assignmentExpressionNoIn )?
+            // JS.g:1422:15: ( ASSIGN assignmentExpressionNoIn )?
             int alt50=2;
             int LA50_0 = input.LA(1);
 
@@ -6956,14 +6957,14 @@
             }
             switch (alt50) {
                 case 1 :
-                    // JS.g:1418:17: ASSIGN assignmentExpressionNoIn
+                    // JS.g:1422:17: ASSIGN assignmentExpressionNoIn
                     {
                     ASSIGN195=(Token)input.LT(1);
-                    match(input,ASSIGN,FOLLOW_ASSIGN_in_variableDeclarationNoIn5296); 
+                    match(input,ASSIGN,FOLLOW_ASSIGN_in_variableDeclarationNoIn5324); 
                     ASSIGN195_tree = (Object)adaptor.create(ASSIGN195);
                     root_0 = (Object)adaptor.becomeRoot(ASSIGN195_tree, root_0);
 
-                    pushFollow(FOLLOW_assignmentExpressionNoIn_in_variableDeclarationNoIn5299);
+                    pushFollow(FOLLOW_assignmentExpressionNoIn_in_variableDeclarationNoIn5327);
                     assignmentExpressionNoIn196=assignmentExpressionNoIn();
                     _fsp--;
 
@@ -6999,7 +7000,7 @@
     };
 
     // $ANTLR start constStatement
-    // JS.g:1421:1: constStatement : CONST variableDeclaration ( COMMA variableDeclaration )* semic -> ^( CONST ( variableDeclaration )+ ) ;
+    // JS.g:1425:1: constStatement : CONST variableDeclaration ( COMMA variableDeclaration )* semic -> ^( CONST ( variableDeclaration )+ ) ;
     public final constStatement_return constStatement() throws RecognitionException {
         constStatement_return retval = new constStatement_return();
         retval.start = input.LT(1);
@@ -7022,19 +7023,19 @@
         RewriteRuleSubtreeStream stream_variableDeclaration=new RewriteRuleSubtreeStream(adaptor,"rule variableDeclaration");
         RewriteRuleSubtreeStream stream_semic=new RewriteRuleSubtreeStream(adaptor,"rule semic");
         try {
-            // JS.g:1422:3: ( CONST variableDeclaration ( COMMA variableDeclaration )* semic -> ^( CONST ( variableDeclaration )+ ) )
-            // JS.g:1422:5: CONST variableDeclaration ( COMMA variableDeclaration )* semic
+            // JS.g:1426:3: ( CONST variableDeclaration ( COMMA variableDeclaration )* semic -> ^( CONST ( variableDeclaration )+ ) )
+            // JS.g:1426:5: CONST variableDeclaration ( COMMA variableDeclaration )* semic
             {
             CONST197=(Token)input.LT(1);
-            match(input,CONST,FOLLOW_CONST_in_constStatement5314); 
+            match(input,CONST,FOLLOW_CONST_in_constStatement5342); 
             stream_CONST.add(CONST197);
 
-            pushFollow(FOLLOW_variableDeclaration_in_constStatement5316);
+            pushFollow(FOLLOW_variableDeclaration_in_constStatement5344);
             variableDeclaration198=variableDeclaration();
             _fsp--;
 
             stream_variableDeclaration.add(variableDeclaration198.getTree());
-            // JS.g:1422:31: ( COMMA variableDeclaration )*
+            // JS.g:1426:31: ( COMMA variableDeclaration )*
             loop51:
             do {
                 int alt51=2;
@@ -7047,13 +7048,13 @@
 
                 switch (alt51) {
             	case 1 :
-            	    // JS.g:1422:33: COMMA variableDeclaration
+            	    // JS.g:1426:33: COMMA variableDeclaration
             	    {
             	    COMMA199=(Token)input.LT(1);
-            	    match(input,COMMA,FOLLOW_COMMA_in_constStatement5320); 
+            	    match(input,COMMA,FOLLOW_COMMA_in_constStatement5348); 
             	    stream_COMMA.add(COMMA199);
 
-            	    pushFollow(FOLLOW_variableDeclaration_in_constStatement5322);
+            	    pushFollow(FOLLOW_variableDeclaration_in_constStatement5350);
             	    variableDeclaration200=variableDeclaration();
             	    _fsp--;
 
@@ -7067,14 +7068,14 @@
                 }
             } while (true);
 
-            pushFollow(FOLLOW_semic_in_constStatement5327);
+            pushFollow(FOLLOW_semic_in_constStatement5355);
             semic201=semic();
             _fsp--;
 
             stream_semic.add(semic201.getTree());
 
             // AST REWRITE
-            // elements: CONST, variableDeclaration
+            // elements: variableDeclaration, CONST
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -7083,9 +7084,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1423:3: -> ^( CONST ( variableDeclaration )+ )
+            // 1427:3: -> ^( CONST ( variableDeclaration )+ )
             {
-                // JS.g:1423:6: ^( CONST ( variableDeclaration )+ )
+                // JS.g:1427:6: ^( CONST ( variableDeclaration )+ )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_CONST.next(), root_1);
@@ -7130,7 +7131,7 @@
     };
 
     // $ANTLR start emptyStatement
-    // JS.g:1430:1: emptyStatement : SEMIC ;
+    // JS.g:1434:1: emptyStatement : SEMIC ;
     public final emptyStatement_return emptyStatement() throws RecognitionException {
         emptyStatement_return retval = new emptyStatement_return();
         retval.start = input.LT(1);
@@ -7142,13 +7143,13 @@
         Object SEMIC202_tree=null;
 
         try {
-            // JS.g:1431:2: ( SEMIC )
-            // JS.g:1431:4: SEMIC
+            // JS.g:1435:2: ( SEMIC )
+            // JS.g:1435:4: SEMIC
             {
             root_0 = (Object)adaptor.nil();
 
             SEMIC202=(Token)input.LT(1);
-            match(input,SEMIC,FOLLOW_SEMIC_in_emptyStatement5357); 
+            match(input,SEMIC,FOLLOW_SEMIC_in_emptyStatement5385); 
 
             }
 
@@ -7174,7 +7175,7 @@
     };
 
     // $ANTLR start expressionStatement
-    // JS.g:1444:1: expressionStatement : expression semic ;
+    // JS.g:1448:1: expressionStatement : expression semic ;
     public final expressionStatement_return expressionStatement() throws RecognitionException {
         expressionStatement_return retval = new expressionStatement_return();
         retval.start = input.LT(1);
@@ -7188,17 +7189,17 @@
 
 
         try {
-            // JS.g:1445:2: ( expression semic )
-            // JS.g:1445:4: expression semic
+            // JS.g:1449:2: ( expression semic )
+            // JS.g:1449:4: expression semic
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_expression_in_expressionStatement5376);
+            pushFollow(FOLLOW_expression_in_expressionStatement5404);
             expression203=expression();
             _fsp--;
 
             adaptor.addChild(root_0, expression203.getTree());
-            pushFollow(FOLLOW_semic_in_expressionStatement5378);
+            pushFollow(FOLLOW_semic_in_expressionStatement5406);
             semic204=semic();
             _fsp--;
 
@@ -7227,7 +7228,7 @@
     };
 
     // $ANTLR start ifStatement
-    // JS.g:1452:1: ifStatement : IF LPAREN expression RPAREN statement ({...}? ELSE statement )? -> ^( IF expression ( statement )+ ) ;
+    // JS.g:1456:1: ifStatement : IF LPAREN expression RPAREN statement ({...}? ELSE statement )? -> ^( IF expression ( statement )+ ) ;
     public final ifStatement_return ifStatement() throws RecognitionException {
         ifStatement_return retval = new ifStatement_return();
         retval.start = input.LT(1);
@@ -7256,32 +7257,32 @@
         RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
         RewriteRuleSubtreeStream stream_statement=new RewriteRuleSubtreeStream(adaptor,"rule statement");
         try {
-            // JS.g:1454:2: ( IF LPAREN expression RPAREN statement ({...}? ELSE statement )? -> ^( IF expression ( statement )+ ) )
-            // JS.g:1454:4: IF LPAREN expression RPAREN statement ({...}? ELSE statement )?
+            // JS.g:1458:2: ( IF LPAREN expression RPAREN statement ({...}? ELSE statement )? -> ^( IF expression ( statement )+ ) )
+            // JS.g:1458:4: IF LPAREN expression RPAREN statement ({...}? ELSE statement )?
             {
             IF205=(Token)input.LT(1);
-            match(input,IF,FOLLOW_IF_in_ifStatement5396); 
+            match(input,IF,FOLLOW_IF_in_ifStatement5424); 
             stream_IF.add(IF205);
 
             LPAREN206=(Token)input.LT(1);
-            match(input,LPAREN,FOLLOW_LPAREN_in_ifStatement5398); 
+            match(input,LPAREN,FOLLOW_LPAREN_in_ifStatement5426); 
             stream_LPAREN.add(LPAREN206);
 
-            pushFollow(FOLLOW_expression_in_ifStatement5400);
+            pushFollow(FOLLOW_expression_in_ifStatement5428);
             expression207=expression();
             _fsp--;
 
             stream_expression.add(expression207.getTree());
             RPAREN208=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_ifStatement5402); 
+            match(input,RPAREN,FOLLOW_RPAREN_in_ifStatement5430); 
             stream_RPAREN.add(RPAREN208);
 
-            pushFollow(FOLLOW_statement_in_ifStatement5404);
+            pushFollow(FOLLOW_statement_in_ifStatement5432);
             statement209=statement();
             _fsp--;
 
             stream_statement.add(statement209.getTree());
-            // JS.g:1454:42: ({...}? ELSE statement )?
+            // JS.g:1458:42: ({...}? ELSE statement )?
             int alt52=2;
             int LA52_0 = input.LA(1);
 
@@ -7294,16 +7295,16 @@
             }
             switch (alt52) {
                 case 1 :
-                    // JS.g:1454:44: {...}? ELSE statement
+                    // JS.g:1458:44: {...}? ELSE statement
                     {
                     if ( !( input.LA(1) == ELSE ) ) {
                         throw new FailedPredicateException(input, "ifStatement", " input.LA(1) == ELSE ");
                     }
                     ELSE210=(Token)input.LT(1);
-                    match(input,ELSE,FOLLOW_ELSE_in_ifStatement5410); 
+                    match(input,ELSE,FOLLOW_ELSE_in_ifStatement5438); 
                     stream_ELSE.add(ELSE210);
 
-                    pushFollow(FOLLOW_statement_in_ifStatement5412);
+                    pushFollow(FOLLOW_statement_in_ifStatement5440);
                     statement211=statement();
                     _fsp--;
 
@@ -7316,7 +7317,7 @@
 
 
             // AST REWRITE
-            // elements: statement, IF, expression
+            // elements: statement, expression, IF
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -7325,9 +7326,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1455:2: -> ^( IF expression ( statement )+ )
+            // 1459:2: -> ^( IF expression ( statement )+ )
             {
-                // JS.g:1455:5: ^( IF expression ( statement )+ )
+                // JS.g:1459:5: ^( IF expression ( statement )+ )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_IF.next(), root_1);
@@ -7373,7 +7374,7 @@
     };
 
     // $ANTLR start iterationStatement
-    // JS.g:1462:1: iterationStatement : ( doStatement | whileStatement | forEachStatement | forStatement );
+    // JS.g:1466:1: iterationStatement : ( doStatement | whileStatement | forEachStatement | forStatement );
     public final iterationStatement_return iterationStatement() throws RecognitionException {
         iterationStatement_return retval = new iterationStatement_return();
         retval.start = input.LT(1);
@@ -7391,7 +7392,7 @@
 
 
         try {
-            // JS.g:1463:2: ( doStatement | whileStatement | forEachStatement | forStatement )
+            // JS.g:1467:2: ( doStatement | whileStatement | forEachStatement | forStatement )
             int alt53=4;
             switch ( input.LA(1) ) {
             case DO:
@@ -7416,7 +7417,7 @@
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("1462:1: iterationStatement : ( doStatement | whileStatement | forEachStatement | forStatement );", 53, 3, input);
+                        new NoViableAltException("1466:1: iterationStatement : ( doStatement | whileStatement | forEachStatement | forStatement );", 53, 3, input);
 
                     throw nvae;
                 }
@@ -7424,18 +7425,18 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("1462:1: iterationStatement : ( doStatement | whileStatement | forEachStatement | forStatement );", 53, 0, input);
+                    new NoViableAltException("1466:1: iterationStatement : ( doStatement | whileStatement | forEachStatement | forStatement );", 53, 0, input);
 
                 throw nvae;
             }
 
             switch (alt53) {
                 case 1 :
-                    // JS.g:1463:4: doStatement
+                    // JS.g:1467:4: doStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_doStatement_in_iterationStatement5445);
+                    pushFollow(FOLLOW_doStatement_in_iterationStatement5473);
                     doStatement212=doStatement();
                     _fsp--;
 
@@ -7444,11 +7445,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1464:4: whileStatement
+                    // JS.g:1468:4: whileStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_whileStatement_in_iterationStatement5450);
+                    pushFollow(FOLLOW_whileStatement_in_iterationStatement5478);
                     whileStatement213=whileStatement();
                     _fsp--;
 
@@ -7457,11 +7458,11 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:1465:4: forEachStatement
+                    // JS.g:1469:4: forEachStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_forEachStatement_in_iterationStatement5455);
+                    pushFollow(FOLLOW_forEachStatement_in_iterationStatement5483);
                     forEachStatement214=forEachStatement();
                     _fsp--;
 
@@ -7470,11 +7471,11 @@
                     }
                     break;
                 case 4 :
-                    // JS.g:1466:4: forStatement
+                    // JS.g:1470:4: forStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_forStatement_in_iterationStatement5460);
+                    pushFollow(FOLLOW_forStatement_in_iterationStatement5488);
                     forStatement215=forStatement();
                     _fsp--;
 
@@ -7506,7 +7507,7 @@
     };
 
     // $ANTLR start doStatement
-    // JS.g:1469:1: doStatement : DO statement WHILE LPAREN expression RPAREN semic -> ^( DO statement expression ) ;
+    // JS.g:1473:1: doStatement : DO statement WHILE LPAREN expression RPAREN semic -> ^( DO statement expression ) ;
     public final doStatement_return doStatement() throws RecognitionException {
         doStatement_return retval = new doStatement_return();
         retval.start = input.LT(1);
@@ -7536,43 +7537,43 @@
         RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
         RewriteRuleSubtreeStream stream_semic=new RewriteRuleSubtreeStream(adaptor,"rule semic");
         try {
-            // JS.g:1470:2: ( DO statement WHILE LPAREN expression RPAREN semic -> ^( DO statement expression ) )
-            // JS.g:1470:4: DO statement WHILE LPAREN expression RPAREN semic
+            // JS.g:1474:2: ( DO statement WHILE LPAREN expression RPAREN semic -> ^( DO statement expression ) )
+            // JS.g:1474:4: DO statement WHILE LPAREN expression RPAREN semic
             {
             DO216=(Token)input.LT(1);
-            match(input,DO,FOLLOW_DO_in_doStatement5472); 
+            match(input,DO,FOLLOW_DO_in_doStatement5500); 
             stream_DO.add(DO216);
 
-            pushFollow(FOLLOW_statement_in_doStatement5474);
+            pushFollow(FOLLOW_statement_in_doStatement5502);
             statement217=statement();
             _fsp--;
 
             stream_statement.add(statement217.getTree());
             WHILE218=(Token)input.LT(1);
-            match(input,WHILE,FOLLOW_WHILE_in_doStatement5476); 
+            match(input,WHILE,FOLLOW_WHILE_in_doStatement5504); 
             stream_WHILE.add(WHILE218);
 
             LPAREN219=(Token)input.LT(1);
-            match(input,LPAREN,FOLLOW_LPAREN_in_doStatement5478); 
+            match(input,LPAREN,FOLLOW_LPAREN_in_doStatement5506); 
             stream_LPAREN.add(LPAREN219);
 
-            pushFollow(FOLLOW_expression_in_doStatement5480);
+            pushFollow(FOLLOW_expression_in_doStatement5508);
             expression220=expression();
             _fsp--;
 
             stream_expression.add(expression220.getTree());
             RPAREN221=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_doStatement5482); 
+            match(input,RPAREN,FOLLOW_RPAREN_in_doStatement5510); 
             stream_RPAREN.add(RPAREN221);
 
-            pushFollow(FOLLOW_semic_in_doStatement5484);
+            pushFollow(FOLLOW_semic_in_doStatement5512);
             semic222=semic();
             _fsp--;
 
             stream_semic.add(semic222.getTree());
 
             // AST REWRITE
-            // elements: expression, statement, DO
+            // elements: statement, expression, DO
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -7581,9 +7582,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1471:2: -> ^( DO statement expression )
+            // 1475:2: -> ^( DO statement expression )
             {
-                // JS.g:1471:5: ^( DO statement expression )
+                // JS.g:1475:5: ^( DO statement expression )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_DO.next(), root_1);
@@ -7622,7 +7623,7 @@
     };
 
     // $ANTLR start whileStatement
-    // JS.g:1474:1: whileStatement : WHILE LPAREN expression RPAREN statement ;
+    // JS.g:1478:1: whileStatement : WHILE LPAREN expression RPAREN statement ;
     public final whileStatement_return whileStatement() throws RecognitionException {
         whileStatement_return retval = new whileStatement_return();
         retval.start = input.LT(1);
@@ -7642,26 +7643,26 @@
         Object RPAREN226_tree=null;
 
         try {
-            // JS.g:1475:2: ( WHILE LPAREN expression RPAREN statement )
-            // JS.g:1475:4: WHILE LPAREN expression RPAREN statement
+            // JS.g:1479:2: ( WHILE LPAREN expression RPAREN statement )
+            // JS.g:1479:4: WHILE LPAREN expression RPAREN statement
             {
             root_0 = (Object)adaptor.nil();
 
             WHILE223=(Token)input.LT(1);
-            match(input,WHILE,FOLLOW_WHILE_in_whileStatement5509); 
+            match(input,WHILE,FOLLOW_WHILE_in_whileStatement5537); 
             WHILE223_tree = (Object)adaptor.create(WHILE223);
             root_0 = (Object)adaptor.becomeRoot(WHILE223_tree, root_0);
 
             LPAREN224=(Token)input.LT(1);
-            match(input,LPAREN,FOLLOW_LPAREN_in_whileStatement5512); 
-            pushFollow(FOLLOW_expression_in_whileStatement5515);
+            match(input,LPAREN,FOLLOW_LPAREN_in_whileStatement5540); 
+            pushFollow(FOLLOW_expression_in_whileStatement5543);
             expression225=expression();
             _fsp--;
 
             adaptor.addChild(root_0, expression225.getTree());
             RPAREN226=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_whileStatement5517); 
-            pushFollow(FOLLOW_statement_in_whileStatement5520);
+            match(input,RPAREN,FOLLOW_RPAREN_in_whileStatement5545); 
+            pushFollow(FOLLOW_statement_in_whileStatement5548);
             statement227=statement();
             _fsp--;
 
@@ -7691,7 +7692,7 @@
     };
 
     // $ANTLR start forEachStatement
-    // JS.g:1520:1: forEachStatement : FOR EACH LPAREN forEachControl RPAREN statement -> ^( FOREACH forEachControl statement ) ;
+    // JS.g:1524:1: forEachStatement : FOR EACH LPAREN forEachControl RPAREN statement -> ^( FOREACH forEachControl statement ) ;
     public final forEachStatement_return forEachStatement() throws RecognitionException {
         forEachStatement_return retval = new forEachStatement_return();
         retval.start = input.LT(1);
@@ -7718,31 +7719,31 @@
         RewriteRuleSubtreeStream stream_statement=new RewriteRuleSubtreeStream(adaptor,"rule statement");
         RewriteRuleSubtreeStream stream_forEachControl=new RewriteRuleSubtreeStream(adaptor,"rule forEachControl");
         try {
-            // JS.g:1521:3: ( FOR EACH LPAREN forEachControl RPAREN statement -> ^( FOREACH forEachControl statement ) )
-            // JS.g:1521:5: FOR EACH LPAREN forEachControl RPAREN statement
+            // JS.g:1525:3: ( FOR EACH LPAREN forEachControl RPAREN statement -> ^( FOREACH forEachControl statement ) )
+            // JS.g:1525:5: FOR EACH LPAREN forEachControl RPAREN statement
             {
             FOR228=(Token)input.LT(1);
-            match(input,FOR,FOLLOW_FOR_in_forEachStatement5535); 
+            match(input,FOR,FOLLOW_FOR_in_forEachStatement5563); 
             stream_FOR.add(FOR228);
 
             EACH229=(Token)input.LT(1);
-            match(input,EACH,FOLLOW_EACH_in_forEachStatement5537); 
+            match(input,EACH,FOLLOW_EACH_in_forEachStatement5565); 
             stream_EACH.add(EACH229);
 
             LPAREN230=(Token)input.LT(1);
-            match(input,LPAREN,FOLLOW_LPAREN_in_forEachStatement5539); 
+            match(input,LPAREN,FOLLOW_LPAREN_in_forEachStatement5567); 
             stream_LPAREN.add(LPAREN230);
 
-            pushFollow(FOLLOW_forEachControl_in_forEachStatement5541);
+            pushFollow(FOLLOW_forEachControl_in_forEachStatement5569);
             forEachControl231=forEachControl();
             _fsp--;
 
             stream_forEachControl.add(forEachControl231.getTree());
             RPAREN232=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_forEachStatement5543); 
+            match(input,RPAREN,FOLLOW_RPAREN_in_forEachStatement5571); 
             stream_RPAREN.add(RPAREN232);
 
-            pushFollow(FOLLOW_statement_in_forEachStatement5545);
+            pushFollow(FOLLOW_statement_in_forEachStatement5573);
             statement233=statement();
             _fsp--;
 
@@ -7758,9 +7759,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1522:4: -> ^( FOREACH forEachControl statement )
+            // 1526:4: -> ^( FOREACH forEachControl statement )
             {
-                // JS.g:1522:7: ^( FOREACH forEachControl statement )
+                // JS.g:1526:7: ^( FOREACH forEachControl statement )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(FOREACH, "FOREACH"), root_1);
@@ -7799,7 +7800,7 @@
     };
 
     // $ANTLR start forEachControl
-    // JS.g:1525:1: forEachControl : ( forControlVar | forControlExpression );
+    // JS.g:1529:1: forEachControl : ( forControlVar | forControlExpression );
     public final forEachControl_return forEachControl() throws RecognitionException {
         forEachControl_return retval = new forEachControl_return();
         retval.start = input.LT(1);
@@ -7813,7 +7814,7 @@
 
 
         try {
-            // JS.g:1526:3: ( forControlVar | forControlExpression )
+            // JS.g:1530:3: ( forControlVar | forControlExpression )
             int alt54=2;
             int LA54_0 = input.LA(1);
 
@@ -7825,17 +7826,17 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("1525:1: forEachControl : ( forControlVar | forControlExpression );", 54, 0, input);
+                    new NoViableAltException("1529:1: forEachControl : ( forControlVar | forControlExpression );", 54, 0, input);
 
                 throw nvae;
             }
             switch (alt54) {
                 case 1 :
-                    // JS.g:1526:5: forControlVar
+                    // JS.g:1530:5: forControlVar
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_forControlVar_in_forEachControl5572);
+                    pushFollow(FOLLOW_forControlVar_in_forEachControl5600);
                     forControlVar234=forControlVar();
                     _fsp--;
 
@@ -7844,11 +7845,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1527:5: forControlExpression
+                    // JS.g:1531:5: forControlExpression
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_forControlExpression_in_forEachControl5578);
+                    pushFollow(FOLLOW_forControlExpression_in_forEachControl5606);
                     forControlExpression235=forControlExpression();
                     _fsp--;
 
@@ -7880,7 +7881,7 @@
     };
 
     // $ANTLR start forStatement
-    // JS.g:1530:1: forStatement : FOR LPAREN forControl RPAREN statement ;
+    // JS.g:1534:1: forStatement : FOR LPAREN forControl RPAREN statement ;
     public final forStatement_return forStatement() throws RecognitionException {
         forStatement_return retval = new forStatement_return();
         retval.start = input.LT(1);
@@ -7900,26 +7901,26 @@
         Object RPAREN239_tree=null;
 
         try {
-            // JS.g:1531:2: ( FOR LPAREN forControl RPAREN statement )
-            // JS.g:1531:4: FOR LPAREN forControl RPAREN statement
+            // JS.g:1535:2: ( FOR LPAREN forControl RPAREN statement )
+            // JS.g:1535:4: FOR LPAREN forControl RPAREN statement
             {
             root_0 = (Object)adaptor.nil();
 
             FOR236=(Token)input.LT(1);
-            match(input,FOR,FOLLOW_FOR_in_forStatement5590); 
+            match(input,FOR,FOLLOW_FOR_in_forStatement5618); 
             FOR236_tree = (Object)adaptor.create(FOR236);
             root_0 = (Object)adaptor.becomeRoot(FOR236_tree, root_0);
 
             LPAREN237=(Token)input.LT(1);
-            match(input,LPAREN,FOLLOW_LPAREN_in_forStatement5593); 
-            pushFollow(FOLLOW_forControl_in_forStatement5596);
+            match(input,LPAREN,FOLLOW_LPAREN_in_forStatement5621); 
+            pushFollow(FOLLOW_forControl_in_forStatement5624);
             forControl238=forControl();
             _fsp--;
 
             adaptor.addChild(root_0, forControl238.getTree());
             RPAREN239=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_forStatement5598); 
-            pushFollow(FOLLOW_statement_in_forStatement5601);
+            match(input,RPAREN,FOLLOW_RPAREN_in_forStatement5626); 
+            pushFollow(FOLLOW_statement_in_forStatement5629);
             statement240=statement();
             _fsp--;
 
@@ -7949,7 +7950,7 @@
     };
 
     // $ANTLR start forControl
-    // JS.g:1534:1: forControl : ( forControlVar | forControlExpression | forControlSemic );
+    // JS.g:1538:1: forControl : ( forControlVar | forControlExpression | forControlSemic );
     public final forControl_return forControl() throws RecognitionException {
         forControl_return retval = new forControl_return();
         retval.start = input.LT(1);
@@ -7965,7 +7966,7 @@
 
 
         try {
-            // JS.g:1535:2: ( forControlVar | forControlExpression | forControlSemic )
+            // JS.g:1539:2: ( forControlVar | forControlExpression | forControlSemic )
             int alt55=3;
             switch ( input.LA(1) ) {
             case VAR:
@@ -8016,18 +8017,18 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("1534:1: forControl : ( forControlVar | forControlExpression | forControlSemic );", 55, 0, input);
+                    new NoViableAltException("1538:1: forControl : ( forControlVar | forControlExpression | forControlSemic );", 55, 0, input);
 
                 throw nvae;
             }
 
             switch (alt55) {
                 case 1 :
-                    // JS.g:1535:4: forControlVar
+                    // JS.g:1539:4: forControlVar
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_forControlVar_in_forControl5612);
+                    pushFollow(FOLLOW_forControlVar_in_forControl5640);
                     forControlVar241=forControlVar();
                     _fsp--;
 
@@ -8036,11 +8037,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1536:4: forControlExpression
+                    // JS.g:1540:4: forControlExpression
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_forControlExpression_in_forControl5617);
+                    pushFollow(FOLLOW_forControlExpression_in_forControl5645);
                     forControlExpression242=forControlExpression();
                     _fsp--;
 
@@ -8049,11 +8050,11 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:1537:4: forControlSemic
+                    // JS.g:1541:4: forControlSemic
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_forControlSemic_in_forControl5622);
+                    pushFollow(FOLLOW_forControlSemic_in_forControl5650);
                     forControlSemic243=forControlSemic();
                     _fsp--;
 
@@ -8085,7 +8086,7 @@
     };
 
     // $ANTLR start forControlVar
-    // JS.g:1540:1: forControlVar : VAR variableDeclarationNoIn ( ( IN expression -> ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) ) ) | ( ( COMMA variableDeclarationNoIn )* SEMIC (ex1= expression )? SEMIC (ex2= expression )? -> ^( FORSTEP ^( VAR ( variableDeclarationNoIn )+ ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) ) ) ) ;
+    // JS.g:1544:1: forControlVar : VAR variableDeclarationNoIn ( ( IN expression -> ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) ) ) | ( ( COMMA variableDeclarationNoIn )* SEMIC (ex1= expression )? SEMIC (ex2= expression )? -> ^( FORSTEP ^( VAR ( variableDeclarationNoIn )+ ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) ) ) ) ;
     public final forControlVar_return forControlVar() throws RecognitionException {
         forControlVar_return retval = new forControlVar_return();
         retval.start = input.LT(1);
@@ -8120,19 +8121,19 @@
         RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
         RewriteRuleSubtreeStream stream_variableDeclarationNoIn=new RewriteRuleSubtreeStream(adaptor,"rule variableDeclarationNoIn");
         try {
-            // JS.g:1541:2: ( VAR variableDeclarationNoIn ( ( IN expression -> ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) ) ) | ( ( COMMA variableDeclarationNoIn )* SEMIC (ex1= expression )? SEMIC (ex2= expression )? -> ^( FORSTEP ^( VAR ( variableDeclarationNoIn )+ ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) ) ) ) )
-            // JS.g:1541:4: VAR variableDeclarationNoIn ( ( IN expression -> ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) ) ) | ( ( COMMA variableDeclarationNoIn )* SEMIC (ex1= expression )? SEMIC (ex2= expression )? -> ^( FORSTEP ^( VAR ( variableDeclarationNoIn )+ ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) ) ) )
+            // JS.g:1545:2: ( VAR variableDeclarationNoIn ( ( IN expression -> ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) ) ) | ( ( COMMA variableDeclarationNoIn )* SEMIC (ex1= expression )? SEMIC (ex2= expression )? -> ^( FORSTEP ^( VAR ( variableDeclarationNoIn )+ ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) ) ) ) )
+            // JS.g:1545:4: VAR variableDeclarationNoIn ( ( IN expression -> ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) ) ) | ( ( COMMA variableDeclarationNoIn )* SEMIC (ex1= expression )? SEMIC (ex2= expression )? -> ^( FORSTEP ^( VAR ( variableDeclarationNoIn )+ ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) ) ) )
             {
             VAR244=(Token)input.LT(1);
-            match(input,VAR,FOLLOW_VAR_in_forControlVar5633); 
+            match(input,VAR,FOLLOW_VAR_in_forControlVar5661); 
             stream_VAR.add(VAR244);
 
-            pushFollow(FOLLOW_variableDeclarationNoIn_in_forControlVar5635);
+            pushFollow(FOLLOW_variableDeclarationNoIn_in_forControlVar5663);
             variableDeclarationNoIn245=variableDeclarationNoIn();
             _fsp--;
 
             stream_variableDeclarationNoIn.add(variableDeclarationNoIn245.getTree());
-            // JS.g:1542:2: ( ( IN expression -> ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) ) ) | ( ( COMMA variableDeclarationNoIn )* SEMIC (ex1= expression )? SEMIC (ex2= expression )? -> ^( FORSTEP ^( VAR ( variableDeclarationNoIn )+ ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) ) ) )
+            // JS.g:1546:2: ( ( IN expression -> ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) ) ) | ( ( COMMA variableDeclarationNoIn )* SEMIC (ex1= expression )? SEMIC (ex2= expression )? -> ^( FORSTEP ^( VAR ( variableDeclarationNoIn )+ ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) ) ) )
             int alt59=2;
             int LA59_0 = input.LA(1);
 
@@ -8144,29 +8145,29 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("1542:2: ( ( IN expression -> ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) ) ) | ( ( COMMA variableDeclarationNoIn )* SEMIC (ex1= expression )? SEMIC (ex2= expression )? -> ^( FORSTEP ^( VAR ( variableDeclarationNoIn )+ ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) ) ) )", 59, 0, input);
+                    new NoViableAltException("1546:2: ( ( IN expression -> ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) ) ) | ( ( COMMA variableDeclarationNoIn )* SEMIC (ex1= expression )? SEMIC (ex2= expression )? -> ^( FORSTEP ^( VAR ( variableDeclarationNoIn )+ ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) ) ) )", 59, 0, input);
 
                 throw nvae;
             }
             switch (alt59) {
                 case 1 :
-                    // JS.g:1543:3: ( IN expression -> ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) ) )
+                    // JS.g:1547:3: ( IN expression -> ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) ) )
                     {
-                    // JS.g:1543:3: ( IN expression -> ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) ) )
-                    // JS.g:1544:4: IN expression
+                    // JS.g:1547:3: ( IN expression -> ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) ) )
+                    // JS.g:1548:4: IN expression
                     {
                     IN246=(Token)input.LT(1);
-                    match(input,IN,FOLLOW_IN_in_forControlVar5647); 
+                    match(input,IN,FOLLOW_IN_in_forControlVar5675); 
                     stream_IN.add(IN246);
 
-                    pushFollow(FOLLOW_expression_in_forControlVar5649);
+                    pushFollow(FOLLOW_expression_in_forControlVar5677);
                     expression247=expression();
                     _fsp--;
 
                     stream_expression.add(expression247.getTree());
 
                     // AST REWRITE
-                    // elements: expression, VAR, variableDeclarationNoIn
+                    // elements: variableDeclarationNoIn, VAR, expression
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
@@ -8175,14 +8176,14 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1545:4: -> ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) )
+                    // 1549:4: -> ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) )
                     {
-                        // JS.g:1545:7: ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) )
+                        // JS.g:1549:7: ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot(adaptor.create(FORITER, "FORITER"), root_1);
 
-                        // JS.g:1545:18: ^( VAR variableDeclarationNoIn )
+                        // JS.g:1549:18: ^( VAR variableDeclarationNoIn )
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot(stream_VAR.next(), root_2);
@@ -8191,7 +8192,7 @@
 
                         adaptor.addChild(root_1, root_2);
                         }
-                        // JS.g:1545:51: ^( EXPR expression )
+                        // JS.g:1549:51: ^( EXPR expression )
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot(adaptor.create(EXPR, "EXPR"), root_2);
@@ -8214,12 +8215,12 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1548:3: ( ( COMMA variableDeclarationNoIn )* SEMIC (ex1= expression )? SEMIC (ex2= expression )? -> ^( FORSTEP ^( VAR ( variableDeclarationNoIn )+ ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) ) )
+                    // JS.g:1552:3: ( ( COMMA variableDeclarationNoIn )* SEMIC (ex1= expression )? SEMIC (ex2= expression )? -> ^( FORSTEP ^( VAR ( variableDeclarationNoIn )+ ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) ) )
                     {
-                    // JS.g:1548:3: ( ( COMMA variableDeclarationNoIn )* SEMIC (ex1= expression )? SEMIC (ex2= expression )? -> ^( FORSTEP ^( VAR ( variableDeclarationNoIn )+ ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) ) )
-                    // JS.g:1549:4: ( COMMA variableDeclarationNoIn )* SEMIC (ex1= expression )? SEMIC (ex2= expression )?
+                    // JS.g:1552:3: ( ( COMMA variableDeclarationNoIn )* SEMIC (ex1= expression )? SEMIC (ex2= expression )? -> ^( FORSTEP ^( VAR ( variableDeclarationNoIn )+ ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) ) )
+                    // JS.g:1553:4: ( COMMA variableDeclarationNoIn )* SEMIC (ex1= expression )? SEMIC (ex2= expression )?
                     {
-                    // JS.g:1549:4: ( COMMA variableDeclarationNoIn )*
+                    // JS.g:1553:4: ( COMMA variableDeclarationNoIn )*
                     loop56:
                     do {
                         int alt56=2;
@@ -8232,13 +8233,13 @@
 
                         switch (alt56) {
                     	case 1 :
-                    	    // JS.g:1549:6: COMMA variableDeclarationNoIn
+                    	    // JS.g:1553:6: COMMA variableDeclarationNoIn
                     	    {
                     	    COMMA248=(Token)input.LT(1);
-                    	    match(input,COMMA,FOLLOW_COMMA_in_forControlVar5695); 
+                    	    match(input,COMMA,FOLLOW_COMMA_in_forControlVar5723); 
                     	    stream_COMMA.add(COMMA248);
 
-                    	    pushFollow(FOLLOW_variableDeclarationNoIn_in_forControlVar5697);
+                    	    pushFollow(FOLLOW_variableDeclarationNoIn_in_forControlVar5725);
                     	    variableDeclarationNoIn249=variableDeclarationNoIn();
                     	    _fsp--;
 
@@ -8253,10 +8254,10 @@
                     } while (true);
 
                     SEMIC250=(Token)input.LT(1);
-                    match(input,SEMIC,FOLLOW_SEMIC_in_forControlVar5702); 
+                    match(input,SEMIC,FOLLOW_SEMIC_in_forControlVar5730); 
                     stream_SEMIC.add(SEMIC250);
 
-                    // JS.g:1549:48: (ex1= expression )?
+                    // JS.g:1553:48: (ex1= expression )?
                     int alt57=2;
                     int LA57_0 = input.LA(1);
 
@@ -8265,9 +8266,9 @@
                     }
                     switch (alt57) {
                         case 1 :
-                            // JS.g:1549:48: ex1= expression
+                            // JS.g:1553:48: ex1= expression
                             {
-                            pushFollow(FOLLOW_expression_in_forControlVar5706);
+                            pushFollow(FOLLOW_expression_in_forControlVar5734);
                             ex1=expression();
                             _fsp--;
 
@@ -8279,10 +8280,10 @@
                     }
 
                     SEMIC251=(Token)input.LT(1);
-                    match(input,SEMIC,FOLLOW_SEMIC_in_forControlVar5709); 
+                    match(input,SEMIC,FOLLOW_SEMIC_in_forControlVar5737); 
                     stream_SEMIC.add(SEMIC251);
 
-                    // JS.g:1549:70: (ex2= expression )?
+                    // JS.g:1553:70: (ex2= expression )?
                     int alt58=2;
                     int LA58_0 = input.LA(1);
 
@@ -8291,9 +8292,9 @@
                     }
                     switch (alt58) {
                         case 1 :
-                            // JS.g:1549:70: ex2= expression
+                            // JS.g:1553:70: ex2= expression
                             {
-                            pushFollow(FOLLOW_expression_in_forControlVar5713);
+                            pushFollow(FOLLOW_expression_in_forControlVar5741);
                             ex2=expression();
                             _fsp--;
 
@@ -8306,7 +8307,7 @@
 
 
                     // AST REWRITE
-                    // elements: variableDeclarationNoIn, ex1, ex2, VAR
+                    // elements: ex2, ex1, variableDeclarationNoIn, VAR
                     // token labels: 
                     // rule labels: retval, ex2, ex1
                     // token list labels: 
@@ -8317,14 +8318,14 @@
                     RewriteRuleSubtreeStream stream_ex1=new RewriteRuleSubtreeStream(adaptor,"token ex1",ex1!=null?ex1.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1550:4: -> ^( FORSTEP ^( VAR ( variableDeclarationNoIn )+ ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) )
+                    // 1554:4: -> ^( FORSTEP ^( VAR ( variableDeclarationNoIn )+ ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) )
                     {
-                        // JS.g:1550:7: ^( FORSTEP ^( VAR ( variableDeclarationNoIn )+ ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) )
+                        // JS.g:1554:7: ^( FORSTEP ^( VAR ( variableDeclarationNoIn )+ ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot(adaptor.create(FORSTEP, "FORSTEP"), root_1);
 
-                        // JS.g:1550:18: ^( VAR ( variableDeclarationNoIn )+ )
+                        // JS.g:1554:18: ^( VAR ( variableDeclarationNoIn )+ )
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot(stream_VAR.next(), root_2);
@@ -8340,12 +8341,12 @@
 
                         adaptor.addChild(root_1, root_2);
                         }
-                        // JS.g:1550:52: ^( EXPR ( $ex1)? )
+                        // JS.g:1554:52: ^( EXPR ( $ex1)? )
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot(adaptor.create(EXPR, "EXPR"), root_2);
 
-                        // JS.g:1550:60: ( $ex1)?
+                        // JS.g:1554:60: ( $ex1)?
                         if ( stream_ex1.hasNext() ) {
                             adaptor.addChild(root_2, stream_ex1.next());
 
@@ -8354,12 +8355,12 @@
 
                         adaptor.addChild(root_1, root_2);
                         }
-                        // JS.g:1550:68: ^( EXPR ( $ex2)? )
+                        // JS.g:1554:68: ^( EXPR ( $ex2)? )
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot(adaptor.create(EXPR, "EXPR"), root_2);
 
-                        // JS.g:1550:76: ( $ex2)?
+                        // JS.g:1554:76: ( $ex2)?
                         if ( stream_ex2.hasNext() ) {
                             adaptor.addChild(root_2, stream_ex2.next());
 
@@ -8409,7 +8410,7 @@
     };
 
     // $ANTLR start forControlExpression
-    // JS.g:1555:1: forControlExpression : ex1= expressionNoIn ({...}? ( IN ex2= expression -> ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) ) ) | ( SEMIC (ex2= expression )? SEMIC (ex3= expression )? -> ^( FORSTEP ^( EXPR $ex1) ^( EXPR ( $ex2)? ) ^( EXPR ( $ex3)? ) ) ) ) ;
+    // JS.g:1559:1: forControlExpression : ex1= expressionNoIn ({...}? ( IN ex2= expression -> ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) ) ) | ( SEMIC (ex2= expression )? SEMIC (ex3= expression )? -> ^( FORSTEP ^( EXPR $ex1) ^( EXPR ( $ex2)? ) ^( EXPR ( $ex3)? ) ) ) ) ;
     public final forControlExpression_return forControlExpression() throws RecognitionException {
         forControlExpression_return retval = new forControlExpression_return();
         retval.start = input.LT(1);
@@ -8433,19 +8434,19 @@
         RewriteRuleTokenStream stream_SEMIC=new RewriteRuleTokenStream(adaptor,"token SEMIC");
         RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
         RewriteRuleSubtreeStream stream_expressionNoIn=new RewriteRuleSubtreeStream(adaptor,"rule expressionNoIn");
-
+        
         	Object[] isLhs = new Object[1];
 
         try {
-            // JS.g:1560:2: (ex1= expressionNoIn ({...}? ( IN ex2= expression -> ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) ) ) | ( SEMIC (ex2= expression )? SEMIC (ex3= expression )? -> ^( FORSTEP ^( EXPR $ex1) ^( EXPR ( $ex2)? ) ^( EXPR ( $ex3)? ) ) ) ) )
-            // JS.g:1560:4: ex1= expressionNoIn ({...}? ( IN ex2= expression -> ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) ) ) | ( SEMIC (ex2= expression )? SEMIC (ex3= expression )? -> ^( FORSTEP ^( EXPR $ex1) ^( EXPR ( $ex2)? ) ^( EXPR ( $ex3)? ) ) ) )
+            // JS.g:1564:2: (ex1= expressionNoIn ({...}? ( IN ex2= expression -> ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) ) ) | ( SEMIC (ex2= expression )? SEMIC (ex3= expression )? -> ^( FORSTEP ^( EXPR $ex1) ^( EXPR ( $ex2)? ) ^( EXPR ( $ex3)? ) ) ) ) )
+            // JS.g:1564:4: ex1= expressionNoIn ({...}? ( IN ex2= expression -> ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) ) ) | ( SEMIC (ex2= expression )? SEMIC (ex3= expression )? -> ^( FORSTEP ^( EXPR $ex1) ^( EXPR ( $ex2)? ) ^( EXPR ( $ex3)? ) ) ) )
             {
-            pushFollow(FOLLOW_expressionNoIn_in_forControlExpression5779);
+            pushFollow(FOLLOW_expressionNoIn_in_forControlExpression5807);
             ex1=expressionNoIn();
             _fsp--;
 
             stream_expressionNoIn.add(ex1.getTree());
-            // JS.g:1561:2: ({...}? ( IN ex2= expression -> ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) ) ) | ( SEMIC (ex2= expression )? SEMIC (ex3= expression )? -> ^( FORSTEP ^( EXPR $ex1) ^( EXPR ( $ex2)? ) ^( EXPR ( $ex3)? ) ) ) )
+            // JS.g:1565:2: ({...}? ( IN ex2= expression -> ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) ) ) | ( SEMIC (ex2= expression )? SEMIC (ex3= expression )? -> ^( FORSTEP ^( EXPR $ex1) ^( EXPR ( $ex2)? ) ^( EXPR ( $ex3)? ) ) ) )
             int alt62=2;
             int LA62_0 = input.LA(1);
 
@@ -8457,25 +8458,25 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("1561:2: ({...}? ( IN ex2= expression -> ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) ) ) | ( SEMIC (ex2= expression )? SEMIC (ex3= expression )? -> ^( FORSTEP ^( EXPR $ex1) ^( EXPR ( $ex2)? ) ^( EXPR ( $ex3)? ) ) ) )", 62, 0, input);
+                    new NoViableAltException("1565:2: ({...}? ( IN ex2= expression -> ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) ) ) | ( SEMIC (ex2= expression )? SEMIC (ex3= expression )? -> ^( FORSTEP ^( EXPR $ex1) ^( EXPR ( $ex2)? ) ^( EXPR ( $ex3)? ) ) ) )", 62, 0, input);
 
                 throw nvae;
             }
             switch (alt62) {
                 case 1 :
-                    // JS.g:1562:3: {...}? ( IN ex2= expression -> ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) ) )
+                    // JS.g:1566:3: {...}? ( IN ex2= expression -> ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) ) )
                     {
                     if ( !( isLeftHandSideIn(ex1, isLhs) ) ) {
                         throw new FailedPredicateException(input, "forControlExpression", " isLeftHandSideIn(ex1, isLhs) ");
                     }
-                    // JS.g:1562:37: ( IN ex2= expression -> ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) ) )
-                    // JS.g:1563:4: IN ex2= expression
+                    // JS.g:1566:37: ( IN ex2= expression -> ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) ) )
+                    // JS.g:1567:4: IN ex2= expression
                     {
                     IN252=(Token)input.LT(1);
-                    match(input,IN,FOLLOW_IN_in_forControlExpression5794); 
+                    match(input,IN,FOLLOW_IN_in_forControlExpression5822); 
                     stream_IN.add(IN252);
 
-                    pushFollow(FOLLOW_expression_in_forControlExpression5798);
+                    pushFollow(FOLLOW_expression_in_forControlExpression5826);
                     ex2=expression();
                     _fsp--;
 
@@ -8493,14 +8494,14 @@
                     RewriteRuleSubtreeStream stream_ex1=new RewriteRuleSubtreeStream(adaptor,"token ex1",ex1!=null?ex1.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1564:4: -> ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) )
+                    // 1568:4: -> ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) )
                     {
-                        // JS.g:1564:7: ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) )
+                        // JS.g:1568:7: ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot(adaptor.create(FORITER, "FORITER"), root_1);
 
-                        // JS.g:1564:18: ^( EXPR $ex1)
+                        // JS.g:1568:18: ^( EXPR $ex1)
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot(adaptor.create(EXPR, "EXPR"), root_2);
@@ -8509,7 +8510,7 @@
 
                         adaptor.addChild(root_1, root_2);
                         }
-                        // JS.g:1564:33: ^( EXPR $ex2)
+                        // JS.g:1568:33: ^( EXPR $ex2)
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot(adaptor.create(EXPR, "EXPR"), root_2);
@@ -8532,16 +8533,16 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1567:3: ( SEMIC (ex2= expression )? SEMIC (ex3= expression )? -> ^( FORSTEP ^( EXPR $ex1) ^( EXPR ( $ex2)? ) ^( EXPR ( $ex3)? ) ) )
+                    // JS.g:1571:3: ( SEMIC (ex2= expression )? SEMIC (ex3= expression )? -> ^( FORSTEP ^( EXPR $ex1) ^( EXPR ( $ex2)? ) ^( EXPR ( $ex3)? ) ) )
                     {
-                    // JS.g:1567:3: ( SEMIC (ex2= expression )? SEMIC (ex3= expression )? -> ^( FORSTEP ^( EXPR $ex1) ^( EXPR ( $ex2)? ) ^( EXPR ( $ex3)? ) ) )
-                    // JS.g:1568:4: SEMIC (ex2= expression )? SEMIC (ex3= expression )?
+                    // JS.g:1571:3: ( SEMIC (ex2= expression )? SEMIC (ex3= expression )? -> ^( FORSTEP ^( EXPR $ex1) ^( EXPR ( $ex2)? ) ^( EXPR ( $ex3)? ) ) )
+                    // JS.g:1572:4: SEMIC (ex2= expression )? SEMIC (ex3= expression )?
                     {
                     SEMIC253=(Token)input.LT(1);
-                    match(input,SEMIC,FOLLOW_SEMIC_in_forControlExpression5844); 
+                    match(input,SEMIC,FOLLOW_SEMIC_in_forControlExpression5872); 
                     stream_SEMIC.add(SEMIC253);
 
-                    // JS.g:1568:13: (ex2= expression )?
+                    // JS.g:1572:13: (ex2= expression )?
                     int alt60=2;
                     int LA60_0 = input.LA(1);
 
@@ -8550,9 +8551,9 @@
                     }
                     switch (alt60) {
                         case 1 :
-                            // JS.g:1568:13: ex2= expression
+                            // JS.g:1572:13: ex2= expression
                             {
-                            pushFollow(FOLLOW_expression_in_forControlExpression5848);
+                            pushFollow(FOLLOW_expression_in_forControlExpression5876);
                             ex2=expression();
                             _fsp--;
 
@@ -8564,10 +8565,10 @@
                     }
 
                     SEMIC254=(Token)input.LT(1);
-                    match(input,SEMIC,FOLLOW_SEMIC_in_forControlExpression5851); 
+                    match(input,SEMIC,FOLLOW_SEMIC_in_forControlExpression5879); 
                     stream_SEMIC.add(SEMIC254);
 
-                    // JS.g:1568:35: (ex3= expression )?
+                    // JS.g:1572:35: (ex3= expression )?
                     int alt61=2;
                     int LA61_0 = input.LA(1);
 
@@ -8576,9 +8577,9 @@
                     }
                     switch (alt61) {
                         case 1 :
-                            // JS.g:1568:35: ex3= expression
+                            // JS.g:1572:35: ex3= expression
                             {
-                            pushFollow(FOLLOW_expression_in_forControlExpression5855);
+                            pushFollow(FOLLOW_expression_in_forControlExpression5883);
                             ex3=expression();
                             _fsp--;
 
@@ -8591,7 +8592,7 @@
 
 
                     // AST REWRITE
-                    // elements: ex3, ex2, ex1
+                    // elements: ex2, ex3, ex1
                     // token labels: 
                     // rule labels: retval, ex3, ex2, ex1
                     // token list labels: 
@@ -8603,14 +8604,14 @@
                     RewriteRuleSubtreeStream stream_ex1=new RewriteRuleSubtreeStream(adaptor,"token ex1",ex1!=null?ex1.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1569:4: -> ^( FORSTEP ^( EXPR $ex1) ^( EXPR ( $ex2)? ) ^( EXPR ( $ex3)? ) )
+                    // 1573:4: -> ^( FORSTEP ^( EXPR $ex1) ^( EXPR ( $ex2)? ) ^( EXPR ( $ex3)? ) )
                     {
-                        // JS.g:1569:7: ^( FORSTEP ^( EXPR $ex1) ^( EXPR ( $ex2)? ) ^( EXPR ( $ex3)? ) )
+                        // JS.g:1573:7: ^( FORSTEP ^( EXPR $ex1) ^( EXPR ( $ex2)? ) ^( EXPR ( $ex3)? ) )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot(adaptor.create(FORSTEP, "FORSTEP"), root_1);
 
-                        // JS.g:1569:18: ^( EXPR $ex1)
+                        // JS.g:1573:18: ^( EXPR $ex1)
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot(adaptor.create(EXPR, "EXPR"), root_2);
@@ -8619,12 +8620,12 @@
 
                         adaptor.addChild(root_1, root_2);
                         }
-                        // JS.g:1569:33: ^( EXPR ( $ex2)? )
+                        // JS.g:1573:33: ^( EXPR ( $ex2)? )
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot(adaptor.create(EXPR, "EXPR"), root_2);
 
-                        // JS.g:1569:41: ( $ex2)?
+                        // JS.g:1573:41: ( $ex2)?
                         if ( stream_ex2.hasNext() ) {
                             adaptor.addChild(root_2, stream_ex2.next());
 
@@ -8633,12 +8634,12 @@
 
                         adaptor.addChild(root_1, root_2);
                         }
-                        // JS.g:1569:49: ^( EXPR ( $ex3)? )
+                        // JS.g:1573:49: ^( EXPR ( $ex3)? )
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot(adaptor.create(EXPR, "EXPR"), root_2);
 
-                        // JS.g:1569:57: ( $ex3)?
+                        // JS.g:1573:57: ( $ex3)?
                         if ( stream_ex3.hasNext() ) {
                             adaptor.addChild(root_2, stream_ex3.next());
 
@@ -8688,7 +8689,7 @@
     };
 
     // $ANTLR start forControlSemic
-    // JS.g:1574:1: forControlSemic : SEMIC (ex1= expression )? SEMIC (ex2= expression )? -> ^( FORSTEP ^( EXPR ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) ) ;
+    // JS.g:1578:1: forControlSemic : SEMIC (ex1= expression )? SEMIC (ex2= expression )? -> ^( FORSTEP ^( EXPR ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) ) ;
     public final forControlSemic_return forControlSemic() throws RecognitionException {
         forControlSemic_return retval = new forControlSemic_return();
         retval.start = input.LT(1);
@@ -8707,14 +8708,14 @@
         RewriteRuleTokenStream stream_SEMIC=new RewriteRuleTokenStream(adaptor,"token SEMIC");
         RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
         try {
-            // JS.g:1575:2: ( SEMIC (ex1= expression )? SEMIC (ex2= expression )? -> ^( FORSTEP ^( EXPR ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) ) )
-            // JS.g:1575:4: SEMIC (ex1= expression )? SEMIC (ex2= expression )?
+            // JS.g:1579:2: ( SEMIC (ex1= expression )? SEMIC (ex2= expression )? -> ^( FORSTEP ^( EXPR ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) ) )
+            // JS.g:1579:4: SEMIC (ex1= expression )? SEMIC (ex2= expression )?
             {
             SEMIC255=(Token)input.LT(1);
-            match(input,SEMIC,FOLLOW_SEMIC_in_forControlSemic5914); 
+            match(input,SEMIC,FOLLOW_SEMIC_in_forControlSemic5942); 
             stream_SEMIC.add(SEMIC255);
 
-            // JS.g:1575:13: (ex1= expression )?
+            // JS.g:1579:13: (ex1= expression )?
             int alt63=2;
             int LA63_0 = input.LA(1);
 
@@ -8723,9 +8724,9 @@
             }
             switch (alt63) {
                 case 1 :
-                    // JS.g:1575:13: ex1= expression
+                    // JS.g:1579:13: ex1= expression
                     {
-                    pushFollow(FOLLOW_expression_in_forControlSemic5918);
+                    pushFollow(FOLLOW_expression_in_forControlSemic5946);
                     ex1=expression();
                     _fsp--;
 
@@ -8737,10 +8738,10 @@
             }
 
             SEMIC256=(Token)input.LT(1);
-            match(input,SEMIC,FOLLOW_SEMIC_in_forControlSemic5921); 
+            match(input,SEMIC,FOLLOW_SEMIC_in_forControlSemic5949); 
             stream_SEMIC.add(SEMIC256);
 
-            // JS.g:1575:35: (ex2= expression )?
+            // JS.g:1579:35: (ex2= expression )?
             int alt64=2;
             int LA64_0 = input.LA(1);
 
@@ -8749,9 +8750,9 @@
             }
             switch (alt64) {
                 case 1 :
-                    // JS.g:1575:35: ex2= expression
+                    // JS.g:1579:35: ex2= expression
                     {
-                    pushFollow(FOLLOW_expression_in_forControlSemic5925);
+                    pushFollow(FOLLOW_expression_in_forControlSemic5953);
                     ex2=expression();
                     _fsp--;
 
@@ -8775,26 +8776,26 @@
             RewriteRuleSubtreeStream stream_ex1=new RewriteRuleSubtreeStream(adaptor,"token ex1",ex1!=null?ex1.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1576:2: -> ^( FORSTEP ^( EXPR ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) )
+            // 1580:2: -> ^( FORSTEP ^( EXPR ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) )
             {
-                // JS.g:1576:5: ^( FORSTEP ^( EXPR ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) )
+                // JS.g:1580:5: ^( FORSTEP ^( EXPR ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(FORSTEP, "FORSTEP"), root_1);
 
-                // JS.g:1576:16: ^( EXPR )
+                // JS.g:1580:16: ^( EXPR )
                 {
                 Object root_2 = (Object)adaptor.nil();
                 root_2 = (Object)adaptor.becomeRoot(adaptor.create(EXPR, "EXPR"), root_2);
 
                 adaptor.addChild(root_1, root_2);
                 }
-                // JS.g:1576:26: ^( EXPR ( $ex1)? )
+                // JS.g:1580:26: ^( EXPR ( $ex1)? )
                 {
                 Object root_2 = (Object)adaptor.nil();
                 root_2 = (Object)adaptor.becomeRoot(adaptor.create(EXPR, "EXPR"), root_2);
 
-                // JS.g:1576:34: ( $ex1)?
+                // JS.g:1580:34: ( $ex1)?
                 if ( stream_ex1.hasNext() ) {
                     adaptor.addChild(root_2, stream_ex1.next());
 
@@ -8803,12 +8804,12 @@
 
                 adaptor.addChild(root_1, root_2);
                 }
-                // JS.g:1576:42: ^( EXPR ( $ex2)? )
+                // JS.g:1580:42: ^( EXPR ( $ex2)? )
                 {
                 Object root_2 = (Object)adaptor.nil();
                 root_2 = (Object)adaptor.becomeRoot(adaptor.create(EXPR, "EXPR"), root_2);
 
-                // JS.g:1576:50: ( $ex2)?
+                // JS.g:1580:50: ( $ex2)?
                 if ( stream_ex2.hasNext() ) {
                     adaptor.addChild(root_2, stream_ex2.next());
 
@@ -8849,7 +8850,7 @@
     };
 
     // $ANTLR start continueStatement
-    // JS.g:1588:1: continueStatement : CONTINUE ( Identifier )? semic ;
+    // JS.g:1592:1: continueStatement : CONTINUE ( Identifier )? semic ;
     public final continueStatement_return continueStatement() throws RecognitionException {
         continueStatement_return retval = new continueStatement_return();
         retval.start = input.LT(1);
@@ -8865,18 +8866,18 @@
         Object Identifier258_tree=null;
 
         try {
-            // JS.g:1589:2: ( CONTINUE ( Identifier )? semic )
-            // JS.g:1589:4: CONTINUE ( Identifier )? semic
+            // JS.g:1593:2: ( CONTINUE ( Identifier )? semic )
+            // JS.g:1593:4: CONTINUE ( Identifier )? semic
             {
             root_0 = (Object)adaptor.nil();
 
             CONTINUE257=(Token)input.LT(1);
-            match(input,CONTINUE,FOLLOW_CONTINUE_in_continueStatement5979); 
+            match(input,CONTINUE,FOLLOW_CONTINUE_in_continueStatement6007); 
             CONTINUE257_tree = (Object)adaptor.create(CONTINUE257);
             root_0 = (Object)adaptor.becomeRoot(CONTINUE257_tree, root_0);
 
              if (input.LA(1) == Identifier) promoteEOL(null); 
-            // JS.g:1589:67: ( Identifier )?
+            // JS.g:1593:67: ( Identifier )?
             int alt65=2;
             int LA65_0 = input.LA(1);
 
@@ -8885,10 +8886,10 @@
             }
             switch (alt65) {
                 case 1 :
-                    // JS.g:1589:67: Identifier
+                    // JS.g:1593:67: Identifier
                     {
                     Identifier258=(Token)input.LT(1);
-                    match(input,Identifier,FOLLOW_Identifier_in_continueStatement5984); 
+                    match(input,Identifier,FOLLOW_Identifier_in_continueStatement6012); 
                     Identifier258_tree = (Object)adaptor.create(Identifier258);
                     adaptor.addChild(root_0, Identifier258_tree);
 
@@ -8898,7 +8899,7 @@
 
             }
 
-            pushFollow(FOLLOW_semic_in_continueStatement5987);
+            pushFollow(FOLLOW_semic_in_continueStatement6015);
             semic259=semic();
             _fsp--;
 
@@ -8927,7 +8928,7 @@
     };
 
     // $ANTLR start breakStatement
-    // JS.g:1601:1: breakStatement : BREAK ( Identifier )? semic ;
+    // JS.g:1605:1: breakStatement : BREAK ( Identifier )? semic ;
     public final breakStatement_return breakStatement() throws RecognitionException {
         breakStatement_return retval = new breakStatement_return();
         retval.start = input.LT(1);
@@ -8943,18 +8944,18 @@
         Object Identifier261_tree=null;
 
         try {
-            // JS.g:1602:2: ( BREAK ( Identifier )? semic )
-            // JS.g:1602:4: BREAK ( Identifier )? semic
+            // JS.g:1606:2: ( BREAK ( Identifier )? semic )
+            // JS.g:1606:4: BREAK ( Identifier )? semic
             {
             root_0 = (Object)adaptor.nil();
 
             BREAK260=(Token)input.LT(1);
-            match(input,BREAK,FOLLOW_BREAK_in_breakStatement6006); 
+            match(input,BREAK,FOLLOW_BREAK_in_breakStatement6034); 
             BREAK260_tree = (Object)adaptor.create(BREAK260);
             root_0 = (Object)adaptor.becomeRoot(BREAK260_tree, root_0);
 
              if (input.LA(1) == Identifier) promoteEOL(null); 
-            // JS.g:1602:64: ( Identifier )?
+            // JS.g:1606:64: ( Identifier )?
             int alt66=2;
             int LA66_0 = input.LA(1);
 
@@ -8963,10 +8964,10 @@
             }
             switch (alt66) {
                 case 1 :
-                    // JS.g:1602:64: Identifier
+                    // JS.g:1606:64: Identifier
                     {
                     Identifier261=(Token)input.LT(1);
-                    match(input,Identifier,FOLLOW_Identifier_in_breakStatement6011); 
+                    match(input,Identifier,FOLLOW_Identifier_in_breakStatement6039); 
                     Identifier261_tree = (Object)adaptor.create(Identifier261);
                     adaptor.addChild(root_0, Identifier261_tree);
 
@@ -8976,7 +8977,7 @@
 
             }
 
-            pushFollow(FOLLOW_semic_in_breakStatement6014);
+            pushFollow(FOLLOW_semic_in_breakStatement6042);
             semic262=semic();
             _fsp--;
 
@@ -9005,7 +9006,7 @@
     };
 
     // $ANTLR start returnStatement
-    // JS.g:1622:1: returnStatement : RETURN ( expression )? semic ;
+    // JS.g:1626:1: returnStatement : RETURN ( expression )? semic ;
     public final returnStatement_return returnStatement() throws RecognitionException {
         returnStatement_return retval = new returnStatement_return();
         retval.start = input.LT(1);
@@ -9021,18 +9022,18 @@
         Object RETURN263_tree=null;
 
         try {
-            // JS.g:1623:2: ( RETURN ( expression )? semic )
-            // JS.g:1623:4: RETURN ( expression )? semic
+            // JS.g:1627:2: ( RETURN ( expression )? semic )
+            // JS.g:1627:4: RETURN ( expression )? semic
             {
             root_0 = (Object)adaptor.nil();
 
             RETURN263=(Token)input.LT(1);
-            match(input,RETURN,FOLLOW_RETURN_in_returnStatement6033); 
+            match(input,RETURN,FOLLOW_RETURN_in_returnStatement6061); 
             RETURN263_tree = (Object)adaptor.create(RETURN263);
             root_0 = (Object)adaptor.becomeRoot(RETURN263_tree, root_0);
 
              promoteEOL(null); 
-            // JS.g:1623:34: ( expression )?
+            // JS.g:1627:34: ( expression )?
             int alt67=2;
             int LA67_0 = input.LA(1);
 
@@ -9041,9 +9042,9 @@
             }
             switch (alt67) {
                 case 1 :
-                    // JS.g:1623:34: expression
+                    // JS.g:1627:34: expression
                     {
-                    pushFollow(FOLLOW_expression_in_returnStatement6038);
+                    pushFollow(FOLLOW_expression_in_returnStatement6066);
                     expression264=expression();
                     _fsp--;
 
@@ -9054,7 +9055,7 @@
 
             }
 
-            pushFollow(FOLLOW_semic_in_returnStatement6041);
+            pushFollow(FOLLOW_semic_in_returnStatement6069);
             semic265=semic();
             _fsp--;
 
@@ -9083,7 +9084,7 @@
     };
 
     // $ANTLR start withStatement
-    // JS.g:1630:1: withStatement : WITH LPAREN expression RPAREN statement ;
+    // JS.g:1634:1: withStatement : WITH LPAREN expression RPAREN statement ;
     public final withStatement_return withStatement() throws RecognitionException {
         withStatement_return retval = new withStatement_return();
         retval.start = input.LT(1);
@@ -9103,26 +9104,26 @@
         Object RPAREN269_tree=null;
 
         try {
-            // JS.g:1631:2: ( WITH LPAREN expression RPAREN statement )
-            // JS.g:1631:4: WITH LPAREN expression RPAREN statement
+            // JS.g:1635:2: ( WITH LPAREN expression RPAREN statement )
+            // JS.g:1635:4: WITH LPAREN expression RPAREN statement
             {
             root_0 = (Object)adaptor.nil();
 
             WITH266=(Token)input.LT(1);
-            match(input,WITH,FOLLOW_WITH_in_withStatement6058); 
+            match(input,WITH,FOLLOW_WITH_in_withStatement6086); 
             WITH266_tree = (Object)adaptor.create(WITH266);
             root_0 = (Object)adaptor.becomeRoot(WITH266_tree, root_0);
 
             LPAREN267=(Token)input.LT(1);
-            match(input,LPAREN,FOLLOW_LPAREN_in_withStatement6061); 
-            pushFollow(FOLLOW_expression_in_withStatement6064);
+            match(input,LPAREN,FOLLOW_LPAREN_in_withStatement6089); 
+            pushFollow(FOLLOW_expression_in_withStatement6092);
             expression268=expression();
             _fsp--;
 
             adaptor.addChild(root_0, expression268.getTree());
             RPAREN269=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_withStatement6066); 
-            pushFollow(FOLLOW_statement_in_withStatement6069);
+            match(input,RPAREN,FOLLOW_RPAREN_in_withStatement6094); 
+            pushFollow(FOLLOW_statement_in_withStatement6097);
             statement270=statement();
             _fsp--;
 
@@ -9152,7 +9153,7 @@
     };
 
     // $ANTLR start switchStatement
-    // JS.g:1638:1: switchStatement : SWITCH LPAREN expression RPAREN LBRACE ({...}? => defaultClause | caseClause )* RBRACE -> ^( SWITCH expression ( defaultClause )? ( caseClause )* ) ;
+    // JS.g:1642:1: switchStatement : SWITCH LPAREN expression RPAREN LBRACE ({...}? => defaultClause | caseClause )* RBRACE -> ^( SWITCH expression ( defaultClause )? ( caseClause )* ) ;
     public final switchStatement_return switchStatement() throws RecognitionException {
         switchStatement_return retval = new switchStatement_return();
         retval.start = input.LT(1);
@@ -9184,35 +9185,35 @@
         RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
         RewriteRuleSubtreeStream stream_caseClause=new RewriteRuleSubtreeStream(adaptor,"rule caseClause");
         RewriteRuleSubtreeStream stream_defaultClause=new RewriteRuleSubtreeStream(adaptor,"rule defaultClause");
-
+        
         	int defaultClauseCount = 0;
 
         try {
-            // JS.g:1643:2: ( SWITCH LPAREN expression RPAREN LBRACE ({...}? => defaultClause | caseClause )* RBRACE -> ^( SWITCH expression ( defaultClause )? ( caseClause )* ) )
-            // JS.g:1643:4: SWITCH LPAREN expression RPAREN LBRACE ({...}? => defaultClause | caseClause )* RBRACE
+            // JS.g:1647:2: ( SWITCH LPAREN expression RPAREN LBRACE ({...}? => defaultClause | caseClause )* RBRACE -> ^( SWITCH expression ( defaultClause )? ( caseClause )* ) )
+            // JS.g:1647:4: SWITCH LPAREN expression RPAREN LBRACE ({...}? => defaultClause | caseClause )* RBRACE
             {
             SWITCH271=(Token)input.LT(1);
-            match(input,SWITCH,FOLLOW_SWITCH_in_switchStatement6090); 
+            match(input,SWITCH,FOLLOW_SWITCH_in_switchStatement6118); 
             stream_SWITCH.add(SWITCH271);
 
             LPAREN272=(Token)input.LT(1);
-            match(input,LPAREN,FOLLOW_LPAREN_in_switchStatement6092); 
+            match(input,LPAREN,FOLLOW_LPAREN_in_switchStatement6120); 
             stream_LPAREN.add(LPAREN272);
 
-            pushFollow(FOLLOW_expression_in_switchStatement6094);
+            pushFollow(FOLLOW_expression_in_switchStatement6122);
             expression273=expression();
             _fsp--;
 
             stream_expression.add(expression273.getTree());
             RPAREN274=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_switchStatement6096); 
+            match(input,RPAREN,FOLLOW_RPAREN_in_switchStatement6124); 
             stream_RPAREN.add(RPAREN274);
 
             LBRACE275=(Token)input.LT(1);
-            match(input,LBRACE,FOLLOW_LBRACE_in_switchStatement6098); 
+            match(input,LBRACE,FOLLOW_LBRACE_in_switchStatement6126); 
             stream_LBRACE.add(LBRACE275);
 
-            // JS.g:1643:43: ({...}? => defaultClause | caseClause )*
+            // JS.g:1647:43: ({...}? => defaultClause | caseClause )*
             loop68:
             do {
                 int alt68=3;
@@ -9228,12 +9229,12 @@
 
                 switch (alt68) {
             	case 1 :
-            	    // JS.g:1643:45: {...}? => defaultClause
+            	    // JS.g:1647:45: {...}? => defaultClause
             	    {
             	    if ( !( defaultClauseCount == 0 ) ) {
             	        throw new FailedPredicateException(input, "switchStatement", " defaultClauseCount == 0 ");
             	    }
-            	    pushFollow(FOLLOW_defaultClause_in_switchStatement6105);
+            	    pushFollow(FOLLOW_defaultClause_in_switchStatement6133);
             	    defaultClause276=defaultClause();
             	    _fsp--;
 
@@ -9243,9 +9244,9 @@
             	    }
             	    break;
             	case 2 :
-            	    // JS.g:1643:118: caseClause
+            	    // JS.g:1647:118: caseClause
             	    {
-            	    pushFollow(FOLLOW_caseClause_in_switchStatement6111);
+            	    pushFollow(FOLLOW_caseClause_in_switchStatement6139);
             	    caseClause277=caseClause();
             	    _fsp--;
 
@@ -9260,12 +9261,12 @@
             } while (true);
 
             RBRACE278=(Token)input.LT(1);
-            match(input,RBRACE,FOLLOW_RBRACE_in_switchStatement6116); 
+            match(input,RBRACE,FOLLOW_RBRACE_in_switchStatement6144); 
             stream_RBRACE.add(RBRACE278);
 
 
             // AST REWRITE
-            // elements: defaultClause, expression, SWITCH, caseClause
+            // elements: expression, defaultClause, caseClause, SWITCH
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -9274,21 +9275,21 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1644:2: -> ^( SWITCH expression ( defaultClause )? ( caseClause )* )
+            // 1648:2: -> ^( SWITCH expression ( defaultClause )? ( caseClause )* )
             {
-                // JS.g:1644:5: ^( SWITCH expression ( defaultClause )? ( caseClause )* )
+                // JS.g:1648:5: ^( SWITCH expression ( defaultClause )? ( caseClause )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_SWITCH.next(), root_1);
 
                 adaptor.addChild(root_1, stream_expression.next());
-                // JS.g:1644:26: ( defaultClause )?
+                // JS.g:1648:26: ( defaultClause )?
                 if ( stream_defaultClause.hasNext() ) {
                     adaptor.addChild(root_1, stream_defaultClause.next());
 
                 }
                 stream_defaultClause.reset();
-                // JS.g:1644:41: ( caseClause )*
+                // JS.g:1648:41: ( caseClause )*
                 while ( stream_caseClause.hasNext() ) {
                     adaptor.addChild(root_1, stream_caseClause.next());
 
@@ -9326,7 +9327,7 @@
     };
 
     // $ANTLR start caseClause
-    // JS.g:1647:1: caseClause : CASE expression COLON ( statement )* ;
+    // JS.g:1651:1: caseClause : CASE expression COLON ( statement )* ;
     public final caseClause_return caseClause() throws RecognitionException {
         caseClause_return retval = new caseClause_return();
         retval.start = input.LT(1);
@@ -9344,24 +9345,24 @@
         Object COLON281_tree=null;
 
         try {
-            // JS.g:1648:2: ( CASE expression COLON ( statement )* )
-            // JS.g:1648:4: CASE expression COLON ( statement )*
+            // JS.g:1652:2: ( CASE expression COLON ( statement )* )
+            // JS.g:1652:4: CASE expression COLON ( statement )*
             {
             root_0 = (Object)adaptor.nil();
 
             CASE279=(Token)input.LT(1);
-            match(input,CASE,FOLLOW_CASE_in_caseClause6144); 
+            match(input,CASE,FOLLOW_CASE_in_caseClause6172); 
             CASE279_tree = (Object)adaptor.create(CASE279);
             root_0 = (Object)adaptor.becomeRoot(CASE279_tree, root_0);
 
-            pushFollow(FOLLOW_expression_in_caseClause6147);
+            pushFollow(FOLLOW_expression_in_caseClause6175);
             expression280=expression();
             _fsp--;
 
             adaptor.addChild(root_0, expression280.getTree());
             COLON281=(Token)input.LT(1);
-            match(input,COLON,FOLLOW_COLON_in_caseClause6149); 
-            // JS.g:1648:28: ( statement )*
+            match(input,COLON,FOLLOW_COLON_in_caseClause6177); 
+            // JS.g:1652:28: ( statement )*
             loop69:
             do {
                 int alt69=2;
@@ -9383,9 +9384,9 @@
 
                 switch (alt69) {
             	case 1 :
-            	    // JS.g:1648:28: statement
+            	    // JS.g:1652:28: statement
             	    {
-            	    pushFollow(FOLLOW_statement_in_caseClause6152);
+            	    pushFollow(FOLLOW_statement_in_caseClause6180);
             	    statement282=statement();
             	    _fsp--;
 
@@ -9424,7 +9425,7 @@
     };
 
     // $ANTLR start defaultClause
-    // JS.g:1651:1: defaultClause : DEFAULT COLON ( statement )* ;
+    // JS.g:1655:1: defaultClause : DEFAULT COLON ( statement )* ;
     public final defaultClause_return defaultClause() throws RecognitionException {
         defaultClause_return retval = new defaultClause_return();
         retval.start = input.LT(1);
@@ -9440,19 +9441,19 @@
         Object COLON284_tree=null;
 
         try {
-            // JS.g:1652:2: ( DEFAULT COLON ( statement )* )
-            // JS.g:1652:4: DEFAULT COLON ( statement )*
+            // JS.g:1656:2: ( DEFAULT COLON ( statement )* )
+            // JS.g:1656:4: DEFAULT COLON ( statement )*
             {
             root_0 = (Object)adaptor.nil();
 
             DEFAULT283=(Token)input.LT(1);
-            match(input,DEFAULT,FOLLOW_DEFAULT_in_defaultClause6165); 
+            match(input,DEFAULT,FOLLOW_DEFAULT_in_defaultClause6193); 
             DEFAULT283_tree = (Object)adaptor.create(DEFAULT283);
             root_0 = (Object)adaptor.becomeRoot(DEFAULT283_tree, root_0);
 
             COLON284=(Token)input.LT(1);
-            match(input,COLON,FOLLOW_COLON_in_defaultClause6168); 
-            // JS.g:1652:20: ( statement )*
+            match(input,COLON,FOLLOW_COLON_in_defaultClause6196); 
+            // JS.g:1656:20: ( statement )*
             loop70:
             do {
                 int alt70=2;
@@ -9474,9 +9475,9 @@
 
                 switch (alt70) {
             	case 1 :
-            	    // JS.g:1652:20: statement
+            	    // JS.g:1656:20: statement
             	    {
-            	    pushFollow(FOLLOW_statement_in_defaultClause6171);
+            	    pushFollow(FOLLOW_statement_in_defaultClause6199);
             	    statement285=statement();
             	    _fsp--;
 
@@ -9515,7 +9516,7 @@
     };
 
     // $ANTLR start labelledStatement
-    // JS.g:1659:1: labelledStatement : identifier COLON statement -> ^( LABELLED identifier statement ) ;
+    // JS.g:1663:1: labelledStatement : identifier COLON statement -> ^( LABELLED identifier statement ) ;
     public final labelledStatement_return labelledStatement() throws RecognitionException {
         labelledStatement_return retval = new labelledStatement_return();
         retval.start = input.LT(1);
@@ -9533,19 +9534,19 @@
         RewriteRuleSubtreeStream stream_statement=new RewriteRuleSubtreeStream(adaptor,"rule statement");
         RewriteRuleSubtreeStream stream_identifier=new RewriteRuleSubtreeStream(adaptor,"rule identifier");
         try {
-            // JS.g:1660:2: ( identifier COLON statement -> ^( LABELLED identifier statement ) )
-            // JS.g:1660:4: identifier COLON statement
+            // JS.g:1664:2: ( identifier COLON statement -> ^( LABELLED identifier statement ) )
+            // JS.g:1664:4: identifier COLON statement
             {
-            pushFollow(FOLLOW_identifier_in_labelledStatement6188);
+            pushFollow(FOLLOW_identifier_in_labelledStatement6216);
             identifier286=identifier();
             _fsp--;
 
             stream_identifier.add(identifier286.getTree());
             COLON287=(Token)input.LT(1);
-            match(input,COLON,FOLLOW_COLON_in_labelledStatement6190); 
+            match(input,COLON,FOLLOW_COLON_in_labelledStatement6218); 
             stream_COLON.add(COLON287);
 
-            pushFollow(FOLLOW_statement_in_labelledStatement6192);
+            pushFollow(FOLLOW_statement_in_labelledStatement6220);
             statement288=statement();
             _fsp--;
 
@@ -9561,9 +9562,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1661:2: -> ^( LABELLED identifier statement )
+            // 1665:2: -> ^( LABELLED identifier statement )
             {
-                // JS.g:1661:5: ^( LABELLED identifier statement )
+                // JS.g:1665:5: ^( LABELLED identifier statement )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(LABELLED, "LABELLED"), root_1);
@@ -9602,7 +9603,7 @@
     };
 
     // $ANTLR start throwStatement
-    // JS.g:1683:1: throwStatement : THROW expression semic ;
+    // JS.g:1687:1: throwStatement : THROW expression semic ;
     public final throwStatement_return throwStatement() throws RecognitionException {
         throwStatement_return retval = new throwStatement_return();
         retval.start = input.LT(1);
@@ -9618,23 +9619,23 @@
         Object THROW289_tree=null;
 
         try {
-            // JS.g:1684:2: ( THROW expression semic )
-            // JS.g:1684:4: THROW expression semic
+            // JS.g:1688:2: ( THROW expression semic )
+            // JS.g:1688:4: THROW expression semic
             {
             root_0 = (Object)adaptor.nil();
 
             THROW289=(Token)input.LT(1);
-            match(input,THROW,FOLLOW_THROW_in_throwStatement6223); 
+            match(input,THROW,FOLLOW_THROW_in_throwStatement6251); 
             THROW289_tree = (Object)adaptor.create(THROW289);
             root_0 = (Object)adaptor.becomeRoot(THROW289_tree, root_0);
 
              promoteEOL(null); 
-            pushFollow(FOLLOW_expression_in_throwStatement6228);
+            pushFollow(FOLLOW_expression_in_throwStatement6256);
             expression290=expression();
             _fsp--;
 
             adaptor.addChild(root_0, expression290.getTree());
-            pushFollow(FOLLOW_semic_in_throwStatement6230);
+            pushFollow(FOLLOW_semic_in_throwStatement6258);
             semic291=semic();
             _fsp--;
 
@@ -9663,7 +9664,7 @@
     };
 
     // $ANTLR start tryStatement
-    // JS.g:1691:1: tryStatement : TRY block ( ( catchClause )+ ( finallyClause )? | finallyClause ) ;
+    // JS.g:1695:1: tryStatement : TRY block ( ( catchClause )+ ( finallyClause )? | finallyClause ) ;
     public final tryStatement_return tryStatement() throws RecognitionException {
         tryStatement_return retval = new tryStatement_return();
         retval.start = input.LT(1);
@@ -9683,22 +9684,22 @@
         Object TRY292_tree=null;
 
         try {
-            // JS.g:1692:2: ( TRY block ( ( catchClause )+ ( finallyClause )? | finallyClause ) )
-            // JS.g:1692:4: TRY block ( ( catchClause )+ ( finallyClause )? | finallyClause )
+            // JS.g:1696:2: ( TRY block ( ( catchClause )+ ( finallyClause )? | finallyClause ) )
+            // JS.g:1696:4: TRY block ( ( catchClause )+ ( finallyClause )? | finallyClause )
             {
             root_0 = (Object)adaptor.nil();
 
             TRY292=(Token)input.LT(1);
-            match(input,TRY,FOLLOW_TRY_in_tryStatement6247); 
+            match(input,TRY,FOLLOW_TRY_in_tryStatement6275); 
             TRY292_tree = (Object)adaptor.create(TRY292);
             root_0 = (Object)adaptor.becomeRoot(TRY292_tree, root_0);
 
-            pushFollow(FOLLOW_block_in_tryStatement6250);
+            pushFollow(FOLLOW_block_in_tryStatement6278);
             block293=block();
             _fsp--;
 
             adaptor.addChild(root_0, block293.getTree());
-            // JS.g:1692:15: ( ( catchClause )+ ( finallyClause )? | finallyClause )
+            // JS.g:1696:15: ( ( catchClause )+ ( finallyClause )? | finallyClause )
             int alt73=2;
             int LA73_0 = input.LA(1);
 
@@ -9710,15 +9711,15 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("1692:15: ( ( catchClause )+ ( finallyClause )? | finallyClause )", 73, 0, input);
+                    new NoViableAltException("1696:15: ( ( catchClause )+ ( finallyClause )? | finallyClause )", 73, 0, input);
 
                 throw nvae;
             }
             switch (alt73) {
                 case 1 :
-                    // JS.g:1692:17: ( catchClause )+ ( finallyClause )?
+                    // JS.g:1696:17: ( catchClause )+ ( finallyClause )?
                     {
-                    // JS.g:1692:17: ( catchClause )+
+                    // JS.g:1696:17: ( catchClause )+
                     int cnt71=0;
                     loop71:
                     do {
@@ -9732,9 +9733,9 @@
 
                         switch (alt71) {
                     	case 1 :
-                    	    // JS.g:1692:17: catchClause
+                    	    // JS.g:1696:17: catchClause
                     	    {
-                    	    pushFollow(FOLLOW_catchClause_in_tryStatement6254);
+                    	    pushFollow(FOLLOW_catchClause_in_tryStatement6282);
                     	    catchClause294=catchClause();
                     	    _fsp--;
 
@@ -9752,7 +9753,7 @@
                         cnt71++;
                     } while (true);
 
-                    // JS.g:1692:30: ( finallyClause )?
+                    // JS.g:1696:30: ( finallyClause )?
                     int alt72=2;
                     int LA72_0 = input.LA(1);
 
@@ -9761,9 +9762,9 @@
                     }
                     switch (alt72) {
                         case 1 :
-                            // JS.g:1692:30: finallyClause
+                            // JS.g:1696:30: finallyClause
                             {
-                            pushFollow(FOLLOW_finallyClause_in_tryStatement6257);
+                            pushFollow(FOLLOW_finallyClause_in_tryStatement6285);
                             finallyClause295=finallyClause();
                             _fsp--;
 
@@ -9778,9 +9779,9 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1692:47: finallyClause
+                    // JS.g:1696:47: finallyClause
                     {
-                    pushFollow(FOLLOW_finallyClause_in_tryStatement6262);
+                    pushFollow(FOLLOW_finallyClause_in_tryStatement6290);
                     finallyClause296=finallyClause();
                     _fsp--;
 
@@ -9816,7 +9817,7 @@
     };
 
     // $ANTLR start catchClause
-    // JS.g:1695:1: catchClause : CATCH LPAREN identifier ( catchFilter )? RPAREN block ;
+    // JS.g:1699:1: catchClause : CATCH LPAREN identifier ( catchFilter )? RPAREN block ;
     public final catchClause_return catchClause() throws RecognitionException {
         catchClause_return retval = new catchClause_return();
         retval.start = input.LT(1);
@@ -9838,24 +9839,24 @@
         Object RPAREN301_tree=null;
 
         try {
-            // JS.g:1696:2: ( CATCH LPAREN identifier ( catchFilter )? RPAREN block )
-            // JS.g:1696:4: CATCH LPAREN identifier ( catchFilter )? RPAREN block
+            // JS.g:1700:2: ( CATCH LPAREN identifier ( catchFilter )? RPAREN block )
+            // JS.g:1700:4: CATCH LPAREN identifier ( catchFilter )? RPAREN block
             {
             root_0 = (Object)adaptor.nil();
 
             CATCH297=(Token)input.LT(1);
-            match(input,CATCH,FOLLOW_CATCH_in_catchClause6276); 
+            match(input,CATCH,FOLLOW_CATCH_in_catchClause6304); 
             CATCH297_tree = (Object)adaptor.create(CATCH297);
             root_0 = (Object)adaptor.becomeRoot(CATCH297_tree, root_0);
 
             LPAREN298=(Token)input.LT(1);
-            match(input,LPAREN,FOLLOW_LPAREN_in_catchClause6279); 
-            pushFollow(FOLLOW_identifier_in_catchClause6282);
+            match(input,LPAREN,FOLLOW_LPAREN_in_catchClause6307); 
+            pushFollow(FOLLOW_identifier_in_catchClause6310);
             identifier299=identifier();
             _fsp--;
 
             adaptor.addChild(root_0, identifier299.getTree());
-            // JS.g:1696:30: ( catchFilter )?
+            // JS.g:1700:30: ( catchFilter )?
             int alt74=2;
             int LA74_0 = input.LA(1);
 
@@ -9864,9 +9865,9 @@
             }
             switch (alt74) {
                 case 1 :
-                    // JS.g:1696:30: catchFilter
+                    // JS.g:1700:30: catchFilter
                     {
-                    pushFollow(FOLLOW_catchFilter_in_catchClause6284);
+                    pushFollow(FOLLOW_catchFilter_in_catchClause6312);
                     catchFilter300=catchFilter();
                     _fsp--;
 
@@ -9878,8 +9879,8 @@
             }
 
             RPAREN301=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_catchClause6287); 
-            pushFollow(FOLLOW_block_in_catchClause6290);
+            match(input,RPAREN,FOLLOW_RPAREN_in_catchClause6315); 
+            pushFollow(FOLLOW_block_in_catchClause6318);
             block302=block();
             _fsp--;
 
@@ -9909,7 +9910,7 @@
     };
 
     // $ANTLR start catchFilter
-    // JS.g:1699:1: catchFilter : IF instanceofExpression ;
+    // JS.g:1703:1: catchFilter : IF instanceofExpression ;
     public final catchFilter_return catchFilter() throws RecognitionException {
         catchFilter_return retval = new catchFilter_return();
         retval.start = input.LT(1);
@@ -9923,17 +9924,17 @@
         Object IF303_tree=null;
 
         try {
-            // JS.g:1700:3: ( IF instanceofExpression )
-            // JS.g:1700:5: IF instanceofExpression
+            // JS.g:1704:3: ( IF instanceofExpression )
+            // JS.g:1704:5: IF instanceofExpression
             {
             root_0 = (Object)adaptor.nil();
 
             IF303=(Token)input.LT(1);
-            match(input,IF,FOLLOW_IF_in_catchFilter6303); 
+            match(input,IF,FOLLOW_IF_in_catchFilter6331); 
             IF303_tree = (Object)adaptor.create(IF303);
             root_0 = (Object)adaptor.becomeRoot(IF303_tree, root_0);
 
-            pushFollow(FOLLOW_instanceofExpression_in_catchFilter6306);
+            pushFollow(FOLLOW_instanceofExpression_in_catchFilter6334);
             instanceofExpression304=instanceofExpression();
             _fsp--;
 
@@ -9963,7 +9964,7 @@
     };
 
     // $ANTLR start instanceofExpression
-    // JS.g:1703:1: instanceofExpression : identifier INSTANCEOF identifier ;
+    // JS.g:1707:1: instanceofExpression : identifier INSTANCEOF identifier ;
     public final instanceofExpression_return instanceofExpression() throws RecognitionException {
         instanceofExpression_return retval = new instanceofExpression_return();
         retval.start = input.LT(1);
@@ -9979,22 +9980,22 @@
         Object INSTANCEOF306_tree=null;
 
         try {
-            // JS.g:1704:3: ( identifier INSTANCEOF identifier )
-            // JS.g:1704:5: identifier INSTANCEOF identifier
+            // JS.g:1708:3: ( identifier INSTANCEOF identifier )
+            // JS.g:1708:5: identifier INSTANCEOF identifier
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_identifier_in_instanceofExpression6321);
+            pushFollow(FOLLOW_identifier_in_instanceofExpression6349);
             identifier305=identifier();
             _fsp--;
 
             adaptor.addChild(root_0, identifier305.getTree());
             INSTANCEOF306=(Token)input.LT(1);
-            match(input,INSTANCEOF,FOLLOW_INSTANCEOF_in_instanceofExpression6323); 
+            match(input,INSTANCEOF,FOLLOW_INSTANCEOF_in_instanceofExpression6351); 
             INSTANCEOF306_tree = (Object)adaptor.create(INSTANCEOF306);
             root_0 = (Object)adaptor.becomeRoot(INSTANCEOF306_tree, root_0);
 
-            pushFollow(FOLLOW_identifier_in_instanceofExpression6326);
+            pushFollow(FOLLOW_identifier_in_instanceofExpression6354);
             identifier307=identifier();
             _fsp--;
 
@@ -10024,7 +10025,7 @@
     };
 
     // $ANTLR start finallyClause
-    // JS.g:1707:1: finallyClause : FINALLY block ;
+    // JS.g:1711:1: finallyClause : FINALLY block ;
     public final finallyClause_return finallyClause() throws RecognitionException {
         finallyClause_return retval = new finallyClause_return();
         retval.start = input.LT(1);
@@ -10038,17 +10039,17 @@
         Object FINALLY308_tree=null;
 
         try {
-            // JS.g:1708:2: ( FINALLY block )
-            // JS.g:1708:4: FINALLY block
+            // JS.g:1712:2: ( FINALLY block )
+            // JS.g:1712:4: FINALLY block
             {
             root_0 = (Object)adaptor.nil();
 
             FINALLY308=(Token)input.LT(1);
-            match(input,FINALLY,FOLLOW_FINALLY_in_finallyClause6339); 
+            match(input,FINALLY,FOLLOW_FINALLY_in_finallyClause6367); 
             FINALLY308_tree = (Object)adaptor.create(FINALLY308);
             root_0 = (Object)adaptor.becomeRoot(FINALLY308_tree, root_0);
 
-            pushFollow(FOLLOW_block_in_finallyClause6342);
+            pushFollow(FOLLOW_block_in_finallyClause6370);
             block309=block();
             _fsp--;
 
@@ -10078,7 +10079,7 @@
     };
 
     // $ANTLR start functionDeclaration
-    // JS.g:1721:1: functionDeclaration : FUNCTION name= identifier formalParameterList functionBody -> ^( FUNCTION $name formalParameterList functionBody ) ;
+    // JS.g:1725:1: functionDeclaration : FUNCTION name= identifier formalParameterList functionBody -> ^( FUNCTION $name formalParameterList functionBody ) ;
     public final functionDeclaration_return functionDeclaration() throws RecognitionException {
         functionDeclaration_return retval = new functionDeclaration_return();
         retval.start = input.LT(1);
@@ -10099,31 +10100,31 @@
         RewriteRuleSubtreeStream stream_identifier=new RewriteRuleSubtreeStream(adaptor,"rule identifier");
         RewriteRuleSubtreeStream stream_formalParameterList=new RewriteRuleSubtreeStream(adaptor,"rule formalParameterList");
         try {
-            // JS.g:1722:2: ( FUNCTION name= identifier formalParameterList functionBody -> ^( FUNCTION $name formalParameterList functionBody ) )
-            // JS.g:1722:4: FUNCTION name= identifier formalParameterList functionBody
+            // JS.g:1726:2: ( FUNCTION name= identifier formalParameterList functionBody -> ^( FUNCTION $name formalParameterList functionBody ) )
+            // JS.g:1726:4: FUNCTION name= identifier formalParameterList functionBody
             {
             FUNCTION310=(Token)input.LT(1);
-            match(input,FUNCTION,FOLLOW_FUNCTION_in_functionDeclaration6363); 
+            match(input,FUNCTION,FOLLOW_FUNCTION_in_functionDeclaration6391); 
             stream_FUNCTION.add(FUNCTION310);
 
-            pushFollow(FOLLOW_identifier_in_functionDeclaration6367);
+            pushFollow(FOLLOW_identifier_in_functionDeclaration6395);
             name=identifier();
             _fsp--;
 
             stream_identifier.add(name.getTree());
-            pushFollow(FOLLOW_formalParameterList_in_functionDeclaration6369);
+            pushFollow(FOLLOW_formalParameterList_in_functionDeclaration6397);
             formalParameterList311=formalParameterList();
             _fsp--;
 
             stream_formalParameterList.add(formalParameterList311.getTree());
-            pushFollow(FOLLOW_functionBody_in_functionDeclaration6371);
+            pushFollow(FOLLOW_functionBody_in_functionDeclaration6399);
             functionBody312=functionBody();
             _fsp--;
 
             stream_functionBody.add(functionBody312.getTree());
 
             // AST REWRITE
-            // elements: functionBody, name, formalParameterList, FUNCTION
+            // elements: FUNCTION, name, formalParameterList, functionBody
             // token labels: 
             // rule labels: retval, name
             // token list labels: 
@@ -10133,9 +10134,9 @@
             RewriteRuleSubtreeStream stream_name=new RewriteRuleSubtreeStream(adaptor,"token name",name!=null?name.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1723:2: -> ^( FUNCTION $name formalParameterList functionBody )
+            // 1727:2: -> ^( FUNCTION $name formalParameterList functionBody )
             {
-                // JS.g:1723:5: ^( FUNCTION $name formalParameterList functionBody )
+                // JS.g:1727:5: ^( FUNCTION $name formalParameterList functionBody )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_FUNCTION.next(), root_1);
@@ -10175,7 +10176,7 @@
     };
 
     // $ANTLR start functionExpression
-    // JS.g:1726:1: functionExpression : FUNCTION (name= identifier )? formalParameterList functionBody -> ^( FUNCTION ( $name)? formalParameterList functionBody ) ;
+    // JS.g:1730:1: functionExpression : FUNCTION (name= identifier )? formalParameterList functionBody -> ^( FUNCTION ( $name)? formalParameterList functionBody ) ;
     public final functionExpression_return functionExpression() throws RecognitionException {
         functionExpression_return retval = new functionExpression_return();
         retval.start = input.LT(1);
@@ -10196,14 +10197,14 @@
         RewriteRuleSubtreeStream stream_identifier=new RewriteRuleSubtreeStream(adaptor,"rule identifier");
         RewriteRuleSubtreeStream stream_formalParameterList=new RewriteRuleSubtreeStream(adaptor,"rule formalParameterList");
         try {
-            // JS.g:1727:2: ( FUNCTION (name= identifier )? formalParameterList functionBody -> ^( FUNCTION ( $name)? formalParameterList functionBody ) )
-            // JS.g:1727:4: FUNCTION (name= identifier )? formalParameterList functionBody
+            // JS.g:1731:2: ( FUNCTION (name= identifier )? formalParameterList functionBody -> ^( FUNCTION ( $name)? formalParameterList functionBody ) )
+            // JS.g:1731:4: FUNCTION (name= identifier )? formalParameterList functionBody
             {
             FUNCTION313=(Token)input.LT(1);
-            match(input,FUNCTION,FOLLOW_FUNCTION_in_functionExpression6398); 
+            match(input,FUNCTION,FOLLOW_FUNCTION_in_functionExpression6426); 
             stream_FUNCTION.add(FUNCTION313);
 
-            // JS.g:1727:17: (name= identifier )?
+            // JS.g:1731:17: (name= identifier )?
             int alt75=2;
             int LA75_0 = input.LA(1);
 
@@ -10212,9 +10213,9 @@
             }
             switch (alt75) {
                 case 1 :
-                    // JS.g:1727:17: name= identifier
+                    // JS.g:1731:17: name= identifier
                     {
-                    pushFollow(FOLLOW_identifier_in_functionExpression6402);
+                    pushFollow(FOLLOW_identifier_in_functionExpression6430);
                     name=identifier();
                     _fsp--;
 
@@ -10225,19 +10226,19 @@
 
             }
 
-            pushFollow(FOLLOW_formalParameterList_in_functionExpression6405);
+            pushFollow(FOLLOW_formalParameterList_in_functionExpression6433);
             formalParameterList314=formalParameterList();
             _fsp--;
 
             stream_formalParameterList.add(formalParameterList314.getTree());
-            pushFollow(FOLLOW_functionBody_in_functionExpression6407);
+            pushFollow(FOLLOW_functionBody_in_functionExpression6435);
             functionBody315=functionBody();
             _fsp--;
 
             stream_functionBody.add(functionBody315.getTree());
 
             // AST REWRITE
-            // elements: formalParameterList, name, FUNCTION, functionBody
+            // elements: name, functionBody, formalParameterList, FUNCTION
             // token labels: 
             // rule labels: retval, name
             // token list labels: 
@@ -10247,14 +10248,14 @@
             RewriteRuleSubtreeStream stream_name=new RewriteRuleSubtreeStream(adaptor,"token name",name!=null?name.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1728:2: -> ^( FUNCTION ( $name)? formalParameterList functionBody )
+            // 1732:2: -> ^( FUNCTION ( $name)? formalParameterList functionBody )
             {
-                // JS.g:1728:5: ^( FUNCTION ( $name)? formalParameterList functionBody )
+                // JS.g:1732:5: ^( FUNCTION ( $name)? formalParameterList functionBody )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_FUNCTION.next(), root_1);
 
-                // JS.g:1728:17: ( $name)?
+                // JS.g:1732:17: ( $name)?
                 if ( stream_name.hasNext() ) {
                     adaptor.addChild(root_1, stream_name.next());
 
@@ -10294,7 +10295,7 @@
     };
 
     // $ANTLR start formalParameterList
-    // JS.g:1731:1: formalParameterList : LPAREN (args+= identifier ( COMMA args+= identifier )* )? RPAREN -> ^( ARGS ( $args)* ) ;
+    // JS.g:1735:1: formalParameterList : LPAREN (args+= identifier ( COMMA args+= identifier )* )? RPAREN -> ^( ARGS ( $args)* ) ;
     public final formalParameterList_return formalParameterList() throws RecognitionException {
         formalParameterList_return retval = new formalParameterList_return();
         retval.start = input.LT(1);
@@ -10314,14 +10315,14 @@
         RewriteRuleTokenStream stream_LPAREN=new RewriteRuleTokenStream(adaptor,"token LPAREN");
         RewriteRuleSubtreeStream stream_identifier=new RewriteRuleSubtreeStream(adaptor,"rule identifier");
         try {
-            // JS.g:1732:2: ( LPAREN (args+= identifier ( COMMA args+= identifier )* )? RPAREN -> ^( ARGS ( $args)* ) )
-            // JS.g:1732:4: LPAREN (args+= identifier ( COMMA args+= identifier )* )? RPAREN
+            // JS.g:1736:2: ( LPAREN (args+= identifier ( COMMA args+= identifier )* )? RPAREN -> ^( ARGS ( $args)* ) )
+            // JS.g:1736:4: LPAREN (args+= identifier ( COMMA args+= identifier )* )? RPAREN
             {
             LPAREN316=(Token)input.LT(1);
-            match(input,LPAREN,FOLLOW_LPAREN_in_formalParameterList6435); 
+            match(input,LPAREN,FOLLOW_LPAREN_in_formalParameterList6463); 
             stream_LPAREN.add(LPAREN316);
 
-            // JS.g:1732:11: (args+= identifier ( COMMA args+= identifier )* )?
+            // JS.g:1736:11: (args+= identifier ( COMMA args+= identifier )* )?
             int alt77=2;
             int LA77_0 = input.LA(1);
 
@@ -10330,9 +10331,9 @@
             }
             switch (alt77) {
                 case 1 :
-                    // JS.g:1732:13: args+= identifier ( COMMA args+= identifier )*
+                    // JS.g:1736:13: args+= identifier ( COMMA args+= identifier )*
                     {
-                    pushFollow(FOLLOW_identifier_in_formalParameterList6441);
+                    pushFollow(FOLLOW_identifier_in_formalParameterList6469);
                     args=identifier();
                     _fsp--;
 
@@ -10340,7 +10341,7 @@
                     if (list_args==null) list_args=new ArrayList();
                     list_args.add(args);
 
-                    // JS.g:1732:30: ( COMMA args+= identifier )*
+                    // JS.g:1736:30: ( COMMA args+= identifier )*
                     loop76:
                     do {
                         int alt76=2;
@@ -10353,13 +10354,13 @@
 
                         switch (alt76) {
                     	case 1 :
-                    	    // JS.g:1732:32: COMMA args+= identifier
+                    	    // JS.g:1736:32: COMMA args+= identifier
                     	    {
                     	    COMMA317=(Token)input.LT(1);
-                    	    match(input,COMMA,FOLLOW_COMMA_in_formalParameterList6445); 
+                    	    match(input,COMMA,FOLLOW_COMMA_in_formalParameterList6473); 
                     	    stream_COMMA.add(COMMA317);
 
-                    	    pushFollow(FOLLOW_identifier_in_formalParameterList6449);
+                    	    pushFollow(FOLLOW_identifier_in_formalParameterList6477);
                     	    args=identifier();
                     	    _fsp--;
 
@@ -10383,7 +10384,7 @@
             }
 
             RPAREN318=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_formalParameterList6457); 
+            match(input,RPAREN,FOLLOW_RPAREN_in_formalParameterList6485); 
             stream_RPAREN.add(RPAREN318);
 
 
@@ -10397,14 +10398,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
             RewriteRuleSubtreeStream stream_args=new RewriteRuleSubtreeStream(adaptor,"token args",list_args);
             root_0 = (Object)adaptor.nil();
-            // 1733:2: -> ^( ARGS ( $args)* )
+            // 1737:2: -> ^( ARGS ( $args)* )
             {
-                // JS.g:1733:5: ^( ARGS ( $args)* )
+                // JS.g:1737:5: ^( ARGS ( $args)* )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(ARGS, "ARGS"), root_1);
 
-                // JS.g:1733:13: ( $args)*
+                // JS.g:1737:13: ( $args)*
                 while ( stream_args.hasNext() ) {
                     adaptor.addChild(root_1, ((ParserRuleReturnScope)stream_args.next()).getTree());
 
@@ -10442,7 +10443,7 @@
     };
 
     // $ANTLR start functionBody
-    // JS.g:1736:1: functionBody : lb= LBRACE ( sourceElement )* RBRACE -> ^( BLOCK[$lb, \"BLOCK\"] ( sourceElement )* ) ;
+    // JS.g:1740:1: functionBody : lb= LBRACE ( sourceElement )* RBRACE -> ^( BLOCK[$lb, \"BLOCK\"] ( sourceElement )* ) ;
     public final functionBody_return functionBody() throws RecognitionException {
         functionBody_return retval = new functionBody_return();
         retval.start = input.LT(1);
@@ -10460,14 +10461,14 @@
         RewriteRuleTokenStream stream_LBRACE=new RewriteRuleTokenStream(adaptor,"token LBRACE");
         RewriteRuleSubtreeStream stream_sourceElement=new RewriteRuleSubtreeStream(adaptor,"rule sourceElement");
         try {
-            // JS.g:1737:2: (lb= LBRACE ( sourceElement )* RBRACE -> ^( BLOCK[$lb, \"BLOCK\"] ( sourceElement )* ) )
-            // JS.g:1737:4: lb= LBRACE ( sourceElement )* RBRACE
+            // JS.g:1741:2: (lb= LBRACE ( sourceElement )* RBRACE -> ^( BLOCK[$lb, \"BLOCK\"] ( sourceElement )* ) )
+            // JS.g:1741:4: lb= LBRACE ( sourceElement )* RBRACE
             {
             lb=(Token)input.LT(1);
-            match(input,LBRACE,FOLLOW_LBRACE_in_functionBody6483); 
+            match(input,LBRACE,FOLLOW_LBRACE_in_functionBody6511); 
             stream_LBRACE.add(lb);
 
-            // JS.g:1737:14: ( sourceElement )*
+            // JS.g:1741:14: ( sourceElement )*
             loop78:
             do {
                 int alt78=2;
@@ -10480,9 +10481,9 @@
 
                 switch (alt78) {
             	case 1 :
-            	    // JS.g:1737:14: sourceElement
+            	    // JS.g:1741:14: sourceElement
             	    {
-            	    pushFollow(FOLLOW_sourceElement_in_functionBody6485);
+            	    pushFollow(FOLLOW_sourceElement_in_functionBody6513);
             	    sourceElement319=sourceElement();
             	    _fsp--;
 
@@ -10497,7 +10498,7 @@
             } while (true);
 
             RBRACE320=(Token)input.LT(1);
-            match(input,RBRACE,FOLLOW_RBRACE_in_functionBody6488); 
+            match(input,RBRACE,FOLLOW_RBRACE_in_functionBody6516); 
             stream_RBRACE.add(RBRACE320);
 
 
@@ -10511,14 +10512,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1738:2: -> ^( BLOCK[$lb, \"BLOCK\"] ( sourceElement )* )
+            // 1742:2: -> ^( BLOCK[$lb, \"BLOCK\"] ( sourceElement )* )
             {
-                // JS.g:1738:5: ^( BLOCK[$lb, \"BLOCK\"] ( sourceElement )* )
+                // JS.g:1742:5: ^( BLOCK[$lb, \"BLOCK\"] ( sourceElement )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(BLOCK, lb,  "BLOCK"), root_1);
 
-                // JS.g:1738:28: ( sourceElement )*
+                // JS.g:1742:28: ( sourceElement )*
                 while ( stream_sourceElement.hasNext() ) {
                     adaptor.addChild(root_1, stream_sourceElement.next());
 
@@ -10556,7 +10557,7 @@
     };
 
     // $ANTLR start getMethodDeclaration
-    // JS.g:1746:1: getMethodDeclaration : GET name= identifier LPAREN RPAREN functionBody -> ^( GETTER identifier functionBody ) ;
+    // JS.g:1750:1: getMethodDeclaration : GET name= identifier LPAREN RPAREN functionBody -> ^( GETTER identifier functionBody ) ;
     public final getMethodDeclaration_return getMethodDeclaration() throws RecognitionException {
         getMethodDeclaration_return retval = new getMethodDeclaration_return();
         retval.start = input.LT(1);
@@ -10580,34 +10581,34 @@
         RewriteRuleSubtreeStream stream_functionBody=new RewriteRuleSubtreeStream(adaptor,"rule functionBody");
         RewriteRuleSubtreeStream stream_identifier=new RewriteRuleSubtreeStream(adaptor,"rule identifier");
         try {
-            // JS.g:1747:3: ( GET name= identifier LPAREN RPAREN functionBody -> ^( GETTER identifier functionBody ) )
-            // JS.g:1747:5: GET name= identifier LPAREN RPAREN functionBody
+            // JS.g:1751:3: ( GET name= identifier LPAREN RPAREN functionBody -> ^( GETTER identifier functionBody ) )
+            // JS.g:1751:5: GET name= identifier LPAREN RPAREN functionBody
             {
             GET321=(Token)input.LT(1);
-            match(input,GET,FOLLOW_GET_in_getMethodDeclaration6518); 
+            match(input,GET,FOLLOW_GET_in_getMethodDeclaration6546); 
             stream_GET.add(GET321);
 
-            pushFollow(FOLLOW_identifier_in_getMethodDeclaration6522);
+            pushFollow(FOLLOW_identifier_in_getMethodDeclaration6550);
             name=identifier();
             _fsp--;
 
             stream_identifier.add(name.getTree());
             LPAREN322=(Token)input.LT(1);
-            match(input,LPAREN,FOLLOW_LPAREN_in_getMethodDeclaration6524); 
+            match(input,LPAREN,FOLLOW_LPAREN_in_getMethodDeclaration6552); 
             stream_LPAREN.add(LPAREN322);
 
             RPAREN323=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_getMethodDeclaration6526); 
+            match(input,RPAREN,FOLLOW_RPAREN_in_getMethodDeclaration6554); 
             stream_RPAREN.add(RPAREN323);
 
-            pushFollow(FOLLOW_functionBody_in_getMethodDeclaration6528);
+            pushFollow(FOLLOW_functionBody_in_getMethodDeclaration6556);
             functionBody324=functionBody();
             _fsp--;
 
             stream_functionBody.add(functionBody324.getTree());
 
             // AST REWRITE
-            // elements: functionBody, identifier
+            // elements: identifier, functionBody
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -10616,9 +10617,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1748:4: -> ^( GETTER identifier functionBody )
+            // 1752:4: -> ^( GETTER identifier functionBody )
             {
-                // JS.g:1748:7: ^( GETTER identifier functionBody )
+                // JS.g:1752:7: ^( GETTER identifier functionBody )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(GETTER, "GETTER"), root_1);
@@ -10657,7 +10658,7 @@
     };
 
     // $ANTLR start setMethodDeclaration
-    // JS.g:1751:1: setMethodDeclaration : SET name= identifier LPAREN param= identifier RPAREN functionBody -> ^( SETTER $name $param functionBody ) ;
+    // JS.g:1755:1: setMethodDeclaration : SET name= identifier LPAREN param= identifier RPAREN functionBody -> ^( SETTER $name $param functionBody ) ;
     public final setMethodDeclaration_return setMethodDeclaration() throws RecognitionException {
         setMethodDeclaration_return retval = new setMethodDeclaration_return();
         retval.start = input.LT(1);
@@ -10683,39 +10684,39 @@
         RewriteRuleSubtreeStream stream_functionBody=new RewriteRuleSubtreeStream(adaptor,"rule functionBody");
         RewriteRuleSubtreeStream stream_identifier=new RewriteRuleSubtreeStream(adaptor,"rule identifier");
         try {
-            // JS.g:1752:3: ( SET name= identifier LPAREN param= identifier RPAREN functionBody -> ^( SETTER $name $param functionBody ) )
-            // JS.g:1752:5: SET name= identifier LPAREN param= identifier RPAREN functionBody
+            // JS.g:1756:3: ( SET name= identifier LPAREN param= identifier RPAREN functionBody -> ^( SETTER $name $param functionBody ) )
+            // JS.g:1756:5: SET name= identifier LPAREN param= identifier RPAREN functionBody
             {
             SET325=(Token)input.LT(1);
-            match(input,SET,FOLLOW_SET_in_setMethodDeclaration6556); 
+            match(input,SET,FOLLOW_SET_in_setMethodDeclaration6584); 
             stream_SET.add(SET325);
 
-            pushFollow(FOLLOW_identifier_in_setMethodDeclaration6560);
+            pushFollow(FOLLOW_identifier_in_setMethodDeclaration6588);
             name=identifier();
             _fsp--;
 
             stream_identifier.add(name.getTree());
             LPAREN326=(Token)input.LT(1);
-            match(input,LPAREN,FOLLOW_LPAREN_in_setMethodDeclaration6562); 
+            match(input,LPAREN,FOLLOW_LPAREN_in_setMethodDeclaration6590); 
             stream_LPAREN.add(LPAREN326);
 
-            pushFollow(FOLLOW_identifier_in_setMethodDeclaration6566);
+            pushFollow(FOLLOW_identifier_in_setMethodDeclaration6594);
             param=identifier();
             _fsp--;
 
             stream_identifier.add(param.getTree());
             RPAREN327=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_setMethodDeclaration6568); 
+            match(input,RPAREN,FOLLOW_RPAREN_in_setMethodDeclaration6596); 
             stream_RPAREN.add(RPAREN327);
 
-            pushFollow(FOLLOW_functionBody_in_setMethodDeclaration6570);
+            pushFollow(FOLLOW_functionBody_in_setMethodDeclaration6598);
             functionBody328=functionBody();
             _fsp--;
 
             stream_functionBody.add(functionBody328.getTree());
 
             // AST REWRITE
-            // elements: functionBody, param, name
+            // elements: name, param, functionBody
             // token labels: 
             // rule labels: retval, param, name
             // token list labels: 
@@ -10726,9 +10727,9 @@
             RewriteRuleSubtreeStream stream_name=new RewriteRuleSubtreeStream(adaptor,"token name",name!=null?name.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1753:5: -> ^( SETTER $name $param functionBody )
+            // 1757:5: -> ^( SETTER $name $param functionBody )
             {
-                // JS.g:1753:8: ^( SETTER $name $param functionBody )
+                // JS.g:1757:8: ^( SETTER $name $param functionBody )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(SETTER, "SETTER"), root_1);
@@ -10768,7 +10769,7 @@
     };
 
     // $ANTLR start program
-    // JS.g:1760:1: program : ( sourceElement )* EOF ;
+    // JS.g:1764:1: program : ( sourceElement )* EOF ;
     public final program_return program() throws RecognitionException {
         program_return retval = new program_return();
         retval.start = input.LT(1);
@@ -10782,12 +10783,12 @@
         Object EOF330_tree=null;
 
         try {
-            // JS.g:1761:2: ( ( sourceElement )* EOF )
-            // JS.g:1761:4: ( sourceElement )* EOF
+            // JS.g:1765:2: ( ( sourceElement )* EOF )
+            // JS.g:1765:4: ( sourceElement )* EOF
             {
             root_0 = (Object)adaptor.nil();
 
-            // JS.g:1761:4: ( sourceElement )*
+            // JS.g:1765:4: ( sourceElement )*
             loop79:
             do {
                 int alt79=2;
@@ -10800,9 +10801,9 @@
 
                 switch (alt79) {
             	case 1 :
-            	    // JS.g:1761:4: sourceElement
+            	    // JS.g:1765:4: sourceElement
             	    {
-            	    pushFollow(FOLLOW_sourceElement_in_program6605);
+            	    pushFollow(FOLLOW_sourceElement_in_program6633);
             	    sourceElement329=sourceElement();
             	    _fsp--;
 
@@ -10817,7 +10818,7 @@
             } while (true);
 
             EOF330=(Token)input.LT(1);
-            match(input,EOF,FOLLOW_EOF_in_program6608); 
+            match(input,EOF,FOLLOW_EOF_in_program6636); 
 
             }
 
@@ -10843,7 +10844,7 @@
     };
 
     // $ANTLR start sourceElement
-    // JS.g:1769:1: sourceElement options {k=1; } : ({...}? functionDeclaration | statement );
+    // JS.g:1773:1: sourceElement options {k=1; } : ({...}? functionDeclaration | statement );
     public final sourceElement_return sourceElement() throws RecognitionException {
         sourceElement_return retval = new sourceElement_return();
         retval.start = input.LT(1);
@@ -10857,7 +10858,7 @@
 
 
         try {
-            // JS.g:1774:2: ({...}? functionDeclaration | statement )
+            // JS.g:1778:2: ({...}? functionDeclaration | statement )
             int alt80=2;
             int LA80_0 = input.LA(1);
 
@@ -10872,7 +10873,7 @@
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("1769:1: sourceElement options {k=1; } : ({...}? functionDeclaration | statement );", 80, 1, input);
+                        new NoViableAltException("1773:1: sourceElement options {k=1; } : ({...}? functionDeclaration | statement );", 80, 1, input);
 
                     throw nvae;
                 }
@@ -10882,20 +10883,20 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("1769:1: sourceElement options {k=1; } : ({...}? functionDeclaration | statement );", 80, 0, input);
+                    new NoViableAltException("1773:1: sourceElement options {k=1; } : ({...}? functionDeclaration | statement );", 80, 0, input);
 
                 throw nvae;
             }
             switch (alt80) {
                 case 1 :
-                    // JS.g:1774:4: {...}? functionDeclaration
+                    // JS.g:1778:4: {...}? functionDeclaration
                     {
                     root_0 = (Object)adaptor.nil();
 
                     if ( !( input.LA(1) == FUNCTION ) ) {
                         throw new FailedPredicateException(input, "sourceElement", " input.LA(1) == FUNCTION ");
                     }
-                    pushFollow(FOLLOW_functionDeclaration_in_sourceElement6637);
+                    pushFollow(FOLLOW_functionDeclaration_in_sourceElement6665);
                     functionDeclaration331=functionDeclaration();
                     _fsp--;
 
@@ -10904,11 +10905,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1775:4: statement
+                    // JS.g:1779:4: statement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_statement_in_sourceElement6642);
+                    pushFollow(FOLLOW_statement_in_sourceElement6670);
                     statement332=statement();
                     _fsp--;
 
@@ -10937,368 +10938,368 @@
 
  
 
-    public static final BitSet FOLLOW_reservedWord_in_token1969 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_identifier_in_token1974 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_punctuator_in_token1979 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_numericLiteral_in_token1984 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_StringLiteral_in_token1989 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_XmlAttribute_in_token1994 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_keyword_in_reservedWord2009 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_futureReservedWord_in_reservedWord2014 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_NULL_in_reservedWord2019 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_booleanLiteral_in_reservedWord2024 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_reservedWord_in_token1997 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_identifier_in_token2002 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_punctuator_in_token2007 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_numericLiteral_in_token2012 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_StringLiteral_in_token2017 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_XmlAttribute_in_token2022 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_keyword_in_reservedWord2037 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_futureReservedWord_in_reservedWord2042 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NULL_in_reservedWord2047 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_booleanLiteral_in_reservedWord2052 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_set_in_keyword0 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_set_in_futureReservedWord0 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_set_in_identifier0 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_set_in_punctuator0 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_NULL_in_literal2819 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_booleanLiteral_in_literal2824 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_numericLiteral_in_literal2829 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_StringLiteral_in_literal2834 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_RegularExpressionLiteral_in_literal2839 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NULL_in_literal2847 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_booleanLiteral_in_literal2852 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_numericLiteral_in_literal2857 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_StringLiteral_in_literal2862 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RegularExpressionLiteral_in_literal2867 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_set_in_booleanLiteral0 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_set_in_numericLiteral0 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_THIS_in_primaryExpression3468 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_identifier_in_primaryExpression3473 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_XmlAttribute_in_primaryExpression3478 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_literal_in_primaryExpression3483 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_arrayLiteral_in_primaryExpression3488 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_objectLiteral_in_primaryExpression3493 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_parenExpression_in_primaryExpression3498 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LPAREN_in_parenExpression3514 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_expression_in_parenExpression3516 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_RPAREN_in_parenExpression3518 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LBRACK_in_arrayLiteral3543 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819804D40L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_arrayItem_in_arrayLiteral3547 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004800L});
-    public static final BitSet FOLLOW_COMMA_in_arrayLiteral3551 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819804D40L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_arrayItem_in_arrayLiteral3553 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004800L});
-    public static final BitSet FOLLOW_RBRACK_in_arrayLiteral3561 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_assignmentExpression_in_arrayItem3589 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LBRACE_in_objectLiteral3621 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000080L,0x0E08300000000000L});
-    public static final BitSet FOLLOW_objectPropertyInitializer_in_objectLiteral3625 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004080L});
-    public static final BitSet FOLLOW_COMMA_in_objectLiteral3629 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0E08300000000000L});
-    public static final BitSet FOLLOW_objectPropertyInitializer_in_objectLiteral3631 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004080L});
-    public static final BitSet FOLLOW_RBRACE_in_objectLiteral3639 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_nameValuePair_in_objectPropertyInitializer3664 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_getMethodDeclaration_in_objectPropertyInitializer3671 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_setMethodDeclaration_in_objectPropertyInitializer3677 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_propertyName_in_nameValuePair3690 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
-    public static final BitSet FOLLOW_COLON_in_nameValuePair3692 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_assignmentExpression_in_nameValuePair3694 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_identifier_in_propertyName3718 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_StringLiteral_in_propertyName3723 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_numericLiteral_in_propertyName3728 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_XmlAttribute_in_propertyName3733 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_primaryExpression_in_memberExpression3751 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_functionExpression_in_memberExpression3756 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_newExpression_in_memberExpression3761 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_NEW_in_newExpression3772 = new BitSet(new long[]{0x0000006602460070L,0x0000000000000540L,0x0E28300000000000L});
-    public static final BitSet FOLLOW_memberExpression_in_newExpression3775 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LPAREN_in_arguments3788 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800740L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_assignmentExpression_in_arguments3792 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004200L});
-    public static final BitSet FOLLOW_COMMA_in_arguments3796 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_assignmentExpression_in_arguments3798 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004200L});
-    public static final BitSet FOLLOW_RPAREN_in_arguments3806 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_memberExpression_in_leftHandSideExpression3839 = new BitSet(new long[]{0x0000000000000002L,0xC000000000001500L});
-    public static final BitSet FOLLOW_arguments_in_leftHandSideExpression3860 = new BitSet(new long[]{0x0000000000000002L,0xC000000000001500L});
-    public static final BitSet FOLLOW_LBRACK_in_leftHandSideExpression3885 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_expression_in_leftHandSideExpression3887 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
-    public static final BitSet FOLLOW_RBRACK_in_leftHandSideExpression3889 = new BitSet(new long[]{0x0000000000000002L,0xC000000000001500L});
-    public static final BitSet FOLLOW_DOT_in_leftHandSideExpression3911 = new BitSet(new long[]{0x0000006600020000L,0x0000000002000100L,0x0008200000000000L});
-    public static final BitSet FOLLOW_rightHandSideExpression_in_leftHandSideExpression3913 = new BitSet(new long[]{0x0000000000000002L,0xC000000000001500L});
-    public static final BitSet FOLLOW_DOTDOT_in_leftHandSideExpression3934 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_expression_in_leftHandSideExpression3936 = new BitSet(new long[]{0x0000000000000002L,0xC000000000001500L});
-    public static final BitSet FOLLOW_COLONCOLON_in_leftHandSideExpression3955 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_expression_in_leftHandSideExpression3957 = new BitSet(new long[]{0x0000000000000002L,0xC000000000001500L});
-    public static final BitSet FOLLOW_parenExpression_in_rightHandSideExpression3986 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_identifier_in_rightHandSideExpression3993 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_XmlAttribute_in_rightHandSideExpression3999 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_MUL_in_rightHandSideExpression4005 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_leftHandSideExpression_in_postfixExpression4043 = new BitSet(new long[]{0x0000000000000002L,0x0000000018000000L});
-    public static final BitSet FOLLOW_postfixOperator_in_postfixExpression4049 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_INC_in_postfixOperator4067 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DEC_in_postfixOperator4076 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_postfixExpression_in_unaryExpression4093 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_unaryOperator_in_unaryExpression4098 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_unaryExpression_in_unaryExpression4101 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_XMLLiteral_in_unaryExpression4107 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DELETE_in_unaryOperator4119 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VOID_in_unaryOperator4124 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_TYPEOF_in_unaryOperator4129 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_INC_in_unaryOperator4134 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DEC_in_unaryOperator4139 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ADD_in_unaryOperator4146 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_SUB_in_unaryOperator4155 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_INV_in_unaryOperator4162 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_NOT_in_unaryOperator4167 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_YIELD_in_unaryOperator4172 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DEFAULT_in_namespaceStatement4208 = new BitSet(new long[]{0x0000002000000000L});
-    public static final BitSet FOLLOW_WXML_in_namespaceStatement4210 = new BitSet(new long[]{0x0000004000000000L});
-    public static final BitSet FOLLOW_NAMESPACE_in_namespaceStatement4212 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_ASSIGN_in_namespaceStatement4214 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000100000000000L});
-    public static final BitSet FOLLOW_StringLiteral_in_namespaceStatement4216 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x0000060000000000L});
-    public static final BitSet FOLLOW_semic_in_namespaceStatement4218 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_unaryExpression_in_multiplicativeExpression4250 = new BitSet(new long[]{0x0000000000000002L,0x0010000006000000L});
-    public static final BitSet FOLLOW_set_in_multiplicativeExpression4254 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_unaryExpression_in_multiplicativeExpression4269 = new BitSet(new long[]{0x0000000000000002L,0x0010000006000000L});
-    public static final BitSet FOLLOW_multiplicativeExpression_in_additiveExpression4287 = new BitSet(new long[]{0x0000000000000002L,0x0000000001800000L});
-    public static final BitSet FOLLOW_set_in_additiveExpression4291 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_multiplicativeExpression_in_additiveExpression4302 = new BitSet(new long[]{0x0000000000000002L,0x0000000001800000L});
-    public static final BitSet FOLLOW_additiveExpression_in_shiftExpression4321 = new BitSet(new long[]{0x0000000000000002L,0x00000000E0000000L});
-    public static final BitSet FOLLOW_set_in_shiftExpression4325 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_additiveExpression_in_shiftExpression4340 = new BitSet(new long[]{0x0000000000000002L,0x00000000E0000000L});
-    public static final BitSet FOLLOW_shiftExpression_in_relationalExpression4359 = new BitSet(new long[]{0x0000000000300002L,0x0000000000078000L});
-    public static final BitSet FOLLOW_set_in_relationalExpression4363 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_shiftExpression_in_relationalExpression4390 = new BitSet(new long[]{0x0000000000300002L,0x0000000000078000L});
-    public static final BitSet FOLLOW_shiftExpression_in_relationalExpressionNoIn4404 = new BitSet(new long[]{0x0000000000200002L,0x0000000000078000L});
-    public static final BitSet FOLLOW_set_in_relationalExpressionNoIn4408 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_shiftExpression_in_relationalExpressionNoIn4431 = new BitSet(new long[]{0x0000000000200002L,0x0000000000078000L});
-    public static final BitSet FOLLOW_relationalExpression_in_equalityExpression4450 = new BitSet(new long[]{0x0000000000000002L,0x0000000000780000L});
-    public static final BitSet FOLLOW_set_in_equalityExpression4454 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_relationalExpression_in_equalityExpression4473 = new BitSet(new long[]{0x0000000000000002L,0x0000000000780000L});
-    public static final BitSet FOLLOW_relationalExpressionNoIn_in_equalityExpressionNoIn4487 = new BitSet(new long[]{0x0000000000000002L,0x0000000000780000L});
-    public static final BitSet FOLLOW_set_in_equalityExpressionNoIn4491 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_relationalExpressionNoIn_in_equalityExpressionNoIn4510 = new BitSet(new long[]{0x0000000000000002L,0x0000000000780000L});
-    public static final BitSet FOLLOW_equalityExpression_in_bitwiseANDExpression4530 = new BitSet(new long[]{0x0000000000000002L,0x0000000100000000L});
-    public static final BitSet FOLLOW_AND_in_bitwiseANDExpression4534 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_equalityExpression_in_bitwiseANDExpression4537 = new BitSet(new long[]{0x0000000000000002L,0x0000000100000000L});
-    public static final BitSet FOLLOW_equalityExpressionNoIn_in_bitwiseANDExpressionNoIn4551 = new BitSet(new long[]{0x0000000000000002L,0x0000000100000000L});
-    public static final BitSet FOLLOW_AND_in_bitwiseANDExpressionNoIn4555 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_equalityExpressionNoIn_in_bitwiseANDExpressionNoIn4558 = new BitSet(new long[]{0x0000000000000002L,0x0000000100000000L});
-    public static final BitSet FOLLOW_bitwiseANDExpression_in_bitwiseXORExpression4574 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
-    public static final BitSet FOLLOW_XOR_in_bitwiseXORExpression4578 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_bitwiseANDExpression_in_bitwiseXORExpression4581 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
-    public static final BitSet FOLLOW_bitwiseANDExpressionNoIn_in_bitwiseXORExpressionNoIn4597 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
-    public static final BitSet FOLLOW_XOR_in_bitwiseXORExpressionNoIn4601 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_bitwiseANDExpressionNoIn_in_bitwiseXORExpressionNoIn4604 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
-    public static final BitSet FOLLOW_bitwiseXORExpression_in_bitwiseORExpression4619 = new BitSet(new long[]{0x0000000000000002L,0x0000000200000000L});
-    public static final BitSet FOLLOW_OR_in_bitwiseORExpression4623 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_bitwiseXORExpression_in_bitwiseORExpression4626 = new BitSet(new long[]{0x0000000000000002L,0x0000000200000000L});
-    public static final BitSet FOLLOW_bitwiseXORExpressionNoIn_in_bitwiseORExpressionNoIn4641 = new BitSet(new long[]{0x0000000000000002L,0x0000000200000000L});
-    public static final BitSet FOLLOW_OR_in_bitwiseORExpressionNoIn4645 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_bitwiseXORExpressionNoIn_in_bitwiseORExpressionNoIn4648 = new BitSet(new long[]{0x0000000000000002L,0x0000000200000000L});
-    public static final BitSet FOLLOW_bitwiseORExpression_in_logicalANDExpression4667 = new BitSet(new long[]{0x0000000000000002L,0x0000002000000000L});
-    public static final BitSet FOLLOW_LAND_in_logicalANDExpression4671 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_bitwiseORExpression_in_logicalANDExpression4674 = new BitSet(new long[]{0x0000000000000002L,0x0000002000000000L});
-    public static final BitSet FOLLOW_bitwiseORExpressionNoIn_in_logicalANDExpressionNoIn4688 = new BitSet(new long[]{0x0000000000000002L,0x0000002000000000L});
-    public static final BitSet FOLLOW_LAND_in_logicalANDExpressionNoIn4692 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_bitwiseORExpressionNoIn_in_logicalANDExpressionNoIn4695 = new BitSet(new long[]{0x0000000000000002L,0x0000002000000000L});
-    public static final BitSet FOLLOW_logicalANDExpression_in_logicalORExpression4710 = new BitSet(new long[]{0x0000000000000002L,0x0000004000000000L});
-    public static final BitSet FOLLOW_LOR_in_logicalORExpression4714 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_logicalANDExpression_in_logicalORExpression4717 = new BitSet(new long[]{0x0000000000000002L,0x0000004000000000L});
-    public static final BitSet FOLLOW_logicalANDExpressionNoIn_in_logicalORExpressionNoIn4732 = new BitSet(new long[]{0x0000000000000002L,0x0000004000000000L});
-    public static final BitSet FOLLOW_LOR_in_logicalORExpressionNoIn4736 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_logicalANDExpressionNoIn_in_logicalORExpressionNoIn4739 = new BitSet(new long[]{0x0000000000000002L,0x0000004000000000L});
-    public static final BitSet FOLLOW_logicalORExpression_in_conditionalExpression4758 = new BitSet(new long[]{0x0000000000000002L,0x0000008000000000L});
-    public static final BitSet FOLLOW_QUE_in_conditionalExpression4762 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_assignmentExpression_in_conditionalExpression4765 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
-    public static final BitSet FOLLOW_COLON_in_conditionalExpression4767 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_assignmentExpression_in_conditionalExpression4770 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_logicalORExpressionNoIn_in_conditionalExpressionNoIn4784 = new BitSet(new long[]{0x0000000000000002L,0x0000008000000000L});
-    public static final BitSet FOLLOW_QUE_in_conditionalExpressionNoIn4788 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_assignmentExpressionNoIn_in_conditionalExpressionNoIn4791 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
-    public static final BitSet FOLLOW_COLON_in_conditionalExpressionNoIn4793 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_assignmentExpressionNoIn_in_conditionalExpressionNoIn4796 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_conditionalExpression_in_assignmentExpression4824 = new BitSet(new long[]{0x0000000000000002L,0x002FFE0000000000L});
-    public static final BitSet FOLLOW_assignmentOperator_in_assignmentExpression4831 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_assignmentExpression_in_assignmentExpression4834 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_THIS_in_primaryExpression3496 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_identifier_in_primaryExpression3501 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_XmlAttribute_in_primaryExpression3506 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_literal_in_primaryExpression3511 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_arrayLiteral_in_primaryExpression3516 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_objectLiteral_in_primaryExpression3521 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_parenExpression_in_primaryExpression3526 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LPAREN_in_parenExpression3542 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_expression_in_parenExpression3544 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_RPAREN_in_parenExpression3546 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LBRACK_in_arrayLiteral3571 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819804D40L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_arrayItem_in_arrayLiteral3575 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004800L});
+    public static final BitSet FOLLOW_COMMA_in_arrayLiteral3579 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819804D40L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_arrayItem_in_arrayLiteral3581 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004800L});
+    public static final BitSet FOLLOW_RBRACK_in_arrayLiteral3589 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_assignmentExpression_in_arrayItem3617 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LBRACE_in_objectLiteral3649 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000080L,0x1C10600000000000L});
+    public static final BitSet FOLLOW_objectPropertyInitializer_in_objectLiteral3653 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004080L});
+    public static final BitSet FOLLOW_COMMA_in_objectLiteral3657 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x1C10600000000000L});
+    public static final BitSet FOLLOW_objectPropertyInitializer_in_objectLiteral3659 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004080L});
+    public static final BitSet FOLLOW_RBRACE_in_objectLiteral3667 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_nameValuePair_in_objectPropertyInitializer3692 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_getMethodDeclaration_in_objectPropertyInitializer3699 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_setMethodDeclaration_in_objectPropertyInitializer3705 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_propertyName_in_nameValuePair3718 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
+    public static final BitSet FOLLOW_COLON_in_nameValuePair3720 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_assignmentExpression_in_nameValuePair3722 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_identifier_in_propertyName3746 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_StringLiteral_in_propertyName3751 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_numericLiteral_in_propertyName3756 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_XmlAttribute_in_propertyName3761 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_primaryExpression_in_memberExpression3779 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_functionExpression_in_memberExpression3784 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_newExpression_in_memberExpression3789 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NEW_in_newExpression3800 = new BitSet(new long[]{0x0000006602460070L,0x0000000000000540L,0x1C50600000000000L});
+    public static final BitSet FOLLOW_memberExpression_in_newExpression3803 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LPAREN_in_arguments3816 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800740L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_assignmentExpression_in_arguments3820 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004200L});
+    public static final BitSet FOLLOW_COMMA_in_arguments3824 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_assignmentExpression_in_arguments3826 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004200L});
+    public static final BitSet FOLLOW_RPAREN_in_arguments3834 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_memberExpression_in_leftHandSideExpression3867 = new BitSet(new long[]{0x0000000000000002L,0xC000000000001500L});
+    public static final BitSet FOLLOW_arguments_in_leftHandSideExpression3888 = new BitSet(new long[]{0x0000000000000002L,0xC000000000001500L});
+    public static final BitSet FOLLOW_LBRACK_in_leftHandSideExpression3913 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_expression_in_leftHandSideExpression3915 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
+    public static final BitSet FOLLOW_RBRACK_in_leftHandSideExpression3917 = new BitSet(new long[]{0x0000000000000002L,0xC000000000001500L});
+    public static final BitSet FOLLOW_DOT_in_leftHandSideExpression3939 = new BitSet(new long[]{0x0000006600020000L,0x0000000002000100L,0x0010400000000000L});
+    public static final BitSet FOLLOW_rightHandSideExpression_in_leftHandSideExpression3941 = new BitSet(new long[]{0x0000000000000002L,0xC000000000001500L});
+    public static final BitSet FOLLOW_DOTDOT_in_leftHandSideExpression3962 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_expression_in_leftHandSideExpression3964 = new BitSet(new long[]{0x0000000000000002L,0xC000000000001500L});
+    public static final BitSet FOLLOW_COLONCOLON_in_leftHandSideExpression3983 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_expression_in_leftHandSideExpression3985 = new BitSet(new long[]{0x0000000000000002L,0xC000000000001500L});
+    public static final BitSet FOLLOW_parenExpression_in_rightHandSideExpression4014 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_identifier_in_rightHandSideExpression4021 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_XmlAttribute_in_rightHandSideExpression4027 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_MUL_in_rightHandSideExpression4033 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_leftHandSideExpression_in_postfixExpression4071 = new BitSet(new long[]{0x0000000000000002L,0x0000000018000000L});
+    public static final BitSet FOLLOW_postfixOperator_in_postfixExpression4077 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_INC_in_postfixOperator4095 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DEC_in_postfixOperator4104 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_postfixExpression_in_unaryExpression4121 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_unaryOperator_in_unaryExpression4126 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_unaryExpression_in_unaryExpression4129 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_XMLLiteral_in_unaryExpression4135 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DELETE_in_unaryOperator4147 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VOID_in_unaryOperator4152 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_TYPEOF_in_unaryOperator4157 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_INC_in_unaryOperator4162 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DEC_in_unaryOperator4167 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ADD_in_unaryOperator4174 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_SUB_in_unaryOperator4183 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_INV_in_unaryOperator4190 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NOT_in_unaryOperator4195 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_YIELD_in_unaryOperator4200 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DEFAULT_in_namespaceStatement4236 = new BitSet(new long[]{0x0000002000000000L});
+    public static final BitSet FOLLOW_WXML_in_namespaceStatement4238 = new BitSet(new long[]{0x0000004000000000L});
+    public static final BitSet FOLLOW_NAMESPACE_in_namespaceStatement4240 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_ASSIGN_in_namespaceStatement4242 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_StringLiteral_in_namespaceStatement4244 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x00000C0000000000L});
+    public static final BitSet FOLLOW_semic_in_namespaceStatement4246 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_unaryExpression_in_multiplicativeExpression4278 = new BitSet(new long[]{0x0000000000000002L,0x0010000006000000L});
+    public static final BitSet FOLLOW_set_in_multiplicativeExpression4282 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_unaryExpression_in_multiplicativeExpression4297 = new BitSet(new long[]{0x0000000000000002L,0x0010000006000000L});
+    public static final BitSet FOLLOW_multiplicativeExpression_in_additiveExpression4315 = new BitSet(new long[]{0x0000000000000002L,0x0000000001800000L});
+    public static final BitSet FOLLOW_set_in_additiveExpression4319 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_multiplicativeExpression_in_additiveExpression4330 = new BitSet(new long[]{0x0000000000000002L,0x0000000001800000L});
+    public static final BitSet FOLLOW_additiveExpression_in_shiftExpression4349 = new BitSet(new long[]{0x0000000000000002L,0x00000000E0000000L});
+    public static final BitSet FOLLOW_set_in_shiftExpression4353 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_additiveExpression_in_shiftExpression4368 = new BitSet(new long[]{0x0000000000000002L,0x00000000E0000000L});
+    public static final BitSet FOLLOW_shiftExpression_in_relationalExpression4387 = new BitSet(new long[]{0x0000000000300002L,0x0000000000078000L});
+    public static final BitSet FOLLOW_set_in_relationalExpression4391 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_shiftExpression_in_relationalExpression4418 = new BitSet(new long[]{0x0000000000300002L,0x0000000000078000L});
+    public static final BitSet FOLLOW_shiftExpression_in_relationalExpressionNoIn4432 = new BitSet(new long[]{0x0000000000200002L,0x0000000000078000L});
+    public static final BitSet FOLLOW_set_in_relationalExpressionNoIn4436 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_shiftExpression_in_relationalExpressionNoIn4459 = new BitSet(new long[]{0x0000000000200002L,0x0000000000078000L});
+    public static final BitSet FOLLOW_relationalExpression_in_equalityExpression4478 = new BitSet(new long[]{0x0000000000000002L,0x0000000000780000L});
+    public static final BitSet FOLLOW_set_in_equalityExpression4482 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_relationalExpression_in_equalityExpression4501 = new BitSet(new long[]{0x0000000000000002L,0x0000000000780000L});
+    public static final BitSet FOLLOW_relationalExpressionNoIn_in_equalityExpressionNoIn4515 = new BitSet(new long[]{0x0000000000000002L,0x0000000000780000L});
+    public static final BitSet FOLLOW_set_in_equalityExpressionNoIn4519 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_relationalExpressionNoIn_in_equalityExpressionNoIn4538 = new BitSet(new long[]{0x0000000000000002L,0x0000000000780000L});
+    public static final BitSet FOLLOW_equalityExpression_in_bitwiseANDExpression4558 = new BitSet(new long[]{0x0000000000000002L,0x0000000100000000L});
+    public static final BitSet FOLLOW_AND_in_bitwiseANDExpression4562 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_equalityExpression_in_bitwiseANDExpression4565 = new BitSet(new long[]{0x0000000000000002L,0x0000000100000000L});
+    public static final BitSet FOLLOW_equalityExpressionNoIn_in_bitwiseANDExpressionNoIn4579 = new BitSet(new long[]{0x0000000000000002L,0x0000000100000000L});
+    public static final BitSet FOLLOW_AND_in_bitwiseANDExpressionNoIn4583 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_equalityExpressionNoIn_in_bitwiseANDExpressionNoIn4586 = new BitSet(new long[]{0x0000000000000002L,0x0000000100000000L});
+    public static final BitSet FOLLOW_bitwiseANDExpression_in_bitwiseXORExpression4602 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
+    public static final BitSet FOLLOW_XOR_in_bitwiseXORExpression4606 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_bitwiseANDExpression_in_bitwiseXORExpression4609 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
+    public static final BitSet FOLLOW_bitwiseANDExpressionNoIn_in_bitwiseXORExpressionNoIn4625 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
+    public static final BitSet FOLLOW_XOR_in_bitwiseXORExpressionNoIn4629 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_bitwiseANDExpressionNoIn_in_bitwiseXORExpressionNoIn4632 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
+    public static final BitSet FOLLOW_bitwiseXORExpression_in_bitwiseORExpression4647 = new BitSet(new long[]{0x0000000000000002L,0x0000000200000000L});
+    public static final BitSet FOLLOW_OR_in_bitwiseORExpression4651 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_bitwiseXORExpression_in_bitwiseORExpression4654 = new BitSet(new long[]{0x0000000000000002L,0x0000000200000000L});
+    public static final BitSet FOLLOW_bitwiseXORExpressionNoIn_in_bitwiseORExpressionNoIn4669 = new BitSet(new long[]{0x0000000000000002L,0x0000000200000000L});
+    public static final BitSet FOLLOW_OR_in_bitwiseORExpressionNoIn4673 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_bitwiseXORExpressionNoIn_in_bitwiseORExpressionNoIn4676 = new BitSet(new long[]{0x0000000000000002L,0x0000000200000000L});
+    public static final BitSet FOLLOW_bitwiseORExpression_in_logicalANDExpression4695 = new BitSet(new long[]{0x0000000000000002L,0x0000002000000000L});
+    public static final BitSet FOLLOW_LAND_in_logicalANDExpression4699 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_bitwiseORExpression_in_logicalANDExpression4702 = new BitSet(new long[]{0x0000000000000002L,0x0000002000000000L});
+    public static final BitSet FOLLOW_bitwiseORExpressionNoIn_in_logicalANDExpressionNoIn4716 = new BitSet(new long[]{0x0000000000000002L,0x0000002000000000L});
+    public static final BitSet FOLLOW_LAND_in_logicalANDExpressionNoIn4720 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_bitwiseORExpressionNoIn_in_logicalANDExpressionNoIn4723 = new BitSet(new long[]{0x0000000000000002L,0x0000002000000000L});
+    public static final BitSet FOLLOW_logicalANDExpression_in_logicalORExpression4738 = new BitSet(new long[]{0x0000000000000002L,0x0000004000000000L});
+    public static final BitSet FOLLOW_LOR_in_logicalORExpression4742 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_logicalANDExpression_in_logicalORExpression4745 = new BitSet(new long[]{0x0000000000000002L,0x0000004000000000L});
+    public static final BitSet FOLLOW_logicalANDExpressionNoIn_in_logicalORExpressionNoIn4760 = new BitSet(new long[]{0x0000000000000002L,0x0000004000000000L});
+    public static final BitSet FOLLOW_LOR_in_logicalORExpressionNoIn4764 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_logicalANDExpressionNoIn_in_logicalORExpressionNoIn4767 = new BitSet(new long[]{0x0000000000000002L,0x0000004000000000L});
+    public static final BitSet FOLLOW_logicalORExpression_in_conditionalExpression4786 = new BitSet(new long[]{0x0000000000000002L,0x0000008000000000L});
+    public static final BitSet FOLLOW_QUE_in_conditionalExpression4790 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_assignmentExpression_in_conditionalExpression4793 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
+    public static final BitSet FOLLOW_COLON_in_conditionalExpression4795 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_assignmentExpression_in_conditionalExpression4798 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_logicalORExpressionNoIn_in_conditionalExpressionNoIn4812 = new BitSet(new long[]{0x0000000000000002L,0x0000008000000000L});
+    public static final BitSet FOLLOW_QUE_in_conditionalExpressionNoIn4816 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_assignmentExpressionNoIn_in_conditionalExpressionNoIn4819 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
+    public static final BitSet FOLLOW_COLON_in_conditionalExpressionNoIn4821 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_assignmentExpressionNoIn_in_conditionalExpressionNoIn4824 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_conditionalExpression_in_assignmentExpression4852 = new BitSet(new long[]{0x0000000000000002L,0x002FFE0000000000L});
+    public static final BitSet FOLLOW_assignmentOperator_in_assignmentExpression4859 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_assignmentExpression_in_assignmentExpression4862 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_set_in_assignmentOperator0 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_conditionalExpressionNoIn_in_assignmentExpressionNoIn4912 = new BitSet(new long[]{0x0000000000000002L,0x002FFE0000000000L});
-    public static final BitSet FOLLOW_assignmentOperator_in_assignmentExpressionNoIn4919 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_assignmentExpressionNoIn_in_assignmentExpressionNoIn4922 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_assignmentExpression_in_expression4944 = new BitSet(new long[]{0x0000000000000002L,0x0000000000004000L});
-    public static final BitSet FOLLOW_COMMA_in_expression4948 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_assignmentExpression_in_expression4952 = new BitSet(new long[]{0x0000000000000002L,0x0000000000004000L});
-    public static final BitSet FOLLOW_assignmentExpressionNoIn_in_expressionNoIn4989 = new BitSet(new long[]{0x0000000000000002L,0x0000000000004000L});
-    public static final BitSet FOLLOW_COMMA_in_expressionNoIn4993 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_assignmentExpressionNoIn_in_expressionNoIn4997 = new BitSet(new long[]{0x0000000000000002L,0x0000000000004000L});
-    public static final BitSet FOLLOW_SEMIC_in_semic5048 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_EOF_in_semic5053 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_RBRACE_in_semic5058 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_EOL_in_semic5065 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_MultiLineComment_in_semic5069 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_block_in_statement5098 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_statementTail_in_statement5103 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_variableStatement_in_statementTail5115 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_emptyStatement_in_statementTail5120 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_expressionStatement_in_statementTail5125 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ifStatement_in_statementTail5130 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_iterationStatement_in_statementTail5135 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_continueStatement_in_statementTail5140 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_breakStatement_in_statementTail5145 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_returnStatement_in_statementTail5150 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_withStatement_in_statementTail5155 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_labelledStatement_in_statementTail5160 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_switchStatement_in_statementTail5165 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_throwStatement_in_statementTail5170 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_tryStatement_in_statementTail5175 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_constStatement_in_statementTail5180 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_namespaceStatement_in_statementTail5185 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LBRACE_in_block5200 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x00000018198025C0L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_statement_in_block5202 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x00000018198025C0L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_RBRACE_in_block5205 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VAR_in_variableStatement5234 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_variableDeclaration_in_variableStatement5236 = new BitSet(new long[]{0x0000000000000000L,0x0000000000006080L,0x0000060000000000L});
-    public static final BitSet FOLLOW_COMMA_in_variableStatement5240 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_variableDeclaration_in_variableStatement5242 = new BitSet(new long[]{0x0000000000000000L,0x0000000000006080L,0x0000060000000000L});
-    public static final BitSet FOLLOW_semic_in_variableStatement5247 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_identifier_in_variableDeclaration5270 = new BitSet(new long[]{0x0000000000000002L,0x0000020000000000L});
-    public static final BitSet FOLLOW_ASSIGN_in_variableDeclaration5274 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_assignmentExpression_in_variableDeclaration5277 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_identifier_in_variableDeclarationNoIn5292 = new BitSet(new long[]{0x0000000000000002L,0x0000020000000000L});
-    public static final BitSet FOLLOW_ASSIGN_in_variableDeclarationNoIn5296 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_assignmentExpressionNoIn_in_variableDeclarationNoIn5299 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_CONST_in_constStatement5314 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_variableDeclaration_in_constStatement5316 = new BitSet(new long[]{0x0000000000000000L,0x0000000000006080L,0x0000060000000000L});
-    public static final BitSet FOLLOW_COMMA_in_constStatement5320 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_variableDeclaration_in_constStatement5322 = new BitSet(new long[]{0x0000000000000000L,0x0000000000006080L,0x0000060000000000L});
-    public static final BitSet FOLLOW_semic_in_constStatement5327 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_SEMIC_in_emptyStatement5357 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_expression_in_expressionStatement5376 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x0000060000000000L});
-    public static final BitSet FOLLOW_semic_in_expressionStatement5378 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_IF_in_ifStatement5396 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_LPAREN_in_ifStatement5398 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_expression_in_ifStatement5400 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_RPAREN_in_ifStatement5402 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x0000001819802540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_statement_in_ifStatement5404 = new BitSet(new long[]{0x0000000000004002L});
-    public static final BitSet FOLLOW_ELSE_in_ifStatement5410 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x0000001819802540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_statement_in_ifStatement5412 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_doStatement_in_iterationStatement5445 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_whileStatement_in_iterationStatement5450 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_forEachStatement_in_iterationStatement5455 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_forStatement_in_iterationStatement5460 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DO_in_doStatement5472 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x0000001819802540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_statement_in_doStatement5474 = new BitSet(new long[]{0x0000000080000000L});
-    public static final BitSet FOLLOW_WHILE_in_doStatement5476 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_LPAREN_in_doStatement5478 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_expression_in_doStatement5480 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_RPAREN_in_doStatement5482 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x0000060000000000L});
-    public static final BitSet FOLLOW_semic_in_doStatement5484 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_WHILE_in_whileStatement5509 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_LPAREN_in_whileStatement5512 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_expression_in_whileStatement5515 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_RPAREN_in_whileStatement5517 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x0000001819802540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_statement_in_whileStatement5520 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FOR_in_forEachStatement5535 = new BitSet(new long[]{0x0000000000020000L});
-    public static final BitSet FOLLOW_EACH_in_forEachStatement5537 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_LPAREN_in_forEachStatement5539 = new BitSet(new long[]{0x0000006E72461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_forEachControl_in_forEachStatement5541 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_RPAREN_in_forEachStatement5543 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x0000001819802540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_statement_in_forEachStatement5545 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_forControlVar_in_forEachControl5572 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_forControlExpression_in_forEachControl5578 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FOR_in_forStatement5590 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_LPAREN_in_forStatement5593 = new BitSet(new long[]{0x0000006E72461070L,0x0000001819802540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_forControl_in_forStatement5596 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_RPAREN_in_forStatement5598 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x0000001819802540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_statement_in_forStatement5601 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_forControlVar_in_forControl5612 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_forControlExpression_in_forControl5617 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_forControlSemic_in_forControl5622 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VAR_in_forControlVar5633 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_variableDeclarationNoIn_in_forControlVar5635 = new BitSet(new long[]{0x0000000000100000L,0x0000000000006000L});
-    public static final BitSet FOLLOW_IN_in_forControlVar5647 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_expression_in_forControlVar5649 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_COMMA_in_forControlVar5695 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_variableDeclarationNoIn_in_forControlVar5697 = new BitSet(new long[]{0x0000000000000000L,0x0000000000006000L});
-    public static final BitSet FOLLOW_SEMIC_in_forControlVar5702 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819802540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_expression_in_forControlVar5706 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
-    public static final BitSet FOLLOW_SEMIC_in_forControlVar5709 = new BitSet(new long[]{0x0000006E52461072L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_expression_in_forControlVar5713 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_expressionNoIn_in_forControlExpression5779 = new BitSet(new long[]{0x0000000000100000L,0x0000000000002000L});
-    public static final BitSet FOLLOW_IN_in_forControlExpression5794 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_expression_in_forControlExpression5798 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_SEMIC_in_forControlExpression5844 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819802540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_expression_in_forControlExpression5848 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
-    public static final BitSet FOLLOW_SEMIC_in_forControlExpression5851 = new BitSet(new long[]{0x0000006E52461072L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_expression_in_forControlExpression5855 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_SEMIC_in_forControlSemic5914 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819802540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_expression_in_forControlSemic5918 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
-    public static final BitSet FOLLOW_SEMIC_in_forControlSemic5921 = new BitSet(new long[]{0x0000006E52461072L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_expression_in_forControlSemic5925 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_CONTINUE_in_continueStatement5979 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x0008060000000000L});
-    public static final BitSet FOLLOW_Identifier_in_continueStatement5984 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x0000060000000000L});
-    public static final BitSet FOLLOW_semic_in_continueStatement5987 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_BREAK_in_breakStatement6006 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x0008060000000000L});
-    public static final BitSet FOLLOW_Identifier_in_breakStatement6011 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x0000060000000000L});
-    public static final BitSet FOLLOW_semic_in_breakStatement6014 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_RETURN_in_returnStatement6033 = new BitSet(new long[]{0x0000006E52461070L,0x00000018198025C0L,0x0E28360000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_expression_in_returnStatement6038 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x0000060000000000L});
-    public static final BitSet FOLLOW_semic_in_returnStatement6041 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_WITH_in_withStatement6058 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_LPAREN_in_withStatement6061 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_expression_in_withStatement6064 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_RPAREN_in_withStatement6066 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x0000001819802540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_statement_in_withStatement6069 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_SWITCH_in_switchStatement6090 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_LPAREN_in_switchStatement6092 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_expression_in_switchStatement6094 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_RPAREN_in_switchStatement6096 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
-    public static final BitSet FOLLOW_LBRACE_in_switchStatement6098 = new BitSet(new long[]{0x0000000000000900L,0x0000000000000080L});
-    public static final BitSet FOLLOW_defaultClause_in_switchStatement6105 = new BitSet(new long[]{0x0000000000000900L,0x0000000000000080L});
-    public static final BitSet FOLLOW_caseClause_in_switchStatement6111 = new BitSet(new long[]{0x0000000000000900L,0x0000000000000080L});
-    public static final BitSet FOLLOW_RBRACE_in_switchStatement6116 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_CASE_in_caseClause6144 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_expression_in_caseClause6147 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
-    public static final BitSet FOLLOW_COLON_in_caseClause6149 = new BitSet(new long[]{0x0000106FFFCF3CF2L,0x0000001819802540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_statement_in_caseClause6152 = new BitSet(new long[]{0x0000106FFFCF3CF2L,0x0000001819802540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_DEFAULT_in_defaultClause6165 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
-    public static final BitSet FOLLOW_COLON_in_defaultClause6168 = new BitSet(new long[]{0x0000106FFFCF3CF2L,0x0000001819802540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_statement_in_defaultClause6171 = new BitSet(new long[]{0x0000106FFFCF3CF2L,0x0000001819802540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_identifier_in_labelledStatement6188 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
-    public static final BitSet FOLLOW_COLON_in_labelledStatement6190 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x0000001819802540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_statement_in_labelledStatement6192 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_THROW_in_throwStatement6223 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_expression_in_throwStatement6228 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x0000060000000000L});
-    public static final BitSet FOLLOW_semic_in_throwStatement6230 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_TRY_in_tryStatement6247 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
-    public static final BitSet FOLLOW_block_in_tryStatement6250 = new BitSet(new long[]{0x0000000000008200L});
-    public static final BitSet FOLLOW_catchClause_in_tryStatement6254 = new BitSet(new long[]{0x0000000000008202L});
-    public static final BitSet FOLLOW_finallyClause_in_tryStatement6257 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_finallyClause_in_tryStatement6262 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_CATCH_in_catchClause6276 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_LPAREN_in_catchClause6279 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_identifier_in_catchClause6282 = new BitSet(new long[]{0x0000000000080000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_catchFilter_in_catchClause6284 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_RPAREN_in_catchClause6287 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
-    public static final BitSet FOLLOW_block_in_catchClause6290 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_IF_in_catchFilter6303 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_instanceofExpression_in_catchFilter6306 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_identifier_in_instanceofExpression6321 = new BitSet(new long[]{0x0000000000200000L});
-    public static final BitSet FOLLOW_INSTANCEOF_in_instanceofExpression6323 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_identifier_in_instanceofExpression6326 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FINALLY_in_finallyClause6339 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
-    public static final BitSet FOLLOW_block_in_finallyClause6342 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FUNCTION_in_functionDeclaration6363 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_identifier_in_functionDeclaration6367 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_formalParameterList_in_functionDeclaration6369 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
-    public static final BitSet FOLLOW_functionBody_in_functionDeclaration6371 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FUNCTION_in_functionExpression6398 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000100L,0x0008000000000000L});
-    public static final BitSet FOLLOW_identifier_in_functionExpression6402 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_formalParameterList_in_functionExpression6405 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
-    public static final BitSet FOLLOW_functionBody_in_functionExpression6407 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LPAREN_in_formalParameterList6435 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000200L,0x0008000000000000L});
-    public static final BitSet FOLLOW_identifier_in_formalParameterList6441 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004200L});
-    public static final BitSet FOLLOW_COMMA_in_formalParameterList6445 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_identifier_in_formalParameterList6449 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004200L});
-    public static final BitSet FOLLOW_RPAREN_in_formalParameterList6457 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LBRACE_in_functionBody6483 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x00000018198025C0L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_sourceElement_in_functionBody6485 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x00000018198025C0L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_RBRACE_in_functionBody6488 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_GET_in_getMethodDeclaration6518 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_identifier_in_getMethodDeclaration6522 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_LPAREN_in_getMethodDeclaration6524 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_RPAREN_in_getMethodDeclaration6526 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
-    public static final BitSet FOLLOW_functionBody_in_getMethodDeclaration6528 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_SET_in_setMethodDeclaration6556 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_identifier_in_setMethodDeclaration6560 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_LPAREN_in_setMethodDeclaration6562 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_identifier_in_setMethodDeclaration6566 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_RPAREN_in_setMethodDeclaration6568 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
-    public static final BitSet FOLLOW_functionBody_in_setMethodDeclaration6570 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_sourceElement_in_program6605 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x0000001819802540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_EOF_in_program6608 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_functionDeclaration_in_sourceElement6637 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_statement_in_sourceElement6642 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_conditionalExpressionNoIn_in_assignmentExpressionNoIn4940 = new BitSet(new long[]{0x0000000000000002L,0x002FFE0000000000L});
+    public static final BitSet FOLLOW_assignmentOperator_in_assignmentExpressionNoIn4947 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_assignmentExpressionNoIn_in_assignmentExpressionNoIn4950 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_assignmentExpression_in_expression4972 = new BitSet(new long[]{0x0000000000000002L,0x0000000000004000L});
+    public static final BitSet FOLLOW_COMMA_in_expression4976 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_assignmentExpression_in_expression4980 = new BitSet(new long[]{0x0000000000000002L,0x0000000000004000L});
+    public static final BitSet FOLLOW_assignmentExpressionNoIn_in_expressionNoIn5017 = new BitSet(new long[]{0x0000000000000002L,0x0000000000004000L});
+    public static final BitSet FOLLOW_COMMA_in_expressionNoIn5021 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_assignmentExpressionNoIn_in_expressionNoIn5025 = new BitSet(new long[]{0x0000000000000002L,0x0000000000004000L});
+    public static final BitSet FOLLOW_SEMIC_in_semic5076 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_EOF_in_semic5081 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RBRACE_in_semic5086 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_EOL_in_semic5093 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_MultiLineComment_in_semic5097 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_block_in_statement5126 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_statementTail_in_statement5131 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_variableStatement_in_statementTail5143 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_emptyStatement_in_statementTail5148 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_expressionStatement_in_statementTail5153 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ifStatement_in_statementTail5158 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_iterationStatement_in_statementTail5163 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_continueStatement_in_statementTail5168 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_breakStatement_in_statementTail5173 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_returnStatement_in_statementTail5178 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_withStatement_in_statementTail5183 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_labelledStatement_in_statementTail5188 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_switchStatement_in_statementTail5193 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_throwStatement_in_statementTail5198 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_tryStatement_in_statementTail5203 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_constStatement_in_statementTail5208 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_namespaceStatement_in_statementTail5213 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LBRACE_in_block5228 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x00000018198025C0L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_statement_in_block5230 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x00000018198025C0L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_RBRACE_in_block5233 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VAR_in_variableStatement5262 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0010000000000000L});
+    public static final BitSet FOLLOW_variableDeclaration_in_variableStatement5264 = new BitSet(new long[]{0x0000000000000000L,0x0000000000006080L,0x00000C0000000000L});
+    public static final BitSet FOLLOW_COMMA_in_variableStatement5268 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0010000000000000L});
+    public static final BitSet FOLLOW_variableDeclaration_in_variableStatement5270 = new BitSet(new long[]{0x0000000000000000L,0x0000000000006080L,0x00000C0000000000L});
+    public static final BitSet FOLLOW_semic_in_variableStatement5275 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_identifier_in_variableDeclaration5298 = new BitSet(new long[]{0x0000000000000002L,0x0000020000000000L});
+    public static final BitSet FOLLOW_ASSIGN_in_variableDeclaration5302 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_assignmentExpression_in_variableDeclaration5305 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_identifier_in_variableDeclarationNoIn5320 = new BitSet(new long[]{0x0000000000000002L,0x0000020000000000L});
+    public static final BitSet FOLLOW_ASSIGN_in_variableDeclarationNoIn5324 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_assignmentExpressionNoIn_in_variableDeclarationNoIn5327 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_CONST_in_constStatement5342 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0010000000000000L});
+    public static final BitSet FOLLOW_variableDeclaration_in_constStatement5344 = new BitSet(new long[]{0x0000000000000000L,0x0000000000006080L,0x00000C0000000000L});
+    public static final BitSet FOLLOW_COMMA_in_constStatement5348 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0010000000000000L});
+    public static final BitSet FOLLOW_variableDeclaration_in_constStatement5350 = new BitSet(new long[]{0x0000000000000000L,0x0000000000006080L,0x00000C0000000000L});
+    public static final BitSet FOLLOW_semic_in_constStatement5355 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_SEMIC_in_emptyStatement5385 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_expression_in_expressionStatement5404 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x00000C0000000000L});
+    public static final BitSet FOLLOW_semic_in_expressionStatement5406 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_IF_in_ifStatement5424 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
+    public static final BitSet FOLLOW_LPAREN_in_ifStatement5426 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_expression_in_ifStatement5428 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_RPAREN_in_ifStatement5430 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x0000001819802540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_statement_in_ifStatement5432 = new BitSet(new long[]{0x0000000000004002L});
+    public static final BitSet FOLLOW_ELSE_in_ifStatement5438 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x0000001819802540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_statement_in_ifStatement5440 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_doStatement_in_iterationStatement5473 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_whileStatement_in_iterationStatement5478 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_forEachStatement_in_iterationStatement5483 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_forStatement_in_iterationStatement5488 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DO_in_doStatement5500 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x0000001819802540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_statement_in_doStatement5502 = new BitSet(new long[]{0x0000000080000000L});
+    public static final BitSet FOLLOW_WHILE_in_doStatement5504 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
+    public static final BitSet FOLLOW_LPAREN_in_doStatement5506 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_expression_in_doStatement5508 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_RPAREN_in_doStatement5510 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x00000C0000000000L});
+    public static final BitSet FOLLOW_semic_in_doStatement5512 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_WHILE_in_whileStatement5537 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
+    public static final BitSet FOLLOW_LPAREN_in_whileStatement5540 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_expression_in_whileStatement5543 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_RPAREN_in_whileStatement5545 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x0000001819802540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_statement_in_whileStatement5548 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FOR_in_forEachStatement5563 = new BitSet(new long[]{0x0000000000020000L});
+    public static final BitSet FOLLOW_EACH_in_forEachStatement5565 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
+    public static final BitSet FOLLOW_LPAREN_in_forEachStatement5567 = new BitSet(new long[]{0x0000006E72461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_forEachControl_in_forEachStatement5569 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_RPAREN_in_forEachStatement5571 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x0000001819802540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_statement_in_forEachStatement5573 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_forControlVar_in_forEachControl5600 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_forControlExpression_in_forEachControl5606 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FOR_in_forStatement5618 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
+    public static final BitSet FOLLOW_LPAREN_in_forStatement5621 = new BitSet(new long[]{0x0000006E72461070L,0x0000001819802540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_forControl_in_forStatement5624 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_RPAREN_in_forStatement5626 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x0000001819802540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_statement_in_forStatement5629 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_forControlVar_in_forControl5640 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_forControlExpression_in_forControl5645 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_forControlSemic_in_forControl5650 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VAR_in_forControlVar5661 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0010000000000000L});
+    public static final BitSet FOLLOW_variableDeclarationNoIn_in_forControlVar5663 = new BitSet(new long[]{0x0000000000100000L,0x0000000000006000L});
+    public static final BitSet FOLLOW_IN_in_forControlVar5675 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_expression_in_forControlVar5677 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_COMMA_in_forControlVar5723 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0010000000000000L});
+    public static final BitSet FOLLOW_variableDeclarationNoIn_in_forControlVar5725 = new BitSet(new long[]{0x0000000000000000L,0x0000000000006000L});
+    public static final BitSet FOLLOW_SEMIC_in_forControlVar5730 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819802540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_expression_in_forControlVar5734 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
+    public static final BitSet FOLLOW_SEMIC_in_forControlVar5737 = new BitSet(new long[]{0x0000006E52461072L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_expression_in_forControlVar5741 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_expressionNoIn_in_forControlExpression5807 = new BitSet(new long[]{0x0000000000100000L,0x0000000000002000L});
+    public static final BitSet FOLLOW_IN_in_forControlExpression5822 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_expression_in_forControlExpression5826 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_SEMIC_in_forControlExpression5872 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819802540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_expression_in_forControlExpression5876 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
+    public static final BitSet FOLLOW_SEMIC_in_forControlExpression5879 = new BitSet(new long[]{0x0000006E52461072L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_expression_in_forControlExpression5883 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_SEMIC_in_forControlSemic5942 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819802540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_expression_in_forControlSemic5946 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
+    public static final BitSet FOLLOW_SEMIC_in_forControlSemic5949 = new BitSet(new long[]{0x0000006E52461072L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_expression_in_forControlSemic5953 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_CONTINUE_in_continueStatement6007 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x00100C0000000000L});
+    public static final BitSet FOLLOW_Identifier_in_continueStatement6012 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x00000C0000000000L});
+    public static final BitSet FOLLOW_semic_in_continueStatement6015 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_BREAK_in_breakStatement6034 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x00100C0000000000L});
+    public static final BitSet FOLLOW_Identifier_in_breakStatement6039 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x00000C0000000000L});
+    public static final BitSet FOLLOW_semic_in_breakStatement6042 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RETURN_in_returnStatement6061 = new BitSet(new long[]{0x0000006E52461070L,0x00000018198025C0L,0x1C506C0000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_expression_in_returnStatement6066 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x00000C0000000000L});
+    public static final BitSet FOLLOW_semic_in_returnStatement6069 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_WITH_in_withStatement6086 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
+    public static final BitSet FOLLOW_LPAREN_in_withStatement6089 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_expression_in_withStatement6092 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_RPAREN_in_withStatement6094 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x0000001819802540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_statement_in_withStatement6097 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_SWITCH_in_switchStatement6118 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
+    public static final BitSet FOLLOW_LPAREN_in_switchStatement6120 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_expression_in_switchStatement6122 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_RPAREN_in_switchStatement6124 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_LBRACE_in_switchStatement6126 = new BitSet(new long[]{0x0000000000000900L,0x0000000000000080L});
+    public static final BitSet FOLLOW_defaultClause_in_switchStatement6133 = new BitSet(new long[]{0x0000000000000900L,0x0000000000000080L});
+    public static final BitSet FOLLOW_caseClause_in_switchStatement6139 = new BitSet(new long[]{0x0000000000000900L,0x0000000000000080L});
+    public static final BitSet FOLLOW_RBRACE_in_switchStatement6144 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_CASE_in_caseClause6172 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_expression_in_caseClause6175 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
+    public static final BitSet FOLLOW_COLON_in_caseClause6177 = new BitSet(new long[]{0x0000106FFFCF3CF2L,0x0000001819802540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_statement_in_caseClause6180 = new BitSet(new long[]{0x0000106FFFCF3CF2L,0x0000001819802540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_DEFAULT_in_defaultClause6193 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
+    public static final BitSet FOLLOW_COLON_in_defaultClause6196 = new BitSet(new long[]{0x0000106FFFCF3CF2L,0x0000001819802540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_statement_in_defaultClause6199 = new BitSet(new long[]{0x0000106FFFCF3CF2L,0x0000001819802540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_identifier_in_labelledStatement6216 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
+    public static final BitSet FOLLOW_COLON_in_labelledStatement6218 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x0000001819802540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_statement_in_labelledStatement6220 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_THROW_in_throwStatement6251 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_expression_in_throwStatement6256 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x00000C0000000000L});
+    public static final BitSet FOLLOW_semic_in_throwStatement6258 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_TRY_in_tryStatement6275 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_block_in_tryStatement6278 = new BitSet(new long[]{0x0000000000008200L});
+    public static final BitSet FOLLOW_catchClause_in_tryStatement6282 = new BitSet(new long[]{0x0000000000008202L});
+    public static final BitSet FOLLOW_finallyClause_in_tryStatement6285 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_finallyClause_in_tryStatement6290 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_CATCH_in_catchClause6304 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
+    public static final BitSet FOLLOW_LPAREN_in_catchClause6307 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0010000000000000L});
+    public static final BitSet FOLLOW_identifier_in_catchClause6310 = new BitSet(new long[]{0x0000000000080000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_catchFilter_in_catchClause6312 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_RPAREN_in_catchClause6315 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_block_in_catchClause6318 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_IF_in_catchFilter6331 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0010000000000000L});
+    public static final BitSet FOLLOW_instanceofExpression_in_catchFilter6334 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_identifier_in_instanceofExpression6349 = new BitSet(new long[]{0x0000000000200000L});
+    public static final BitSet FOLLOW_INSTANCEOF_in_instanceofExpression6351 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0010000000000000L});
+    public static final BitSet FOLLOW_identifier_in_instanceofExpression6354 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FINALLY_in_finallyClause6367 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_block_in_finallyClause6370 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FUNCTION_in_functionDeclaration6391 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0010000000000000L});
+    public static final BitSet FOLLOW_identifier_in_functionDeclaration6395 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
+    public static final BitSet FOLLOW_formalParameterList_in_functionDeclaration6397 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_functionBody_in_functionDeclaration6399 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FUNCTION_in_functionExpression6426 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000100L,0x0010000000000000L});
+    public static final BitSet FOLLOW_identifier_in_functionExpression6430 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
+    public static final BitSet FOLLOW_formalParameterList_in_functionExpression6433 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_functionBody_in_functionExpression6435 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LPAREN_in_formalParameterList6463 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000200L,0x0010000000000000L});
+    public static final BitSet FOLLOW_identifier_in_formalParameterList6469 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004200L});
+    public static final BitSet FOLLOW_COMMA_in_formalParameterList6473 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0010000000000000L});
+    public static final BitSet FOLLOW_identifier_in_formalParameterList6477 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004200L});
+    public static final BitSet FOLLOW_RPAREN_in_formalParameterList6485 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LBRACE_in_functionBody6511 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x00000018198025C0L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_sourceElement_in_functionBody6513 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x00000018198025C0L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_RBRACE_in_functionBody6516 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_GET_in_getMethodDeclaration6546 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0010000000000000L});
+    public static final BitSet FOLLOW_identifier_in_getMethodDeclaration6550 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
+    public static final BitSet FOLLOW_LPAREN_in_getMethodDeclaration6552 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_RPAREN_in_getMethodDeclaration6554 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_functionBody_in_getMethodDeclaration6556 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_SET_in_setMethodDeclaration6584 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0010000000000000L});
+    public static final BitSet FOLLOW_identifier_in_setMethodDeclaration6588 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
+    public static final BitSet FOLLOW_LPAREN_in_setMethodDeclaration6590 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0010000000000000L});
+    public static final BitSet FOLLOW_identifier_in_setMethodDeclaration6594 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_RPAREN_in_setMethodDeclaration6596 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_functionBody_in_setMethodDeclaration6598 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_sourceElement_in_program6633 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x0000001819802540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_EOF_in_program6636 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_functionDeclaration_in_sourceElement6665 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_statement_in_sourceElement6670 = new BitSet(new long[]{0x0000000000000002L});
 
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.dltk.javascript.formatter/src/org/eclipse/dltk/javascript/parser/JavaScriptTokenFilter.java b/plugins/org.eclipse.dltk.javascript.formatter/src/org/eclipse/dltk/javascript/parser/JavaScriptTokenFilter.java
index c87454a..c1b5945 100644
--- a/plugins/org.eclipse.dltk.javascript.formatter/src/org/eclipse/dltk/javascript/parser/JavaScriptTokenFilter.java
+++ b/plugins/org.eclipse.dltk.javascript.formatter/src/org/eclipse/dltk/javascript/parser/JavaScriptTokenFilter.java
@@ -379,10 +379,7 @@
 
 			}
 
-			Token newToken = new JavaScriptToken(source.get(i));
-			// newToken.setTokenIndex(tokenIndex++);
-
-			tokens.add(newToken);
+			tokens.add(tk);
 		}
 		return tokens;
 	}
diff --git a/plugins/org.eclipse.dltk.javascript.parser/src/org/eclipse/dltk/javascript/parser/JS.g b/plugins/org.eclipse.dltk.javascript.parser/src/org/eclipse/dltk/javascript/parser/JS.g
index 8301bad..c2a007a 100644
--- a/plugins/org.eclipse.dltk.javascript.parser/src/org/eclipse/dltk/javascript/parser/JS.g
+++ b/plugins/org.eclipse.dltk.javascript.parser/src/org/eclipse/dltk/javascript/parser/JS.g
@@ -584,10 +584,14 @@
 	: '\u2029'
 	;
 
-fragment LineTerminator
+fragment LineTerminatorChar
 	: CR | LF | LS | PS
 	;
-		
+
+fragment LineTerminator
+	: (CR LF?) | LF | LS | PS
+	;
+
 EOL
 	: ( ( CR LF? ) | LF | LS | PS ) { $channel = HIDDEN; }
 	;
@@ -600,7 +604,7 @@
 	;
 
 SingleLineComment
-	: '//' ( ~( LineTerminator ) )* { $channel = HIDDEN; }
+	: '//' ( ~( LineTerminatorChar ) )* { $channel = HIDDEN; }
 	;
 
 // $>
@@ -892,7 +896,7 @@
 */
 	
 fragment CharacterEscapeSequence
-	: ~( DecimalDigit | 'x' | 'u' | LineTerminator ) // Concatenation of SingleEscapeCharacter and NonEscapeCharacter
+	: ~( DecimalDigit | 'x' | 'u' | LineTerminatorChar ) // Concatenation of SingleEscapeCharacter and NonEscapeCharacter
 	;
 
 fragment ZeroToThree
@@ -927,8 +931,8 @@
 	;
 
 StringLiteral
-	: SQUOTE ( ~( SQUOTE | BSLASH | LineTerminator ) | EscapeSequence )* SQUOTE
-	| DQUOTE ( ~( DQUOTE | BSLASH | LineTerminator ) | EscapeSequence )* DQUOTE
+	: SQUOTE ( ~( SQUOTE | BSLASH | LineTerminatorChar ) | EscapeSequence )* SQUOTE
+	| DQUOTE ( ~( DQUOTE | BSLASH | LineTerminatorChar ) | EscapeSequence )* DQUOTE
 	;
 	
 
@@ -937,16 +941,16 @@
 // $<	Regular expression literals (7.8.5)
 
 fragment BackslashSequence
-	: BSLASH ~( LineTerminator )
+	: BSLASH ~( LineTerminatorChar )
 	;
 
 fragment RegularExpressionFirstChar
-	: ~ ( LineTerminator | MUL | BSLASH | DIV )
+	: ~ ( LineTerminatorChar | MUL | BSLASH | DIV )
 	| BackslashSequence
 	;
 
 fragment RegularExpressionChar
-	: ~ ( LineTerminator | BSLASH | DIV )
+	: ~ ( LineTerminatorChar | BSLASH | DIV )
 	| BackslashSequence
 	;
 
diff --git a/plugins/org.eclipse.dltk.javascript.parser/src/org/eclipse/dltk/javascript/parser/JSLexer.java b/plugins/org.eclipse.dltk.javascript.parser/src/org/eclipse/dltk/javascript/parser/JSLexer.java
index 03344b3..3cea5ad 100644
--- a/plugins/org.eclipse.dltk.javascript.parser/src/org/eclipse/dltk/javascript/parser/JSLexer.java
+++ b/plugins/org.eclipse.dltk.javascript.parser/src/org/eclipse/dltk/javascript/parser/JSLexer.java
@@ -1,4 +1,4 @@
-// $ANTLR 3.0.1 JS.g 2009-09-02 10:05:09
+// $ANTLR 3.0.1 JS.g 2009-09-03 19:32:37
 
 package org.eclipse.dltk.javascript.parser;
 
@@ -13,7 +13,7 @@
     public static final int FUNCTION=18;
     public static final int SHR=94;
     public static final int VT=158;
-    public static final int RegularExpressionChar=196;
+    public static final int RegularExpressionChar=197;
     public static final int CDATA=36;
     public static final int LOCALNAME=134;
     public static final int XRCLOSE=121;
@@ -21,6 +21,7 @@
     public static final int MOD=90;
     public static final int XHOPEN=123;
     public static final int CONST=44;
+    public static final int LineTerminatorChar=168;
     public static final int DQUOTE=155;
     public static final int DO=13;
     public static final int NOT=99;
@@ -33,10 +34,10 @@
     public static final int FINAL=50;
     public static final int FORSTEP=139;
     public static final int IMPORT=54;
-    public static final int EOL=169;
+    public static final int EOL=170;
     public static final int XLCLOSE=120;
-    public static final int PropertyIdentifierSymbols=180;
-    public static final int OctalDigit=182;
+    public static final int PropertyIdentifierSymbols=181;
+    public static final int OctalDigit=183;
     public static final int RETURN=23;
     public static final int THIS=25;
     public static final int ARGS=128;
@@ -56,23 +57,23 @@
     public static final int INT=55;
     public static final int DEFAULT_XML_NAMESPACE=143;
     public static final int FF=159;
-    public static final int OctalEscapeSequence=190;
-    public static final int RegularExpressionFirstChar=195;
+    public static final int OctalEscapeSequence=191;
+    public static final int RegularExpressionFirstChar=196;
     public static final int TYPEOF=28;
     public static final int GT=80;
     public static final int CALL=135;
-    public static final int CharacterEscapeSequence=188;
+    public static final int CharacterEscapeSequence=189;
     public static final int XML=153;
     public static final int LAND=101;
     public static final int PINC=151;
     public static final int PROTECTED=61;
     public static final int LBRACK=74;
     public static final int LBRACE=70;
-    public static final int RegularExpressionLiteral=181;
+    public static final int RegularExpressionLiteral=182;
     public static final int SUB=88;
     public static final int FLOAT=51;
-    public static final int DecimalIntegerLiteral=184;
-    public static final int HexDigit=174;
+    public static final int DecimalIntegerLiteral=185;
+    public static final int HexDigit=175;
     public static final int LPAREN=72;
     public static final int AT=125;
     public static final int IMPLEMENTS=53;
@@ -81,29 +82,29 @@
     public static final int XCCLOSE=119;
     public static final int SHRASS=111;
     public static final int PS=167;
-    public static final int MultiLineComment=170;
+    public static final int MultiLineComment=171;
     public static final int ADD=87;
-    public static final int ZeroToThree=189;
+    public static final int ZeroToThree=190;
     public static final int ITEM=144;
-    public static final int XMLLiteral=197;
-    public static final int UnicodeEscapeSequence=192;
+    public static final int XMLLiteral=198;
+    public static final int UnicodeEscapeSequence=193;
     public static final int SHUASS=112;
     public static final int SET=34;
     public static final int SHORT=63;
     public static final int INSTANCEOF=21;
     public static final int SQUOTE=156;
-    public static final int Tokens=198;
+    public static final int Tokens=199;
     public static final int SAME=85;
     public static final int XHCLOSE=124;
-    public static final int StringLiteral=172;
+    public static final int StringLiteral=173;
     public static final int COLON=104;
     public static final int PAREXPR=149;
     public static final int ENUM=47;
+    public static final int HexIntegerLiteral=188;
     public static final int NBSP=161;
-    public static final int HexIntegerLiteral=187;
     public static final int SP=160;
     public static final int BLOCK=130;
-    public static final int LineTerminator=168;
+    public static final int LineTerminator=169;
     public static final int INTERFACE=56;
     public static final int DIV=116;
     public static final int LONG=57;
@@ -112,19 +113,19 @@
     public static final int LOR=102;
     public static final int LT=79;
     public static final int WHILE=31;
-    public static final int BackslashSequence=194;
+    public static final int BackslashSequence=195;
     public static final int LS=166;
     public static final int CASE=8;
     public static final int NEW=22;
     public static final int CHAR=42;
-    public static final int DecimalDigit=176;
+    public static final int DecimalDigit=177;
     public static final int BYFIELD=131;
     public static final int BREAK=7;
-    public static final int Identifier=179;
+    public static final int Identifier=180;
     public static final int WXML=37;
     public static final int POS=152;
     public static final int DOUBLE=46;
-    public static final int ExponentPart=183;
+    public static final int ExponentPart=184;
     public static final int VAR=29;
     public static final int VOID=30;
     public static final int SUPER=65;
@@ -139,14 +140,14 @@
     public static final int DELETE=12;
     public static final int XCOPEN=118;
     public static final int MUL=89;
-    public static final int IdentifierStartASCII=175;
+    public static final int IdentifierStartASCII=176;
     public static final int TRY=27;
     public static final int NAMESPACE=38;
     public static final int SHLASS=110;
     public static final int COLONCOLON=127;
     public static final int USP=162;
     public static final int ANDASS=113;
-    public static final int IdentifierNameASCIIStart=178;
+    public static final int IdentifierNameASCIIStart=179;
     public static final int QUE=103;
     public static final int OR=97;
     public static final int SETTER=142;
@@ -155,17 +156,17 @@
     public static final int PDEC=150;
     public static final int CATCH=9;
     public static final int FALSE=6;
-    public static final int EscapeSequence=193;
+    public static final int EscapeSequence=194;
     public static final int THROW=26;
     public static final int MULASS=108;
-    public static final int XmlAttribute=173;
+    public static final int XmlAttribute=174;
     public static final int DEC=92;
-    public static final int OctalIntegerLiteral=186;
+    public static final int OctalIntegerLiteral=187;
     public static final int CLASS=43;
-    public static final int HexEscapeSequence=191;
+    public static final int HexEscapeSequence=192;
     public static final int ORASS=114;
     public static final int NAMEDVALUE=146;
-    public static final int SingleLineComment=171;
+    public static final int SingleLineComment=172;
     public static final int GTE=82;
     public static final int FOR=16;
     public static final int DOTDOT=126;
@@ -185,7 +186,7 @@
     public static final int FORITER=138;
     public static final int MODASS=109;
     public static final int DOT=76;
-    public static final int IdentifierPart=177;
+    public static final int IdentifierPart=178;
     public static final int WITH=32;
     public static final int BYTE=41;
     public static final int XOR=98;
@@ -195,7 +196,7 @@
     public static final int DEFAULT=11;
     public static final int ALLCHILDREN=133;
     public static final int TAB=157;
-    public static final int DecimalLiteral=185;
+    public static final int DecimalLiteral=186;
     public static final int TRUE=5;
     public static final int NEQ=84;
     public static final int FINALLY=15;
@@ -205,9 +206,9 @@
     public static final int EXTENDS=49;
     public static final int BSLASH=154;
     public static final int LF=164;
-
+    
     private Token last;
-
+    
     final static boolean isIdentifierKeyword(int token)
     {
     	return token == WXML
@@ -216,7 +217,7 @@
       		|| token == EACH
       		|| token == NAMESPACE; 
     }
-
+    
     private final boolean areRegularExpressionsEnabled()
     {
     	if (last == null)
@@ -321,7 +322,7 @@
     {
     	return Character.isJavaIdentifierStart((char)ch);
     }
-
+    
     public Token nextToken()
     {
     	Token result = super.nextToken();
@@ -331,7 +332,7 @@
     	}
     	return result;		
     }
-
+    
     @Override
     public void emitErrorMessage(String msg) {
     // IGNORE
@@ -2948,8 +2949,8 @@
     }
     // $ANTLR end PS
 
-    // $ANTLR start LineTerminator
-    public final void mLineTerminator() throws RecognitionException {
+    // $ANTLR start LineTerminatorChar
+    public final void mLineTerminatorChar() throws RecognitionException {
         try {
             // JS.g:588:2: ( CR | LF | LS | PS )
             // JS.g:
@@ -2971,16 +2972,12 @@
         finally {
         }
     }
-    // $ANTLR end LineTerminator
+    // $ANTLR end LineTerminatorChar
 
-    // $ANTLR start EOL
-    public final void mEOL() throws RecognitionException {
+    // $ANTLR start LineTerminator
+    public final void mLineTerminator() throws RecognitionException {
         try {
-            int _type = EOL;
-            // JS.g:592:2: ( ( ( CR ( LF )? ) | LF | LS | PS ) )
-            // JS.g:592:4: ( ( CR ( LF )? ) | LF | LS | PS )
-            {
-            // JS.g:592:4: ( ( CR ( LF )? ) | LF | LS | PS )
+            // JS.g:592:2: ( ( CR ( LF )? ) | LF | LS | PS )
             int alt3=4;
             switch ( input.LA(1) ) {
             case '\r':
@@ -3005,20 +3002,20 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("592:4: ( ( CR ( LF )? ) | LF | LS | PS )", 3, 0, input);
+                    new NoViableAltException("591:10: fragment LineTerminator : ( ( CR ( LF )? ) | LF | LS | PS );", 3, 0, input);
 
                 throw nvae;
             }
 
             switch (alt3) {
                 case 1 :
-                    // JS.g:592:6: ( CR ( LF )? )
+                    // JS.g:592:4: ( CR ( LF )? )
                     {
-                    // JS.g:592:6: ( CR ( LF )? )
-                    // JS.g:592:8: CR ( LF )?
+                    // JS.g:592:4: ( CR ( LF )? )
+                    // JS.g:592:5: CR ( LF )?
                     {
                     mCR(); 
-                    // JS.g:592:11: ( LF )?
+                    // JS.g:592:8: ( LF )?
                     int alt2=2;
                     int LA2_0 = input.LA(1);
 
@@ -3027,7 +3024,7 @@
                     }
                     switch (alt2) {
                         case 1 :
-                            // JS.g:592:11: LF
+                            // JS.g:592:8: LF
                             {
                             mLF(); 
 
@@ -3043,21 +3040,119 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:592:19: LF
+                    // JS.g:592:15: LF
                     {
                     mLF(); 
 
                     }
                     break;
                 case 3 :
-                    // JS.g:592:24: LS
+                    // JS.g:592:20: LS
                     {
                     mLS(); 
 
                     }
                     break;
                 case 4 :
-                    // JS.g:592:29: PS
+                    // JS.g:592:25: PS
+                    {
+                    mPS(); 
+
+                    }
+                    break;
+
+            }
+        }
+        finally {
+        }
+    }
+    // $ANTLR end LineTerminator
+
+    // $ANTLR start EOL
+    public final void mEOL() throws RecognitionException {
+        try {
+            int _type = EOL;
+            // JS.g:596:2: ( ( ( CR ( LF )? ) | LF | LS | PS ) )
+            // JS.g:596:4: ( ( CR ( LF )? ) | LF | LS | PS )
+            {
+            // JS.g:596:4: ( ( CR ( LF )? ) | LF | LS | PS )
+            int alt5=4;
+            switch ( input.LA(1) ) {
+            case '\r':
+                {
+                alt5=1;
+                }
+                break;
+            case '\n':
+                {
+                alt5=2;
+                }
+                break;
+            case '\u2028':
+                {
+                alt5=3;
+                }
+                break;
+            case '\u2029':
+                {
+                alt5=4;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("596:4: ( ( CR ( LF )? ) | LF | LS | PS )", 5, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt5) {
+                case 1 :
+                    // JS.g:596:6: ( CR ( LF )? )
+                    {
+                    // JS.g:596:6: ( CR ( LF )? )
+                    // JS.g:596:8: CR ( LF )?
+                    {
+                    mCR(); 
+                    // JS.g:596:11: ( LF )?
+                    int alt4=2;
+                    int LA4_0 = input.LA(1);
+
+                    if ( (LA4_0=='\n') ) {
+                        alt4=1;
+                    }
+                    switch (alt4) {
+                        case 1 :
+                            // JS.g:596:11: LF
+                            {
+                            mLF(); 
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // JS.g:596:19: LF
+                    {
+                    mLF(); 
+
+                    }
+                    break;
+                case 3 :
+                    // JS.g:596:24: LS
+                    {
+                    mLS(); 
+
+                    }
+                    break;
+                case 4 :
+                    // JS.g:596:29: PS
                     {
                     mPS(); 
 
@@ -3081,37 +3176,37 @@
     public final void mMultiLineComment() throws RecognitionException {
         try {
             int _type = MultiLineComment;
-            // JS.g:599:2: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            // JS.g:599:4: '/*' ( options {greedy=false; } : . )* '*/'
+            // JS.g:603:2: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // JS.g:603:4: '/*' ( options {greedy=false; } : . )* '*/'
             {
             match("/*"); 
 
-            // JS.g:599:9: ( options {greedy=false; } : . )*
-            loop4:
+            // JS.g:603:9: ( options {greedy=false; } : . )*
+            loop6:
             do {
-                int alt4=2;
-                int LA4_0 = input.LA(1);
+                int alt6=2;
+                int LA6_0 = input.LA(1);
 
-                if ( (LA4_0=='*') ) {
-                    int LA4_1 = input.LA(2);
+                if ( (LA6_0=='*') ) {
+                    int LA6_1 = input.LA(2);
 
-                    if ( (LA4_1=='/') ) {
-                        alt4=2;
+                    if ( (LA6_1=='/') ) {
+                        alt6=2;
                     }
-                    else if ( ((LA4_1>='\u0000' && LA4_1<='.')||(LA4_1>='0' && LA4_1<='\uFFFE')) ) {
-                        alt4=1;
+                    else if ( ((LA6_1>='\u0000' && LA6_1<='.')||(LA6_1>='0' && LA6_1<='\uFFFE')) ) {
+                        alt6=1;
                     }
 
 
                 }
-                else if ( ((LA4_0>='\u0000' && LA4_0<=')')||(LA4_0>='+' && LA4_0<='\uFFFE')) ) {
-                    alt4=1;
+                else if ( ((LA6_0>='\u0000' && LA6_0<=')')||(LA6_0>='+' && LA6_0<='\uFFFE')) ) {
+                    alt6=1;
                 }
 
 
-                switch (alt4) {
+                switch (alt6) {
             	case 1 :
-            	    // JS.g:599:41: .
+            	    // JS.g:603:41: .
             	    {
             	    matchAny(); 
 
@@ -3119,7 +3214,7 @@
             	    break;
 
             	default :
-            	    break loop4;
+            	    break loop6;
                 }
             } while (true);
 
@@ -3140,25 +3235,25 @@
     public final void mSingleLineComment() throws RecognitionException {
         try {
             int _type = SingleLineComment;
-            // JS.g:603:2: ( '//' (~ ( LineTerminator ) )* )
-            // JS.g:603:4: '//' (~ ( LineTerminator ) )*
+            // JS.g:607:2: ( '//' (~ ( LineTerminatorChar ) )* )
+            // JS.g:607:4: '//' (~ ( LineTerminatorChar ) )*
             {
             match("//"); 
 
-            // JS.g:603:9: (~ ( LineTerminator ) )*
-            loop5:
+            // JS.g:607:9: (~ ( LineTerminatorChar ) )*
+            loop7:
             do {
-                int alt5=2;
-                int LA5_0 = input.LA(1);
+                int alt7=2;
+                int LA7_0 = input.LA(1);
 
-                if ( ((LA5_0>='\u0000' && LA5_0<='\t')||(LA5_0>='\u000B' && LA5_0<='\f')||(LA5_0>='\u000E' && LA5_0<='\u2027')||(LA5_0>='\u202A' && LA5_0<='\uFFFE')) ) {
-                    alt5=1;
+                if ( ((LA7_0>='\u0000' && LA7_0<='\t')||(LA7_0>='\u000B' && LA7_0<='\f')||(LA7_0>='\u000E' && LA7_0<='\u2027')||(LA7_0>='\u202A' && LA7_0<='\uFFFE')) ) {
+                    alt7=1;
                 }
 
 
-                switch (alt5) {
+                switch (alt7) {
             	case 1 :
-            	    // JS.g:603:11: ~ ( LineTerminator )
+            	    // JS.g:607:11: ~ ( LineTerminatorChar )
             	    {
             	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\u2027')||(input.LA(1)>='\u202A' && input.LA(1)<='\uFFFE') ) {
             	        input.consume();
@@ -3175,7 +3270,7 @@
             	    break;
 
             	default :
-            	    break loop5;
+            	    break loop7;
                 }
             } while (true);
 
@@ -3193,8 +3288,8 @@
     // $ANTLR start IdentifierStartASCII
     public final void mIdentifierStartASCII() throws RecognitionException {
         try {
-            // JS.g:712:2: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | BSLASH 'u' HexDigit HexDigit HexDigit HexDigit )
-            int alt6=5;
+            // JS.g:716:2: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | BSLASH 'u' HexDigit HexDigit HexDigit HexDigit )
+            int alt8=5;
             switch ( input.LA(1) ) {
             case 'a':
             case 'b':
@@ -3223,7 +3318,7 @@
             case 'y':
             case 'z':
                 {
-                alt6=1;
+                alt8=1;
                 }
                 break;
             case 'A':
@@ -3253,62 +3348,62 @@
             case 'Y':
             case 'Z':
                 {
-                alt6=2;
+                alt8=2;
                 }
                 break;
             case '$':
                 {
-                alt6=3;
+                alt8=3;
                 }
                 break;
             case '_':
                 {
-                alt6=4;
+                alt8=4;
                 }
                 break;
             case '\\':
                 {
-                alt6=5;
+                alt8=5;
                 }
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("711:10: fragment IdentifierStartASCII : ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | BSLASH 'u' HexDigit HexDigit HexDigit HexDigit );", 6, 0, input);
+                    new NoViableAltException("715:10: fragment IdentifierStartASCII : ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | BSLASH 'u' HexDigit HexDigit HexDigit HexDigit );", 8, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt6) {
+            switch (alt8) {
                 case 1 :
-                    // JS.g:712:4: 'a' .. 'z'
+                    // JS.g:716:4: 'a' .. 'z'
                     {
                     matchRange('a','z'); 
 
                     }
                     break;
                 case 2 :
-                    // JS.g:712:15: 'A' .. 'Z'
+                    // JS.g:716:15: 'A' .. 'Z'
                     {
                     matchRange('A','Z'); 
 
                     }
                     break;
                 case 3 :
-                    // JS.g:713:4: '$'
+                    // JS.g:717:4: '$'
                     {
                     match('$'); 
 
                     }
                     break;
                 case 4 :
-                    // JS.g:714:4: '_'
+                    // JS.g:718:4: '_'
                     {
                     match('_'); 
 
                     }
                     break;
                 case 5 :
-                    // JS.g:715:4: BSLASH 'u' HexDigit HexDigit HexDigit HexDigit
+                    // JS.g:719:4: BSLASH 'u' HexDigit HexDigit HexDigit HexDigit
                     {
                     mBSLASH(); 
                     match('u'); 
@@ -3330,8 +3425,8 @@
     // $ANTLR start IdentifierPart
     public final void mIdentifierPart() throws RecognitionException {
         try {
-            // JS.g:723:2: ( DecimalDigit | IdentifierStartASCII | {...}?)
-            int alt7=3;
+            // JS.g:727:2: ( DecimalDigit | IdentifierStartASCII | {...}?)
+            int alt9=3;
             switch ( input.LA(1) ) {
             case '0':
             case '1':
@@ -3344,7 +3439,7 @@
             case '8':
             case '9':
                 {
-                alt7=1;
+                alt9=1;
                 }
                 break;
             case '$':
@@ -3403,29 +3498,29 @@
             case 'y':
             case 'z':
                 {
-                alt7=2;
+                alt9=2;
                 }
                 break;
             default:
-                alt7=3;}
+                alt9=3;}
 
-            switch (alt7) {
+            switch (alt9) {
                 case 1 :
-                    // JS.g:723:4: DecimalDigit
+                    // JS.g:727:4: DecimalDigit
                     {
                     mDecimalDigit(); 
 
                     }
                     break;
                 case 2 :
-                    // JS.g:724:4: IdentifierStartASCII
+                    // JS.g:728:4: IdentifierStartASCII
                     {
                     mIdentifierStartASCII(); 
 
                     }
                     break;
                 case 3 :
-                    // JS.g:725:4: {...}?
+                    // JS.g:729:4: {...}?
                     {
                     if ( !( isIdentifierPartUnicode(input.LA(1)) ) ) {
                         throw new FailedPredicateException(input, "IdentifierPart", " isIdentifierPartUnicode(input.LA(1)) ");
@@ -3445,27 +3540,27 @@
     // $ANTLR start IdentifierNameASCIIStart
     public final void mIdentifierNameASCIIStart() throws RecognitionException {
         try {
-            // JS.g:729:2: ( IdentifierStartASCII ( IdentifierPart )* )
-            // JS.g:729:4: IdentifierStartASCII ( IdentifierPart )*
+            // JS.g:733:2: ( IdentifierStartASCII ( IdentifierPart )* )
+            // JS.g:733:4: IdentifierStartASCII ( IdentifierPart )*
             {
             mIdentifierStartASCII(); 
-            // JS.g:729:25: ( IdentifierPart )*
-            loop8:
+            // JS.g:733:25: ( IdentifierPart )*
+            loop10:
             do {
-                int alt8=2;
-                int LA8_0 = input.LA(1);
+                int alt10=2;
+                int LA10_0 = input.LA(1);
 
-                if ( (LA8_0=='$'||(LA8_0>='0' && LA8_0<='9')||(LA8_0>='A' && LA8_0<='Z')||LA8_0=='\\'||LA8_0=='_'||(LA8_0>='a' && LA8_0<='z')) ) {
-                    alt8=1;
+                if ( (LA10_0=='$'||(LA10_0>='0' && LA10_0<='9')||(LA10_0>='A' && LA10_0<='Z')||LA10_0=='\\'||LA10_0=='_'||(LA10_0>='a' && LA10_0<='z')) ) {
+                    alt10=1;
                 }
                 else if ( ( isIdentifierPartUnicode(input.LA(1)) ) ) {
-                    alt8=1;
+                    alt10=1;
                 }
 
 
-                switch (alt8) {
+                switch (alt10) {
             	case 1 :
-            	    // JS.g:729:25: IdentifierPart
+            	    // JS.g:733:25: IdentifierPart
             	    {
             	    mIdentifierPart(); 
 
@@ -3473,7 +3568,7 @@
             	    break;
 
             	default :
-            	    break loop8;
+            	    break loop10;
                 }
             } while (true);
 
@@ -3490,25 +3585,25 @@
     public final void mIdentifier() throws RecognitionException {
         try {
             int _type = Identifier;
-            // JS.g:742:3: ( IdentifierNameASCIIStart | )
-            int alt9=2;
-            int LA9_0 = input.LA(1);
+            // JS.g:746:3: ( IdentifierNameASCIIStart | )
+            int alt11=2;
+            int LA11_0 = input.LA(1);
 
-            if ( (LA9_0=='$'||(LA9_0>='A' && LA9_0<='Z')||LA9_0=='\\'||LA9_0=='_'||(LA9_0>='a' && LA9_0<='z')) ) {
-                alt9=1;
+            if ( (LA11_0=='$'||(LA11_0>='A' && LA11_0<='Z')||LA11_0=='\\'||LA11_0=='_'||(LA11_0>='a' && LA11_0<='z')) ) {
+                alt11=1;
             }
             else {
-                alt9=2;}
-            switch (alt9) {
+                alt11=2;}
+            switch (alt11) {
                 case 1 :
-                    // JS.g:742:5: IdentifierNameASCIIStart
+                    // JS.g:746:5: IdentifierNameASCIIStart
                     {
                     mIdentifierNameASCIIStart(); 
 
                     }
                     break;
                 case 2 :
-                    // JS.g:743:5: 
+                    // JS.g:747:5: 
                     {
                      consumeIdentifierUnicodeStart(); 
 
@@ -3526,8 +3621,8 @@
     // $ANTLR start PropertyIdentifierSymbols
     public final void mPropertyIdentifierSymbols() throws RecognitionException {
         try {
-            // JS.g:755:3: ( AT Identifier )
-            // JS.g:755:5: AT Identifier
+            // JS.g:759:3: ( AT Identifier )
+            // JS.g:759:5: AT Identifier
             {
             mAT(); 
             mIdentifier(); 
@@ -3544,8 +3639,8 @@
     public final void mXmlAttribute() throws RecognitionException {
         try {
             int _type = XmlAttribute;
-            // JS.g:759:3: ( PropertyIdentifierSymbols )
-            // JS.g:759:5: PropertyIdentifierSymbols
+            // JS.g:763:3: ( PropertyIdentifierSymbols )
+            // JS.g:763:5: PropertyIdentifierSymbols
             {
             mPropertyIdentifierSymbols(); 
 
@@ -3561,8 +3656,8 @@
     // $ANTLR start DecimalDigit
     public final void mDecimalDigit() throws RecognitionException {
         try {
-            // JS.g:845:2: ( '0' .. '9' )
-            // JS.g:845:4: '0' .. '9'
+            // JS.g:849:2: ( '0' .. '9' )
+            // JS.g:849:4: '0' .. '9'
             {
             matchRange('0','9'); 
 
@@ -3577,7 +3672,7 @@
     // $ANTLR start HexDigit
     public final void mHexDigit() throws RecognitionException {
         try {
-            // JS.g:849:2: ( DecimalDigit | 'a' .. 'f' | 'A' .. 'F' )
+            // JS.g:853:2: ( DecimalDigit | 'a' .. 'f' | 'A' .. 'F' )
             // JS.g:
             {
             if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='F')||(input.LA(1)>='a' && input.LA(1)<='f') ) {
@@ -3602,8 +3697,8 @@
     // $ANTLR start OctalDigit
     public final void mOctalDigit() throws RecognitionException {
         try {
-            // JS.g:853:2: ( '0' .. '7' )
-            // JS.g:853:4: '0' .. '7'
+            // JS.g:857:2: ( '0' .. '7' )
+            // JS.g:857:4: '0' .. '7'
             {
             matchRange('0','7'); 
 
@@ -3618,8 +3713,8 @@
     // $ANTLR start ExponentPart
     public final void mExponentPart() throws RecognitionException {
         try {
-            // JS.g:857:2: ( ( 'e' | 'E' ) ( '+' | '-' )? ( DecimalDigit )+ )
-            // JS.g:857:4: ( 'e' | 'E' ) ( '+' | '-' )? ( DecimalDigit )+
+            // JS.g:861:2: ( ( 'e' | 'E' ) ( '+' | '-' )? ( DecimalDigit )+ )
+            // JS.g:861:4: ( 'e' | 'E' ) ( '+' | '-' )? ( DecimalDigit )+
             {
             if ( input.LA(1)=='E'||input.LA(1)=='e' ) {
                 input.consume();
@@ -3631,14 +3726,14 @@
                 recover(mse);    throw mse;
             }
 
-            // JS.g:857:18: ( '+' | '-' )?
-            int alt10=2;
-            int LA10_0 = input.LA(1);
+            // JS.g:861:18: ( '+' | '-' )?
+            int alt12=2;
+            int LA12_0 = input.LA(1);
 
-            if ( (LA10_0=='+'||LA10_0=='-') ) {
-                alt10=1;
+            if ( (LA12_0=='+'||LA12_0=='-') ) {
+                alt12=1;
             }
-            switch (alt10) {
+            switch (alt12) {
                 case 1 :
                     // JS.g:
                     {
@@ -3658,21 +3753,21 @@
 
             }
 
-            // JS.g:857:33: ( DecimalDigit )+
-            int cnt11=0;
-            loop11:
+            // JS.g:861:33: ( DecimalDigit )+
+            int cnt13=0;
+            loop13:
             do {
-                int alt11=2;
-                int LA11_0 = input.LA(1);
+                int alt13=2;
+                int LA13_0 = input.LA(1);
 
-                if ( ((LA11_0>='0' && LA11_0<='9')) ) {
-                    alt11=1;
+                if ( ((LA13_0>='0' && LA13_0<='9')) ) {
+                    alt13=1;
                 }
 
 
-                switch (alt11) {
+                switch (alt13) {
             	case 1 :
-            	    // JS.g:857:33: DecimalDigit
+            	    // JS.g:861:33: DecimalDigit
             	    {
             	    mDecimalDigit(); 
 
@@ -3680,12 +3775,12 @@
             	    break;
 
             	default :
-            	    if ( cnt11 >= 1 ) break loop11;
+            	    if ( cnt13 >= 1 ) break loop13;
                         EarlyExitException eee =
-                            new EarlyExitException(11, input);
+                            new EarlyExitException(13, input);
                         throw eee;
                 }
-                cnt11++;
+                cnt13++;
             } while (true);
 
 
@@ -3700,48 +3795,48 @@
     // $ANTLR start DecimalIntegerLiteral
     public final void mDecimalIntegerLiteral() throws RecognitionException {
         try {
-            // JS.g:861:2: ( '0' | '1' .. '9' ( DecimalDigit )* )
-            int alt13=2;
-            int LA13_0 = input.LA(1);
+            // JS.g:865:2: ( '0' | '1' .. '9' ( DecimalDigit )* )
+            int alt15=2;
+            int LA15_0 = input.LA(1);
 
-            if ( (LA13_0=='0') ) {
-                alt13=1;
+            if ( (LA15_0=='0') ) {
+                alt15=1;
             }
-            else if ( ((LA13_0>='1' && LA13_0<='9')) ) {
-                alt13=2;
+            else if ( ((LA15_0>='1' && LA15_0<='9')) ) {
+                alt15=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("860:10: fragment DecimalIntegerLiteral : ( '0' | '1' .. '9' ( DecimalDigit )* );", 13, 0, input);
+                    new NoViableAltException("864:10: fragment DecimalIntegerLiteral : ( '0' | '1' .. '9' ( DecimalDigit )* );", 15, 0, input);
 
                 throw nvae;
             }
-            switch (alt13) {
+            switch (alt15) {
                 case 1 :
-                    // JS.g:861:4: '0'
+                    // JS.g:865:4: '0'
                     {
                     match('0'); 
 
                     }
                     break;
                 case 2 :
-                    // JS.g:862:4: '1' .. '9' ( DecimalDigit )*
+                    // JS.g:866:4: '1' .. '9' ( DecimalDigit )*
                     {
                     matchRange('1','9'); 
-                    // JS.g:862:13: ( DecimalDigit )*
-                    loop12:
+                    // JS.g:866:13: ( DecimalDigit )*
+                    loop14:
                     do {
-                        int alt12=2;
-                        int LA12_0 = input.LA(1);
+                        int alt14=2;
+                        int LA14_0 = input.LA(1);
 
-                        if ( ((LA12_0>='0' && LA12_0<='9')) ) {
-                            alt12=1;
+                        if ( ((LA14_0>='0' && LA14_0<='9')) ) {
+                            alt14=1;
                         }
 
 
-                        switch (alt12) {
+                        switch (alt14) {
                     	case 1 :
-                    	    // JS.g:862:13: DecimalDigit
+                    	    // JS.g:866:13: DecimalDigit
                     	    {
                     	    mDecimalDigit(); 
 
@@ -3749,7 +3844,7 @@
                     	    break;
 
                     	default :
-                    	    break loop12;
+                    	    break loop14;
                         }
                     } while (true);
 
@@ -3768,67 +3863,16 @@
     public final void mDecimalLiteral() throws RecognitionException {
         try {
             int _type = DecimalLiteral;
-            // JS.g:866:2: ( DecimalIntegerLiteral '.' ( DecimalDigit )* ( ExponentPart )? | '.' ( DecimalDigit )+ ( ExponentPart )? | DecimalIntegerLiteral ( ExponentPart )? )
-            int alt19=3;
-            alt19 = dfa19.predict(input);
-            switch (alt19) {
+            // JS.g:870:2: ( DecimalIntegerLiteral '.' ( DecimalDigit )* ( ExponentPart )? | '.' ( DecimalDigit )+ ( ExponentPart )? | DecimalIntegerLiteral ( ExponentPart )? )
+            int alt21=3;
+            alt21 = dfa21.predict(input);
+            switch (alt21) {
                 case 1 :
-                    // JS.g:866:4: DecimalIntegerLiteral '.' ( DecimalDigit )* ( ExponentPart )?
+                    // JS.g:870:4: DecimalIntegerLiteral '.' ( DecimalDigit )* ( ExponentPart )?
                     {
                     mDecimalIntegerLiteral(); 
                     match('.'); 
-                    // JS.g:866:30: ( DecimalDigit )*
-                    loop14:
-                    do {
-                        int alt14=2;
-                        int LA14_0 = input.LA(1);
-
-                        if ( ((LA14_0>='0' && LA14_0<='9')) ) {
-                            alt14=1;
-                        }
-
-
-                        switch (alt14) {
-                    	case 1 :
-                    	    // JS.g:866:30: DecimalDigit
-                    	    {
-                    	    mDecimalDigit(); 
-
-                    	    }
-                    	    break;
-
-                    	default :
-                    	    break loop14;
-                        }
-                    } while (true);
-
-                    // JS.g:866:44: ( ExponentPart )?
-                    int alt15=2;
-                    int LA15_0 = input.LA(1);
-
-                    if ( (LA15_0=='E'||LA15_0=='e') ) {
-                        alt15=1;
-                    }
-                    switch (alt15) {
-                        case 1 :
-                            // JS.g:866:44: ExponentPart
-                            {
-                            mExponentPart(); 
-
-                            }
-                            break;
-
-                    }
-
-
-                    }
-                    break;
-                case 2 :
-                    // JS.g:867:4: '.' ( DecimalDigit )+ ( ExponentPart )?
-                    {
-                    match('.'); 
-                    // JS.g:867:8: ( DecimalDigit )+
-                    int cnt16=0;
+                    // JS.g:870:30: ( DecimalDigit )*
                     loop16:
                     do {
                         int alt16=2;
@@ -3841,7 +3885,7 @@
 
                         switch (alt16) {
                     	case 1 :
-                    	    // JS.g:867:8: DecimalDigit
+                    	    // JS.g:870:30: DecimalDigit
                     	    {
                     	    mDecimalDigit(); 
 
@@ -3849,15 +3893,11 @@
                     	    break;
 
                     	default :
-                    	    if ( cnt16 >= 1 ) break loop16;
-                                EarlyExitException eee =
-                                    new EarlyExitException(16, input);
-                                throw eee;
+                    	    break loop16;
                         }
-                        cnt16++;
                     } while (true);
 
-                    // JS.g:867:22: ( ExponentPart )?
+                    // JS.g:870:44: ( ExponentPart )?
                     int alt17=2;
                     int LA17_0 = input.LA(1);
 
@@ -3866,7 +3906,62 @@
                     }
                     switch (alt17) {
                         case 1 :
-                            // JS.g:867:22: ExponentPart
+                            // JS.g:870:44: ExponentPart
+                            {
+                            mExponentPart(); 
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // JS.g:871:4: '.' ( DecimalDigit )+ ( ExponentPart )?
+                    {
+                    match('.'); 
+                    // JS.g:871:8: ( DecimalDigit )+
+                    int cnt18=0;
+                    loop18:
+                    do {
+                        int alt18=2;
+                        int LA18_0 = input.LA(1);
+
+                        if ( ((LA18_0>='0' && LA18_0<='9')) ) {
+                            alt18=1;
+                        }
+
+
+                        switch (alt18) {
+                    	case 1 :
+                    	    // JS.g:871:8: DecimalDigit
+                    	    {
+                    	    mDecimalDigit(); 
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt18 >= 1 ) break loop18;
+                                EarlyExitException eee =
+                                    new EarlyExitException(18, input);
+                                throw eee;
+                        }
+                        cnt18++;
+                    } while (true);
+
+                    // JS.g:871:22: ( ExponentPart )?
+                    int alt19=2;
+                    int LA19_0 = input.LA(1);
+
+                    if ( (LA19_0=='E'||LA19_0=='e') ) {
+                        alt19=1;
+                    }
+                    switch (alt19) {
+                        case 1 :
+                            // JS.g:871:22: ExponentPart
                             {
                             mExponentPart(); 
 
@@ -3879,19 +3974,19 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:868:4: DecimalIntegerLiteral ( ExponentPart )?
+                    // JS.g:872:4: DecimalIntegerLiteral ( ExponentPart )?
                     {
                     mDecimalIntegerLiteral(); 
-                    // JS.g:868:26: ( ExponentPart )?
-                    int alt18=2;
-                    int LA18_0 = input.LA(1);
+                    // JS.g:872:26: ( ExponentPart )?
+                    int alt20=2;
+                    int LA20_0 = input.LA(1);
 
-                    if ( (LA18_0=='E'||LA18_0=='e') ) {
-                        alt18=1;
+                    if ( (LA20_0=='E'||LA20_0=='e') ) {
+                        alt20=1;
                     }
-                    switch (alt18) {
+                    switch (alt20) {
                         case 1 :
-                            // JS.g:868:26: ExponentPart
+                            // JS.g:872:26: ExponentPart
                             {
                             mExponentPart(); 
 
@@ -3916,120 +4011,27 @@
     public final void mOctalIntegerLiteral() throws RecognitionException {
         try {
             int _type = OctalIntegerLiteral;
-            // JS.g:872:2: ( '0' ( OctalDigit )+ )
-            // JS.g:872:4: '0' ( OctalDigit )+
+            // JS.g:876:2: ( '0' ( OctalDigit )+ )
+            // JS.g:876:4: '0' ( OctalDigit )+
             {
             match('0'); 
-            // JS.g:872:8: ( OctalDigit )+
-            int cnt20=0;
-            loop20:
-            do {
-                int alt20=2;
-                int LA20_0 = input.LA(1);
-
-                if ( ((LA20_0>='0' && LA20_0<='7')) ) {
-                    alt20=1;
-                }
-
-
-                switch (alt20) {
-            	case 1 :
-            	    // JS.g:872:8: OctalDigit
-            	    {
-            	    mOctalDigit(); 
-
-            	    }
-            	    break;
-
-            	default :
-            	    if ( cnt20 >= 1 ) break loop20;
-                        EarlyExitException eee =
-                            new EarlyExitException(20, input);
-                        throw eee;
-                }
-                cnt20++;
-            } while (true);
-
-
-            }
-
-            this.type = _type;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end OctalIntegerLiteral
-
-    // $ANTLR start HexIntegerLiteral
-    public final void mHexIntegerLiteral() throws RecognitionException {
-        try {
-            int _type = HexIntegerLiteral;
-            // JS.g:876:2: ( ( '0x' | '0X' ) ( HexDigit )+ )
-            // JS.g:876:4: ( '0x' | '0X' ) ( HexDigit )+
-            {
-            // JS.g:876:4: ( '0x' | '0X' )
-            int alt21=2;
-            int LA21_0 = input.LA(1);
-
-            if ( (LA21_0=='0') ) {
-                int LA21_1 = input.LA(2);
-
-                if ( (LA21_1=='X') ) {
-                    alt21=2;
-                }
-                else if ( (LA21_1=='x') ) {
-                    alt21=1;
-                }
-                else {
-                    NoViableAltException nvae =
-                        new NoViableAltException("876:4: ( '0x' | '0X' )", 21, 1, input);
-
-                    throw nvae;
-                }
-            }
-            else {
-                NoViableAltException nvae =
-                    new NoViableAltException("876:4: ( '0x' | '0X' )", 21, 0, input);
-
-                throw nvae;
-            }
-            switch (alt21) {
-                case 1 :
-                    // JS.g:876:6: '0x'
-                    {
-                    match("0x"); 
-
-
-                    }
-                    break;
-                case 2 :
-                    // JS.g:876:13: '0X'
-                    {
-                    match("0X"); 
-
-
-                    }
-                    break;
-
-            }
-
-            // JS.g:876:20: ( HexDigit )+
+            // JS.g:876:8: ( OctalDigit )+
             int cnt22=0;
             loop22:
             do {
                 int alt22=2;
                 int LA22_0 = input.LA(1);
 
-                if ( ((LA22_0>='0' && LA22_0<='9')||(LA22_0>='A' && LA22_0<='F')||(LA22_0>='a' && LA22_0<='f')) ) {
+                if ( ((LA22_0>='0' && LA22_0<='7')) ) {
                     alt22=1;
                 }
 
 
                 switch (alt22) {
             	case 1 :
-            	    // JS.g:876:20: HexDigit
+            	    // JS.g:876:8: OctalDigit
             	    {
-            	    mHexDigit(); 
+            	    mOctalDigit(); 
 
             	    }
             	    break;
@@ -4051,13 +4053,106 @@
         finally {
         }
     }
+    // $ANTLR end OctalIntegerLiteral
+
+    // $ANTLR start HexIntegerLiteral
+    public final void mHexIntegerLiteral() throws RecognitionException {
+        try {
+            int _type = HexIntegerLiteral;
+            // JS.g:880:2: ( ( '0x' | '0X' ) ( HexDigit )+ )
+            // JS.g:880:4: ( '0x' | '0X' ) ( HexDigit )+
+            {
+            // JS.g:880:4: ( '0x' | '0X' )
+            int alt23=2;
+            int LA23_0 = input.LA(1);
+
+            if ( (LA23_0=='0') ) {
+                int LA23_1 = input.LA(2);
+
+                if ( (LA23_1=='x') ) {
+                    alt23=1;
+                }
+                else if ( (LA23_1=='X') ) {
+                    alt23=2;
+                }
+                else {
+                    NoViableAltException nvae =
+                        new NoViableAltException("880:4: ( '0x' | '0X' )", 23, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("880:4: ( '0x' | '0X' )", 23, 0, input);
+
+                throw nvae;
+            }
+            switch (alt23) {
+                case 1 :
+                    // JS.g:880:6: '0x'
+                    {
+                    match("0x"); 
+
+
+                    }
+                    break;
+                case 2 :
+                    // JS.g:880:13: '0X'
+                    {
+                    match("0X"); 
+
+
+                    }
+                    break;
+
+            }
+
+            // JS.g:880:20: ( HexDigit )+
+            int cnt24=0;
+            loop24:
+            do {
+                int alt24=2;
+                int LA24_0 = input.LA(1);
+
+                if ( ((LA24_0>='0' && LA24_0<='9')||(LA24_0>='A' && LA24_0<='F')||(LA24_0>='a' && LA24_0<='f')) ) {
+                    alt24=1;
+                }
+
+
+                switch (alt24) {
+            	case 1 :
+            	    // JS.g:880:20: HexDigit
+            	    {
+            	    mHexDigit(); 
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt24 >= 1 ) break loop24;
+                        EarlyExitException eee =
+                            new EarlyExitException(24, input);
+                        throw eee;
+                }
+                cnt24++;
+            } while (true);
+
+
+            }
+
+            this.type = _type;
+        }
+        finally {
+        }
+    }
     // $ANTLR end HexIntegerLiteral
 
     // $ANTLR start CharacterEscapeSequence
     public final void mCharacterEscapeSequence() throws RecognitionException {
         try {
-            // JS.g:895:2: (~ ( DecimalDigit | 'x' | 'u' | LineTerminator ) )
-            // JS.g:895:4: ~ ( DecimalDigit | 'x' | 'u' | LineTerminator )
+            // JS.g:899:2: (~ ( DecimalDigit | 'x' | 'u' | LineTerminatorChar ) )
+            // JS.g:899:4: ~ ( DecimalDigit | 'x' | 'u' | LineTerminatorChar )
             {
             if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='/')||(input.LA(1)>=':' && input.LA(1)<='t')||(input.LA(1)>='v' && input.LA(1)<='w')||(input.LA(1)>='y' && input.LA(1)<='\u2027')||(input.LA(1)>='\u202A' && input.LA(1)<='\uFFFE') ) {
                 input.consume();
@@ -4081,8 +4176,8 @@
     // $ANTLR start ZeroToThree
     public final void mZeroToThree() throws RecognitionException {
         try {
-            // JS.g:899:2: ( '0' .. '3' )
-            // JS.g:899:4: '0' .. '3'
+            // JS.g:903:2: ( '0' .. '3' )
+            // JS.g:903:4: '0' .. '3'
             {
             matchRange('0','3'); 
 
@@ -4097,50 +4192,50 @@
     // $ANTLR start OctalEscapeSequence
     public final void mOctalEscapeSequence() throws RecognitionException {
         try {
-            // JS.g:903:2: ( OctalDigit | ZeroToThree OctalDigit | '4' .. '7' OctalDigit | ZeroToThree OctalDigit OctalDigit )
-            int alt23=4;
-            int LA23_0 = input.LA(1);
+            // JS.g:907:2: ( OctalDigit | ZeroToThree OctalDigit | '4' .. '7' OctalDigit | ZeroToThree OctalDigit OctalDigit )
+            int alt25=4;
+            int LA25_0 = input.LA(1);
 
-            if ( ((LA23_0>='0' && LA23_0<='3')) ) {
-                int LA23_1 = input.LA(2);
+            if ( ((LA25_0>='0' && LA25_0<='3')) ) {
+                int LA25_1 = input.LA(2);
 
-                if ( ((LA23_1>='0' && LA23_1<='7')) ) {
-                    int LA23_4 = input.LA(3);
+                if ( ((LA25_1>='0' && LA25_1<='7')) ) {
+                    int LA25_4 = input.LA(3);
 
-                    if ( ((LA23_4>='0' && LA23_4<='7')) ) {
-                        alt23=4;
+                    if ( ((LA25_4>='0' && LA25_4<='7')) ) {
+                        alt25=4;
                     }
                     else {
-                        alt23=2;}
+                        alt25=2;}
                 }
                 else {
-                    alt23=1;}
+                    alt25=1;}
             }
-            else if ( ((LA23_0>='4' && LA23_0<='7')) ) {
-                int LA23_2 = input.LA(2);
+            else if ( ((LA25_0>='4' && LA25_0<='7')) ) {
+                int LA25_2 = input.LA(2);
 
-                if ( ((LA23_2>='0' && LA23_2<='7')) ) {
-                    alt23=3;
+                if ( ((LA25_2>='0' && LA25_2<='7')) ) {
+                    alt25=3;
                 }
                 else {
-                    alt23=1;}
+                    alt25=1;}
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("902:10: fragment OctalEscapeSequence : ( OctalDigit | ZeroToThree OctalDigit | '4' .. '7' OctalDigit | ZeroToThree OctalDigit OctalDigit );", 23, 0, input);
+                    new NoViableAltException("906:10: fragment OctalEscapeSequence : ( OctalDigit | ZeroToThree OctalDigit | '4' .. '7' OctalDigit | ZeroToThree OctalDigit OctalDigit );", 25, 0, input);
 
                 throw nvae;
             }
-            switch (alt23) {
+            switch (alt25) {
                 case 1 :
-                    // JS.g:903:4: OctalDigit
+                    // JS.g:907:4: OctalDigit
                     {
                     mOctalDigit(); 
 
                     }
                     break;
                 case 2 :
-                    // JS.g:904:4: ZeroToThree OctalDigit
+                    // JS.g:908:4: ZeroToThree OctalDigit
                     {
                     mZeroToThree(); 
                     mOctalDigit(); 
@@ -4148,7 +4243,7 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:905:4: '4' .. '7' OctalDigit
+                    // JS.g:909:4: '4' .. '7' OctalDigit
                     {
                     matchRange('4','7'); 
                     mOctalDigit(); 
@@ -4156,7 +4251,7 @@
                     }
                     break;
                 case 4 :
-                    // JS.g:906:4: ZeroToThree OctalDigit OctalDigit
+                    // JS.g:910:4: ZeroToThree OctalDigit OctalDigit
                     {
                     mZeroToThree(); 
                     mOctalDigit(); 
@@ -4175,8 +4270,8 @@
     // $ANTLR start HexEscapeSequence
     public final void mHexEscapeSequence() throws RecognitionException {
         try {
-            // JS.g:910:2: ( 'x' HexDigit HexDigit )
-            // JS.g:910:4: 'x' HexDigit HexDigit
+            // JS.g:914:2: ( 'x' HexDigit HexDigit )
+            // JS.g:914:4: 'x' HexDigit HexDigit
             {
             match('x'); 
             mHexDigit(); 
@@ -4193,8 +4288,8 @@
     // $ANTLR start UnicodeEscapeSequence
     public final void mUnicodeEscapeSequence() throws RecognitionException {
         try {
-            // JS.g:914:2: ( 'u' HexDigit HexDigit HexDigit HexDigit )
-            // JS.g:914:4: 'u' HexDigit HexDigit HexDigit HexDigit
+            // JS.g:918:2: ( 'u' HexDigit HexDigit HexDigit HexDigit )
+            // JS.g:918:4: 'u' HexDigit HexDigit HexDigit HexDigit
             {
             match('u'); 
             mHexDigit(); 
@@ -4213,66 +4308,66 @@
     // $ANTLR start EscapeSequence
     public final void mEscapeSequence() throws RecognitionException {
         try {
-            // JS.g:918:2: ( BSLASH ( CharacterEscapeSequence | OctalEscapeSequence | HexEscapeSequence | UnicodeEscapeSequence | LineTerminator ) )
-            // JS.g:919:2: BSLASH ( CharacterEscapeSequence | OctalEscapeSequence | HexEscapeSequence | UnicodeEscapeSequence | LineTerminator )
+            // JS.g:922:2: ( BSLASH ( CharacterEscapeSequence | OctalEscapeSequence | HexEscapeSequence | UnicodeEscapeSequence | LineTerminator ) )
+            // JS.g:923:2: BSLASH ( CharacterEscapeSequence | OctalEscapeSequence | HexEscapeSequence | UnicodeEscapeSequence | LineTerminator )
             {
             mBSLASH(); 
-            // JS.g:920:2: ( CharacterEscapeSequence | OctalEscapeSequence | HexEscapeSequence | UnicodeEscapeSequence | LineTerminator )
-            int alt24=5;
-            int LA24_0 = input.LA(1);
+            // JS.g:924:2: ( CharacterEscapeSequence | OctalEscapeSequence | HexEscapeSequence | UnicodeEscapeSequence | LineTerminator )
+            int alt26=5;
+            int LA26_0 = input.LA(1);
 
-            if ( ((LA24_0>='\u0000' && LA24_0<='\t')||(LA24_0>='\u000B' && LA24_0<='\f')||(LA24_0>='\u000E' && LA24_0<='/')||(LA24_0>=':' && LA24_0<='t')||(LA24_0>='v' && LA24_0<='w')||(LA24_0>='y' && LA24_0<='\u2027')||(LA24_0>='\u202A' && LA24_0<='\uFFFE')) ) {
-                alt24=1;
+            if ( ((LA26_0>='\u0000' && LA26_0<='\t')||(LA26_0>='\u000B' && LA26_0<='\f')||(LA26_0>='\u000E' && LA26_0<='/')||(LA26_0>=':' && LA26_0<='t')||(LA26_0>='v' && LA26_0<='w')||(LA26_0>='y' && LA26_0<='\u2027')||(LA26_0>='\u202A' && LA26_0<='\uFFFE')) ) {
+                alt26=1;
             }
-            else if ( ((LA24_0>='0' && LA24_0<='7')) ) {
-                alt24=2;
+            else if ( ((LA26_0>='0' && LA26_0<='7')) ) {
+                alt26=2;
             }
-            else if ( (LA24_0=='x') ) {
-                alt24=3;
+            else if ( (LA26_0=='x') ) {
+                alt26=3;
             }
-            else if ( (LA24_0=='u') ) {
-                alt24=4;
+            else if ( (LA26_0=='u') ) {
+                alt26=4;
             }
-            else if ( (LA24_0=='\n'||LA24_0=='\r'||(LA24_0>='\u2028' && LA24_0<='\u2029')) ) {
-                alt24=5;
+            else if ( (LA26_0=='\n'||LA26_0=='\r'||(LA26_0>='\u2028' && LA26_0<='\u2029')) ) {
+                alt26=5;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("920:2: ( CharacterEscapeSequence | OctalEscapeSequence | HexEscapeSequence | UnicodeEscapeSequence | LineTerminator )", 24, 0, input);
+                    new NoViableAltException("924:2: ( CharacterEscapeSequence | OctalEscapeSequence | HexEscapeSequence | UnicodeEscapeSequence | LineTerminator )", 26, 0, input);
 
                 throw nvae;
             }
-            switch (alt24) {
+            switch (alt26) {
                 case 1 :
-                    // JS.g:921:3: CharacterEscapeSequence
+                    // JS.g:925:3: CharacterEscapeSequence
                     {
                     mCharacterEscapeSequence(); 
 
                     }
                     break;
                 case 2 :
-                    // JS.g:922:5: OctalEscapeSequence
+                    // JS.g:926:5: OctalEscapeSequence
                     {
                     mOctalEscapeSequence(); 
 
                     }
                     break;
                 case 3 :
-                    // JS.g:923:5: HexEscapeSequence
+                    // JS.g:927:5: HexEscapeSequence
                     {
                     mHexEscapeSequence(); 
 
                     }
                     break;
                 case 4 :
-                    // JS.g:924:5: UnicodeEscapeSequence
+                    // JS.g:928:5: UnicodeEscapeSequence
                     {
                     mUnicodeEscapeSequence(); 
 
                     }
                     break;
                 case 5 :
-                    // JS.g:925:5: LineTerminator
+                    // JS.g:929:5: LineTerminator
                     {
                     mLineTerminator(); 
 
@@ -4294,44 +4389,44 @@
     public final void mStringLiteral() throws RecognitionException {
         try {
             int _type = StringLiteral;
-            // JS.g:930:2: ( SQUOTE (~ ( SQUOTE | BSLASH | LineTerminator ) | EscapeSequence )* SQUOTE | DQUOTE (~ ( DQUOTE | BSLASH | LineTerminator ) | EscapeSequence )* DQUOTE )
-            int alt27=2;
-            int LA27_0 = input.LA(1);
+            // JS.g:934:2: ( SQUOTE (~ ( SQUOTE | BSLASH | LineTerminatorChar ) | EscapeSequence )* SQUOTE | DQUOTE (~ ( DQUOTE | BSLASH | LineTerminatorChar ) | EscapeSequence )* DQUOTE )
+            int alt29=2;
+            int LA29_0 = input.LA(1);
 
-            if ( (LA27_0=='\'') ) {
-                alt27=1;
+            if ( (LA29_0=='\'') ) {
+                alt29=1;
             }
-            else if ( (LA27_0=='\"') ) {
-                alt27=2;
+            else if ( (LA29_0=='\"') ) {
+                alt29=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("929:1: StringLiteral : ( SQUOTE (~ ( SQUOTE | BSLASH | LineTerminator ) | EscapeSequence )* SQUOTE | DQUOTE (~ ( DQUOTE | BSLASH | LineTerminator ) | EscapeSequence )* DQUOTE );", 27, 0, input);
+                    new NoViableAltException("933:1: StringLiteral : ( SQUOTE (~ ( SQUOTE | BSLASH | LineTerminatorChar ) | EscapeSequence )* SQUOTE | DQUOTE (~ ( DQUOTE | BSLASH | LineTerminatorChar ) | EscapeSequence )* DQUOTE );", 29, 0, input);
 
                 throw nvae;
             }
-            switch (alt27) {
+            switch (alt29) {
                 case 1 :
-                    // JS.g:930:4: SQUOTE (~ ( SQUOTE | BSLASH | LineTerminator ) | EscapeSequence )* SQUOTE
+                    // JS.g:934:4: SQUOTE (~ ( SQUOTE | BSLASH | LineTerminatorChar ) | EscapeSequence )* SQUOTE
                     {
                     mSQUOTE(); 
-                    // JS.g:930:11: (~ ( SQUOTE | BSLASH | LineTerminator ) | EscapeSequence )*
-                    loop25:
+                    // JS.g:934:11: (~ ( SQUOTE | BSLASH | LineTerminatorChar ) | EscapeSequence )*
+                    loop27:
                     do {
-                        int alt25=3;
-                        int LA25_0 = input.LA(1);
+                        int alt27=3;
+                        int LA27_0 = input.LA(1);
 
-                        if ( ((LA25_0>='\u0000' && LA25_0<='\t')||(LA25_0>='\u000B' && LA25_0<='\f')||(LA25_0>='\u000E' && LA25_0<='&')||(LA25_0>='(' && LA25_0<='[')||(LA25_0>=']' && LA25_0<='\u2027')||(LA25_0>='\u202A' && LA25_0<='\uFFFE')) ) {
-                            alt25=1;
+                        if ( ((LA27_0>='\u0000' && LA27_0<='\t')||(LA27_0>='\u000B' && LA27_0<='\f')||(LA27_0>='\u000E' && LA27_0<='&')||(LA27_0>='(' && LA27_0<='[')||(LA27_0>=']' && LA27_0<='\u2027')||(LA27_0>='\u202A' && LA27_0<='\uFFFE')) ) {
+                            alt27=1;
                         }
-                        else if ( (LA25_0=='\\') ) {
-                            alt25=2;
+                        else if ( (LA27_0=='\\') ) {
+                            alt27=2;
                         }
 
 
-                        switch (alt25) {
+                        switch (alt27) {
                     	case 1 :
-                    	    // JS.g:930:13: ~ ( SQUOTE | BSLASH | LineTerminator )
+                    	    // JS.g:934:13: ~ ( SQUOTE | BSLASH | LineTerminatorChar )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\u2027')||(input.LA(1)>='\u202A' && input.LA(1)<='\uFFFE') ) {
                     	        input.consume();
@@ -4347,7 +4442,7 @@
                     	    }
                     	    break;
                     	case 2 :
-                    	    // JS.g:930:53: EscapeSequence
+                    	    // JS.g:934:57: EscapeSequence
                     	    {
                     	    mEscapeSequence(); 
 
@@ -4355,7 +4450,7 @@
                     	    break;
 
                     	default :
-                    	    break loop25;
+                    	    break loop27;
                         }
                     } while (true);
 
@@ -4364,26 +4459,26 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:931:4: DQUOTE (~ ( DQUOTE | BSLASH | LineTerminator ) | EscapeSequence )* DQUOTE
+                    // JS.g:935:4: DQUOTE (~ ( DQUOTE | BSLASH | LineTerminatorChar ) | EscapeSequence )* DQUOTE
                     {
                     mDQUOTE(); 
-                    // JS.g:931:11: (~ ( DQUOTE | BSLASH | LineTerminator ) | EscapeSequence )*
-                    loop26:
+                    // JS.g:935:11: (~ ( DQUOTE | BSLASH | LineTerminatorChar ) | EscapeSequence )*
+                    loop28:
                     do {
-                        int alt26=3;
-                        int LA26_0 = input.LA(1);
+                        int alt28=3;
+                        int LA28_0 = input.LA(1);
 
-                        if ( ((LA26_0>='\u0000' && LA26_0<='\t')||(LA26_0>='\u000B' && LA26_0<='\f')||(LA26_0>='\u000E' && LA26_0<='!')||(LA26_0>='#' && LA26_0<='[')||(LA26_0>=']' && LA26_0<='\u2027')||(LA26_0>='\u202A' && LA26_0<='\uFFFE')) ) {
-                            alt26=1;
+                        if ( ((LA28_0>='\u0000' && LA28_0<='\t')||(LA28_0>='\u000B' && LA28_0<='\f')||(LA28_0>='\u000E' && LA28_0<='!')||(LA28_0>='#' && LA28_0<='[')||(LA28_0>=']' && LA28_0<='\u2027')||(LA28_0>='\u202A' && LA28_0<='\uFFFE')) ) {
+                            alt28=1;
                         }
-                        else if ( (LA26_0=='\\') ) {
-                            alt26=2;
+                        else if ( (LA28_0=='\\') ) {
+                            alt28=2;
                         }
 
 
-                        switch (alt26) {
+                        switch (alt28) {
                     	case 1 :
-                    	    // JS.g:931:13: ~ ( DQUOTE | BSLASH | LineTerminator )
+                    	    // JS.g:935:13: ~ ( DQUOTE | BSLASH | LineTerminatorChar )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\u2027')||(input.LA(1)>='\u202A' && input.LA(1)<='\uFFFE') ) {
                     	        input.consume();
@@ -4399,7 +4494,7 @@
                     	    }
                     	    break;
                     	case 2 :
-                    	    // JS.g:931:53: EscapeSequence
+                    	    // JS.g:935:57: EscapeSequence
                     	    {
                     	    mEscapeSequence(); 
 
@@ -4407,7 +4502,7 @@
                     	    break;
 
                     	default :
-                    	    break loop26;
+                    	    break loop28;
                         }
                     } while (true);
 
@@ -4427,8 +4522,8 @@
     // $ANTLR start BackslashSequence
     public final void mBackslashSequence() throws RecognitionException {
         try {
-            // JS.g:940:2: ( BSLASH ~ ( LineTerminator ) )
-            // JS.g:940:4: BSLASH ~ ( LineTerminator )
+            // JS.g:944:2: ( BSLASH ~ ( LineTerminatorChar ) )
+            // JS.g:944:4: BSLASH ~ ( LineTerminatorChar )
             {
             mBSLASH(); 
             if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\u2027')||(input.LA(1)>='\u202A' && input.LA(1)<='\uFFFE') ) {
@@ -4453,25 +4548,25 @@
     // $ANTLR start RegularExpressionFirstChar
     public final void mRegularExpressionFirstChar() throws RecognitionException {
         try {
-            // JS.g:944:2: (~ ( LineTerminator | MUL | BSLASH | DIV ) | BackslashSequence )
-            int alt28=2;
-            int LA28_0 = input.LA(1);
+            // JS.g:948:2: (~ ( LineTerminatorChar | MUL | BSLASH | DIV ) | BackslashSequence )
+            int alt30=2;
+            int LA30_0 = input.LA(1);
 
-            if ( ((LA28_0>='\u0000' && LA28_0<='\t')||(LA28_0>='\u000B' && LA28_0<='\f')||(LA28_0>='\u000E' && LA28_0<=')')||(LA28_0>='+' && LA28_0<='.')||(LA28_0>='0' && LA28_0<='[')||(LA28_0>=']' && LA28_0<='\u2027')||(LA28_0>='\u202A' && LA28_0<='\uFFFE')) ) {
-                alt28=1;
+            if ( ((LA30_0>='\u0000' && LA30_0<='\t')||(LA30_0>='\u000B' && LA30_0<='\f')||(LA30_0>='\u000E' && LA30_0<=')')||(LA30_0>='+' && LA30_0<='.')||(LA30_0>='0' && LA30_0<='[')||(LA30_0>=']' && LA30_0<='\u2027')||(LA30_0>='\u202A' && LA30_0<='\uFFFE')) ) {
+                alt30=1;
             }
-            else if ( (LA28_0=='\\') ) {
-                alt28=2;
+            else if ( (LA30_0=='\\') ) {
+                alt30=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("943:10: fragment RegularExpressionFirstChar : (~ ( LineTerminator | MUL | BSLASH | DIV ) | BackslashSequence );", 28, 0, input);
+                    new NoViableAltException("947:10: fragment RegularExpressionFirstChar : (~ ( LineTerminatorChar | MUL | BSLASH | DIV ) | BackslashSequence );", 30, 0, input);
 
                 throw nvae;
             }
-            switch (alt28) {
+            switch (alt30) {
                 case 1 :
-                    // JS.g:944:4: ~ ( LineTerminator | MUL | BSLASH | DIV )
+                    // JS.g:948:4: ~ ( LineTerminatorChar | MUL | BSLASH | DIV )
                     {
                     if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<=')')||(input.LA(1)>='+' && input.LA(1)<='.')||(input.LA(1)>='0' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\u2027')||(input.LA(1)>='\u202A' && input.LA(1)<='\uFFFE') ) {
                         input.consume();
@@ -4487,7 +4582,7 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:945:4: BackslashSequence
+                    // JS.g:949:4: BackslashSequence
                     {
                     mBackslashSequence(); 
 
@@ -4504,25 +4599,25 @@
     // $ANTLR start RegularExpressionChar
     public final void mRegularExpressionChar() throws RecognitionException {
         try {
-            // JS.g:949:2: (~ ( LineTerminator | BSLASH | DIV ) | BackslashSequence )
-            int alt29=2;
-            int LA29_0 = input.LA(1);
+            // JS.g:953:2: (~ ( LineTerminatorChar | BSLASH | DIV ) | BackslashSequence )
+            int alt31=2;
+            int LA31_0 = input.LA(1);
 
-            if ( ((LA29_0>='\u0000' && LA29_0<='\t')||(LA29_0>='\u000B' && LA29_0<='\f')||(LA29_0>='\u000E' && LA29_0<='.')||(LA29_0>='0' && LA29_0<='[')||(LA29_0>=']' && LA29_0<='\u2027')||(LA29_0>='\u202A' && LA29_0<='\uFFFE')) ) {
-                alt29=1;
+            if ( ((LA31_0>='\u0000' && LA31_0<='\t')||(LA31_0>='\u000B' && LA31_0<='\f')||(LA31_0>='\u000E' && LA31_0<='.')||(LA31_0>='0' && LA31_0<='[')||(LA31_0>=']' && LA31_0<='\u2027')||(LA31_0>='\u202A' && LA31_0<='\uFFFE')) ) {
+                alt31=1;
             }
-            else if ( (LA29_0=='\\') ) {
-                alt29=2;
+            else if ( (LA31_0=='\\') ) {
+                alt31=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("948:10: fragment RegularExpressionChar : (~ ( LineTerminator | BSLASH | DIV ) | BackslashSequence );", 29, 0, input);
+                    new NoViableAltException("952:10: fragment RegularExpressionChar : (~ ( LineTerminatorChar | BSLASH | DIV ) | BackslashSequence );", 31, 0, input);
 
                 throw nvae;
             }
-            switch (alt29) {
+            switch (alt31) {
                 case 1 :
-                    // JS.g:949:4: ~ ( LineTerminator | BSLASH | DIV )
+                    // JS.g:953:4: ~ ( LineTerminatorChar | BSLASH | DIV )
                     {
                     if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='.')||(input.LA(1)>='0' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\u2027')||(input.LA(1)>='\u202A' && input.LA(1)<='\uFFFE') ) {
                         input.consume();
@@ -4538,7 +4633,7 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:950:4: BackslashSequence
+                    // JS.g:954:4: BackslashSequence
                     {
                     mBackslashSequence(); 
 
@@ -4556,28 +4651,28 @@
     public final void mRegularExpressionLiteral() throws RecognitionException {
         try {
             int _type = RegularExpressionLiteral;
-            // JS.g:954:2: ({...}? => DIV RegularExpressionFirstChar ( RegularExpressionChar )* DIV ( IdentifierPart )* )
-            // JS.g:954:4: {...}? => DIV RegularExpressionFirstChar ( RegularExpressionChar )* DIV ( IdentifierPart )*
+            // JS.g:958:2: ({...}? => DIV RegularExpressionFirstChar ( RegularExpressionChar )* DIV ( IdentifierPart )* )
+            // JS.g:958:4: {...}? => DIV RegularExpressionFirstChar ( RegularExpressionChar )* DIV ( IdentifierPart )*
             {
             if ( !( areRegularExpressionsEnabled() ) ) {
                 throw new FailedPredicateException(input, "RegularExpressionLiteral", " areRegularExpressionsEnabled() ");
             }
             mDIV(); 
             mRegularExpressionFirstChar(); 
-            // JS.g:954:73: ( RegularExpressionChar )*
-            loop30:
+            // JS.g:958:73: ( RegularExpressionChar )*
+            loop32:
             do {
-                int alt30=2;
-                int LA30_0 = input.LA(1);
+                int alt32=2;
+                int LA32_0 = input.LA(1);
 
-                if ( ((LA30_0>='\u0000' && LA30_0<='\t')||(LA30_0>='\u000B' && LA30_0<='\f')||(LA30_0>='\u000E' && LA30_0<='.')||(LA30_0>='0' && LA30_0<='\u2027')||(LA30_0>='\u202A' && LA30_0<='\uFFFE')) ) {
-                    alt30=1;
+                if ( ((LA32_0>='\u0000' && LA32_0<='\t')||(LA32_0>='\u000B' && LA32_0<='\f')||(LA32_0>='\u000E' && LA32_0<='.')||(LA32_0>='0' && LA32_0<='\u2027')||(LA32_0>='\u202A' && LA32_0<='\uFFFE')) ) {
+                    alt32=1;
                 }
 
 
-                switch (alt30) {
+                switch (alt32) {
             	case 1 :
-            	    // JS.g:954:73: RegularExpressionChar
+            	    // JS.g:958:73: RegularExpressionChar
             	    {
             	    mRegularExpressionChar(); 
 
@@ -4585,28 +4680,28 @@
             	    break;
 
             	default :
-            	    break loop30;
+            	    break loop32;
                 }
             } while (true);
 
             mDIV(); 
-            // JS.g:954:100: ( IdentifierPart )*
-            loop31:
+            // JS.g:958:100: ( IdentifierPart )*
+            loop33:
             do {
-                int alt31=2;
-                int LA31_0 = input.LA(1);
+                int alt33=2;
+                int LA33_0 = input.LA(1);
 
-                if ( (LA31_0=='$'||(LA31_0>='0' && LA31_0<='9')||(LA31_0>='A' && LA31_0<='Z')||LA31_0=='\\'||LA31_0=='_'||(LA31_0>='a' && LA31_0<='z')) ) {
-                    alt31=1;
+                if ( (LA33_0=='$'||(LA33_0>='0' && LA33_0<='9')||(LA33_0>='A' && LA33_0<='Z')||LA33_0=='\\'||LA33_0=='_'||(LA33_0>='a' && LA33_0<='z')) ) {
+                    alt33=1;
                 }
                 else if ( ( isIdentifierPartUnicode(input.LA(1)) ) ) {
-                    alt31=1;
+                    alt33=1;
                 }
 
 
-                switch (alt31) {
+                switch (alt33) {
             	case 1 :
-            	    // JS.g:954:100: IdentifierPart
+            	    // JS.g:958:100: IdentifierPart
             	    {
             	    mIdentifierPart(); 
 
@@ -4614,7 +4709,7 @@
             	    break;
 
             	default :
-            	    break loop31;
+            	    break loop33;
                 }
             } while (true);
 
@@ -4630,7 +4725,7 @@
 
     public void mTokens() throws RecognitionException {
         // JS.g:1:8: ( NULL | TRUE | FALSE | BREAK | CASE | CATCH | CONTINUE | DEFAULT | DELETE | DO | ELSE | FINALLY | FOR | EACH | FUNCTION | IF | IN | INSTANCEOF | NEW | RETURN | SWITCH | THIS | THROW | TRY | TYPEOF | VAR | VOID | WHILE | WITH | GET | SET | YIELD | CDATA | WXML | NAMESPACE | ABSTRACT | BOOLEAN | BYTE | CHAR | CLASS | CONST | DEBUGGER | DOUBLE | ENUM | EXPORT | EXTENDS | FINAL | FLOAT | GOTO | IMPLEMENTS | IMPORT | INT | INTERFACE | LONG | NATIVE | PACKAGE | PRIVATE | PROTECTED | PUBLIC | SHORT | STATIC | SUPER | SYNCHRONIZED | THROWS | TRANSIENT | VOLATILE | LBRACE | RBRACE | LPAREN | RPAREN | LBRACK | RBRACK | DOT | SEMIC | COMMA | LT | GT | LTE | GTE | EQ | NEQ | SAME | NSAME | ADD | SUB | MUL | MOD | INC | DEC | SHL | SHR | SHU | AND | OR | XOR | NOT | INV | LAND | LOR | QUE | COLON | ASSIGN | ADDASS | SUBASS | MULASS | MODASS | SHLASS | SHRASS | SHUASS | ANDASS | ORASS | XORASS | DIV | DIVASS | XCOPEN | XCCLOSE | XLCLOSE | XRCLOSE | CDATAOPEN | XHOPEN | XHCLOSE | AT | DOTDOT | COLONCOLON | WhiteSpace | EOL | MultiLineComment | SingleLineComment | Identifier | XmlAttribute | DecimalLiteral | OctalIntegerLiteral | HexIntegerLiteral | StringLiteral | RegularExpressionLiteral )
-        int alt32=135;
+        int alt34=135;
         switch ( input.LA(1) ) {
         case 'n':
             {
@@ -4638,129 +4733,129 @@
             case 'a':
                 {
                 switch ( input.LA(3) ) {
-                case 't':
-                    {
-                    int LA32_146 = input.LA(4);
-
-                    if ( (LA32_146=='i') ) {
-                        int LA32_222 = input.LA(5);
-
-                        if ( (LA32_222=='v') ) {
-                            int LA32_285 = input.LA(6);
-
-                            if ( (LA32_285=='e') ) {
-                                int LA32_338 = input.LA(7);
-
-                                if ( (LA32_338=='$'||(LA32_338>='0' && LA32_338<='9')||(LA32_338>='A' && LA32_338<='Z')||LA32_338=='\\'||LA32_338=='_'||(LA32_338>='a' && LA32_338<='z')) ) {
-                                    alt32=129;
-                                }
-                                else {
-                                    alt32=55;}
-                            }
-                            else {
-                                alt32=129;}
-                        }
-                        else {
-                            alt32=129;}
-                    }
-                    else {
-                        alt32=129;}
-                    }
-                    break;
                 case 'm':
                     {
-                    int LA32_147 = input.LA(4);
+                    int LA34_146 = input.LA(4);
 
-                    if ( (LA32_147=='e') ) {
-                        int LA32_223 = input.LA(5);
+                    if ( (LA34_146=='e') ) {
+                        int LA34_222 = input.LA(5);
 
-                        if ( (LA32_223=='s') ) {
-                            int LA32_286 = input.LA(6);
+                        if ( (LA34_222=='s') ) {
+                            int LA34_285 = input.LA(6);
 
-                            if ( (LA32_286=='p') ) {
-                                int LA32_339 = input.LA(7);
+                            if ( (LA34_285=='p') ) {
+                                int LA34_338 = input.LA(7);
 
-                                if ( (LA32_339=='a') ) {
-                                    int LA32_381 = input.LA(8);
+                                if ( (LA34_338=='a') ) {
+                                    int LA34_380 = input.LA(8);
 
-                                    if ( (LA32_381=='c') ) {
-                                        int LA32_409 = input.LA(9);
+                                    if ( (LA34_380=='c') ) {
+                                        int LA34_409 = input.LA(9);
 
-                                        if ( (LA32_409=='e') ) {
-                                            int LA32_427 = input.LA(10);
+                                        if ( (LA34_409=='e') ) {
+                                            int LA34_427 = input.LA(10);
 
-                                            if ( (LA32_427=='$'||(LA32_427>='0' && LA32_427<='9')||(LA32_427>='A' && LA32_427<='Z')||LA32_427=='\\'||LA32_427=='_'||(LA32_427>='a' && LA32_427<='z')) ) {
-                                                alt32=129;
+                                            if ( (LA34_427=='$'||(LA34_427>='0' && LA34_427<='9')||(LA34_427>='A' && LA34_427<='Z')||LA34_427=='\\'||LA34_427=='_'||(LA34_427>='a' && LA34_427<='z')) ) {
+                                                alt34=129;
                                             }
                                             else {
-                                                alt32=35;}
+                                                alt34=35;}
                                         }
                                         else {
-                                            alt32=129;}
+                                            alt34=129;}
                                     }
                                     else {
-                                        alt32=129;}
+                                        alt34=129;}
                                 }
                                 else {
-                                    alt32=129;}
+                                    alt34=129;}
                             }
                             else {
-                                alt32=129;}
+                                alt34=129;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
+                    }
+                    break;
+                case 't':
+                    {
+                    int LA34_147 = input.LA(4);
+
+                    if ( (LA34_147=='i') ) {
+                        int LA34_223 = input.LA(5);
+
+                        if ( (LA34_223=='v') ) {
+                            int LA34_286 = input.LA(6);
+
+                            if ( (LA34_286=='e') ) {
+                                int LA34_339 = input.LA(7);
+
+                                if ( (LA34_339=='$'||(LA34_339>='0' && LA34_339<='9')||(LA34_339>='A' && LA34_339<='Z')||LA34_339=='\\'||LA34_339=='_'||(LA34_339>='a' && LA34_339<='z')) ) {
+                                    alt34=129;
+                                }
+                                else {
+                                    alt34=55;}
+                            }
+                            else {
+                                alt34=129;}
+                        }
+                        else {
+                            alt34=129;}
+                    }
+                    else {
+                        alt34=129;}
                     }
                     break;
                 default:
-                    alt32=129;}
+                    alt34=129;}
 
                 }
                 break;
             case 'u':
                 {
-                int LA32_52 = input.LA(3);
+                int LA34_52 = input.LA(3);
 
-                if ( (LA32_52=='l') ) {
-                    int LA32_148 = input.LA(4);
+                if ( (LA34_52=='l') ) {
+                    int LA34_148 = input.LA(4);
 
-                    if ( (LA32_148=='l') ) {
-                        int LA32_224 = input.LA(5);
+                    if ( (LA34_148=='l') ) {
+                        int LA34_224 = input.LA(5);
 
-                        if ( (LA32_224=='$'||(LA32_224>='0' && LA32_224<='9')||(LA32_224>='A' && LA32_224<='Z')||LA32_224=='\\'||LA32_224=='_'||(LA32_224>='a' && LA32_224<='z')) ) {
-                            alt32=129;
+                        if ( (LA34_224=='$'||(LA34_224>='0' && LA34_224<='9')||(LA34_224>='A' && LA34_224<='Z')||LA34_224=='\\'||LA34_224=='_'||(LA34_224>='a' && LA34_224<='z')) ) {
+                            alt34=129;
                         }
                         else {
-                            alt32=1;}
+                            alt34=1;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
                 }
                 break;
             case 'e':
                 {
-                int LA32_53 = input.LA(3);
+                int LA34_53 = input.LA(3);
 
-                if ( (LA32_53=='w') ) {
-                    int LA32_149 = input.LA(4);
+                if ( (LA34_53=='w') ) {
+                    int LA34_149 = input.LA(4);
 
-                    if ( (LA32_149=='$'||(LA32_149>='0' && LA32_149<='9')||(LA32_149>='A' && LA32_149<='Z')||LA32_149=='\\'||LA32_149=='_'||(LA32_149>='a' && LA32_149<='z')) ) {
-                        alt32=129;
+                    if ( (LA34_149=='$'||(LA34_149>='0' && LA34_149<='9')||(LA34_149>='A' && LA34_149<='Z')||LA34_149=='\\'||LA34_149=='_'||(LA34_149>='a' && LA34_149<='z')) ) {
+                        alt34=129;
                     }
                     else {
-                        alt32=19;}
+                        alt34=19;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
                 }
                 break;
             default:
-                alt32=129;}
+                alt34=129;}
 
             }
             break;
@@ -4770,24 +4865,41 @@
             case 'h':
                 {
                 switch ( input.LA(3) ) {
+                case 'i':
+                    {
+                    int LA34_150 = input.LA(4);
+
+                    if ( (LA34_150=='s') ) {
+                        int LA34_226 = input.LA(5);
+
+                        if ( (LA34_226=='$'||(LA34_226>='0' && LA34_226<='9')||(LA34_226>='A' && LA34_226<='Z')||LA34_226=='\\'||LA34_226=='_'||(LA34_226>='a' && LA34_226<='z')) ) {
+                            alt34=129;
+                        }
+                        else {
+                            alt34=22;}
+                    }
+                    else {
+                        alt34=129;}
+                    }
+                    break;
                 case 'r':
                     {
-                    int LA32_150 = input.LA(4);
+                    int LA34_151 = input.LA(4);
 
-                    if ( (LA32_150=='o') ) {
-                        int LA32_226 = input.LA(5);
+                    if ( (LA34_151=='o') ) {
+                        int LA34_227 = input.LA(5);
 
-                        if ( (LA32_226=='w') ) {
+                        if ( (LA34_227=='w') ) {
                             switch ( input.LA(6) ) {
                             case 's':
                                 {
-                                int LA32_340 = input.LA(7);
+                                int LA34_340 = input.LA(7);
 
-                                if ( (LA32_340=='$'||(LA32_340>='0' && LA32_340<='9')||(LA32_340>='A' && LA32_340<='Z')||LA32_340=='\\'||LA32_340=='_'||(LA32_340>='a' && LA32_340<='z')) ) {
-                                    alt32=129;
+                                if ( (LA34_340=='$'||(LA34_340>='0' && LA34_340<='9')||(LA34_340>='A' && LA34_340<='Z')||LA34_340=='\\'||LA34_340=='_'||(LA34_340>='a' && LA34_340<='z')) ) {
+                                    alt34=129;
                                 }
                                 else {
-                                    alt32=64;}
+                                    alt34=64;}
                                 }
                                 break;
                             case '$':
@@ -4855,224 +4967,178 @@
                             case 'y':
                             case 'z':
                                 {
-                                alt32=129;
+                                alt34=129;
                                 }
                                 break;
                             default:
-                                alt32=23;}
+                                alt34=23;}
 
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
-                    }
-                    break;
-                case 'i':
-                    {
-                    int LA32_151 = input.LA(4);
-
-                    if ( (LA32_151=='s') ) {
-                        int LA32_227 = input.LA(5);
-
-                        if ( (LA32_227=='$'||(LA32_227>='0' && LA32_227<='9')||(LA32_227>='A' && LA32_227<='Z')||LA32_227=='\\'||LA32_227=='_'||(LA32_227>='a' && LA32_227<='z')) ) {
-                            alt32=129;
-                        }
-                        else {
-                            alt32=22;}
-                    }
-                    else {
-                        alt32=129;}
+                        alt34=129;}
                     }
                     break;
                 default:
-                    alt32=129;}
+                    alt34=129;}
 
                 }
                 break;
             case 'r':
                 {
                 switch ( input.LA(3) ) {
-                case 'a':
-                    {
-                    int LA32_152 = input.LA(4);
-
-                    if ( (LA32_152=='n') ) {
-                        int LA32_228 = input.LA(5);
-
-                        if ( (LA32_228=='s') ) {
-                            int LA32_290 = input.LA(6);
-
-                            if ( (LA32_290=='i') ) {
-                                int LA32_342 = input.LA(7);
-
-                                if ( (LA32_342=='e') ) {
-                                    int LA32_383 = input.LA(8);
-
-                                    if ( (LA32_383=='n') ) {
-                                        int LA32_410 = input.LA(9);
-
-                                        if ( (LA32_410=='t') ) {
-                                            int LA32_428 = input.LA(10);
-
-                                            if ( (LA32_428=='$'||(LA32_428>='0' && LA32_428<='9')||(LA32_428>='A' && LA32_428<='Z')||LA32_428=='\\'||LA32_428=='_'||(LA32_428>='a' && LA32_428<='z')) ) {
-                                                alt32=129;
-                                            }
-                                            else {
-                                                alt32=65;}
-                                        }
-                                        else {
-                                            alt32=129;}
-                                    }
-                                    else {
-                                        alt32=129;}
-                                }
-                                else {
-                                    alt32=129;}
-                            }
-                            else {
-                                alt32=129;}
-                        }
-                        else {
-                            alt32=129;}
-                    }
-                    else {
-                        alt32=129;}
-                    }
-                    break;
                 case 'y':
                     {
-                    int LA32_153 = input.LA(4);
+                    int LA34_152 = input.LA(4);
 
-                    if ( (LA32_153=='$'||(LA32_153>='0' && LA32_153<='9')||(LA32_153>='A' && LA32_153<='Z')||LA32_153=='\\'||LA32_153=='_'||(LA32_153>='a' && LA32_153<='z')) ) {
-                        alt32=129;
+                    if ( (LA34_152=='$'||(LA34_152>='0' && LA34_152<='9')||(LA34_152>='A' && LA34_152<='Z')||LA34_152=='\\'||LA34_152=='_'||(LA34_152>='a' && LA34_152<='z')) ) {
+                        alt34=129;
                     }
                     else {
-                        alt32=24;}
+                        alt34=24;}
+                    }
+                    break;
+                case 'a':
+                    {
+                    int LA34_153 = input.LA(4);
+
+                    if ( (LA34_153=='n') ) {
+                        int LA34_229 = input.LA(5);
+
+                        if ( (LA34_229=='s') ) {
+                            int LA34_290 = input.LA(6);
+
+                            if ( (LA34_290=='i') ) {
+                                int LA34_342 = input.LA(7);
+
+                                if ( (LA34_342=='e') ) {
+                                    int LA34_383 = input.LA(8);
+
+                                    if ( (LA34_383=='n') ) {
+                                        int LA34_410 = input.LA(9);
+
+                                        if ( (LA34_410=='t') ) {
+                                            int LA34_428 = input.LA(10);
+
+                                            if ( (LA34_428=='$'||(LA34_428>='0' && LA34_428<='9')||(LA34_428>='A' && LA34_428<='Z')||LA34_428=='\\'||LA34_428=='_'||(LA34_428>='a' && LA34_428<='z')) ) {
+                                                alt34=129;
+                                            }
+                                            else {
+                                                alt34=65;}
+                                        }
+                                        else {
+                                            alt34=129;}
+                                    }
+                                    else {
+                                        alt34=129;}
+                                }
+                                else {
+                                    alt34=129;}
+                            }
+                            else {
+                                alt34=129;}
+                        }
+                        else {
+                            alt34=129;}
+                    }
+                    else {
+                        alt34=129;}
                     }
                     break;
                 case 'u':
                     {
-                    int LA32_154 = input.LA(4);
+                    int LA34_154 = input.LA(4);
 
-                    if ( (LA32_154=='e') ) {
-                        int LA32_230 = input.LA(5);
+                    if ( (LA34_154=='e') ) {
+                        int LA34_230 = input.LA(5);
 
-                        if ( (LA32_230=='$'||(LA32_230>='0' && LA32_230<='9')||(LA32_230>='A' && LA32_230<='Z')||LA32_230=='\\'||LA32_230=='_'||(LA32_230>='a' && LA32_230<='z')) ) {
-                            alt32=129;
+                        if ( (LA34_230=='$'||(LA34_230>='0' && LA34_230<='9')||(LA34_230>='A' && LA34_230<='Z')||LA34_230=='\\'||LA34_230=='_'||(LA34_230>='a' && LA34_230<='z')) ) {
+                            alt34=129;
                         }
                         else {
-                            alt32=2;}
+                            alt34=2;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                     }
                     break;
                 default:
-                    alt32=129;}
+                    alt34=129;}
 
                 }
                 break;
             case 'y':
                 {
-                int LA32_56 = input.LA(3);
+                int LA34_56 = input.LA(3);
 
-                if ( (LA32_56=='p') ) {
-                    int LA32_155 = input.LA(4);
+                if ( (LA34_56=='p') ) {
+                    int LA34_155 = input.LA(4);
 
-                    if ( (LA32_155=='e') ) {
-                        int LA32_231 = input.LA(5);
+                    if ( (LA34_155=='e') ) {
+                        int LA34_231 = input.LA(5);
 
-                        if ( (LA32_231=='o') ) {
-                            int LA32_292 = input.LA(6);
+                        if ( (LA34_231=='o') ) {
+                            int LA34_292 = input.LA(6);
 
-                            if ( (LA32_292=='f') ) {
-                                int LA32_343 = input.LA(7);
+                            if ( (LA34_292=='f') ) {
+                                int LA34_343 = input.LA(7);
 
-                                if ( (LA32_343=='$'||(LA32_343>='0' && LA32_343<='9')||(LA32_343>='A' && LA32_343<='Z')||LA32_343=='\\'||LA32_343=='_'||(LA32_343>='a' && LA32_343<='z')) ) {
-                                    alt32=129;
+                                if ( (LA34_343=='$'||(LA34_343>='0' && LA34_343<='9')||(LA34_343>='A' && LA34_343<='Z')||LA34_343=='\\'||LA34_343=='_'||(LA34_343>='a' && LA34_343<='z')) ) {
+                                    alt34=129;
                                 }
                                 else {
-                                    alt32=25;}
+                                    alt34=25;}
                             }
                             else {
-                                alt32=129;}
+                                alt34=129;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
                 }
                 break;
             default:
-                alt32=129;}
+                alt34=129;}
 
             }
             break;
         case 'f':
             {
             switch ( input.LA(2) ) {
-            case 'l':
-                {
-                int LA32_57 = input.LA(3);
-
-                if ( (LA32_57=='o') ) {
-                    int LA32_156 = input.LA(4);
-
-                    if ( (LA32_156=='a') ) {
-                        int LA32_232 = input.LA(5);
-
-                        if ( (LA32_232=='t') ) {
-                            int LA32_293 = input.LA(6);
-
-                            if ( (LA32_293=='$'||(LA32_293>='0' && LA32_293<='9')||(LA32_293>='A' && LA32_293<='Z')||LA32_293=='\\'||LA32_293=='_'||(LA32_293>='a' && LA32_293<='z')) ) {
-                                alt32=129;
-                            }
-                            else {
-                                alt32=48;}
-                        }
-                        else {
-                            alt32=129;}
-                    }
-                    else {
-                        alt32=129;}
-                }
-                else {
-                    alt32=129;}
-                }
-                break;
             case 'i':
                 {
-                int LA32_58 = input.LA(3);
+                int LA34_57 = input.LA(3);
 
-                if ( (LA32_58=='n') ) {
-                    int LA32_157 = input.LA(4);
+                if ( (LA34_57=='n') ) {
+                    int LA34_156 = input.LA(4);
 
-                    if ( (LA32_157=='a') ) {
-                        int LA32_233 = input.LA(5);
+                    if ( (LA34_156=='a') ) {
+                        int LA34_232 = input.LA(5);
 
-                        if ( (LA32_233=='l') ) {
+                        if ( (LA34_232=='l') ) {
                             switch ( input.LA(6) ) {
                             case 'l':
                                 {
-                                int LA32_345 = input.LA(7);
+                                int LA34_344 = input.LA(7);
 
-                                if ( (LA32_345=='y') ) {
-                                    int LA32_385 = input.LA(8);
+                                if ( (LA34_344=='y') ) {
+                                    int LA34_385 = input.LA(8);
 
-                                    if ( (LA32_385=='$'||(LA32_385>='0' && LA32_385<='9')||(LA32_385>='A' && LA32_385<='Z')||LA32_385=='\\'||LA32_385=='_'||(LA32_385>='a' && LA32_385<='z')) ) {
-                                        alt32=129;
+                                    if ( (LA34_385=='$'||(LA34_385>='0' && LA34_385<='9')||(LA34_385>='A' && LA34_385<='Z')||LA34_385=='\\'||LA34_385=='_'||(LA34_385>='a' && LA34_385<='z')) ) {
+                                        alt34=129;
                                     }
                                     else {
-                                        alt32=12;}
+                                        alt34=12;}
                                 }
                                 else {
-                                    alt32=129;}
+                                    alt34=129;}
                                 }
                                 break;
                             case '$':
@@ -5140,118 +5206,147 @@
                             case 'y':
                             case 'z':
                                 {
-                                alt32=129;
+                                alt34=129;
                                 }
                                 break;
                             default:
-                                alt32=47;}
+                                alt34=47;}
 
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
                 }
                 break;
-            case 'o':
+            case 'l':
                 {
-                int LA32_59 = input.LA(3);
+                int LA34_58 = input.LA(3);
 
-                if ( (LA32_59=='r') ) {
-                    int LA32_158 = input.LA(4);
+                if ( (LA34_58=='o') ) {
+                    int LA34_157 = input.LA(4);
 
-                    if ( (LA32_158=='$'||(LA32_158>='0' && LA32_158<='9')||(LA32_158>='A' && LA32_158<='Z')||LA32_158=='\\'||LA32_158=='_'||(LA32_158>='a' && LA32_158<='z')) ) {
-                        alt32=129;
+                    if ( (LA34_157=='a') ) {
+                        int LA34_233 = input.LA(5);
+
+                        if ( (LA34_233=='t') ) {
+                            int LA34_294 = input.LA(6);
+
+                            if ( (LA34_294=='$'||(LA34_294>='0' && LA34_294<='9')||(LA34_294>='A' && LA34_294<='Z')||LA34_294=='\\'||LA34_294=='_'||(LA34_294>='a' && LA34_294<='z')) ) {
+                                alt34=129;
+                            }
+                            else {
+                                alt34=48;}
+                        }
+                        else {
+                            alt34=129;}
                     }
                     else {
-                        alt32=13;}
+                        alt34=129;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
                 }
                 break;
             case 'a':
                 {
-                int LA32_60 = input.LA(3);
+                int LA34_59 = input.LA(3);
 
-                if ( (LA32_60=='l') ) {
-                    int LA32_159 = input.LA(4);
+                if ( (LA34_59=='l') ) {
+                    int LA34_158 = input.LA(4);
 
-                    if ( (LA32_159=='s') ) {
-                        int LA32_235 = input.LA(5);
+                    if ( (LA34_158=='s') ) {
+                        int LA34_234 = input.LA(5);
 
-                        if ( (LA32_235=='e') ) {
-                            int LA32_295 = input.LA(6);
+                        if ( (LA34_234=='e') ) {
+                            int LA34_295 = input.LA(6);
 
-                            if ( (LA32_295=='$'||(LA32_295>='0' && LA32_295<='9')||(LA32_295>='A' && LA32_295<='Z')||LA32_295=='\\'||LA32_295=='_'||(LA32_295>='a' && LA32_295<='z')) ) {
-                                alt32=129;
+                            if ( (LA34_295=='$'||(LA34_295>='0' && LA34_295<='9')||(LA34_295>='A' && LA34_295<='Z')||LA34_295=='\\'||LA34_295=='_'||(LA34_295>='a' && LA34_295<='z')) ) {
+                                alt34=129;
                             }
                             else {
-                                alt32=3;}
+                                alt34=3;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
                 }
                 break;
             case 'u':
                 {
-                int LA32_61 = input.LA(3);
+                int LA34_60 = input.LA(3);
 
-                if ( (LA32_61=='n') ) {
-                    int LA32_160 = input.LA(4);
+                if ( (LA34_60=='n') ) {
+                    int LA34_159 = input.LA(4);
 
-                    if ( (LA32_160=='c') ) {
-                        int LA32_236 = input.LA(5);
+                    if ( (LA34_159=='c') ) {
+                        int LA34_235 = input.LA(5);
 
-                        if ( (LA32_236=='t') ) {
-                            int LA32_296 = input.LA(6);
+                        if ( (LA34_235=='t') ) {
+                            int LA34_296 = input.LA(6);
 
-                            if ( (LA32_296=='i') ) {
-                                int LA32_348 = input.LA(7);
+                            if ( (LA34_296=='i') ) {
+                                int LA34_348 = input.LA(7);
 
-                                if ( (LA32_348=='o') ) {
-                                    int LA32_386 = input.LA(8);
+                                if ( (LA34_348=='o') ) {
+                                    int LA34_386 = input.LA(8);
 
-                                    if ( (LA32_386=='n') ) {
-                                        int LA32_412 = input.LA(9);
+                                    if ( (LA34_386=='n') ) {
+                                        int LA34_412 = input.LA(9);
 
-                                        if ( (LA32_412=='$'||(LA32_412>='0' && LA32_412<='9')||(LA32_412>='A' && LA32_412<='Z')||LA32_412=='\\'||LA32_412=='_'||(LA32_412>='a' && LA32_412<='z')) ) {
-                                            alt32=129;
+                                        if ( (LA34_412=='$'||(LA34_412>='0' && LA34_412<='9')||(LA34_412>='A' && LA34_412<='Z')||LA34_412=='\\'||LA34_412=='_'||(LA34_412>='a' && LA34_412<='z')) ) {
+                                            alt34=129;
                                         }
                                         else {
-                                            alt32=15;}
+                                            alt34=15;}
                                     }
                                     else {
-                                        alt32=129;}
+                                        alt34=129;}
                                 }
                                 else {
-                                    alt32=129;}
+                                    alt34=129;}
                             }
                             else {
-                                alt32=129;}
+                                alt34=129;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
+                }
+                break;
+            case 'o':
+                {
+                int LA34_61 = input.LA(3);
+
+                if ( (LA34_61=='r') ) {
+                    int LA34_160 = input.LA(4);
+
+                    if ( (LA34_160=='$'||(LA34_160>='0' && LA34_160<='9')||(LA34_160>='A' && LA34_160<='Z')||LA34_160=='\\'||LA34_160=='_'||(LA34_160>='a' && LA34_160<='z')) ) {
+                        alt34=129;
+                    }
+                    else {
+                        alt34=13;}
+                }
+                else {
+                    alt34=129;}
                 }
                 break;
             default:
-                alt32=129;}
+                alt34=129;}
 
             }
             break;
@@ -5260,99 +5355,99 @@
             switch ( input.LA(2) ) {
             case 'o':
                 {
-                int LA32_62 = input.LA(3);
+                int LA34_62 = input.LA(3);
 
-                if ( (LA32_62=='o') ) {
-                    int LA32_161 = input.LA(4);
+                if ( (LA34_62=='o') ) {
+                    int LA34_161 = input.LA(4);
 
-                    if ( (LA32_161=='l') ) {
-                        int LA32_237 = input.LA(5);
+                    if ( (LA34_161=='l') ) {
+                        int LA34_237 = input.LA(5);
 
-                        if ( (LA32_237=='e') ) {
-                            int LA32_297 = input.LA(6);
+                        if ( (LA34_237=='e') ) {
+                            int LA34_297 = input.LA(6);
 
-                            if ( (LA32_297=='a') ) {
-                                int LA32_349 = input.LA(7);
+                            if ( (LA34_297=='a') ) {
+                                int LA34_349 = input.LA(7);
 
-                                if ( (LA32_349=='n') ) {
-                                    int LA32_387 = input.LA(8);
+                                if ( (LA34_349=='n') ) {
+                                    int LA34_387 = input.LA(8);
 
-                                    if ( (LA32_387=='$'||(LA32_387>='0' && LA32_387<='9')||(LA32_387>='A' && LA32_387<='Z')||LA32_387=='\\'||LA32_387=='_'||(LA32_387>='a' && LA32_387<='z')) ) {
-                                        alt32=129;
+                                    if ( (LA34_387=='$'||(LA34_387>='0' && LA34_387<='9')||(LA34_387>='A' && LA34_387<='Z')||LA34_387=='\\'||LA34_387=='_'||(LA34_387>='a' && LA34_387<='z')) ) {
+                                        alt34=129;
                                     }
                                     else {
-                                        alt32=37;}
+                                        alt34=37;}
                                 }
                                 else {
-                                    alt32=129;}
+                                    alt34=129;}
                             }
                             else {
-                                alt32=129;}
+                                alt34=129;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
                 }
                 break;
             case 'y':
                 {
-                int LA32_63 = input.LA(3);
+                int LA34_63 = input.LA(3);
 
-                if ( (LA32_63=='t') ) {
-                    int LA32_162 = input.LA(4);
+                if ( (LA34_63=='t') ) {
+                    int LA34_162 = input.LA(4);
 
-                    if ( (LA32_162=='e') ) {
-                        int LA32_238 = input.LA(5);
+                    if ( (LA34_162=='e') ) {
+                        int LA34_238 = input.LA(5);
 
-                        if ( (LA32_238=='$'||(LA32_238>='0' && LA32_238<='9')||(LA32_238>='A' && LA32_238<='Z')||LA32_238=='\\'||LA32_238=='_'||(LA32_238>='a' && LA32_238<='z')) ) {
-                            alt32=129;
+                        if ( (LA34_238=='$'||(LA34_238>='0' && LA34_238<='9')||(LA34_238>='A' && LA34_238<='Z')||LA34_238=='\\'||LA34_238=='_'||(LA34_238>='a' && LA34_238<='z')) ) {
+                            alt34=129;
                         }
                         else {
-                            alt32=38;}
+                            alt34=38;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
                 }
                 break;
             case 'r':
                 {
-                int LA32_64 = input.LA(3);
+                int LA34_64 = input.LA(3);
 
-                if ( (LA32_64=='e') ) {
-                    int LA32_163 = input.LA(4);
+                if ( (LA34_64=='e') ) {
+                    int LA34_163 = input.LA(4);
 
-                    if ( (LA32_163=='a') ) {
-                        int LA32_239 = input.LA(5);
+                    if ( (LA34_163=='a') ) {
+                        int LA34_239 = input.LA(5);
 
-                        if ( (LA32_239=='k') ) {
-                            int LA32_299 = input.LA(6);
+                        if ( (LA34_239=='k') ) {
+                            int LA34_299 = input.LA(6);
 
-                            if ( (LA32_299=='$'||(LA32_299>='0' && LA32_299<='9')||(LA32_299>='A' && LA32_299<='Z')||LA32_299=='\\'||LA32_299=='_'||(LA32_299>='a' && LA32_299<='z')) ) {
-                                alt32=129;
+                            if ( (LA34_299=='$'||(LA34_299>='0' && LA34_299<='9')||(LA34_299>='A' && LA34_299<='Z')||LA34_299=='\\'||LA34_299=='_'||(LA34_299>='a' && LA34_299<='z')) ) {
+                                alt34=129;
                             }
                             else {
-                                alt32=4;}
+                                alt34=4;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
                 }
                 break;
             default:
-                alt32=129;}
+                alt34=129;}
 
             }
             break;
@@ -5361,120 +5456,120 @@
             switch ( input.LA(2) ) {
             case 'o':
                 {
-                int LA32_65 = input.LA(3);
+                int LA34_65 = input.LA(3);
 
-                if ( (LA32_65=='n') ) {
+                if ( (LA34_65=='n') ) {
                     switch ( input.LA(4) ) {
-                    case 't':
-                        {
-                        int LA32_240 = input.LA(5);
-
-                        if ( (LA32_240=='i') ) {
-                            int LA32_300 = input.LA(6);
-
-                            if ( (LA32_300=='n') ) {
-                                int LA32_351 = input.LA(7);
-
-                                if ( (LA32_351=='u') ) {
-                                    int LA32_388 = input.LA(8);
-
-                                    if ( (LA32_388=='e') ) {
-                                        int LA32_414 = input.LA(9);
-
-                                        if ( (LA32_414=='$'||(LA32_414>='0' && LA32_414<='9')||(LA32_414>='A' && LA32_414<='Z')||LA32_414=='\\'||LA32_414=='_'||(LA32_414>='a' && LA32_414<='z')) ) {
-                                            alt32=129;
-                                        }
-                                        else {
-                                            alt32=7;}
-                                    }
-                                    else {
-                                        alt32=129;}
-                                }
-                                else {
-                                    alt32=129;}
-                            }
-                            else {
-                                alt32=129;}
-                        }
-                        else {
-                            alt32=129;}
-                        }
-                        break;
                     case 's':
                         {
-                        int LA32_241 = input.LA(5);
+                        int LA34_240 = input.LA(5);
 
-                        if ( (LA32_241=='t') ) {
-                            int LA32_301 = input.LA(6);
+                        if ( (LA34_240=='t') ) {
+                            int LA34_300 = input.LA(6);
 
-                            if ( (LA32_301=='$'||(LA32_301>='0' && LA32_301<='9')||(LA32_301>='A' && LA32_301<='Z')||LA32_301=='\\'||LA32_301=='_'||(LA32_301>='a' && LA32_301<='z')) ) {
-                                alt32=129;
+                            if ( (LA34_300=='$'||(LA34_300>='0' && LA34_300<='9')||(LA34_300>='A' && LA34_300<='Z')||LA34_300=='\\'||LA34_300=='_'||(LA34_300>='a' && LA34_300<='z')) ) {
+                                alt34=129;
                             }
                             else {
-                                alt32=41;}
+                                alt34=41;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
+                        }
+                        break;
+                    case 't':
+                        {
+                        int LA34_241 = input.LA(5);
+
+                        if ( (LA34_241=='i') ) {
+                            int LA34_301 = input.LA(6);
+
+                            if ( (LA34_301=='n') ) {
+                                int LA34_352 = input.LA(7);
+
+                                if ( (LA34_352=='u') ) {
+                                    int LA34_388 = input.LA(8);
+
+                                    if ( (LA34_388=='e') ) {
+                                        int LA34_414 = input.LA(9);
+
+                                        if ( (LA34_414=='$'||(LA34_414>='0' && LA34_414<='9')||(LA34_414>='A' && LA34_414<='Z')||LA34_414=='\\'||LA34_414=='_'||(LA34_414>='a' && LA34_414<='z')) ) {
+                                            alt34=129;
+                                        }
+                                        else {
+                                            alt34=7;}
+                                    }
+                                    else {
+                                        alt34=129;}
+                                }
+                                else {
+                                    alt34=129;}
+                            }
+                            else {
+                                alt34=129;}
+                        }
+                        else {
+                            alt34=129;}
                         }
                         break;
                     default:
-                        alt32=129;}
+                        alt34=129;}
 
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
                 }
                 break;
             case 'l':
                 {
-                int LA32_66 = input.LA(3);
+                int LA34_66 = input.LA(3);
 
-                if ( (LA32_66=='a') ) {
-                    int LA32_165 = input.LA(4);
+                if ( (LA34_66=='a') ) {
+                    int LA34_165 = input.LA(4);
 
-                    if ( (LA32_165=='s') ) {
-                        int LA32_242 = input.LA(5);
+                    if ( (LA34_165=='s') ) {
+                        int LA34_242 = input.LA(5);
 
-                        if ( (LA32_242=='s') ) {
-                            int LA32_302 = input.LA(6);
+                        if ( (LA34_242=='s') ) {
+                            int LA34_302 = input.LA(6);
 
-                            if ( (LA32_302=='$'||(LA32_302>='0' && LA32_302<='9')||(LA32_302>='A' && LA32_302<='Z')||LA32_302=='\\'||LA32_302=='_'||(LA32_302>='a' && LA32_302<='z')) ) {
-                                alt32=129;
+                            if ( (LA34_302=='$'||(LA34_302>='0' && LA34_302<='9')||(LA34_302>='A' && LA34_302<='Z')||LA34_302=='\\'||LA34_302=='_'||(LA34_302>='a' && LA34_302<='z')) ) {
+                                alt34=129;
                             }
                             else {
-                                alt32=40;}
+                                alt34=40;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
                 }
                 break;
             case 'h':
                 {
-                int LA32_67 = input.LA(3);
+                int LA34_67 = input.LA(3);
 
-                if ( (LA32_67=='a') ) {
-                    int LA32_166 = input.LA(4);
+                if ( (LA34_67=='a') ) {
+                    int LA34_166 = input.LA(4);
 
-                    if ( (LA32_166=='r') ) {
-                        int LA32_243 = input.LA(5);
+                    if ( (LA34_166=='r') ) {
+                        int LA34_243 = input.LA(5);
 
-                        if ( (LA32_243=='$'||(LA32_243>='0' && LA32_243<='9')||(LA32_243>='A' && LA32_243<='Z')||LA32_243=='\\'||LA32_243=='_'||(LA32_243>='a' && LA32_243<='z')) ) {
-                            alt32=129;
+                        if ( (LA34_243=='$'||(LA34_243>='0' && LA34_243<='9')||(LA34_243>='A' && LA34_243<='Z')||LA34_243=='\\'||LA34_243=='_'||(LA34_243>='a' && LA34_243<='z')) ) {
+                            alt34=129;
                         }
                         else {
-                            alt32=39;}
+                            alt34=39;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
                 }
                 break;
             case 'a':
@@ -5482,51 +5577,51 @@
                 switch ( input.LA(3) ) {
                 case 't':
                     {
-                    int LA32_167 = input.LA(4);
+                    int LA34_167 = input.LA(4);
 
-                    if ( (LA32_167=='c') ) {
-                        int LA32_244 = input.LA(5);
+                    if ( (LA34_167=='c') ) {
+                        int LA34_244 = input.LA(5);
 
-                        if ( (LA32_244=='h') ) {
-                            int LA32_304 = input.LA(6);
+                        if ( (LA34_244=='h') ) {
+                            int LA34_304 = input.LA(6);
 
-                            if ( (LA32_304=='$'||(LA32_304>='0' && LA32_304<='9')||(LA32_304>='A' && LA32_304<='Z')||LA32_304=='\\'||LA32_304=='_'||(LA32_304>='a' && LA32_304<='z')) ) {
-                                alt32=129;
+                            if ( (LA34_304=='$'||(LA34_304>='0' && LA34_304<='9')||(LA34_304>='A' && LA34_304<='Z')||LA34_304=='\\'||LA34_304=='_'||(LA34_304>='a' && LA34_304<='z')) ) {
+                                alt34=129;
                             }
                             else {
-                                alt32=6;}
+                                alt34=6;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                     }
                     break;
                 case 's':
                     {
-                    int LA32_168 = input.LA(4);
+                    int LA34_168 = input.LA(4);
 
-                    if ( (LA32_168=='e') ) {
-                        int LA32_245 = input.LA(5);
+                    if ( (LA34_168=='e') ) {
+                        int LA34_245 = input.LA(5);
 
-                        if ( (LA32_245=='$'||(LA32_245>='0' && LA32_245<='9')||(LA32_245>='A' && LA32_245<='Z')||LA32_245=='\\'||LA32_245=='_'||(LA32_245>='a' && LA32_245<='z')) ) {
-                            alt32=129;
+                        if ( (LA34_245=='$'||(LA34_245>='0' && LA34_245<='9')||(LA34_245>='A' && LA34_245<='Z')||LA34_245=='\\'||LA34_245=='_'||(LA34_245>='a' && LA34_245<='z')) ) {
+                            alt34=129;
                         }
                         else {
-                            alt32=5;}
+                            alt34=5;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                     }
                     break;
                 default:
-                    alt32=129;}
+                    alt34=129;}
 
                 }
                 break;
             default:
-                alt32=129;}
+                alt34=129;}
 
             }
             break;
@@ -5538,31 +5633,31 @@
                 switch ( input.LA(3) ) {
                 case 'u':
                     {
-                    int LA32_169 = input.LA(4);
+                    int LA34_169 = input.LA(4);
 
-                    if ( (LA32_169=='b') ) {
-                        int LA32_246 = input.LA(5);
+                    if ( (LA34_169=='b') ) {
+                        int LA34_246 = input.LA(5);
 
-                        if ( (LA32_246=='l') ) {
-                            int LA32_306 = input.LA(6);
+                        if ( (LA34_246=='l') ) {
+                            int LA34_306 = input.LA(6);
 
-                            if ( (LA32_306=='e') ) {
-                                int LA32_355 = input.LA(7);
+                            if ( (LA34_306=='e') ) {
+                                int LA34_355 = input.LA(7);
 
-                                if ( (LA32_355=='$'||(LA32_355>='0' && LA32_355<='9')||(LA32_355>='A' && LA32_355<='Z')||LA32_355=='\\'||LA32_355=='_'||(LA32_355>='a' && LA32_355<='z')) ) {
-                                    alt32=129;
+                                if ( (LA34_355=='$'||(LA34_355>='0' && LA34_355<='9')||(LA34_355>='A' && LA34_355<='Z')||LA34_355=='\\'||LA34_355=='_'||(LA34_355>='a' && LA34_355<='z')) ) {
+                                    alt34=129;
                                 }
                                 else {
-                                    alt32=43;}
+                                    alt34=43;}
                             }
                             else {
-                                alt32=129;}
+                                alt34=129;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                     }
                     break;
                 case '$':
@@ -5630,284 +5725,368 @@
                 case 'y':
                 case 'z':
                     {
-                    alt32=129;
+                    alt34=129;
                     }
                     break;
                 default:
-                    alt32=10;}
+                    alt34=10;}
 
                 }
                 break;
             case 'e':
                 {
                 switch ( input.LA(3) ) {
-                case 'b':
-                    {
-                    int LA32_171 = input.LA(4);
-
-                    if ( (LA32_171=='u') ) {
-                        int LA32_247 = input.LA(5);
-
-                        if ( (LA32_247=='g') ) {
-                            int LA32_307 = input.LA(6);
-
-                            if ( (LA32_307=='g') ) {
-                                int LA32_356 = input.LA(7);
-
-                                if ( (LA32_356=='e') ) {
-                                    int LA32_390 = input.LA(8);
-
-                                    if ( (LA32_390=='r') ) {
-                                        int LA32_415 = input.LA(9);
-
-                                        if ( (LA32_415=='$'||(LA32_415>='0' && LA32_415<='9')||(LA32_415>='A' && LA32_415<='Z')||LA32_415=='\\'||LA32_415=='_'||(LA32_415>='a' && LA32_415<='z')) ) {
-                                            alt32=129;
-                                        }
-                                        else {
-                                            alt32=42;}
-                                    }
-                                    else {
-                                        alt32=129;}
-                                }
-                                else {
-                                    alt32=129;}
-                            }
-                            else {
-                                alt32=129;}
-                        }
-                        else {
-                            alt32=129;}
-                    }
-                    else {
-                        alt32=129;}
-                    }
-                    break;
                 case 'l':
                     {
-                    int LA32_172 = input.LA(4);
+                    int LA34_171 = input.LA(4);
 
-                    if ( (LA32_172=='e') ) {
-                        int LA32_248 = input.LA(5);
+                    if ( (LA34_171=='e') ) {
+                        int LA34_247 = input.LA(5);
 
-                        if ( (LA32_248=='t') ) {
-                            int LA32_308 = input.LA(6);
+                        if ( (LA34_247=='t') ) {
+                            int LA34_307 = input.LA(6);
 
-                            if ( (LA32_308=='e') ) {
-                                int LA32_357 = input.LA(7);
+                            if ( (LA34_307=='e') ) {
+                                int LA34_356 = input.LA(7);
 
-                                if ( (LA32_357=='$'||(LA32_357>='0' && LA32_357<='9')||(LA32_357>='A' && LA32_357<='Z')||LA32_357=='\\'||LA32_357=='_'||(LA32_357>='a' && LA32_357<='z')) ) {
-                                    alt32=129;
+                                if ( (LA34_356=='$'||(LA34_356>='0' && LA34_356<='9')||(LA34_356>='A' && LA34_356<='Z')||LA34_356=='\\'||LA34_356=='_'||(LA34_356>='a' && LA34_356<='z')) ) {
+                                    alt34=129;
                                 }
                                 else {
-                                    alt32=9;}
+                                    alt34=9;}
                             }
                             else {
-                                alt32=129;}
+                                alt34=129;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                     }
                     break;
                 case 'f':
                     {
-                    int LA32_173 = input.LA(4);
+                    int LA34_172 = input.LA(4);
 
-                    if ( (LA32_173=='a') ) {
-                        int LA32_249 = input.LA(5);
+                    if ( (LA34_172=='a') ) {
+                        int LA34_248 = input.LA(5);
 
-                        if ( (LA32_249=='u') ) {
-                            int LA32_309 = input.LA(6);
+                        if ( (LA34_248=='u') ) {
+                            int LA34_308 = input.LA(6);
 
-                            if ( (LA32_309=='l') ) {
-                                int LA32_358 = input.LA(7);
+                            if ( (LA34_308=='l') ) {
+                                int LA34_357 = input.LA(7);
 
-                                if ( (LA32_358=='t') ) {
-                                    int LA32_392 = input.LA(8);
+                                if ( (LA34_357=='t') ) {
+                                    int LA34_391 = input.LA(8);
 
-                                    if ( (LA32_392=='$'||(LA32_392>='0' && LA32_392<='9')||(LA32_392>='A' && LA32_392<='Z')||LA32_392=='\\'||LA32_392=='_'||(LA32_392>='a' && LA32_392<='z')) ) {
-                                        alt32=129;
+                                    if ( (LA34_391=='$'||(LA34_391>='0' && LA34_391<='9')||(LA34_391>='A' && LA34_391<='Z')||LA34_391=='\\'||LA34_391=='_'||(LA34_391>='a' && LA34_391<='z')) ) {
+                                        alt34=129;
                                     }
                                     else {
-                                        alt32=8;}
+                                        alt34=8;}
                                 }
                                 else {
-                                    alt32=129;}
+                                    alt34=129;}
                             }
                             else {
-                                alt32=129;}
+                                alt34=129;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
+                    }
+                    break;
+                case 'b':
+                    {
+                    int LA34_173 = input.LA(4);
+
+                    if ( (LA34_173=='u') ) {
+                        int LA34_249 = input.LA(5);
+
+                        if ( (LA34_249=='g') ) {
+                            int LA34_309 = input.LA(6);
+
+                            if ( (LA34_309=='g') ) {
+                                int LA34_358 = input.LA(7);
+
+                                if ( (LA34_358=='e') ) {
+                                    int LA34_392 = input.LA(8);
+
+                                    if ( (LA34_392=='r') ) {
+                                        int LA34_416 = input.LA(9);
+
+                                        if ( (LA34_416=='$'||(LA34_416>='0' && LA34_416<='9')||(LA34_416>='A' && LA34_416<='Z')||LA34_416=='\\'||LA34_416=='_'||(LA34_416>='a' && LA34_416<='z')) ) {
+                                            alt34=129;
+                                        }
+                                        else {
+                                            alt34=42;}
+                                    }
+                                    else {
+                                        alt34=129;}
+                                }
+                                else {
+                                    alt34=129;}
+                            }
+                            else {
+                                alt34=129;}
+                        }
+                        else {
+                            alt34=129;}
+                    }
+                    else {
+                        alt34=129;}
                     }
                     break;
                 default:
-                    alt32=129;}
+                    alt34=129;}
 
                 }
                 break;
             default:
-                alt32=129;}
+                alt34=129;}
 
             }
             break;
         case 'e':
             {
             switch ( input.LA(2) ) {
+            case 'n':
+                {
+                int LA34_71 = input.LA(3);
+
+                if ( (LA34_71=='u') ) {
+                    int LA34_174 = input.LA(4);
+
+                    if ( (LA34_174=='m') ) {
+                        int LA34_250 = input.LA(5);
+
+                        if ( (LA34_250=='$'||(LA34_250>='0' && LA34_250<='9')||(LA34_250>='A' && LA34_250<='Z')||LA34_250=='\\'||LA34_250=='_'||(LA34_250>='a' && LA34_250<='z')) ) {
+                            alt34=129;
+                        }
+                        else {
+                            alt34=44;}
+                    }
+                    else {
+                        alt34=129;}
+                }
+                else {
+                    alt34=129;}
+                }
+                break;
             case 'x':
                 {
                 switch ( input.LA(3) ) {
                 case 't':
                     {
-                    int LA32_174 = input.LA(4);
+                    int LA34_175 = input.LA(4);
 
-                    if ( (LA32_174=='e') ) {
-                        int LA32_250 = input.LA(5);
+                    if ( (LA34_175=='e') ) {
+                        int LA34_251 = input.LA(5);
 
-                        if ( (LA32_250=='n') ) {
-                            int LA32_310 = input.LA(6);
+                        if ( (LA34_251=='n') ) {
+                            int LA34_311 = input.LA(6);
 
-                            if ( (LA32_310=='d') ) {
-                                int LA32_359 = input.LA(7);
+                            if ( (LA34_311=='d') ) {
+                                int LA34_359 = input.LA(7);
 
-                                if ( (LA32_359=='s') ) {
-                                    int LA32_393 = input.LA(8);
+                                if ( (LA34_359=='s') ) {
+                                    int LA34_393 = input.LA(8);
 
-                                    if ( (LA32_393=='$'||(LA32_393>='0' && LA32_393<='9')||(LA32_393>='A' && LA32_393<='Z')||LA32_393=='\\'||LA32_393=='_'||(LA32_393>='a' && LA32_393<='z')) ) {
-                                        alt32=129;
+                                    if ( (LA34_393=='$'||(LA34_393>='0' && LA34_393<='9')||(LA34_393>='A' && LA34_393<='Z')||LA34_393=='\\'||LA34_393=='_'||(LA34_393>='a' && LA34_393<='z')) ) {
+                                        alt34=129;
                                     }
                                     else {
-                                        alt32=46;}
+                                        alt34=46;}
                                 }
                                 else {
-                                    alt32=129;}
+                                    alt34=129;}
                             }
                             else {
-                                alt32=129;}
+                                alt34=129;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                     }
                     break;
                 case 'p':
                     {
-                    int LA32_175 = input.LA(4);
+                    int LA34_176 = input.LA(4);
 
-                    if ( (LA32_175=='o') ) {
-                        int LA32_251 = input.LA(5);
+                    if ( (LA34_176=='o') ) {
+                        int LA34_252 = input.LA(5);
 
-                        if ( (LA32_251=='r') ) {
-                            int LA32_311 = input.LA(6);
+                        if ( (LA34_252=='r') ) {
+                            int LA34_312 = input.LA(6);
 
-                            if ( (LA32_311=='t') ) {
-                                int LA32_360 = input.LA(7);
+                            if ( (LA34_312=='t') ) {
+                                int LA34_360 = input.LA(7);
 
-                                if ( (LA32_360=='$'||(LA32_360>='0' && LA32_360<='9')||(LA32_360>='A' && LA32_360<='Z')||LA32_360=='\\'||LA32_360=='_'||(LA32_360>='a' && LA32_360<='z')) ) {
-                                    alt32=129;
+                                if ( (LA34_360=='$'||(LA34_360>='0' && LA34_360<='9')||(LA34_360>='A' && LA34_360<='Z')||LA34_360=='\\'||LA34_360=='_'||(LA34_360>='a' && LA34_360<='z')) ) {
+                                    alt34=129;
                                 }
                                 else {
-                                    alt32=45;}
+                                    alt34=45;}
                             }
                             else {
-                                alt32=129;}
+                                alt34=129;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                     }
                     break;
                 default:
-                    alt32=129;}
+                    alt34=129;}
 
                 }
                 break;
-            case 'n':
-                {
-                int LA32_72 = input.LA(3);
-
-                if ( (LA32_72=='u') ) {
-                    int LA32_176 = input.LA(4);
-
-                    if ( (LA32_176=='m') ) {
-                        int LA32_252 = input.LA(5);
-
-                        if ( (LA32_252=='$'||(LA32_252>='0' && LA32_252<='9')||(LA32_252>='A' && LA32_252<='Z')||LA32_252=='\\'||LA32_252=='_'||(LA32_252>='a' && LA32_252<='z')) ) {
-                            alt32=129;
-                        }
-                        else {
-                            alt32=44;}
-                    }
-                    else {
-                        alt32=129;}
-                }
-                else {
-                    alt32=129;}
-                }
-                break;
-            case 'a':
-                {
-                int LA32_73 = input.LA(3);
-
-                if ( (LA32_73=='c') ) {
-                    int LA32_177 = input.LA(4);
-
-                    if ( (LA32_177=='h') ) {
-                        int LA32_253 = input.LA(5);
-
-                        if ( (LA32_253=='$'||(LA32_253>='0' && LA32_253<='9')||(LA32_253>='A' && LA32_253<='Z')||LA32_253=='\\'||LA32_253=='_'||(LA32_253>='a' && LA32_253<='z')) ) {
-                            alt32=129;
-                        }
-                        else {
-                            alt32=14;}
-                    }
-                    else {
-                        alt32=129;}
-                }
-                else {
-                    alt32=129;}
-                }
-                break;
             case 'l':
                 {
-                int LA32_74 = input.LA(3);
+                int LA34_73 = input.LA(3);
 
-                if ( (LA32_74=='s') ) {
-                    int LA32_178 = input.LA(4);
+                if ( (LA34_73=='s') ) {
+                    int LA34_177 = input.LA(4);
 
-                    if ( (LA32_178=='e') ) {
-                        int LA32_254 = input.LA(5);
+                    if ( (LA34_177=='e') ) {
+                        int LA34_253 = input.LA(5);
 
-                        if ( (LA32_254=='$'||(LA32_254>='0' && LA32_254<='9')||(LA32_254>='A' && LA32_254<='Z')||LA32_254=='\\'||LA32_254=='_'||(LA32_254>='a' && LA32_254<='z')) ) {
-                            alt32=129;
+                        if ( (LA34_253=='$'||(LA34_253>='0' && LA34_253<='9')||(LA34_253>='A' && LA34_253<='Z')||LA34_253=='\\'||LA34_253=='_'||(LA34_253>='a' && LA34_253<='z')) ) {
+                            alt34=129;
                         }
                         else {
-                            alt32=11;}
+                            alt34=11;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
+                }
+                break;
+            case 'a':
+                {
+                int LA34_74 = input.LA(3);
+
+                if ( (LA34_74=='c') ) {
+                    int LA34_178 = input.LA(4);
+
+                    if ( (LA34_178=='h') ) {
+                        int LA34_254 = input.LA(5);
+
+                        if ( (LA34_254=='$'||(LA34_254>='0' && LA34_254<='9')||(LA34_254>='A' && LA34_254<='Z')||LA34_254=='\\'||LA34_254=='_'||(LA34_254>='a' && LA34_254<='z')) ) {
+                            alt34=129;
+                        }
+                        else {
+                            alt34=14;}
+                    }
+                    else {
+                        alt34=129;}
+                }
+                else {
+                    alt34=129;}
                 }
                 break;
             default:
-                alt32=129;}
+                alt34=129;}
 
             }
             break;
         case 'i':
             {
             switch ( input.LA(2) ) {
+            case 'm':
+                {
+                int LA34_75 = input.LA(3);
+
+                if ( (LA34_75=='p') ) {
+                    switch ( input.LA(4) ) {
+                    case 'o':
+                        {
+                        int LA34_255 = input.LA(5);
+
+                        if ( (LA34_255=='r') ) {
+                            int LA34_315 = input.LA(6);
+
+                            if ( (LA34_315=='t') ) {
+                                int LA34_361 = input.LA(7);
+
+                                if ( (LA34_361=='$'||(LA34_361>='0' && LA34_361<='9')||(LA34_361>='A' && LA34_361<='Z')||LA34_361=='\\'||LA34_361=='_'||(LA34_361>='a' && LA34_361<='z')) ) {
+                                    alt34=129;
+                                }
+                                else {
+                                    alt34=51;}
+                            }
+                            else {
+                                alt34=129;}
+                        }
+                        else {
+                            alt34=129;}
+                        }
+                        break;
+                    case 'l':
+                        {
+                        int LA34_256 = input.LA(5);
+
+                        if ( (LA34_256=='e') ) {
+                            int LA34_316 = input.LA(6);
+
+                            if ( (LA34_316=='m') ) {
+                                int LA34_362 = input.LA(7);
+
+                                if ( (LA34_362=='e') ) {
+                                    int LA34_396 = input.LA(8);
+
+                                    if ( (LA34_396=='n') ) {
+                                        int LA34_418 = input.LA(9);
+
+                                        if ( (LA34_418=='t') ) {
+                                            int LA34_432 = input.LA(10);
+
+                                            if ( (LA34_432=='s') ) {
+                                                int LA34_441 = input.LA(11);
+
+                                                if ( (LA34_441=='$'||(LA34_441>='0' && LA34_441<='9')||(LA34_441>='A' && LA34_441<='Z')||LA34_441=='\\'||LA34_441=='_'||(LA34_441>='a' && LA34_441<='z')) ) {
+                                                    alt34=129;
+                                                }
+                                                else {
+                                                    alt34=50;}
+                                            }
+                                            else {
+                                                alt34=129;}
+                                        }
+                                        else {
+                                            alt34=129;}
+                                    }
+                                    else {
+                                        alt34=129;}
+                                }
+                                else {
+                                    alt34=129;}
+                            }
+                            else {
+                                alt34=129;}
+                        }
+                        else {
+                            alt34=129;}
+                        }
+                        break;
+                    default:
+                        alt34=129;}
+
+                }
+                else {
+                    alt34=129;}
+                }
+                break;
             case 'n':
                 {
                 switch ( input.LA(3) ) {
@@ -5916,43 +6095,43 @@
                     switch ( input.LA(4) ) {
                     case 'e':
                         {
-                        int LA32_255 = input.LA(5);
+                        int LA34_257 = input.LA(5);
 
-                        if ( (LA32_255=='r') ) {
-                            int LA32_315 = input.LA(6);
+                        if ( (LA34_257=='r') ) {
+                            int LA34_317 = input.LA(6);
 
-                            if ( (LA32_315=='f') ) {
-                                int LA32_361 = input.LA(7);
+                            if ( (LA34_317=='f') ) {
+                                int LA34_363 = input.LA(7);
 
-                                if ( (LA32_361=='a') ) {
-                                    int LA32_395 = input.LA(8);
+                                if ( (LA34_363=='a') ) {
+                                    int LA34_397 = input.LA(8);
 
-                                    if ( (LA32_395=='c') ) {
-                                        int LA32_418 = input.LA(9);
+                                    if ( (LA34_397=='c') ) {
+                                        int LA34_419 = input.LA(9);
 
-                                        if ( (LA32_418=='e') ) {
-                                            int LA32_432 = input.LA(10);
+                                        if ( (LA34_419=='e') ) {
+                                            int LA34_433 = input.LA(10);
 
-                                            if ( (LA32_432=='$'||(LA32_432>='0' && LA32_432<='9')||(LA32_432>='A' && LA32_432<='Z')||LA32_432=='\\'||LA32_432=='_'||(LA32_432>='a' && LA32_432<='z')) ) {
-                                                alt32=129;
+                                            if ( (LA34_433=='$'||(LA34_433>='0' && LA34_433<='9')||(LA34_433>='A' && LA34_433<='Z')||LA34_433=='\\'||LA34_433=='_'||(LA34_433>='a' && LA34_433<='z')) ) {
+                                                alt34=129;
                                             }
                                             else {
-                                                alt32=53;}
+                                                alt34=53;}
                                         }
                                         else {
-                                            alt32=129;}
+                                            alt34=129;}
                                     }
                                     else {
-                                        alt32=129;}
+                                        alt34=129;}
                                 }
                                 else {
-                                    alt32=129;}
+                                    alt34=129;}
                             }
                             else {
-                                alt32=129;}
+                                alt34=129;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                         }
                         break;
                     case '$':
@@ -6020,65 +6199,65 @@
                     case 'y':
                     case 'z':
                         {
-                        alt32=129;
+                        alt34=129;
                         }
                         break;
                     default:
-                        alt32=52;}
+                        alt34=52;}
 
                     }
                     break;
                 case 's':
                     {
-                    int LA32_180 = input.LA(4);
+                    int LA34_181 = input.LA(4);
 
-                    if ( (LA32_180=='t') ) {
-                        int LA32_257 = input.LA(5);
+                    if ( (LA34_181=='t') ) {
+                        int LA34_259 = input.LA(5);
 
-                        if ( (LA32_257=='a') ) {
-                            int LA32_316 = input.LA(6);
+                        if ( (LA34_259=='a') ) {
+                            int LA34_318 = input.LA(6);
 
-                            if ( (LA32_316=='n') ) {
-                                int LA32_362 = input.LA(7);
+                            if ( (LA34_318=='n') ) {
+                                int LA34_364 = input.LA(7);
 
-                                if ( (LA32_362=='c') ) {
-                                    int LA32_396 = input.LA(8);
+                                if ( (LA34_364=='c') ) {
+                                    int LA34_398 = input.LA(8);
 
-                                    if ( (LA32_396=='e') ) {
-                                        int LA32_419 = input.LA(9);
+                                    if ( (LA34_398=='e') ) {
+                                        int LA34_420 = input.LA(9);
 
-                                        if ( (LA32_419=='o') ) {
-                                            int LA32_433 = input.LA(10);
+                                        if ( (LA34_420=='o') ) {
+                                            int LA34_434 = input.LA(10);
 
-                                            if ( (LA32_433=='f') ) {
-                                                int LA32_442 = input.LA(11);
+                                            if ( (LA34_434=='f') ) {
+                                                int LA34_443 = input.LA(11);
 
-                                                if ( (LA32_442=='$'||(LA32_442>='0' && LA32_442<='9')||(LA32_442>='A' && LA32_442<='Z')||LA32_442=='\\'||LA32_442=='_'||(LA32_442>='a' && LA32_442<='z')) ) {
-                                                    alt32=129;
+                                                if ( (LA34_443=='$'||(LA34_443>='0' && LA34_443<='9')||(LA34_443>='A' && LA34_443<='Z')||LA34_443=='\\'||LA34_443=='_'||(LA34_443>='a' && LA34_443<='z')) ) {
+                                                    alt34=129;
                                                 }
                                                 else {
-                                                    alt32=18;}
+                                                    alt34=18;}
                                             }
                                             else {
-                                                alt32=129;}
+                                                alt34=129;}
                                         }
                                         else {
-                                            alt32=129;}
+                                            alt34=129;}
                                     }
                                     else {
-                                        alt32=129;}
+                                        alt34=129;}
                                 }
                                 else {
-                                    alt32=129;}
+                                    alt34=129;}
                             }
                             else {
-                                alt32=129;}
+                                alt34=129;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                     }
                     break;
                 case '$':
@@ -6145,153 +6324,69 @@
                 case 'y':
                 case 'z':
                     {
-                    alt32=129;
+                    alt34=129;
                     }
                     break;
                 default:
-                    alt32=17;}
+                    alt34=17;}
 
                 }
                 break;
-            case 'm':
-                {
-                int LA32_76 = input.LA(3);
-
-                if ( (LA32_76=='p') ) {
-                    switch ( input.LA(4) ) {
-                    case 'o':
-                        {
-                        int LA32_258 = input.LA(5);
-
-                        if ( (LA32_258=='r') ) {
-                            int LA32_317 = input.LA(6);
-
-                            if ( (LA32_317=='t') ) {
-                                int LA32_363 = input.LA(7);
-
-                                if ( (LA32_363=='$'||(LA32_363>='0' && LA32_363<='9')||(LA32_363>='A' && LA32_363<='Z')||LA32_363=='\\'||LA32_363=='_'||(LA32_363>='a' && LA32_363<='z')) ) {
-                                    alt32=129;
-                                }
-                                else {
-                                    alt32=51;}
-                            }
-                            else {
-                                alt32=129;}
-                        }
-                        else {
-                            alt32=129;}
-                        }
-                        break;
-                    case 'l':
-                        {
-                        int LA32_259 = input.LA(5);
-
-                        if ( (LA32_259=='e') ) {
-                            int LA32_318 = input.LA(6);
-
-                            if ( (LA32_318=='m') ) {
-                                int LA32_364 = input.LA(7);
-
-                                if ( (LA32_364=='e') ) {
-                                    int LA32_398 = input.LA(8);
-
-                                    if ( (LA32_398=='n') ) {
-                                        int LA32_420 = input.LA(9);
-
-                                        if ( (LA32_420=='t') ) {
-                                            int LA32_434 = input.LA(10);
-
-                                            if ( (LA32_434=='s') ) {
-                                                int LA32_443 = input.LA(11);
-
-                                                if ( (LA32_443=='$'||(LA32_443>='0' && LA32_443<='9')||(LA32_443>='A' && LA32_443<='Z')||LA32_443=='\\'||LA32_443=='_'||(LA32_443>='a' && LA32_443<='z')) ) {
-                                                    alt32=129;
-                                                }
-                                                else {
-                                                    alt32=50;}
-                                            }
-                                            else {
-                                                alt32=129;}
-                                        }
-                                        else {
-                                            alt32=129;}
-                                    }
-                                    else {
-                                        alt32=129;}
-                                }
-                                else {
-                                    alt32=129;}
-                            }
-                            else {
-                                alt32=129;}
-                        }
-                        else {
-                            alt32=129;}
-                        }
-                        break;
-                    default:
-                        alt32=129;}
-
-                }
-                else {
-                    alt32=129;}
-                }
-                break;
             case 'f':
                 {
-                int LA32_77 = input.LA(3);
+                int LA34_77 = input.LA(3);
 
-                if ( (LA32_77=='$'||(LA32_77>='0' && LA32_77<='9')||(LA32_77>='A' && LA32_77<='Z')||LA32_77=='\\'||LA32_77=='_'||(LA32_77>='a' && LA32_77<='z')) ) {
-                    alt32=129;
+                if ( (LA34_77=='$'||(LA34_77>='0' && LA34_77<='9')||(LA34_77>='A' && LA34_77<='Z')||LA34_77=='\\'||LA34_77=='_'||(LA34_77>='a' && LA34_77<='z')) ) {
+                    alt34=129;
                 }
                 else {
-                    alt32=16;}
+                    alt34=16;}
                 }
                 break;
             default:
-                alt32=129;}
+                alt34=129;}
 
             }
             break;
         case 'r':
             {
-            int LA32_9 = input.LA(2);
+            int LA34_9 = input.LA(2);
 
-            if ( (LA32_9=='e') ) {
-                int LA32_78 = input.LA(3);
+            if ( (LA34_9=='e') ) {
+                int LA34_78 = input.LA(3);
 
-                if ( (LA32_78=='t') ) {
-                    int LA32_184 = input.LA(4);
+                if ( (LA34_78=='t') ) {
+                    int LA34_184 = input.LA(4);
 
-                    if ( (LA32_184=='u') ) {
-                        int LA32_260 = input.LA(5);
+                    if ( (LA34_184=='u') ) {
+                        int LA34_260 = input.LA(5);
 
-                        if ( (LA32_260=='r') ) {
-                            int LA32_319 = input.LA(6);
+                        if ( (LA34_260=='r') ) {
+                            int LA34_319 = input.LA(6);
 
-                            if ( (LA32_319=='n') ) {
-                                int LA32_365 = input.LA(7);
+                            if ( (LA34_319=='n') ) {
+                                int LA34_365 = input.LA(7);
 
-                                if ( (LA32_365=='$'||(LA32_365>='0' && LA32_365<='9')||(LA32_365>='A' && LA32_365<='Z')||LA32_365=='\\'||LA32_365=='_'||(LA32_365>='a' && LA32_365<='z')) ) {
-                                    alt32=129;
+                                if ( (LA34_365=='$'||(LA34_365>='0' && LA34_365<='9')||(LA34_365>='A' && LA34_365<='Z')||LA34_365=='\\'||LA34_365=='_'||(LA34_365>='a' && LA34_365<='z')) ) {
+                                    alt34=129;
                                 }
                                 else {
-                                    alt32=20;}
+                                    alt34=20;}
                             }
                             else {
-                                alt32=129;}
+                                alt34=129;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
             }
             else {
-                alt32=129;}
+                alt34=129;}
             }
             break;
         case 's':
@@ -6299,373 +6394,373 @@
             switch ( input.LA(2) ) {
             case 'e':
                 {
-                int LA32_79 = input.LA(3);
+                int LA34_79 = input.LA(3);
 
-                if ( (LA32_79=='t') ) {
-                    int LA32_185 = input.LA(4);
+                if ( (LA34_79=='t') ) {
+                    int LA34_185 = input.LA(4);
 
-                    if ( (LA32_185=='$'||(LA32_185>='0' && LA32_185<='9')||(LA32_185>='A' && LA32_185<='Z')||LA32_185=='\\'||LA32_185=='_'||(LA32_185>='a' && LA32_185<='z')) ) {
-                        alt32=129;
+                    if ( (LA34_185=='$'||(LA34_185>='0' && LA34_185<='9')||(LA34_185>='A' && LA34_185<='Z')||LA34_185=='\\'||LA34_185=='_'||(LA34_185>='a' && LA34_185<='z')) ) {
+                        alt34=129;
                     }
                     else {
-                        alt32=31;}
+                        alt34=31;}
                 }
                 else {
-                    alt32=129;}
-                }
-                break;
-            case 'h':
-                {
-                int LA32_80 = input.LA(3);
-
-                if ( (LA32_80=='o') ) {
-                    int LA32_186 = input.LA(4);
-
-                    if ( (LA32_186=='r') ) {
-                        int LA32_262 = input.LA(5);
-
-                        if ( (LA32_262=='t') ) {
-                            int LA32_320 = input.LA(6);
-
-                            if ( (LA32_320=='$'||(LA32_320>='0' && LA32_320<='9')||(LA32_320>='A' && LA32_320<='Z')||LA32_320=='\\'||LA32_320=='_'||(LA32_320>='a' && LA32_320<='z')) ) {
-                                alt32=129;
-                            }
-                            else {
-                                alt32=60;}
-                        }
-                        else {
-                            alt32=129;}
-                    }
-                    else {
-                        alt32=129;}
-                }
-                else {
-                    alt32=129;}
-                }
-                break;
-            case 't':
-                {
-                int LA32_81 = input.LA(3);
-
-                if ( (LA32_81=='a') ) {
-                    int LA32_187 = input.LA(4);
-
-                    if ( (LA32_187=='t') ) {
-                        int LA32_263 = input.LA(5);
-
-                        if ( (LA32_263=='i') ) {
-                            int LA32_321 = input.LA(6);
-
-                            if ( (LA32_321=='c') ) {
-                                int LA32_367 = input.LA(7);
-
-                                if ( (LA32_367=='$'||(LA32_367>='0' && LA32_367<='9')||(LA32_367>='A' && LA32_367<='Z')||LA32_367=='\\'||LA32_367=='_'||(LA32_367>='a' && LA32_367<='z')) ) {
-                                    alt32=129;
-                                }
-                                else {
-                                    alt32=61;}
-                            }
-                            else {
-                                alt32=129;}
-                        }
-                        else {
-                            alt32=129;}
-                    }
-                    else {
-                        alt32=129;}
-                }
-                else {
-                    alt32=129;}
-                }
-                break;
-            case 'u':
-                {
-                int LA32_82 = input.LA(3);
-
-                if ( (LA32_82=='p') ) {
-                    int LA32_188 = input.LA(4);
-
-                    if ( (LA32_188=='e') ) {
-                        int LA32_264 = input.LA(5);
-
-                        if ( (LA32_264=='r') ) {
-                            int LA32_322 = input.LA(6);
-
-                            if ( (LA32_322=='$'||(LA32_322>='0' && LA32_322<='9')||(LA32_322>='A' && LA32_322<='Z')||LA32_322=='\\'||LA32_322=='_'||(LA32_322>='a' && LA32_322<='z')) ) {
-                                alt32=129;
-                            }
-                            else {
-                                alt32=62;}
-                        }
-                        else {
-                            alt32=129;}
-                    }
-                    else {
-                        alt32=129;}
-                }
-                else {
-                    alt32=129;}
+                    alt34=129;}
                 }
                 break;
             case 'y':
                 {
-                int LA32_83 = input.LA(3);
+                int LA34_80 = input.LA(3);
 
-                if ( (LA32_83=='n') ) {
-                    int LA32_189 = input.LA(4);
+                if ( (LA34_80=='n') ) {
+                    int LA34_186 = input.LA(4);
 
-                    if ( (LA32_189=='c') ) {
-                        int LA32_265 = input.LA(5);
+                    if ( (LA34_186=='c') ) {
+                        int LA34_262 = input.LA(5);
 
-                        if ( (LA32_265=='h') ) {
-                            int LA32_323 = input.LA(6);
+                        if ( (LA34_262=='h') ) {
+                            int LA34_320 = input.LA(6);
 
-                            if ( (LA32_323=='r') ) {
-                                int LA32_369 = input.LA(7);
+                            if ( (LA34_320=='r') ) {
+                                int LA34_366 = input.LA(7);
 
-                                if ( (LA32_369=='o') ) {
-                                    int LA32_401 = input.LA(8);
+                                if ( (LA34_366=='o') ) {
+                                    int LA34_400 = input.LA(8);
 
-                                    if ( (LA32_401=='n') ) {
-                                        int LA32_421 = input.LA(9);
+                                    if ( (LA34_400=='n') ) {
+                                        int LA34_421 = input.LA(9);
 
-                                        if ( (LA32_421=='i') ) {
-                                            int LA32_435 = input.LA(10);
+                                        if ( (LA34_421=='i') ) {
+                                            int LA34_435 = input.LA(10);
 
-                                            if ( (LA32_435=='z') ) {
-                                                int LA32_444 = input.LA(11);
+                                            if ( (LA34_435=='z') ) {
+                                                int LA34_444 = input.LA(11);
 
-                                                if ( (LA32_444=='e') ) {
-                                                    int LA32_448 = input.LA(12);
+                                                if ( (LA34_444=='e') ) {
+                                                    int LA34_448 = input.LA(12);
 
-                                                    if ( (LA32_448=='d') ) {
-                                                        int LA32_449 = input.LA(13);
+                                                    if ( (LA34_448=='d') ) {
+                                                        int LA34_449 = input.LA(13);
 
-                                                        if ( (LA32_449=='$'||(LA32_449>='0' && LA32_449<='9')||(LA32_449>='A' && LA32_449<='Z')||LA32_449=='\\'||LA32_449=='_'||(LA32_449>='a' && LA32_449<='z')) ) {
-                                                            alt32=129;
+                                                        if ( (LA34_449=='$'||(LA34_449>='0' && LA34_449<='9')||(LA34_449>='A' && LA34_449<='Z')||LA34_449=='\\'||LA34_449=='_'||(LA34_449>='a' && LA34_449<='z')) ) {
+                                                            alt34=129;
                                                         }
                                                         else {
-                                                            alt32=63;}
+                                                            alt34=63;}
                                                     }
                                                     else {
-                                                        alt32=129;}
+                                                        alt34=129;}
                                                 }
                                                 else {
-                                                    alt32=129;}
+                                                    alt34=129;}
                                             }
                                             else {
-                                                alt32=129;}
+                                                alt34=129;}
                                         }
                                         else {
-                                            alt32=129;}
+                                            alt34=129;}
                                     }
                                     else {
-                                        alt32=129;}
+                                        alt34=129;}
                                 }
                                 else {
-                                    alt32=129;}
+                                    alt34=129;}
                             }
                             else {
-                                alt32=129;}
+                                alt34=129;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
+                }
+                break;
+            case 'u':
+                {
+                int LA34_81 = input.LA(3);
+
+                if ( (LA34_81=='p') ) {
+                    int LA34_187 = input.LA(4);
+
+                    if ( (LA34_187=='e') ) {
+                        int LA34_263 = input.LA(5);
+
+                        if ( (LA34_263=='r') ) {
+                            int LA34_321 = input.LA(6);
+
+                            if ( (LA34_321=='$'||(LA34_321>='0' && LA34_321<='9')||(LA34_321>='A' && LA34_321<='Z')||LA34_321=='\\'||LA34_321=='_'||(LA34_321>='a' && LA34_321<='z')) ) {
+                                alt34=129;
+                            }
+                            else {
+                                alt34=62;}
+                        }
+                        else {
+                            alt34=129;}
+                    }
+                    else {
+                        alt34=129;}
+                }
+                else {
+                    alt34=129;}
+                }
+                break;
+            case 'h':
+                {
+                int LA34_82 = input.LA(3);
+
+                if ( (LA34_82=='o') ) {
+                    int LA34_188 = input.LA(4);
+
+                    if ( (LA34_188=='r') ) {
+                        int LA34_264 = input.LA(5);
+
+                        if ( (LA34_264=='t') ) {
+                            int LA34_322 = input.LA(6);
+
+                            if ( (LA34_322=='$'||(LA34_322>='0' && LA34_322<='9')||(LA34_322>='A' && LA34_322<='Z')||LA34_322=='\\'||LA34_322=='_'||(LA34_322>='a' && LA34_322<='z')) ) {
+                                alt34=129;
+                            }
+                            else {
+                                alt34=60;}
+                        }
+                        else {
+                            alt34=129;}
+                    }
+                    else {
+                        alt34=129;}
+                }
+                else {
+                    alt34=129;}
+                }
+                break;
+            case 't':
+                {
+                int LA34_83 = input.LA(3);
+
+                if ( (LA34_83=='a') ) {
+                    int LA34_189 = input.LA(4);
+
+                    if ( (LA34_189=='t') ) {
+                        int LA34_265 = input.LA(5);
+
+                        if ( (LA34_265=='i') ) {
+                            int LA34_323 = input.LA(6);
+
+                            if ( (LA34_323=='c') ) {
+                                int LA34_369 = input.LA(7);
+
+                                if ( (LA34_369=='$'||(LA34_369>='0' && LA34_369<='9')||(LA34_369>='A' && LA34_369<='Z')||LA34_369=='\\'||LA34_369=='_'||(LA34_369>='a' && LA34_369<='z')) ) {
+                                    alt34=129;
+                                }
+                                else {
+                                    alt34=61;}
+                            }
+                            else {
+                                alt34=129;}
+                        }
+                        else {
+                            alt34=129;}
+                    }
+                    else {
+                        alt34=129;}
+                }
+                else {
+                    alt34=129;}
                 }
                 break;
             case 'w':
                 {
-                int LA32_84 = input.LA(3);
+                int LA34_84 = input.LA(3);
 
-                if ( (LA32_84=='i') ) {
-                    int LA32_190 = input.LA(4);
+                if ( (LA34_84=='i') ) {
+                    int LA34_190 = input.LA(4);
 
-                    if ( (LA32_190=='t') ) {
-                        int LA32_266 = input.LA(5);
+                    if ( (LA34_190=='t') ) {
+                        int LA34_266 = input.LA(5);
 
-                        if ( (LA32_266=='c') ) {
-                            int LA32_324 = input.LA(6);
+                        if ( (LA34_266=='c') ) {
+                            int LA34_324 = input.LA(6);
 
-                            if ( (LA32_324=='h') ) {
-                                int LA32_370 = input.LA(7);
+                            if ( (LA34_324=='h') ) {
+                                int LA34_370 = input.LA(7);
 
-                                if ( (LA32_370=='$'||(LA32_370>='0' && LA32_370<='9')||(LA32_370>='A' && LA32_370<='Z')||LA32_370=='\\'||LA32_370=='_'||(LA32_370>='a' && LA32_370<='z')) ) {
-                                    alt32=129;
+                                if ( (LA34_370=='$'||(LA34_370>='0' && LA34_370<='9')||(LA34_370>='A' && LA34_370<='Z')||LA34_370=='\\'||LA34_370=='_'||(LA34_370>='a' && LA34_370<='z')) ) {
+                                    alt34=129;
                                 }
                                 else {
-                                    alt32=21;}
+                                    alt34=21;}
                             }
                             else {
-                                alt32=129;}
+                                alt34=129;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
                 }
                 break;
             default:
-                alt32=129;}
+                alt34=129;}
 
             }
             break;
         case 'v':
             {
             switch ( input.LA(2) ) {
+            case 'a':
+                {
+                int LA34_85 = input.LA(3);
+
+                if ( (LA34_85=='r') ) {
+                    int LA34_191 = input.LA(4);
+
+                    if ( (LA34_191=='$'||(LA34_191>='0' && LA34_191<='9')||(LA34_191>='A' && LA34_191<='Z')||LA34_191=='\\'||LA34_191=='_'||(LA34_191>='a' && LA34_191<='z')) ) {
+                        alt34=129;
+                    }
+                    else {
+                        alt34=26;}
+                }
+                else {
+                    alt34=129;}
+                }
+                break;
             case 'o':
                 {
                 switch ( input.LA(3) ) {
                 case 'i':
                     {
-                    int LA32_191 = input.LA(4);
+                    int LA34_192 = input.LA(4);
 
-                    if ( (LA32_191=='d') ) {
-                        int LA32_267 = input.LA(5);
+                    if ( (LA34_192=='d') ) {
+                        int LA34_268 = input.LA(5);
 
-                        if ( (LA32_267=='$'||(LA32_267>='0' && LA32_267<='9')||(LA32_267>='A' && LA32_267<='Z')||LA32_267=='\\'||LA32_267=='_'||(LA32_267>='a' && LA32_267<='z')) ) {
-                            alt32=129;
+                        if ( (LA34_268=='$'||(LA34_268>='0' && LA34_268<='9')||(LA34_268>='A' && LA34_268<='Z')||LA34_268=='\\'||LA34_268=='_'||(LA34_268>='a' && LA34_268<='z')) ) {
+                            alt34=129;
                         }
                         else {
-                            alt32=27;}
+                            alt34=27;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                     }
                     break;
                 case 'l':
                     {
-                    int LA32_192 = input.LA(4);
+                    int LA34_193 = input.LA(4);
 
-                    if ( (LA32_192=='a') ) {
-                        int LA32_268 = input.LA(5);
+                    if ( (LA34_193=='a') ) {
+                        int LA34_269 = input.LA(5);
 
-                        if ( (LA32_268=='t') ) {
-                            int LA32_326 = input.LA(6);
+                        if ( (LA34_269=='t') ) {
+                            int LA34_326 = input.LA(6);
 
-                            if ( (LA32_326=='i') ) {
-                                int LA32_371 = input.LA(7);
+                            if ( (LA34_326=='i') ) {
+                                int LA34_371 = input.LA(7);
 
-                                if ( (LA32_371=='l') ) {
-                                    int LA32_403 = input.LA(8);
+                                if ( (LA34_371=='l') ) {
+                                    int LA34_403 = input.LA(8);
 
-                                    if ( (LA32_403=='e') ) {
-                                        int LA32_422 = input.LA(9);
+                                    if ( (LA34_403=='e') ) {
+                                        int LA34_422 = input.LA(9);
 
-                                        if ( (LA32_422=='$'||(LA32_422>='0' && LA32_422<='9')||(LA32_422>='A' && LA32_422<='Z')||LA32_422=='\\'||LA32_422=='_'||(LA32_422>='a' && LA32_422<='z')) ) {
-                                            alt32=129;
+                                        if ( (LA34_422=='$'||(LA34_422>='0' && LA34_422<='9')||(LA34_422>='A' && LA34_422<='Z')||LA34_422=='\\'||LA34_422=='_'||(LA34_422>='a' && LA34_422<='z')) ) {
+                                            alt34=129;
                                         }
                                         else {
-                                            alt32=66;}
+                                            alt34=66;}
                                     }
                                     else {
-                                        alt32=129;}
+                                        alt34=129;}
                                 }
                                 else {
-                                    alt32=129;}
+                                    alt34=129;}
                             }
                             else {
-                                alt32=129;}
+                                alt34=129;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                     }
                     break;
                 default:
-                    alt32=129;}
+                    alt34=129;}
 
                 }
                 break;
-            case 'a':
-                {
-                int LA32_86 = input.LA(3);
-
-                if ( (LA32_86=='r') ) {
-                    int LA32_193 = input.LA(4);
-
-                    if ( (LA32_193=='$'||(LA32_193>='0' && LA32_193<='9')||(LA32_193>='A' && LA32_193<='Z')||LA32_193=='\\'||LA32_193=='_'||(LA32_193>='a' && LA32_193<='z')) ) {
-                        alt32=129;
-                    }
-                    else {
-                        alt32=26;}
-                }
-                else {
-                    alt32=129;}
-                }
-                break;
             default:
-                alt32=129;}
+                alt34=129;}
 
             }
             break;
         case 'w':
             {
             switch ( input.LA(2) ) {
-            case 'i':
-                {
-                int LA32_87 = input.LA(3);
-
-                if ( (LA32_87=='t') ) {
-                    int LA32_194 = input.LA(4);
-
-                    if ( (LA32_194=='h') ) {
-                        int LA32_270 = input.LA(5);
-
-                        if ( (LA32_270=='$'||(LA32_270>='0' && LA32_270<='9')||(LA32_270>='A' && LA32_270<='Z')||LA32_270=='\\'||LA32_270=='_'||(LA32_270>='a' && LA32_270<='z')) ) {
-                            alt32=129;
-                        }
-                        else {
-                            alt32=29;}
-                    }
-                    else {
-                        alt32=129;}
-                }
-                else {
-                    alt32=129;}
-                }
-                break;
             case 'h':
                 {
-                int LA32_88 = input.LA(3);
+                int LA34_87 = input.LA(3);
 
-                if ( (LA32_88=='i') ) {
-                    int LA32_195 = input.LA(4);
+                if ( (LA34_87=='i') ) {
+                    int LA34_194 = input.LA(4);
 
-                    if ( (LA32_195=='l') ) {
-                        int LA32_271 = input.LA(5);
+                    if ( (LA34_194=='l') ) {
+                        int LA34_270 = input.LA(5);
 
-                        if ( (LA32_271=='e') ) {
-                            int LA32_328 = input.LA(6);
+                        if ( (LA34_270=='e') ) {
+                            int LA34_327 = input.LA(6);
 
-                            if ( (LA32_328=='$'||(LA32_328>='0' && LA32_328<='9')||(LA32_328>='A' && LA32_328<='Z')||LA32_328=='\\'||LA32_328=='_'||(LA32_328>='a' && LA32_328<='z')) ) {
-                                alt32=129;
+                            if ( (LA34_327=='$'||(LA34_327>='0' && LA34_327<='9')||(LA34_327>='A' && LA34_327<='Z')||LA34_327=='\\'||LA34_327=='_'||(LA34_327>='a' && LA34_327<='z')) ) {
+                                alt34=129;
                             }
                             else {
-                                alt32=28;}
+                                alt34=28;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
+                }
+                break;
+            case 'i':
+                {
+                int LA34_88 = input.LA(3);
+
+                if ( (LA34_88=='t') ) {
+                    int LA34_195 = input.LA(4);
+
+                    if ( (LA34_195=='h') ) {
+                        int LA34_271 = input.LA(5);
+
+                        if ( (LA34_271=='$'||(LA34_271>='0' && LA34_271<='9')||(LA34_271>='A' && LA34_271<='Z')||LA34_271=='\\'||LA34_271=='_'||(LA34_271>='a' && LA34_271<='z')) ) {
+                            alt34=129;
+                        }
+                        else {
+                            alt34=29;}
+                    }
+                    else {
+                        alt34=129;}
+                }
+                else {
+                    alt34=129;}
                 }
                 break;
             default:
-                alt32=129;}
+                alt34=129;}
 
             }
             break;
@@ -6674,222 +6769,222 @@
             switch ( input.LA(2) ) {
             case 'o':
                 {
-                int LA32_89 = input.LA(3);
+                int LA34_89 = input.LA(3);
 
-                if ( (LA32_89=='t') ) {
-                    int LA32_196 = input.LA(4);
+                if ( (LA34_89=='t') ) {
+                    int LA34_196 = input.LA(4);
 
-                    if ( (LA32_196=='o') ) {
-                        int LA32_272 = input.LA(5);
+                    if ( (LA34_196=='o') ) {
+                        int LA34_272 = input.LA(5);
 
-                        if ( (LA32_272=='$'||(LA32_272>='0' && LA32_272<='9')||(LA32_272>='A' && LA32_272<='Z')||LA32_272=='\\'||LA32_272=='_'||(LA32_272>='a' && LA32_272<='z')) ) {
-                            alt32=129;
+                        if ( (LA34_272=='$'||(LA34_272>='0' && LA34_272<='9')||(LA34_272>='A' && LA34_272<='Z')||LA34_272=='\\'||LA34_272=='_'||(LA34_272>='a' && LA34_272<='z')) ) {
+                            alt34=129;
                         }
                         else {
-                            alt32=49;}
+                            alt34=49;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
                 }
                 break;
             case 'e':
                 {
-                int LA32_90 = input.LA(3);
+                int LA34_90 = input.LA(3);
 
-                if ( (LA32_90=='t') ) {
-                    int LA32_197 = input.LA(4);
+                if ( (LA34_90=='t') ) {
+                    int LA34_197 = input.LA(4);
 
-                    if ( (LA32_197=='$'||(LA32_197>='0' && LA32_197<='9')||(LA32_197>='A' && LA32_197<='Z')||LA32_197=='\\'||LA32_197=='_'||(LA32_197>='a' && LA32_197<='z')) ) {
-                        alt32=129;
+                    if ( (LA34_197=='$'||(LA34_197>='0' && LA34_197<='9')||(LA34_197>='A' && LA34_197<='Z')||LA34_197=='\\'||LA34_197=='_'||(LA34_197>='a' && LA34_197<='z')) ) {
+                        alt34=129;
                     }
                     else {
-                        alt32=30;}
+                        alt34=30;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
                 }
                 break;
             default:
-                alt32=129;}
+                alt34=129;}
 
             }
             break;
         case 'y':
             {
-            int LA32_14 = input.LA(2);
+            int LA34_14 = input.LA(2);
 
-            if ( (LA32_14=='i') ) {
-                int LA32_91 = input.LA(3);
+            if ( (LA34_14=='i') ) {
+                int LA34_91 = input.LA(3);
 
-                if ( (LA32_91=='e') ) {
-                    int LA32_198 = input.LA(4);
+                if ( (LA34_91=='e') ) {
+                    int LA34_198 = input.LA(4);
 
-                    if ( (LA32_198=='l') ) {
-                        int LA32_274 = input.LA(5);
+                    if ( (LA34_198=='l') ) {
+                        int LA34_274 = input.LA(5);
 
-                        if ( (LA32_274=='d') ) {
-                            int LA32_330 = input.LA(6);
+                        if ( (LA34_274=='d') ) {
+                            int LA34_330 = input.LA(6);
 
-                            if ( (LA32_330=='$'||(LA32_330>='0' && LA32_330<='9')||(LA32_330>='A' && LA32_330<='Z')||LA32_330=='\\'||LA32_330=='_'||(LA32_330>='a' && LA32_330<='z')) ) {
-                                alt32=129;
+                            if ( (LA34_330=='$'||(LA34_330>='0' && LA34_330<='9')||(LA34_330>='A' && LA34_330<='Z')||LA34_330=='\\'||LA34_330=='_'||(LA34_330>='a' && LA34_330<='z')) ) {
+                                alt34=129;
                             }
                             else {
-                                alt32=32;}
+                                alt34=32;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
             }
             else {
-                alt32=129;}
+                alt34=129;}
             }
             break;
         case 'C':
             {
-            int LA32_15 = input.LA(2);
+            int LA34_15 = input.LA(2);
 
-            if ( (LA32_15=='D') ) {
-                int LA32_92 = input.LA(3);
+            if ( (LA34_15=='D') ) {
+                int LA34_92 = input.LA(3);
 
-                if ( (LA32_92=='A') ) {
-                    int LA32_199 = input.LA(4);
+                if ( (LA34_92=='A') ) {
+                    int LA34_199 = input.LA(4);
 
-                    if ( (LA32_199=='T') ) {
-                        int LA32_275 = input.LA(5);
+                    if ( (LA34_199=='T') ) {
+                        int LA34_275 = input.LA(5);
 
-                        if ( (LA32_275=='A') ) {
-                            int LA32_331 = input.LA(6);
+                        if ( (LA34_275=='A') ) {
+                            int LA34_331 = input.LA(6);
 
-                            if ( (LA32_331=='$'||(LA32_331>='0' && LA32_331<='9')||(LA32_331>='A' && LA32_331<='Z')||LA32_331=='\\'||LA32_331=='_'||(LA32_331>='a' && LA32_331<='z')) ) {
-                                alt32=129;
+                            if ( (LA34_331=='$'||(LA34_331>='0' && LA34_331<='9')||(LA34_331>='A' && LA34_331<='Z')||LA34_331=='\\'||LA34_331=='_'||(LA34_331>='a' && LA34_331<='z')) ) {
+                                alt34=129;
                             }
                             else {
-                                alt32=33;}
+                                alt34=33;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
             }
             else {
-                alt32=129;}
+                alt34=129;}
             }
             break;
         case 'x':
             {
-            int LA32_16 = input.LA(2);
+            int LA34_16 = input.LA(2);
 
-            if ( (LA32_16=='m') ) {
-                int LA32_93 = input.LA(3);
+            if ( (LA34_16=='m') ) {
+                int LA34_93 = input.LA(3);
 
-                if ( (LA32_93=='l') ) {
-                    int LA32_200 = input.LA(4);
+                if ( (LA34_93=='l') ) {
+                    int LA34_200 = input.LA(4);
 
-                    if ( (LA32_200=='$'||(LA32_200>='0' && LA32_200<='9')||(LA32_200>='A' && LA32_200<='Z')||LA32_200=='\\'||LA32_200=='_'||(LA32_200>='a' && LA32_200<='z')) ) {
-                        alt32=129;
+                    if ( (LA34_200=='$'||(LA34_200>='0' && LA34_200<='9')||(LA34_200>='A' && LA34_200<='Z')||LA34_200=='\\'||LA34_200=='_'||(LA34_200>='a' && LA34_200<='z')) ) {
+                        alt34=129;
                     }
                     else {
-                        alt32=34;}
+                        alt34=34;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
             }
             else {
-                alt32=129;}
+                alt34=129;}
             }
             break;
         case 'a':
             {
-            int LA32_17 = input.LA(2);
+            int LA34_17 = input.LA(2);
 
-            if ( (LA32_17=='b') ) {
-                int LA32_94 = input.LA(3);
+            if ( (LA34_17=='b') ) {
+                int LA34_94 = input.LA(3);
 
-                if ( (LA32_94=='s') ) {
-                    int LA32_201 = input.LA(4);
+                if ( (LA34_94=='s') ) {
+                    int LA34_201 = input.LA(4);
 
-                    if ( (LA32_201=='t') ) {
-                        int LA32_277 = input.LA(5);
+                    if ( (LA34_201=='t') ) {
+                        int LA34_277 = input.LA(5);
 
-                        if ( (LA32_277=='r') ) {
-                            int LA32_332 = input.LA(6);
+                        if ( (LA34_277=='r') ) {
+                            int LA34_332 = input.LA(6);
 
-                            if ( (LA32_332=='a') ) {
-                                int LA32_375 = input.LA(7);
+                            if ( (LA34_332=='a') ) {
+                                int LA34_375 = input.LA(7);
 
-                                if ( (LA32_375=='c') ) {
-                                    int LA32_404 = input.LA(8);
+                                if ( (LA34_375=='c') ) {
+                                    int LA34_404 = input.LA(8);
 
-                                    if ( (LA32_404=='t') ) {
-                                        int LA32_423 = input.LA(9);
+                                    if ( (LA34_404=='t') ) {
+                                        int LA34_423 = input.LA(9);
 
-                                        if ( (LA32_423=='$'||(LA32_423>='0' && LA32_423<='9')||(LA32_423>='A' && LA32_423<='Z')||LA32_423=='\\'||LA32_423=='_'||(LA32_423>='a' && LA32_423<='z')) ) {
-                                            alt32=129;
+                                        if ( (LA34_423=='$'||(LA34_423>='0' && LA34_423<='9')||(LA34_423>='A' && LA34_423<='Z')||LA34_423=='\\'||LA34_423=='_'||(LA34_423>='a' && LA34_423<='z')) ) {
+                                            alt34=129;
                                         }
                                         else {
-                                            alt32=36;}
+                                            alt34=36;}
                                     }
                                     else {
-                                        alt32=129;}
+                                        alt34=129;}
                                 }
                                 else {
-                                    alt32=129;}
+                                    alt34=129;}
                             }
                             else {
-                                alt32=129;}
+                                alt34=129;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
             }
             else {
-                alt32=129;}
+                alt34=129;}
             }
             break;
         case 'l':
             {
-            int LA32_18 = input.LA(2);
+            int LA34_18 = input.LA(2);
 
-            if ( (LA32_18=='o') ) {
-                int LA32_95 = input.LA(3);
+            if ( (LA34_18=='o') ) {
+                int LA34_95 = input.LA(3);
 
-                if ( (LA32_95=='n') ) {
-                    int LA32_202 = input.LA(4);
+                if ( (LA34_95=='n') ) {
+                    int LA34_202 = input.LA(4);
 
-                    if ( (LA32_202=='g') ) {
-                        int LA32_278 = input.LA(5);
+                    if ( (LA34_202=='g') ) {
+                        int LA34_278 = input.LA(5);
 
-                        if ( (LA32_278=='$'||(LA32_278>='0' && LA32_278<='9')||(LA32_278>='A' && LA32_278<='Z')||LA32_278=='\\'||LA32_278=='_'||(LA32_278>='a' && LA32_278<='z')) ) {
-                            alt32=129;
+                        if ( (LA34_278=='$'||(LA34_278>='0' && LA34_278<='9')||(LA34_278>='A' && LA34_278<='Z')||LA34_278=='\\'||LA34_278=='_'||(LA34_278>='a' && LA34_278<='z')) ) {
+                            alt34=129;
                         }
                         else {
-                            alt32=54;}
+                            alt34=54;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
             }
             else {
-                alt32=129;}
+                alt34=129;}
             }
             break;
         case 'p':
@@ -6897,43 +6992,43 @@
             switch ( input.LA(2) ) {
             case 'a':
                 {
-                int LA32_96 = input.LA(3);
+                int LA34_96 = input.LA(3);
 
-                if ( (LA32_96=='c') ) {
-                    int LA32_203 = input.LA(4);
+                if ( (LA34_96=='c') ) {
+                    int LA34_203 = input.LA(4);
 
-                    if ( (LA32_203=='k') ) {
-                        int LA32_279 = input.LA(5);
+                    if ( (LA34_203=='k') ) {
+                        int LA34_279 = input.LA(5);
 
-                        if ( (LA32_279=='a') ) {
-                            int LA32_334 = input.LA(6);
+                        if ( (LA34_279=='a') ) {
+                            int LA34_334 = input.LA(6);
 
-                            if ( (LA32_334=='g') ) {
-                                int LA32_376 = input.LA(7);
+                            if ( (LA34_334=='g') ) {
+                                int LA34_376 = input.LA(7);
 
-                                if ( (LA32_376=='e') ) {
-                                    int LA32_405 = input.LA(8);
+                                if ( (LA34_376=='e') ) {
+                                    int LA34_405 = input.LA(8);
 
-                                    if ( (LA32_405=='$'||(LA32_405>='0' && LA32_405<='9')||(LA32_405>='A' && LA32_405<='Z')||LA32_405=='\\'||LA32_405=='_'||(LA32_405>='a' && LA32_405<='z')) ) {
-                                        alt32=129;
+                                    if ( (LA34_405=='$'||(LA34_405>='0' && LA34_405<='9')||(LA34_405>='A' && LA34_405<='Z')||LA34_405=='\\'||LA34_405=='_'||(LA34_405>='a' && LA34_405<='z')) ) {
+                                        alt34=129;
                                     }
                                     else {
-                                        alt32=56;}
+                                        alt34=56;}
                                 }
                                 else {
-                                    alt32=129;}
+                                    alt34=129;}
                             }
                             else {
-                                alt32=129;}
+                                alt34=129;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
                 }
                 break;
             case 'r':
@@ -6941,159 +7036,159 @@
                 switch ( input.LA(3) ) {
                 case 'i':
                     {
-                    int LA32_204 = input.LA(4);
+                    int LA34_204 = input.LA(4);
 
-                    if ( (LA32_204=='v') ) {
-                        int LA32_280 = input.LA(5);
+                    if ( (LA34_204=='v') ) {
+                        int LA34_280 = input.LA(5);
 
-                        if ( (LA32_280=='a') ) {
-                            int LA32_335 = input.LA(6);
+                        if ( (LA34_280=='a') ) {
+                            int LA34_335 = input.LA(6);
 
-                            if ( (LA32_335=='t') ) {
-                                int LA32_377 = input.LA(7);
+                            if ( (LA34_335=='t') ) {
+                                int LA34_377 = input.LA(7);
 
-                                if ( (LA32_377=='e') ) {
-                                    int LA32_406 = input.LA(8);
+                                if ( (LA34_377=='e') ) {
+                                    int LA34_406 = input.LA(8);
 
-                                    if ( (LA32_406=='$'||(LA32_406>='0' && LA32_406<='9')||(LA32_406>='A' && LA32_406<='Z')||LA32_406=='\\'||LA32_406=='_'||(LA32_406>='a' && LA32_406<='z')) ) {
-                                        alt32=129;
+                                    if ( (LA34_406=='$'||(LA34_406>='0' && LA34_406<='9')||(LA34_406>='A' && LA34_406<='Z')||LA34_406=='\\'||LA34_406=='_'||(LA34_406>='a' && LA34_406<='z')) ) {
+                                        alt34=129;
                                     }
                                     else {
-                                        alt32=57;}
+                                        alt34=57;}
                                 }
                                 else {
-                                    alt32=129;}
+                                    alt34=129;}
                             }
                             else {
-                                alt32=129;}
+                                alt34=129;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                     }
                     break;
                 case 'o':
                     {
-                    int LA32_205 = input.LA(4);
+                    int LA34_205 = input.LA(4);
 
-                    if ( (LA32_205=='t') ) {
-                        int LA32_281 = input.LA(5);
+                    if ( (LA34_205=='t') ) {
+                        int LA34_281 = input.LA(5);
 
-                        if ( (LA32_281=='e') ) {
-                            int LA32_336 = input.LA(6);
+                        if ( (LA34_281=='e') ) {
+                            int LA34_336 = input.LA(6);
 
-                            if ( (LA32_336=='c') ) {
-                                int LA32_378 = input.LA(7);
+                            if ( (LA34_336=='c') ) {
+                                int LA34_378 = input.LA(7);
 
-                                if ( (LA32_378=='t') ) {
-                                    int LA32_407 = input.LA(8);
+                                if ( (LA34_378=='t') ) {
+                                    int LA34_407 = input.LA(8);
 
-                                    if ( (LA32_407=='e') ) {
-                                        int LA32_426 = input.LA(9);
+                                    if ( (LA34_407=='e') ) {
+                                        int LA34_426 = input.LA(9);
 
-                                        if ( (LA32_426=='d') ) {
-                                            int LA32_438 = input.LA(10);
+                                        if ( (LA34_426=='d') ) {
+                                            int LA34_438 = input.LA(10);
 
-                                            if ( (LA32_438=='$'||(LA32_438>='0' && LA32_438<='9')||(LA32_438>='A' && LA32_438<='Z')||LA32_438=='\\'||LA32_438=='_'||(LA32_438>='a' && LA32_438<='z')) ) {
-                                                alt32=129;
+                                            if ( (LA34_438=='$'||(LA34_438>='0' && LA34_438<='9')||(LA34_438>='A' && LA34_438<='Z')||LA34_438=='\\'||LA34_438=='_'||(LA34_438>='a' && LA34_438<='z')) ) {
+                                                alt34=129;
                                             }
                                             else {
-                                                alt32=58;}
+                                                alt34=58;}
                                         }
                                         else {
-                                            alt32=129;}
+                                            alt34=129;}
                                     }
                                     else {
-                                        alt32=129;}
+                                        alt34=129;}
                                 }
                                 else {
-                                    alt32=129;}
+                                    alt34=129;}
                             }
                             else {
-                                alt32=129;}
+                                alt34=129;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                     }
                     break;
                 default:
-                    alt32=129;}
+                    alt34=129;}
 
                 }
                 break;
             case 'u':
                 {
-                int LA32_98 = input.LA(3);
+                int LA34_98 = input.LA(3);
 
-                if ( (LA32_98=='b') ) {
-                    int LA32_206 = input.LA(4);
+                if ( (LA34_98=='b') ) {
+                    int LA34_206 = input.LA(4);
 
-                    if ( (LA32_206=='l') ) {
-                        int LA32_282 = input.LA(5);
+                    if ( (LA34_206=='l') ) {
+                        int LA34_282 = input.LA(5);
 
-                        if ( (LA32_282=='i') ) {
-                            int LA32_337 = input.LA(6);
+                        if ( (LA34_282=='i') ) {
+                            int LA34_337 = input.LA(6);
 
-                            if ( (LA32_337=='c') ) {
-                                int LA32_379 = input.LA(7);
+                            if ( (LA34_337=='c') ) {
+                                int LA34_379 = input.LA(7);
 
-                                if ( (LA32_379=='$'||(LA32_379>='0' && LA32_379<='9')||(LA32_379>='A' && LA32_379<='Z')||LA32_379=='\\'||LA32_379=='_'||(LA32_379>='a' && LA32_379<='z')) ) {
-                                    alt32=129;
+                                if ( (LA34_379=='$'||(LA34_379>='0' && LA34_379<='9')||(LA34_379>='A' && LA34_379<='Z')||LA34_379=='\\'||LA34_379=='_'||(LA34_379>='a' && LA34_379<='z')) ) {
+                                    alt34=129;
                                 }
                                 else {
-                                    alt32=59;}
+                                    alt34=59;}
                             }
                             else {
-                                alt32=129;}
+                                alt34=129;}
                         }
                         else {
-                            alt32=129;}
+                            alt34=129;}
                     }
                     else {
-                        alt32=129;}
+                        alt34=129;}
                 }
                 else {
-                    alt32=129;}
+                    alt34=129;}
                 }
                 break;
             default:
-                alt32=129;}
+                alt34=129;}
 
             }
             break;
         case '{':
             {
-            alt32=67;
+            alt34=67;
             }
             break;
         case '}':
             {
-            alt32=68;
+            alt34=68;
             }
             break;
         case '(':
             {
-            alt32=69;
+            alt34=69;
             }
             break;
         case ')':
             {
-            alt32=70;
+            alt34=70;
             }
             break;
         case '[':
             {
-            alt32=71;
+            alt34=71;
             }
             break;
         case ']':
             {
-            alt32=72;
+            alt34=72;
             }
             break;
         case '.':
@@ -7101,7 +7196,7 @@
             switch ( input.LA(2) ) {
             case '.':
                 {
-                alt32=123;
+                alt34=123;
                 }
                 break;
             case '0':
@@ -7115,61 +7210,56 @@
             case '8':
             case '9':
                 {
-                alt32=131;
+                alt34=131;
                 }
                 break;
             default:
-                alt32=73;}
+                alt34=73;}
 
             }
             break;
         case ';':
             {
-            alt32=74;
+            alt34=74;
             }
             break;
         case ',':
             {
-            alt32=75;
+            alt34=75;
             }
             break;
         case '<':
             {
             switch ( input.LA(2) ) {
-            case '=':
-                {
-                alt32=78;
-                }
-                break;
             case '<':
                 {
-                int LA32_102 = input.LA(3);
+                int LA34_101 = input.LA(3);
 
-                if ( (LA32_102=='=') ) {
-                    alt32=107;
+                if ( (LA34_101=='=') ) {
+                    alt34=107;
                 }
                 else {
-                    alt32=90;}
+                    alt34=90;}
                 }
                 break;
-            case '/':
+            case '=':
                 {
-                alt32=117;
+                alt34=78;
                 }
                 break;
             case '!':
                 {
-                int LA32_104 = input.LA(3);
+                int LA34_103 = input.LA(3);
 
-                if ( (LA32_104=='-') ) {
-                    alt32=115;
+                if ( (LA34_103=='-') ) {
+                    alt34=115;
                 }
-                else if ( (LA32_104=='[') ) {
-                    alt32=119;
+                else if ( (LA34_103=='[') ) {
+                    alt34=119;
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("1:1: Tokens : ( NULL | TRUE | FALSE | BREAK | CASE | CATCH | CONTINUE | DEFAULT | DELETE | DO | ELSE | FINALLY | FOR | EACH | FUNCTION | IF | IN | INSTANCEOF | NEW | RETURN | SWITCH | THIS | THROW | TRY | TYPEOF | VAR | VOID | WHILE | WITH | GET | SET | YIELD | CDATA | WXML | NAMESPACE | ABSTRACT | BOOLEAN | BYTE | CHAR | CLASS | CONST | DEBUGGER | DOUBLE | ENUM | EXPORT | EXTENDS | FINAL | FLOAT | GOTO | IMPLEMENTS | IMPORT | INT | INTERFACE | LONG | NATIVE | PACKAGE | PRIVATE | PROTECTED | PUBLIC | SHORT | STATIC | SUPER | SYNCHRONIZED | THROWS | TRANSIENT | VOLATILE | LBRACE | RBRACE | LPAREN | RPAREN | LBRACK | RBRACK | DOT | SEMIC | COMMA | LT | GT | LTE | GTE | EQ | NEQ | SAME | NSAME | ADD | SUB | MUL | MOD | INC | DEC | SHL | SHR | SHU | AND | OR | XOR | NOT | INV | LAND | LOR | QUE | COLON | ASSIGN | ADDASS | SUBASS | MULASS | MODASS | SHLASS | SHRASS | SHUASS | ANDASS | ORASS | XORASS | DIV | DIVASS | XCOPEN | XCCLOSE | XLCLOSE | XRCLOSE | CDATAOPEN | XHOPEN | XHCLOSE | AT | DOTDOT | COLONCOLON | WhiteSpace | EOL | MultiLineComment | SingleLineComment | Identifier | XmlAttribute | DecimalLiteral | OctalIntegerLiteral | HexIntegerLiteral | StringLiteral | RegularExpressionLiteral );", 32, 104, input);
+                        new NoViableAltException("1:1: Tokens : ( NULL | TRUE | FALSE | BREAK | CASE | CATCH | CONTINUE | DEFAULT | DELETE | DO | ELSE | FINALLY | FOR | EACH | FUNCTION | IF | IN | INSTANCEOF | NEW | RETURN | SWITCH | THIS | THROW | TRY | TYPEOF | VAR | VOID | WHILE | WITH | GET | SET | YIELD | CDATA | WXML | NAMESPACE | ABSTRACT | BOOLEAN | BYTE | CHAR | CLASS | CONST | DEBUGGER | DOUBLE | ENUM | EXPORT | EXTENDS | FINAL | FLOAT | GOTO | IMPLEMENTS | IMPORT | INT | INTERFACE | LONG | NATIVE | PACKAGE | PRIVATE | PROTECTED | PUBLIC | SHORT | STATIC | SUPER | SYNCHRONIZED | THROWS | TRANSIENT | VOLATILE | LBRACE | RBRACE | LPAREN | RPAREN | LBRACK | RBRACK | DOT | SEMIC | COMMA | LT | GT | LTE | GTE | EQ | NEQ | SAME | NSAME | ADD | SUB | MUL | MOD | INC | DEC | SHL | SHR | SHU | AND | OR | XOR | NOT | INV | LAND | LOR | QUE | COLON | ASSIGN | ADDASS | SUBASS | MULASS | MODASS | SHLASS | SHRASS | SHUASS | ANDASS | ORASS | XORASS | DIV | DIVASS | XCOPEN | XCCLOSE | XLCLOSE | XRCLOSE | CDATAOPEN | XHOPEN | XHCLOSE | AT | DOTDOT | COLONCOLON | WhiteSpace | EOL | MultiLineComment | SingleLineComment | Identifier | XmlAttribute | DecimalLiteral | OctalIntegerLiteral | HexIntegerLiteral | StringLiteral | RegularExpressionLiteral );", 34, 103, input);
 
                     throw nvae;
                 }
@@ -7177,83 +7267,88 @@
                 break;
             case '?':
                 {
-                alt32=120;
+                alt34=120;
+                }
+                break;
+            case '/':
+                {
+                alt34=117;
                 }
                 break;
             default:
-                alt32=76;}
+                alt34=76;}
 
             }
             break;
         case '>':
             {
             switch ( input.LA(2) ) {
-            case '=':
-                {
-                alt32=79;
-                }
-                break;
             case '>':
                 {
                 switch ( input.LA(3) ) {
                 case '=':
                     {
-                    alt32=108;
+                    alt34=108;
                     }
                     break;
                 case '>':
                     {
-                    int LA32_212 = input.LA(4);
+                    int LA34_212 = input.LA(4);
 
-                    if ( (LA32_212=='=') ) {
-                        alt32=109;
+                    if ( (LA34_212=='=') ) {
+                        alt34=109;
                     }
                     else {
-                        alt32=92;}
+                        alt34=92;}
                     }
                     break;
                 default:
-                    alt32=91;}
+                    alt34=91;}
 
                 }
                 break;
+            case '=':
+                {
+                alt34=79;
+                }
+                break;
             default:
-                alt32=77;}
+                alt34=77;}
 
             }
             break;
         case '=':
             {
-            int LA32_31 = input.LA(2);
+            int LA34_31 = input.LA(2);
 
-            if ( (LA32_31=='=') ) {
-                int LA32_110 = input.LA(3);
+            if ( (LA34_31=='=') ) {
+                int LA34_110 = input.LA(3);
 
-                if ( (LA32_110=='=') ) {
-                    alt32=82;
+                if ( (LA34_110=='=') ) {
+                    alt34=82;
                 }
                 else {
-                    alt32=80;}
+                    alt34=80;}
             }
             else {
-                alt32=102;}
+                alt34=102;}
             }
             break;
         case '!':
             {
-            int LA32_32 = input.LA(2);
+            int LA34_32 = input.LA(2);
 
-            if ( (LA32_32=='=') ) {
-                int LA32_112 = input.LA(3);
+            if ( (LA34_32=='=') ) {
+                int LA34_112 = input.LA(3);
 
-                if ( (LA32_112=='=') ) {
-                    alt32=83;
+                if ( (LA34_112=='=') ) {
+                    alt34=83;
                 }
                 else {
-                    alt32=81;}
+                    alt34=81;}
             }
             else {
-                alt32=96;}
+                alt34=96;}
             }
             break;
         case '+':
@@ -7261,16 +7356,16 @@
             switch ( input.LA(2) ) {
             case '=':
                 {
-                alt32=103;
+                alt34=103;
                 }
                 break;
             case '+':
                 {
-                alt32=88;
+                alt34=88;
                 }
                 break;
             default:
-                alt32=84;}
+                alt34=84;}
 
             }
             break;
@@ -7279,165 +7374,165 @@
             switch ( input.LA(2) ) {
             case '=':
                 {
-                alt32=104;
+                alt34=104;
                 }
                 break;
             case '-':
                 {
-                int LA32_118 = input.LA(3);
+                int LA34_118 = input.LA(3);
 
-                if ( (LA32_118=='>') ) {
-                    alt32=116;
+                if ( (LA34_118=='>') ) {
+                    alt34=116;
                 }
                 else {
-                    alt32=89;}
+                    alt34=89;}
                 }
                 break;
             default:
-                alt32=85;}
+                alt34=85;}
 
             }
             break;
         case '*':
             {
-            int LA32_35 = input.LA(2);
+            int LA34_35 = input.LA(2);
 
-            if ( (LA32_35=='=') ) {
-                alt32=105;
+            if ( (LA34_35=='=') ) {
+                alt34=105;
             }
             else {
-                alt32=86;}
+                alt34=86;}
             }
             break;
         case '%':
             {
-            int LA32_36 = input.LA(2);
+            int LA34_36 = input.LA(2);
 
-            if ( (LA32_36=='=') ) {
-                alt32=106;
+            if ( (LA34_36=='=') ) {
+                alt34=106;
             }
             else {
-                alt32=87;}
+                alt34=87;}
             }
             break;
         case '&':
             {
             switch ( input.LA(2) ) {
-            case '=':
-                {
-                alt32=110;
-                }
-                break;
             case '&':
                 {
-                alt32=98;
+                alt34=98;
+                }
+                break;
+            case '=':
+                {
+                alt34=110;
                 }
                 break;
             default:
-                alt32=93;}
+                alt34=93;}
 
             }
             break;
         case '|':
             {
             switch ( input.LA(2) ) {
-            case '=':
-                {
-                alt32=111;
-                }
-                break;
             case '|':
                 {
-                alt32=99;
+                alt34=99;
+                }
+                break;
+            case '=':
+                {
+                alt34=111;
                 }
                 break;
             default:
-                alt32=94;}
+                alt34=94;}
 
             }
             break;
         case '^':
             {
-            int LA32_39 = input.LA(2);
+            int LA34_39 = input.LA(2);
 
-            if ( (LA32_39=='=') ) {
-                alt32=112;
+            if ( (LA34_39=='=') ) {
+                alt34=112;
             }
             else {
-                alt32=95;}
+                alt34=95;}
             }
             break;
         case '~':
             {
-            alt32=97;
+            alt34=97;
             }
             break;
         case '?':
             {
-            int LA32_41 = input.LA(2);
+            int LA34_41 = input.LA(2);
 
-            if ( (LA32_41=='>') ) {
-                alt32=121;
+            if ( (LA34_41=='>') ) {
+                alt34=121;
             }
             else {
-                alt32=100;}
+                alt34=100;}
             }
             break;
         case ':':
             {
-            int LA32_42 = input.LA(2);
+            int LA34_42 = input.LA(2);
 
-            if ( (LA32_42==':') ) {
-                alt32=124;
+            if ( (LA34_42==':') ) {
+                alt34=124;
             }
             else {
-                alt32=101;}
+                alt34=101;}
             }
             break;
         case '/':
             {
-            int LA32_43 = input.LA(2);
+            int LA34_43 = input.LA(2);
 
-            if ( (LA32_43=='=') ) {
-                int LA32_136 = input.LA(3);
+            if ( (LA34_43=='=') ) {
+                int LA34_136 = input.LA(3);
 
-                if ( ((LA32_136>='\u0000' && LA32_136<='\t')||(LA32_136>='\u000B' && LA32_136<='\f')||(LA32_136>='\u000E' && LA32_136<='\u2027')||(LA32_136>='\u202A' && LA32_136<='\uFFFE')) && ( areRegularExpressionsEnabled() )) {
-                    alt32=135;
+                if ( ((LA34_136>='\u0000' && LA34_136<='\t')||(LA34_136>='\u000B' && LA34_136<='\f')||(LA34_136>='\u000E' && LA34_136<='\u2027')||(LA34_136>='\u202A' && LA34_136<='\uFFFE')) && ( areRegularExpressionsEnabled() )) {
+                    alt34=135;
                 }
                 else {
-                    alt32=114;}
+                    alt34=114;}
             }
-            else if ( (LA32_43=='/') ) {
-                alt32=128;
+            else if ( (LA34_43=='*') ) {
+                alt34=127;
             }
-            else if ( (LA32_43=='>') ) {
-                int LA32_138 = input.LA(3);
+            else if ( (LA34_43=='/') ) {
+                alt34=128;
+            }
+            else if ( (LA34_43=='>') ) {
+                int LA34_139 = input.LA(3);
 
-                if ( ((LA32_138>='\u0000' && LA32_138<='\t')||(LA32_138>='\u000B' && LA32_138<='\f')||(LA32_138>='\u000E' && LA32_138<='\u2027')||(LA32_138>='\u202A' && LA32_138<='\uFFFE')) && ( areRegularExpressionsEnabled() )) {
-                    alt32=135;
+                if ( ((LA34_139>='\u0000' && LA34_139<='\t')||(LA34_139>='\u000B' && LA34_139<='\f')||(LA34_139>='\u000E' && LA34_139<='\u2027')||(LA34_139>='\u202A' && LA34_139<='\uFFFE')) && ( areRegularExpressionsEnabled() )) {
+                    alt34=135;
                 }
                 else {
-                    alt32=118;}
+                    alt34=118;}
             }
-            else if ( (LA32_43=='*') ) {
-                alt32=127;
-            }
-            else if ( ((LA32_43>='\u0000' && LA32_43<='\t')||(LA32_43>='\u000B' && LA32_43<='\f')||(LA32_43>='\u000E' && LA32_43<=')')||(LA32_43>='+' && LA32_43<='.')||(LA32_43>='0' && LA32_43<='<')||(LA32_43>='?' && LA32_43<='\u2027')||(LA32_43>='\u202A' && LA32_43<='\uFFFE')) && ( areRegularExpressionsEnabled() )) {
-                alt32=135;
+            else if ( ((LA34_43>='\u0000' && LA34_43<='\t')||(LA34_43>='\u000B' && LA34_43<='\f')||(LA34_43>='\u000E' && LA34_43<=')')||(LA34_43>='+' && LA34_43<='.')||(LA34_43>='0' && LA34_43<='<')||(LA34_43>='?' && LA34_43<='\u2027')||(LA34_43>='\u202A' && LA34_43<='\uFFFE')) && ( areRegularExpressionsEnabled() )) {
+                alt34=135;
             }
             else {
-                alt32=113;}
+                alt34=113;}
             }
             break;
         case '@':
             {
-            int LA32_44 = input.LA(2);
+            int LA34_44 = input.LA(2);
 
-            if ( (LA32_44=='$'||(LA32_44>='A' && LA32_44<='Z')||LA32_44=='\\'||LA32_44=='_'||(LA32_44>='a' && LA32_44<='z')) ) {
-                alt32=130;
+            if ( (LA34_44=='$'||(LA34_44>='A' && LA34_44<='Z')||LA34_44=='\\'||LA34_44=='_'||(LA34_44>='a' && LA34_44<='z')) ) {
+                alt34=130;
             }
             else {
-                alt32=122;}
+                alt34=122;}
             }
             break;
         case '\t':
@@ -7462,7 +7557,7 @@
         case '\u205F':
         case '\u3000':
             {
-            alt32=125;
+            alt34=125;
             }
             break;
         case '\n':
@@ -7470,7 +7565,7 @@
         case '\u2028':
         case '\u2029':
             {
-            alt32=126;
+            alt34=126;
             }
             break;
         case '0':
@@ -7479,7 +7574,7 @@
             case 'X':
             case 'x':
                 {
-                alt32=133;
+                alt34=133;
                 }
                 break;
             case '0':
@@ -7491,11 +7586,11 @@
             case '6':
             case '7':
                 {
-                alt32=132;
+                alt34=132;
                 }
                 break;
             default:
-                alt32=131;}
+                alt34=131;}
 
             }
             break;
@@ -7509,19 +7604,19 @@
         case '8':
         case '9':
             {
-            alt32=131;
+            alt34=131;
             }
             break;
         case '\"':
         case '\'':
             {
-            alt32=134;
+            alt34=134;
             }
             break;
         default:
-            alt32=129;}
+            alt34=129;}
 
-        switch (alt32) {
+        switch (alt34) {
             case 1 :
                 // JS.g:1:10: NULL
                 {
@@ -8473,20 +8568,20 @@
     }
 
 
-    protected DFA19 dfa19 = new DFA19(this);
-    static final String DFA19_eotS =
+    protected DFA21 dfa21 = new DFA21(this);
+    static final String DFA21_eotS =
         "\1\uffff\2\4\3\uffff\1\4";
-    static final String DFA19_eofS =
+    static final String DFA21_eofS =
         "\7\uffff";
-    static final String DFA19_minS =
+    static final String DFA21_minS =
         "\3\56\3\uffff\1\56";
-    static final String DFA19_maxS =
+    static final String DFA21_maxS =
         "\1\71\1\56\1\71\3\uffff\1\71";
-    static final String DFA19_acceptS =
+    static final String DFA21_acceptS =
         "\3\uffff\1\2\1\3\1\1\1\uffff";
-    static final String DFA19_specialS =
+    static final String DFA21_specialS =
         "\7\uffff}>";
-    static final String[] DFA19_transitionS = {
+    static final String[] DFA21_transitionS = {
             "\1\3\1\uffff\1\1\11\2",
             "\1\5",
             "\1\5\1\uffff\12\6",
@@ -8496,37 +8591,37 @@
             "\1\5\1\uffff\12\6"
     };
 
-    static final short[] DFA19_eot = DFA.unpackEncodedString(DFA19_eotS);
-    static final short[] DFA19_eof = DFA.unpackEncodedString(DFA19_eofS);
-    static final char[] DFA19_min = DFA.unpackEncodedStringToUnsignedChars(DFA19_minS);
-    static final char[] DFA19_max = DFA.unpackEncodedStringToUnsignedChars(DFA19_maxS);
-    static final short[] DFA19_accept = DFA.unpackEncodedString(DFA19_acceptS);
-    static final short[] DFA19_special = DFA.unpackEncodedString(DFA19_specialS);
-    static final short[][] DFA19_transition;
+    static final short[] DFA21_eot = DFA.unpackEncodedString(DFA21_eotS);
+    static final short[] DFA21_eof = DFA.unpackEncodedString(DFA21_eofS);
+    static final char[] DFA21_min = DFA.unpackEncodedStringToUnsignedChars(DFA21_minS);
+    static final char[] DFA21_max = DFA.unpackEncodedStringToUnsignedChars(DFA21_maxS);
+    static final short[] DFA21_accept = DFA.unpackEncodedString(DFA21_acceptS);
+    static final short[] DFA21_special = DFA.unpackEncodedString(DFA21_specialS);
+    static final short[][] DFA21_transition;
 
     static {
-        int numStates = DFA19_transitionS.length;
-        DFA19_transition = new short[numStates][];
+        int numStates = DFA21_transitionS.length;
+        DFA21_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA19_transition[i] = DFA.unpackEncodedString(DFA19_transitionS[i]);
+            DFA21_transition[i] = DFA.unpackEncodedString(DFA21_transitionS[i]);
         }
     }
 
-    class DFA19 extends DFA {
+    class DFA21 extends DFA {
 
-        public DFA19(BaseRecognizer recognizer) {
+        public DFA21(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 19;
-            this.eot = DFA19_eot;
-            this.eof = DFA19_eof;
-            this.min = DFA19_min;
-            this.max = DFA19_max;
-            this.accept = DFA19_accept;
-            this.special = DFA19_special;
-            this.transition = DFA19_transition;
+            this.decisionNumber = 21;
+            this.eot = DFA21_eot;
+            this.eof = DFA21_eof;
+            this.min = DFA21_min;
+            this.max = DFA21_max;
+            this.accept = DFA21_accept;
+            this.special = DFA21_special;
+            this.transition = DFA21_transition;
         }
         public String getDescription() {
-            return "865:1: DecimalLiteral : ( DecimalIntegerLiteral '.' ( DecimalDigit )* ( ExponentPart )? | '.' ( DecimalDigit )+ ( ExponentPart )? | DecimalIntegerLiteral ( ExponentPart )? );";
+            return "869:1: DecimalLiteral : ( DecimalIntegerLiteral '.' ( DecimalDigit )* ( ExponentPart )? | '.' ( DecimalDigit )+ ( ExponentPart )? | DecimalIntegerLiteral ( ExponentPart )? );";
         }
     }
  
diff --git a/plugins/org.eclipse.dltk.javascript.parser/src/org/eclipse/dltk/javascript/parser/JSParser.java b/plugins/org.eclipse.dltk.javascript.parser/src/org/eclipse/dltk/javascript/parser/JSParser.java
index 1ff620f..5043cf9 100644
--- a/plugins/org.eclipse.dltk.javascript.parser/src/org/eclipse/dltk/javascript/parser/JSParser.java
+++ b/plugins/org.eclipse.dltk.javascript.parser/src/org/eclipse/dltk/javascript/parser/JSParser.java
@@ -1,4 +1,4 @@
-// $ANTLR 3.0.1 JS.g 2009-09-02 10:05:08
+// $ANTLR 3.0.1 JS.g 2009-09-03 19:32:37
 
 package org.eclipse.dltk.javascript.parser;
 
@@ -13,13 +13,13 @@
 
 public class JSParser extends Parser {
     public static final String[] tokenNames = new String[] {
-        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "NULL", "TRUE", "FALSE", "BREAK", "CASE", "CATCH", "CONTINUE", "DEFAULT", "DELETE", "DO", "ELSE", "FINALLY", "FOR", "EACH", "FUNCTION", "IF", "IN", "INSTANCEOF", "NEW", "RETURN", "SWITCH", "THIS", "THROW", "TRY", "TYPEOF", "VAR", "VOID", "WHILE", "WITH", "GET", "SET", "YIELD", "CDATA", "WXML", "NAMESPACE", "ABSTRACT", "BOOLEAN", "BYTE", "CHAR", "CLASS", "CONST", "DEBUGGER", "DOUBLE", "ENUM", "EXPORT", "EXTENDS", "FINAL", "FLOAT", "GOTO", "IMPLEMENTS", "IMPORT", "INT", "INTERFACE", "LONG", "NATIVE", "PACKAGE", "PRIVATE", "PROTECTED", "PUBLIC", "SHORT", "STATIC", "SUPER", "SYNCHRONIZED", "THROWS", "TRANSIENT", "VOLATILE", "LBRACE", "RBRACE", "LPAREN", "RPAREN", "LBRACK", "RBRACK", "DOT", "SEMIC", "COMMA", "LT", "GT", "LTE", "GTE", "EQ", "NEQ", "SAME", "NSAME", "ADD", "SUB", "MUL", "MOD", "INC", "DEC", "SHL", "SHR", "SHU", "AND", "OR", "XOR", "NOT", "INV", "LAND", "LOR", "QUE", "COLON", "ASSIGN", "ADDASS", "SUBASS", "MULASS", "MODASS", "SHLASS", "SHRASS", "SHUASS", "ANDASS", "ORASS", "XORASS", "DIV", "DIVASS", "XCOPEN", "XCCLOSE", "XLCLOSE", "XRCLOSE", "CDATAOPEN", "XHOPEN", "XHCLOSE", "AT", "DOTDOT", "COLONCOLON", "ARGS", "ARRAY", "BLOCK", "BYFIELD", "BYINDEX", "ALLCHILDREN", "LOCALNAME", "CALL", "CEXPR", "EXPR", "FORITER", "FORSTEP", "FOREACH", "GETTER", "SETTER", "DEFAULT_XML_NAMESPACE", "ITEM", "LABELLED", "NAMEDVALUE", "NEG", "OBJECT", "PAREXPR", "PDEC", "PINC", "POS", "XML", "BSLASH", "DQUOTE", "SQUOTE", "TAB", "VT", "FF", "SP", "NBSP", "USP", "WhiteSpace", "LF", "CR", "LS", "PS", "LineTerminator", "EOL", "MultiLineComment", "SingleLineComment", "StringLiteral", "XmlAttribute", "HexDigit", "IdentifierStartASCII", "DecimalDigit", "IdentifierPart", "IdentifierNameASCIIStart", "Identifier", "PropertyIdentifierSymbols", "RegularExpressionLiteral", "OctalDigit", "ExponentPart", "DecimalIntegerLiteral", "DecimalLiteral", "OctalIntegerLiteral", "HexIntegerLiteral", "CharacterEscapeSequence", "ZeroToThree", "OctalEscapeSequence", "HexEscapeSequence", "UnicodeEscapeSequence", "EscapeSequence", "BackslashSequence", "RegularExpressionFirstChar", "RegularExpressionChar", "XMLLiteral"
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "NULL", "TRUE", "FALSE", "BREAK", "CASE", "CATCH", "CONTINUE", "DEFAULT", "DELETE", "DO", "ELSE", "FINALLY", "FOR", "EACH", "FUNCTION", "IF", "IN", "INSTANCEOF", "NEW", "RETURN", "SWITCH", "THIS", "THROW", "TRY", "TYPEOF", "VAR", "VOID", "WHILE", "WITH", "GET", "SET", "YIELD", "CDATA", "WXML", "NAMESPACE", "ABSTRACT", "BOOLEAN", "BYTE", "CHAR", "CLASS", "CONST", "DEBUGGER", "DOUBLE", "ENUM", "EXPORT", "EXTENDS", "FINAL", "FLOAT", "GOTO", "IMPLEMENTS", "IMPORT", "INT", "INTERFACE", "LONG", "NATIVE", "PACKAGE", "PRIVATE", "PROTECTED", "PUBLIC", "SHORT", "STATIC", "SUPER", "SYNCHRONIZED", "THROWS", "TRANSIENT", "VOLATILE", "LBRACE", "RBRACE", "LPAREN", "RPAREN", "LBRACK", "RBRACK", "DOT", "SEMIC", "COMMA", "LT", "GT", "LTE", "GTE", "EQ", "NEQ", "SAME", "NSAME", "ADD", "SUB", "MUL", "MOD", "INC", "DEC", "SHL", "SHR", "SHU", "AND", "OR", "XOR", "NOT", "INV", "LAND", "LOR", "QUE", "COLON", "ASSIGN", "ADDASS", "SUBASS", "MULASS", "MODASS", "SHLASS", "SHRASS", "SHUASS", "ANDASS", "ORASS", "XORASS", "DIV", "DIVASS", "XCOPEN", "XCCLOSE", "XLCLOSE", "XRCLOSE", "CDATAOPEN", "XHOPEN", "XHCLOSE", "AT", "DOTDOT", "COLONCOLON", "ARGS", "ARRAY", "BLOCK", "BYFIELD", "BYINDEX", "ALLCHILDREN", "LOCALNAME", "CALL", "CEXPR", "EXPR", "FORITER", "FORSTEP", "FOREACH", "GETTER", "SETTER", "DEFAULT_XML_NAMESPACE", "ITEM", "LABELLED", "NAMEDVALUE", "NEG", "OBJECT", "PAREXPR", "PDEC", "PINC", "POS", "XML", "BSLASH", "DQUOTE", "SQUOTE", "TAB", "VT", "FF", "SP", "NBSP", "USP", "WhiteSpace", "LF", "CR", "LS", "PS", "LineTerminatorChar", "LineTerminator", "EOL", "MultiLineComment", "SingleLineComment", "StringLiteral", "XmlAttribute", "HexDigit", "IdentifierStartASCII", "DecimalDigit", "IdentifierPart", "IdentifierNameASCIIStart", "Identifier", "PropertyIdentifierSymbols", "RegularExpressionLiteral", "OctalDigit", "ExponentPart", "DecimalIntegerLiteral", "DecimalLiteral", "OctalIntegerLiteral", "HexIntegerLiteral", "CharacterEscapeSequence", "ZeroToThree", "OctalEscapeSequence", "HexEscapeSequence", "UnicodeEscapeSequence", "EscapeSequence", "BackslashSequence", "RegularExpressionFirstChar", "RegularExpressionChar", "XMLLiteral"
     };
     public static final int PACKAGE=59;
     public static final int FUNCTION=18;
     public static final int SHR=94;
     public static final int VT=158;
-    public static final int RegularExpressionChar=196;
+    public static final int RegularExpressionChar=197;
     public static final int CDATA=36;
     public static final int XRCLOSE=121;
     public static final int LOCALNAME=134;
@@ -29,6 +29,7 @@
     public static final int XHOPEN=123;
     public static final int DO=13;
     public static final int DQUOTE=155;
+    public static final int LineTerminatorChar=168;
     public static final int NOT=99;
     public static final int EOF=-1;
     public static final int CEXPR=136;
@@ -39,10 +40,10 @@
     public static final int FINAL=50;
     public static final int FORSTEP=139;
     public static final int IMPORT=54;
-    public static final int EOL=169;
+    public static final int EOL=170;
     public static final int XLCLOSE=120;
-    public static final int PropertyIdentifierSymbols=180;
-    public static final int OctalDigit=182;
+    public static final int PropertyIdentifierSymbols=181;
+    public static final int OctalDigit=183;
     public static final int RETURN=23;
     public static final int THIS=25;
     public static final int ARGS=128;
@@ -62,12 +63,12 @@
     public static final int INT=55;
     public static final int DEFAULT_XML_NAMESPACE=143;
     public static final int FF=159;
-    public static final int OctalEscapeSequence=190;
-    public static final int RegularExpressionFirstChar=195;
+    public static final int OctalEscapeSequence=191;
+    public static final int RegularExpressionFirstChar=196;
     public static final int TYPEOF=28;
     public static final int GT=80;
     public static final int CALL=135;
-    public static final int CharacterEscapeSequence=188;
+    public static final int CharacterEscapeSequence=189;
     public static final int LAND=101;
     public static final int XML=153;
     public static final int PINC=151;
@@ -75,10 +76,10 @@
     public static final int LBRACK=74;
     public static final int LBRACE=70;
     public static final int SUB=88;
-    public static final int RegularExpressionLiteral=181;
+    public static final int RegularExpressionLiteral=182;
     public static final int FLOAT=51;
-    public static final int DecimalIntegerLiteral=184;
-    public static final int HexDigit=174;
+    public static final int DecimalIntegerLiteral=185;
+    public static final int HexDigit=175;
     public static final int LPAREN=72;
     public static final int AT=125;
     public static final int IMPLEMENTS=53;
@@ -87,12 +88,12 @@
     public static final int XCCLOSE=119;
     public static final int SHRASS=111;
     public static final int PS=167;
-    public static final int MultiLineComment=170;
+    public static final int MultiLineComment=171;
     public static final int ADD=87;
-    public static final int ZeroToThree=189;
+    public static final int ZeroToThree=190;
     public static final int ITEM=144;
-    public static final int XMLLiteral=197;
-    public static final int UnicodeEscapeSequence=192;
+    public static final int XMLLiteral=198;
+    public static final int UnicodeEscapeSequence=193;
     public static final int SHUASS=112;
     public static final int SHORT=63;
     public static final int SET=34;
@@ -101,14 +102,14 @@
     public static final int SAME=85;
     public static final int XHCLOSE=124;
     public static final int COLON=104;
-    public static final int StringLiteral=172;
+    public static final int StringLiteral=173;
     public static final int PAREXPR=149;
     public static final int ENUM=47;
+    public static final int HexIntegerLiteral=188;
     public static final int NBSP=161;
-    public static final int HexIntegerLiteral=187;
     public static final int SP=160;
     public static final int BLOCK=130;
-    public static final int LineTerminator=168;
+    public static final int LineTerminator=169;
     public static final int INTERFACE=56;
     public static final int DIV=116;
     public static final int LONG=57;
@@ -117,19 +118,19 @@
     public static final int LOR=102;
     public static final int LT=79;
     public static final int WHILE=31;
-    public static final int BackslashSequence=194;
+    public static final int BackslashSequence=195;
     public static final int LS=166;
     public static final int CASE=8;
     public static final int NEW=22;
     public static final int CHAR=42;
-    public static final int DecimalDigit=176;
+    public static final int DecimalDigit=177;
     public static final int BYFIELD=131;
     public static final int BREAK=7;
-    public static final int Identifier=179;
+    public static final int Identifier=180;
     public static final int WXML=37;
     public static final int POS=152;
     public static final int DOUBLE=46;
-    public static final int ExponentPart=183;
+    public static final int ExponentPart=184;
     public static final int VAR=29;
     public static final int VOID=30;
     public static final int SUPER=65;
@@ -144,14 +145,14 @@
     public static final int DELETE=12;
     public static final int XCOPEN=118;
     public static final int MUL=89;
-    public static final int IdentifierStartASCII=175;
+    public static final int IdentifierStartASCII=176;
     public static final int TRY=27;
     public static final int NAMESPACE=38;
     public static final int SHLASS=110;
     public static final int COLONCOLON=127;
     public static final int USP=162;
     public static final int ANDASS=113;
-    public static final int IdentifierNameASCIIStart=178;
+    public static final int IdentifierNameASCIIStart=179;
     public static final int QUE=103;
     public static final int OR=97;
     public static final int SETTER=142;
@@ -160,17 +161,17 @@
     public static final int PDEC=150;
     public static final int CATCH=9;
     public static final int FALSE=6;
-    public static final int EscapeSequence=193;
+    public static final int EscapeSequence=194;
     public static final int THROW=26;
     public static final int MULASS=108;
-    public static final int XmlAttribute=173;
+    public static final int XmlAttribute=174;
     public static final int DEC=92;
-    public static final int OctalIntegerLiteral=186;
+    public static final int OctalIntegerLiteral=187;
     public static final int CLASS=43;
-    public static final int HexEscapeSequence=191;
+    public static final int HexEscapeSequence=192;
     public static final int ORASS=114;
     public static final int NAMEDVALUE=146;
-    public static final int SingleLineComment=171;
+    public static final int SingleLineComment=172;
     public static final int GTE=82;
     public static final int FOR=16;
     public static final int DOTDOT=126;
@@ -190,7 +191,7 @@
     public static final int FORITER=138;
     public static final int MODASS=109;
     public static final int DOT=76;
-    public static final int IdentifierPart=177;
+    public static final int IdentifierPart=178;
     public static final int WITH=32;
     public static final int BYTE=41;
     public static final int XOR=98;
@@ -200,7 +201,7 @@
     public static final int DEFAULT=11;
     public static final int ALLCHILDREN=133;
     public static final int TAB=157;
-    public static final int DecimalLiteral=185;
+    public static final int DecimalLiteral=186;
     public static final int TRUE=5;
     public static final int NEQ=84;
     public static final int FINALLY=15;
@@ -227,7 +228,7 @@
     public String[] getTokenNames() { return tokenNames; }
     public String getGrammarFileName() { return "JS.g"; }
 
-
+    
     private final boolean isLeftHandSideAssign(RuleReturnScope lhs, Object[] cached)
     {
     	if (cached[0] != null)
@@ -267,7 +268,7 @@
     	cached[0] = new Boolean(result);
     	return result;
     }
-
+    
     private final static boolean isLeftHandSideExpression(RuleReturnScope lhs)
     {
     	if (lhs.getTree() == null) // e.g. during backtracking
@@ -324,7 +325,7 @@
     	cached[0] = new Boolean(result);
     	return result;
     }
-
+    
     private final void promoteEOL(ParserRuleReturnScope rule)
     {
     	// Get current token and its type (the possibly offending token).
@@ -368,7 +369,7 @@
     };
 
     // $ANTLR start token
-    // JS.g:610:1: token : ( reservedWord | identifier | punctuator | numericLiteral | StringLiteral | XmlAttribute );
+    // JS.g:614:1: token : ( reservedWord | identifier | punctuator | numericLiteral | StringLiteral | XmlAttribute );
     public final token_return token() throws RecognitionException {
         token_return retval = new token_return();
         retval.start = input.LT(1);
@@ -390,7 +391,7 @@
         Object XmlAttribute6_tree=null;
 
         try {
-            // JS.g:611:2: ( reservedWord | identifier | punctuator | numericLiteral | StringLiteral | XmlAttribute )
+            // JS.g:615:2: ( reservedWord | identifier | punctuator | numericLiteral | StringLiteral | XmlAttribute )
             int alt1=6;
             switch ( input.LA(1) ) {
             case NULL:
@@ -541,18 +542,18 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("610:1: token : ( reservedWord | identifier | punctuator | numericLiteral | StringLiteral | XmlAttribute );", 1, 0, input);
+                    new NoViableAltException("614:1: token : ( reservedWord | identifier | punctuator | numericLiteral | StringLiteral | XmlAttribute );", 1, 0, input);
 
                 throw nvae;
             }
 
             switch (alt1) {
                 case 1 :
-                    // JS.g:611:4: reservedWord
+                    // JS.g:615:4: reservedWord
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_reservedWord_in_token1969);
+                    pushFollow(FOLLOW_reservedWord_in_token1997);
                     reservedWord1=reservedWord();
                     _fsp--;
 
@@ -561,11 +562,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:612:4: identifier
+                    // JS.g:616:4: identifier
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_identifier_in_token1974);
+                    pushFollow(FOLLOW_identifier_in_token2002);
                     identifier2=identifier();
                     _fsp--;
 
@@ -574,11 +575,11 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:613:4: punctuator
+                    // JS.g:617:4: punctuator
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_punctuator_in_token1979);
+                    pushFollow(FOLLOW_punctuator_in_token2007);
                     punctuator3=punctuator();
                     _fsp--;
 
@@ -587,11 +588,11 @@
                     }
                     break;
                 case 4 :
-                    // JS.g:614:4: numericLiteral
+                    // JS.g:618:4: numericLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_numericLiteral_in_token1984);
+                    pushFollow(FOLLOW_numericLiteral_in_token2012);
                     numericLiteral4=numericLiteral();
                     _fsp--;
 
@@ -600,12 +601,12 @@
                     }
                     break;
                 case 5 :
-                    // JS.g:615:4: StringLiteral
+                    // JS.g:619:4: StringLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
                     StringLiteral5=(Token)input.LT(1);
-                    match(input,StringLiteral,FOLLOW_StringLiteral_in_token1989); 
+                    match(input,StringLiteral,FOLLOW_StringLiteral_in_token2017); 
                     StringLiteral5_tree = (Object)adaptor.create(StringLiteral5);
                     adaptor.addChild(root_0, StringLiteral5_tree);
 
@@ -613,12 +614,12 @@
                     }
                     break;
                 case 6 :
-                    // JS.g:616:4: XmlAttribute
+                    // JS.g:620:4: XmlAttribute
                     {
                     root_0 = (Object)adaptor.nil();
 
                     XmlAttribute6=(Token)input.LT(1);
-                    match(input,XmlAttribute,FOLLOW_XmlAttribute_in_token1994); 
+                    match(input,XmlAttribute,FOLLOW_XmlAttribute_in_token2022); 
                     XmlAttribute6_tree = (Object)adaptor.create(XmlAttribute6);
                     adaptor.addChild(root_0, XmlAttribute6_tree);
 
@@ -649,7 +650,7 @@
     };
 
     // $ANTLR start reservedWord
-    // JS.g:622:1: reservedWord : ( keyword | futureReservedWord | NULL | booleanLiteral );
+    // JS.g:626:1: reservedWord : ( keyword | futureReservedWord | NULL | booleanLiteral );
     public final reservedWord_return reservedWord() throws RecognitionException {
         reservedWord_return retval = new reservedWord_return();
         retval.start = input.LT(1);
@@ -667,7 +668,7 @@
         Object NULL9_tree=null;
 
         try {
-            // JS.g:623:2: ( keyword | futureReservedWord | NULL | booleanLiteral )
+            // JS.g:627:2: ( keyword | futureReservedWord | NULL | booleanLiteral )
             int alt2=4;
             switch ( input.LA(1) ) {
             case BREAK:
@@ -753,18 +754,18 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("622:1: reservedWord : ( keyword | futureReservedWord | NULL | booleanLiteral );", 2, 0, input);
+                    new NoViableAltException("626:1: reservedWord : ( keyword | futureReservedWord | NULL | booleanLiteral );", 2, 0, input);
 
                 throw nvae;
             }
 
             switch (alt2) {
                 case 1 :
-                    // JS.g:623:4: keyword
+                    // JS.g:627:4: keyword
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_keyword_in_reservedWord2009);
+                    pushFollow(FOLLOW_keyword_in_reservedWord2037);
                     keyword7=keyword();
                     _fsp--;
 
@@ -773,11 +774,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:624:4: futureReservedWord
+                    // JS.g:628:4: futureReservedWord
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_futureReservedWord_in_reservedWord2014);
+                    pushFollow(FOLLOW_futureReservedWord_in_reservedWord2042);
                     futureReservedWord8=futureReservedWord();
                     _fsp--;
 
@@ -786,12 +787,12 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:625:4: NULL
+                    // JS.g:629:4: NULL
                     {
                     root_0 = (Object)adaptor.nil();
 
                     NULL9=(Token)input.LT(1);
-                    match(input,NULL,FOLLOW_NULL_in_reservedWord2019); 
+                    match(input,NULL,FOLLOW_NULL_in_reservedWord2047); 
                     NULL9_tree = (Object)adaptor.create(NULL9);
                     adaptor.addChild(root_0, NULL9_tree);
 
@@ -799,11 +800,11 @@
                     }
                     break;
                 case 4 :
-                    // JS.g:626:4: booleanLiteral
+                    // JS.g:630:4: booleanLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_booleanLiteral_in_reservedWord2024);
+                    pushFollow(FOLLOW_booleanLiteral_in_reservedWord2052);
                     booleanLiteral10=booleanLiteral();
                     _fsp--;
 
@@ -835,7 +836,7 @@
     };
 
     // $ANTLR start keyword
-    // JS.g:633:1: keyword : ( BREAK | CASE | CATCH | CONTINUE | DEFAULT | DELETE | DO | ELSE | FINALLY | FOR | EACH | FUNCTION | GET | SET | IF | IN | INSTANCEOF | NEW | RETURN | SWITCH | THIS | THROW | TRY | TYPEOF | VAR | VOID | WHILE | WITH | NAMESPACE | XML | YIELD );
+    // JS.g:637:1: keyword : ( BREAK | CASE | CATCH | CONTINUE | DEFAULT | DELETE | DO | ELSE | FINALLY | FOR | EACH | FUNCTION | GET | SET | IF | IN | INSTANCEOF | NEW | RETURN | SWITCH | THIS | THROW | TRY | TYPEOF | VAR | VOID | WHILE | WITH | NAMESPACE | XML | YIELD );
     public final keyword_return keyword() throws RecognitionException {
         keyword_return retval = new keyword_return();
         retval.start = input.LT(1);
@@ -847,7 +848,7 @@
         Object set11_tree=null;
 
         try {
-            // JS.g:634:2: ( BREAK | CASE | CATCH | CONTINUE | DEFAULT | DELETE | DO | ELSE | FINALLY | FOR | EACH | FUNCTION | GET | SET | IF | IN | INSTANCEOF | NEW | RETURN | SWITCH | THIS | THROW | TRY | TYPEOF | VAR | VOID | WHILE | WITH | NAMESPACE | XML | YIELD )
+            // JS.g:638:2: ( BREAK | CASE | CATCH | CONTINUE | DEFAULT | DELETE | DO | ELSE | FINALLY | FOR | EACH | FUNCTION | GET | SET | IF | IN | INSTANCEOF | NEW | RETURN | SWITCH | THIS | THROW | TRY | TYPEOF | VAR | VOID | WHILE | WITH | NAMESPACE | XML | YIELD )
             // JS.g:
             {
             root_0 = (Object)adaptor.nil();
@@ -889,7 +890,7 @@
     };
 
     // $ANTLR start futureReservedWord
-    // JS.g:671:1: futureReservedWord : ( ABSTRACT | BOOLEAN | BYTE | CHAR | CLASS | CONST | DEBUGGER | DOUBLE | ENUM | EXPORT | EXTENDS | FINAL | FLOAT | GOTO | IMPLEMENTS | IMPORT | INT | INTERFACE | LONG | NATIVE | PACKAGE | PRIVATE | PROTECTED | PUBLIC | SHORT | STATIC | SUPER | SYNCHRONIZED | THROWS | TRANSIENT | VOLATILE );
+    // JS.g:675:1: futureReservedWord : ( ABSTRACT | BOOLEAN | BYTE | CHAR | CLASS | CONST | DEBUGGER | DOUBLE | ENUM | EXPORT | EXTENDS | FINAL | FLOAT | GOTO | IMPLEMENTS | IMPORT | INT | INTERFACE | LONG | NATIVE | PACKAGE | PRIVATE | PROTECTED | PUBLIC | SHORT | STATIC | SUPER | SYNCHRONIZED | THROWS | TRANSIENT | VOLATILE );
     public final futureReservedWord_return futureReservedWord() throws RecognitionException {
         futureReservedWord_return retval = new futureReservedWord_return();
         retval.start = input.LT(1);
@@ -901,7 +902,7 @@
         Object set12_tree=null;
 
         try {
-            // JS.g:672:2: ( ABSTRACT | BOOLEAN | BYTE | CHAR | CLASS | CONST | DEBUGGER | DOUBLE | ENUM | EXPORT | EXTENDS | FINAL | FLOAT | GOTO | IMPLEMENTS | IMPORT | INT | INTERFACE | LONG | NATIVE | PACKAGE | PRIVATE | PROTECTED | PUBLIC | SHORT | STATIC | SUPER | SYNCHRONIZED | THROWS | TRANSIENT | VOLATILE )
+            // JS.g:676:2: ( ABSTRACT | BOOLEAN | BYTE | CHAR | CLASS | CONST | DEBUGGER | DOUBLE | ENUM | EXPORT | EXTENDS | FINAL | FLOAT | GOTO | IMPLEMENTS | IMPORT | INT | INTERFACE | LONG | NATIVE | PACKAGE | PRIVATE | PROTECTED | PUBLIC | SHORT | STATIC | SUPER | SYNCHRONIZED | THROWS | TRANSIENT | VOLATILE )
             // JS.g:
             {
             root_0 = (Object)adaptor.nil();
@@ -943,7 +944,7 @@
     };
 
     // $ANTLR start identifier
-    // JS.g:745:1: identifier : ( WXML | GET | SET | EACH | NAMESPACE | Identifier );
+    // JS.g:749:1: identifier : ( WXML | GET | SET | EACH | NAMESPACE | Identifier );
     public final identifier_return identifier() throws RecognitionException {
         identifier_return retval = new identifier_return();
         retval.start = input.LT(1);
@@ -955,7 +956,7 @@
         Object set13_tree=null;
 
         try {
-            // JS.g:746:3: ( WXML | GET | SET | EACH | NAMESPACE | Identifier )
+            // JS.g:750:3: ( WXML | GET | SET | EACH | NAMESPACE | Identifier )
             // JS.g:
             {
             root_0 = (Object)adaptor.nil();
@@ -997,7 +998,7 @@
     };
 
     // $ANTLR start punctuator
-    // JS.g:766:1: punctuator : ( LBRACE | RBRACE | LPAREN | RPAREN | LBRACK | RBRACK | DOT | SEMIC | COMMA | LT | GT | LTE | GTE | EQ | NEQ | SAME | NSAME | ADD | SUB | MUL | MOD | INC | DEC | SHL | SHR | SHU | AND | OR | XOR | NOT | INV | LAND | LOR | QUE | COLON | ASSIGN | ADDASS | SUBASS | MULASS | MODASS | SHLASS | SHRASS | SHUASS | ANDASS | ORASS | XORASS | DIV | DIVASS | DOTDOT | COLONCOLON );
+    // JS.g:770:1: punctuator : ( LBRACE | RBRACE | LPAREN | RPAREN | LBRACK | RBRACK | DOT | SEMIC | COMMA | LT | GT | LTE | GTE | EQ | NEQ | SAME | NSAME | ADD | SUB | MUL | MOD | INC | DEC | SHL | SHR | SHU | AND | OR | XOR | NOT | INV | LAND | LOR | QUE | COLON | ASSIGN | ADDASS | SUBASS | MULASS | MODASS | SHLASS | SHRASS | SHUASS | ANDASS | ORASS | XORASS | DIV | DIVASS | DOTDOT | COLONCOLON );
     public final punctuator_return punctuator() throws RecognitionException {
         punctuator_return retval = new punctuator_return();
         retval.start = input.LT(1);
@@ -1009,7 +1010,7 @@
         Object set14_tree=null;
 
         try {
-            // JS.g:767:2: ( LBRACE | RBRACE | LPAREN | RPAREN | LBRACK | RBRACK | DOT | SEMIC | COMMA | LT | GT | LTE | GTE | EQ | NEQ | SAME | NSAME | ADD | SUB | MUL | MOD | INC | DEC | SHL | SHR | SHU | AND | OR | XOR | NOT | INV | LAND | LOR | QUE | COLON | ASSIGN | ADDASS | SUBASS | MULASS | MODASS | SHLASS | SHRASS | SHUASS | ANDASS | ORASS | XORASS | DIV | DIVASS | DOTDOT | COLONCOLON )
+            // JS.g:771:2: ( LBRACE | RBRACE | LPAREN | RPAREN | LBRACK | RBRACK | DOT | SEMIC | COMMA | LT | GT | LTE | GTE | EQ | NEQ | SAME | NSAME | ADD | SUB | MUL | MOD | INC | DEC | SHL | SHR | SHU | AND | OR | XOR | NOT | INV | LAND | LOR | QUE | COLON | ASSIGN | ADDASS | SUBASS | MULASS | MODASS | SHLASS | SHRASS | SHUASS | ANDASS | ORASS | XORASS | DIV | DIVASS | DOTDOT | COLONCOLON )
             // JS.g:
             {
             root_0 = (Object)adaptor.nil();
@@ -1051,7 +1052,7 @@
     };
 
     // $ANTLR start literal
-    // JS.g:824:1: literal : ( NULL | booleanLiteral | numericLiteral | StringLiteral | RegularExpressionLiteral );
+    // JS.g:828:1: literal : ( NULL | booleanLiteral | numericLiteral | StringLiteral | RegularExpressionLiteral );
     public final literal_return literal() throws RecognitionException {
         literal_return retval = new literal_return();
         retval.start = input.LT(1);
@@ -1071,7 +1072,7 @@
         Object RegularExpressionLiteral19_tree=null;
 
         try {
-            // JS.g:825:2: ( NULL | booleanLiteral | numericLiteral | StringLiteral | RegularExpressionLiteral )
+            // JS.g:829:2: ( NULL | booleanLiteral | numericLiteral | StringLiteral | RegularExpressionLiteral )
             int alt3=5;
             switch ( input.LA(1) ) {
             case NULL:
@@ -1104,19 +1105,19 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("824:1: literal : ( NULL | booleanLiteral | numericLiteral | StringLiteral | RegularExpressionLiteral );", 3, 0, input);
+                    new NoViableAltException("828:1: literal : ( NULL | booleanLiteral | numericLiteral | StringLiteral | RegularExpressionLiteral );", 3, 0, input);
 
                 throw nvae;
             }
 
             switch (alt3) {
                 case 1 :
-                    // JS.g:825:4: NULL
+                    // JS.g:829:4: NULL
                     {
                     root_0 = (Object)adaptor.nil();
 
                     NULL15=(Token)input.LT(1);
-                    match(input,NULL,FOLLOW_NULL_in_literal2819); 
+                    match(input,NULL,FOLLOW_NULL_in_literal2847); 
                     NULL15_tree = (Object)adaptor.create(NULL15);
                     adaptor.addChild(root_0, NULL15_tree);
 
@@ -1124,11 +1125,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:826:4: booleanLiteral
+                    // JS.g:830:4: booleanLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_booleanLiteral_in_literal2824);
+                    pushFollow(FOLLOW_booleanLiteral_in_literal2852);
                     booleanLiteral16=booleanLiteral();
                     _fsp--;
 
@@ -1137,11 +1138,11 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:827:4: numericLiteral
+                    // JS.g:831:4: numericLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_numericLiteral_in_literal2829);
+                    pushFollow(FOLLOW_numericLiteral_in_literal2857);
                     numericLiteral17=numericLiteral();
                     _fsp--;
 
@@ -1150,12 +1151,12 @@
                     }
                     break;
                 case 4 :
-                    // JS.g:828:4: StringLiteral
+                    // JS.g:832:4: StringLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
                     StringLiteral18=(Token)input.LT(1);
-                    match(input,StringLiteral,FOLLOW_StringLiteral_in_literal2834); 
+                    match(input,StringLiteral,FOLLOW_StringLiteral_in_literal2862); 
                     StringLiteral18_tree = (Object)adaptor.create(StringLiteral18);
                     adaptor.addChild(root_0, StringLiteral18_tree);
 
@@ -1163,12 +1164,12 @@
                     }
                     break;
                 case 5 :
-                    // JS.g:829:4: RegularExpressionLiteral
+                    // JS.g:833:4: RegularExpressionLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
                     RegularExpressionLiteral19=(Token)input.LT(1);
-                    match(input,RegularExpressionLiteral,FOLLOW_RegularExpressionLiteral_in_literal2839); 
+                    match(input,RegularExpressionLiteral,FOLLOW_RegularExpressionLiteral_in_literal2867); 
                     RegularExpressionLiteral19_tree = (Object)adaptor.create(RegularExpressionLiteral19);
                     adaptor.addChild(root_0, RegularExpressionLiteral19_tree);
 
@@ -1199,7 +1200,7 @@
     };
 
     // $ANTLR start booleanLiteral
-    // JS.g:832:1: booleanLiteral : ( TRUE | FALSE );
+    // JS.g:836:1: booleanLiteral : ( TRUE | FALSE );
     public final booleanLiteral_return booleanLiteral() throws RecognitionException {
         booleanLiteral_return retval = new booleanLiteral_return();
         retval.start = input.LT(1);
@@ -1211,7 +1212,7 @@
         Object set20_tree=null;
 
         try {
-            // JS.g:833:2: ( TRUE | FALSE )
+            // JS.g:837:2: ( TRUE | FALSE )
             // JS.g:
             {
             root_0 = (Object)adaptor.nil();
@@ -1253,7 +1254,7 @@
     };
 
     // $ANTLR start numericLiteral
-    // JS.g:879:1: numericLiteral : ( DecimalLiteral | OctalIntegerLiteral | HexIntegerLiteral );
+    // JS.g:883:1: numericLiteral : ( DecimalLiteral | OctalIntegerLiteral | HexIntegerLiteral );
     public final numericLiteral_return numericLiteral() throws RecognitionException {
         numericLiteral_return retval = new numericLiteral_return();
         retval.start = input.LT(1);
@@ -1265,7 +1266,7 @@
         Object set21_tree=null;
 
         try {
-            // JS.g:880:2: ( DecimalLiteral | OctalIntegerLiteral | HexIntegerLiteral )
+            // JS.g:884:2: ( DecimalLiteral | OctalIntegerLiteral | HexIntegerLiteral )
             // JS.g:
             {
             root_0 = (Object)adaptor.nil();
@@ -1307,7 +1308,7 @@
     };
 
     // $ANTLR start primaryExpression
-    // JS.g:975:1: primaryExpression : ( THIS | identifier | XmlAttribute | literal | arrayLiteral | objectLiteral | parenExpression );
+    // JS.g:979:1: primaryExpression : ( THIS | identifier | XmlAttribute | literal | arrayLiteral | objectLiteral | parenExpression );
     public final primaryExpression_return primaryExpression() throws RecognitionException {
         primaryExpression_return retval = new primaryExpression_return();
         retval.start = input.LT(1);
@@ -1331,7 +1332,7 @@
         Object XmlAttribute24_tree=null;
 
         try {
-            // JS.g:976:2: ( THIS | identifier | XmlAttribute | literal | arrayLiteral | objectLiteral | parenExpression )
+            // JS.g:980:2: ( THIS | identifier | XmlAttribute | literal | arrayLiteral | objectLiteral | parenExpression )
             int alt4=7;
             switch ( input.LA(1) ) {
             case THIS:
@@ -1383,19 +1384,19 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("975:1: primaryExpression : ( THIS | identifier | XmlAttribute | literal | arrayLiteral | objectLiteral | parenExpression );", 4, 0, input);
+                    new NoViableAltException("979:1: primaryExpression : ( THIS | identifier | XmlAttribute | literal | arrayLiteral | objectLiteral | parenExpression );", 4, 0, input);
 
                 throw nvae;
             }
 
             switch (alt4) {
                 case 1 :
-                    // JS.g:976:4: THIS
+                    // JS.g:980:4: THIS
                     {
                     root_0 = (Object)adaptor.nil();
 
                     THIS22=(Token)input.LT(1);
-                    match(input,THIS,FOLLOW_THIS_in_primaryExpression3468); 
+                    match(input,THIS,FOLLOW_THIS_in_primaryExpression3496); 
                     THIS22_tree = (Object)adaptor.create(THIS22);
                     adaptor.addChild(root_0, THIS22_tree);
 
@@ -1403,11 +1404,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:977:4: identifier
+                    // JS.g:981:4: identifier
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_identifier_in_primaryExpression3473);
+                    pushFollow(FOLLOW_identifier_in_primaryExpression3501);
                     identifier23=identifier();
                     _fsp--;
 
@@ -1416,12 +1417,12 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:978:4: XmlAttribute
+                    // JS.g:982:4: XmlAttribute
                     {
                     root_0 = (Object)adaptor.nil();
 
                     XmlAttribute24=(Token)input.LT(1);
-                    match(input,XmlAttribute,FOLLOW_XmlAttribute_in_primaryExpression3478); 
+                    match(input,XmlAttribute,FOLLOW_XmlAttribute_in_primaryExpression3506); 
                     XmlAttribute24_tree = (Object)adaptor.create(XmlAttribute24);
                     adaptor.addChild(root_0, XmlAttribute24_tree);
 
@@ -1429,11 +1430,11 @@
                     }
                     break;
                 case 4 :
-                    // JS.g:979:4: literal
+                    // JS.g:983:4: literal
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_literal_in_primaryExpression3483);
+                    pushFollow(FOLLOW_literal_in_primaryExpression3511);
                     literal25=literal();
                     _fsp--;
 
@@ -1442,11 +1443,11 @@
                     }
                     break;
                 case 5 :
-                    // JS.g:980:4: arrayLiteral
+                    // JS.g:984:4: arrayLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_arrayLiteral_in_primaryExpression3488);
+                    pushFollow(FOLLOW_arrayLiteral_in_primaryExpression3516);
                     arrayLiteral26=arrayLiteral();
                     _fsp--;
 
@@ -1455,11 +1456,11 @@
                     }
                     break;
                 case 6 :
-                    // JS.g:981:4: objectLiteral
+                    // JS.g:985:4: objectLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_objectLiteral_in_primaryExpression3493);
+                    pushFollow(FOLLOW_objectLiteral_in_primaryExpression3521);
                     objectLiteral27=objectLiteral();
                     _fsp--;
 
@@ -1468,11 +1469,11 @@
                     }
                     break;
                 case 7 :
-                    // JS.g:982:4: parenExpression
+                    // JS.g:986:4: parenExpression
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_parenExpression_in_primaryExpression3498);
+                    pushFollow(FOLLOW_parenExpression_in_primaryExpression3526);
                     parenExpression28=parenExpression();
                     _fsp--;
 
@@ -1504,7 +1505,7 @@
     };
 
     // $ANTLR start parenExpression
-    // JS.g:985:1: parenExpression : lpar= LPAREN expression RPAREN -> ^( PAREXPR[$lpar, \"PAREXPR\"] expression ) ;
+    // JS.g:989:1: parenExpression : lpar= LPAREN expression RPAREN -> ^( PAREXPR[$lpar, \"PAREXPR\"] expression ) ;
     public final parenExpression_return parenExpression() throws RecognitionException {
         parenExpression_return retval = new parenExpression_return();
         retval.start = input.LT(1);
@@ -1522,20 +1523,20 @@
         RewriteRuleTokenStream stream_LPAREN=new RewriteRuleTokenStream(adaptor,"token LPAREN");
         RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
         try {
-            // JS.g:986:3: (lpar= LPAREN expression RPAREN -> ^( PAREXPR[$lpar, \"PAREXPR\"] expression ) )
-            // JS.g:986:5: lpar= LPAREN expression RPAREN
+            // JS.g:990:3: (lpar= LPAREN expression RPAREN -> ^( PAREXPR[$lpar, \"PAREXPR\"] expression ) )
+            // JS.g:990:5: lpar= LPAREN expression RPAREN
             {
             lpar=(Token)input.LT(1);
-            match(input,LPAREN,FOLLOW_LPAREN_in_parenExpression3514); 
+            match(input,LPAREN,FOLLOW_LPAREN_in_parenExpression3542); 
             stream_LPAREN.add(lpar);
 
-            pushFollow(FOLLOW_expression_in_parenExpression3516);
+            pushFollow(FOLLOW_expression_in_parenExpression3544);
             expression29=expression();
             _fsp--;
 
             stream_expression.add(expression29.getTree());
             RPAREN30=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_parenExpression3518); 
+            match(input,RPAREN,FOLLOW_RPAREN_in_parenExpression3546); 
             stream_RPAREN.add(RPAREN30);
 
 
@@ -1549,9 +1550,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 986:37: -> ^( PAREXPR[$lpar, \"PAREXPR\"] expression )
+            // 990:37: -> ^( PAREXPR[$lpar, \"PAREXPR\"] expression )
             {
-                // JS.g:986:40: ^( PAREXPR[$lpar, \"PAREXPR\"] expression )
+                // JS.g:990:40: ^( PAREXPR[$lpar, \"PAREXPR\"] expression )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(PAREXPR, lpar,  "PAREXPR"), root_1);
@@ -1589,7 +1590,7 @@
     };
 
     // $ANTLR start arrayLiteral
-    // JS.g:989:1: arrayLiteral : lb= LBRACK ( arrayItem ( COMMA arrayItem )* )? RBRACK -> ^( ARRAY[$lb, \"ARRAY\"] ( arrayItem )* ) ;
+    // JS.g:993:1: arrayLiteral : lb= LBRACK ( arrayItem ( COMMA arrayItem )* )? RBRACK -> ^( ARRAY[$lb, \"ARRAY\"] ( arrayItem )* ) ;
     public final arrayLiteral_return arrayLiteral() throws RecognitionException {
         arrayLiteral_return retval = new arrayLiteral_return();
         retval.start = input.LT(1);
@@ -1612,14 +1613,14 @@
         RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
         RewriteRuleSubtreeStream stream_arrayItem=new RewriteRuleSubtreeStream(adaptor,"rule arrayItem");
         try {
-            // JS.g:990:2: (lb= LBRACK ( arrayItem ( COMMA arrayItem )* )? RBRACK -> ^( ARRAY[$lb, \"ARRAY\"] ( arrayItem )* ) )
-            // JS.g:990:4: lb= LBRACK ( arrayItem ( COMMA arrayItem )* )? RBRACK
+            // JS.g:994:2: (lb= LBRACK ( arrayItem ( COMMA arrayItem )* )? RBRACK -> ^( ARRAY[$lb, \"ARRAY\"] ( arrayItem )* ) )
+            // JS.g:994:4: lb= LBRACK ( arrayItem ( COMMA arrayItem )* )? RBRACK
             {
             lb=(Token)input.LT(1);
-            match(input,LBRACK,FOLLOW_LBRACK_in_arrayLiteral3543); 
+            match(input,LBRACK,FOLLOW_LBRACK_in_arrayLiteral3571); 
             stream_LBRACK.add(lb);
 
-            // JS.g:990:14: ( arrayItem ( COMMA arrayItem )* )?
+            // JS.g:994:14: ( arrayItem ( COMMA arrayItem )* )?
             int alt6=2;
             int LA6_0 = input.LA(1);
 
@@ -1635,14 +1636,14 @@
             }
             switch (alt6) {
                 case 1 :
-                    // JS.g:990:16: arrayItem ( COMMA arrayItem )*
+                    // JS.g:994:16: arrayItem ( COMMA arrayItem )*
                     {
-                    pushFollow(FOLLOW_arrayItem_in_arrayLiteral3547);
+                    pushFollow(FOLLOW_arrayItem_in_arrayLiteral3575);
                     arrayItem31=arrayItem();
                     _fsp--;
 
                     stream_arrayItem.add(arrayItem31.getTree());
-                    // JS.g:990:26: ( COMMA arrayItem )*
+                    // JS.g:994:26: ( COMMA arrayItem )*
                     loop5:
                     do {
                         int alt5=2;
@@ -1655,13 +1656,13 @@
 
                         switch (alt5) {
                     	case 1 :
-                    	    // JS.g:990:28: COMMA arrayItem
+                    	    // JS.g:994:28: COMMA arrayItem
                     	    {
                     	    COMMA32=(Token)input.LT(1);
-                    	    match(input,COMMA,FOLLOW_COMMA_in_arrayLiteral3551); 
+                    	    match(input,COMMA,FOLLOW_COMMA_in_arrayLiteral3579); 
                     	    stream_COMMA.add(COMMA32);
 
-                    	    pushFollow(FOLLOW_arrayItem_in_arrayLiteral3553);
+                    	    pushFollow(FOLLOW_arrayItem_in_arrayLiteral3581);
                     	    arrayItem33=arrayItem();
                     	    _fsp--;
 
@@ -1682,7 +1683,7 @@
             }
 
             RBRACK34=(Token)input.LT(1);
-            match(input,RBRACK,FOLLOW_RBRACK_in_arrayLiteral3561); 
+            match(input,RBRACK,FOLLOW_RBRACK_in_arrayLiteral3589); 
             stream_RBRACK.add(RBRACK34);
 
 
@@ -1696,14 +1697,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 991:2: -> ^( ARRAY[$lb, \"ARRAY\"] ( arrayItem )* )
+            // 995:2: -> ^( ARRAY[$lb, \"ARRAY\"] ( arrayItem )* )
             {
-                // JS.g:991:5: ^( ARRAY[$lb, \"ARRAY\"] ( arrayItem )* )
+                // JS.g:995:5: ^( ARRAY[$lb, \"ARRAY\"] ( arrayItem )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(ARRAY, lb,  "ARRAY"), root_1);
 
-                // JS.g:991:28: ( arrayItem )*
+                // JS.g:995:28: ( arrayItem )*
                 while ( stream_arrayItem.hasNext() ) {
                     adaptor.addChild(root_1, stream_arrayItem.next());
 
@@ -1741,7 +1742,7 @@
     };
 
     // $ANTLR start arrayItem
-    // JS.g:994:1: arrayItem : (expr= assignmentExpression | {...}?) -> ^( ITEM ( $expr)? ) ;
+    // JS.g:998:1: arrayItem : (expr= assignmentExpression | {...}?) -> ^( ITEM ( $expr)? ) ;
     public final arrayItem_return arrayItem() throws RecognitionException {
         arrayItem_return retval = new arrayItem_return();
         retval.start = input.LT(1);
@@ -1753,10 +1754,10 @@
 
         RewriteRuleSubtreeStream stream_assignmentExpression=new RewriteRuleSubtreeStream(adaptor,"rule assignmentExpression");
         try {
-            // JS.g:995:2: ( (expr= assignmentExpression | {...}?) -> ^( ITEM ( $expr)? ) )
-            // JS.g:995:4: (expr= assignmentExpression | {...}?)
+            // JS.g:999:2: ( (expr= assignmentExpression | {...}?) -> ^( ITEM ( $expr)? ) )
+            // JS.g:999:4: (expr= assignmentExpression | {...}?)
             {
-            // JS.g:995:4: (expr= assignmentExpression | {...}?)
+            // JS.g:999:4: (expr= assignmentExpression | {...}?)
             int alt7=2;
             int LA7_0 = input.LA(1);
 
@@ -1768,15 +1769,15 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("995:4: (expr= assignmentExpression | {...}?)", 7, 0, input);
+                    new NoViableAltException("999:4: (expr= assignmentExpression | {...}?)", 7, 0, input);
 
                 throw nvae;
             }
             switch (alt7) {
                 case 1 :
-                    // JS.g:995:6: expr= assignmentExpression
+                    // JS.g:999:6: expr= assignmentExpression
                     {
-                    pushFollow(FOLLOW_assignmentExpression_in_arrayItem3589);
+                    pushFollow(FOLLOW_assignmentExpression_in_arrayItem3617);
                     expr=assignmentExpression();
                     _fsp--;
 
@@ -1785,7 +1786,7 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:995:34: {...}?
+                    // JS.g:999:34: {...}?
                     {
                     if ( !( input.LA(1) == COMMA ) ) {
                         throw new FailedPredicateException(input, "arrayItem", " input.LA(1) == COMMA ");
@@ -1808,14 +1809,14 @@
             RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"token expr",expr!=null?expr.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 996:2: -> ^( ITEM ( $expr)? )
+            // 1000:2: -> ^( ITEM ( $expr)? )
             {
-                // JS.g:996:5: ^( ITEM ( $expr)? )
+                // JS.g:1000:5: ^( ITEM ( $expr)? )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(ITEM, "ITEM"), root_1);
 
-                // JS.g:996:13: ( $expr)?
+                // JS.g:1000:13: ( $expr)?
                 if ( stream_expr.hasNext() ) {
                     adaptor.addChild(root_1, stream_expr.next());
 
@@ -1853,7 +1854,7 @@
     };
 
     // $ANTLR start objectLiteral
-    // JS.g:999:1: objectLiteral : lb= LBRACE ( objectPropertyInitializer ( COMMA objectPropertyInitializer )* )? RBRACE -> ^( OBJECT[$lb, \"OBJECT\"] ( objectPropertyInitializer )* ) ;
+    // JS.g:1003:1: objectLiteral : lb= LBRACE ( objectPropertyInitializer ( COMMA objectPropertyInitializer )* )? RBRACE -> ^( OBJECT[$lb, \"OBJECT\"] ( objectPropertyInitializer )* ) ;
     public final objectLiteral_return objectLiteral() throws RecognitionException {
         objectLiteral_return retval = new objectLiteral_return();
         retval.start = input.LT(1);
@@ -1876,14 +1877,14 @@
         RewriteRuleTokenStream stream_LBRACE=new RewriteRuleTokenStream(adaptor,"token LBRACE");
         RewriteRuleSubtreeStream stream_objectPropertyInitializer=new RewriteRuleSubtreeStream(adaptor,"rule objectPropertyInitializer");
         try {
-            // JS.g:1000:2: (lb= LBRACE ( objectPropertyInitializer ( COMMA objectPropertyInitializer )* )? RBRACE -> ^( OBJECT[$lb, \"OBJECT\"] ( objectPropertyInitializer )* ) )
-            // JS.g:1000:4: lb= LBRACE ( objectPropertyInitializer ( COMMA objectPropertyInitializer )* )? RBRACE
+            // JS.g:1004:2: (lb= LBRACE ( objectPropertyInitializer ( COMMA objectPropertyInitializer )* )? RBRACE -> ^( OBJECT[$lb, \"OBJECT\"] ( objectPropertyInitializer )* ) )
+            // JS.g:1004:4: lb= LBRACE ( objectPropertyInitializer ( COMMA objectPropertyInitializer )* )? RBRACE
             {
             lb=(Token)input.LT(1);
-            match(input,LBRACE,FOLLOW_LBRACE_in_objectLiteral3621); 
+            match(input,LBRACE,FOLLOW_LBRACE_in_objectLiteral3649); 
             stream_LBRACE.add(lb);
 
-            // JS.g:1000:14: ( objectPropertyInitializer ( COMMA objectPropertyInitializer )* )?
+            // JS.g:1004:14: ( objectPropertyInitializer ( COMMA objectPropertyInitializer )* )?
             int alt9=2;
             int LA9_0 = input.LA(1);
 
@@ -1892,14 +1893,14 @@
             }
             switch (alt9) {
                 case 1 :
-                    // JS.g:1000:16: objectPropertyInitializer ( COMMA objectPropertyInitializer )*
+                    // JS.g:1004:16: objectPropertyInitializer ( COMMA objectPropertyInitializer )*
                     {
-                    pushFollow(FOLLOW_objectPropertyInitializer_in_objectLiteral3625);
+                    pushFollow(FOLLOW_objectPropertyInitializer_in_objectLiteral3653);
                     objectPropertyInitializer35=objectPropertyInitializer();
                     _fsp--;
 
                     stream_objectPropertyInitializer.add(objectPropertyInitializer35.getTree());
-                    // JS.g:1000:42: ( COMMA objectPropertyInitializer )*
+                    // JS.g:1004:42: ( COMMA objectPropertyInitializer )*
                     loop8:
                     do {
                         int alt8=2;
@@ -1912,13 +1913,13 @@
 
                         switch (alt8) {
                     	case 1 :
-                    	    // JS.g:1000:44: COMMA objectPropertyInitializer
+                    	    // JS.g:1004:44: COMMA objectPropertyInitializer
                     	    {
                     	    COMMA36=(Token)input.LT(1);
-                    	    match(input,COMMA,FOLLOW_COMMA_in_objectLiteral3629); 
+                    	    match(input,COMMA,FOLLOW_COMMA_in_objectLiteral3657); 
                     	    stream_COMMA.add(COMMA36);
 
-                    	    pushFollow(FOLLOW_objectPropertyInitializer_in_objectLiteral3631);
+                    	    pushFollow(FOLLOW_objectPropertyInitializer_in_objectLiteral3659);
                     	    objectPropertyInitializer37=objectPropertyInitializer();
                     	    _fsp--;
 
@@ -1939,7 +1940,7 @@
             }
 
             RBRACE38=(Token)input.LT(1);
-            match(input,RBRACE,FOLLOW_RBRACE_in_objectLiteral3639); 
+            match(input,RBRACE,FOLLOW_RBRACE_in_objectLiteral3667); 
             stream_RBRACE.add(RBRACE38);
 
 
@@ -1953,14 +1954,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1001:2: -> ^( OBJECT[$lb, \"OBJECT\"] ( objectPropertyInitializer )* )
+            // 1005:2: -> ^( OBJECT[$lb, \"OBJECT\"] ( objectPropertyInitializer )* )
             {
-                // JS.g:1001:5: ^( OBJECT[$lb, \"OBJECT\"] ( objectPropertyInitializer )* )
+                // JS.g:1005:5: ^( OBJECT[$lb, \"OBJECT\"] ( objectPropertyInitializer )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(OBJECT, lb,  "OBJECT"), root_1);
 
-                // JS.g:1001:30: ( objectPropertyInitializer )*
+                // JS.g:1005:30: ( objectPropertyInitializer )*
                 while ( stream_objectPropertyInitializer.hasNext() ) {
                     adaptor.addChild(root_1, stream_objectPropertyInitializer.next());
 
@@ -1998,7 +1999,7 @@
     };
 
     // $ANTLR start objectPropertyInitializer
-    // JS.g:1004:1: objectPropertyInitializer : ( nameValuePair | getMethodDeclaration | setMethodDeclaration );
+    // JS.g:1008:1: objectPropertyInitializer : ( nameValuePair | getMethodDeclaration | setMethodDeclaration );
     public final objectPropertyInitializer_return objectPropertyInitializer() throws RecognitionException {
         objectPropertyInitializer_return retval = new objectPropertyInitializer_return();
         retval.start = input.LT(1);
@@ -2014,7 +2015,7 @@
 
 
         try {
-            // JS.g:1005:3: ( nameValuePair | getMethodDeclaration | setMethodDeclaration )
+            // JS.g:1009:3: ( nameValuePair | getMethodDeclaration | setMethodDeclaration )
             int alt10=3;
             switch ( input.LA(1) ) {
             case GET:
@@ -2029,7 +2030,7 @@
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("1004:1: objectPropertyInitializer : ( nameValuePair | getMethodDeclaration | setMethodDeclaration );", 10, 1, input);
+                        new NoViableAltException("1008:1: objectPropertyInitializer : ( nameValuePair | getMethodDeclaration | setMethodDeclaration );", 10, 1, input);
 
                     throw nvae;
                 }
@@ -2060,7 +2061,7 @@
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("1004:1: objectPropertyInitializer : ( nameValuePair | getMethodDeclaration | setMethodDeclaration );", 10, 3, input);
+                        new NoViableAltException("1008:1: objectPropertyInitializer : ( nameValuePair | getMethodDeclaration | setMethodDeclaration );", 10, 3, input);
 
                     throw nvae;
                 }
@@ -2068,18 +2069,18 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("1004:1: objectPropertyInitializer : ( nameValuePair | getMethodDeclaration | setMethodDeclaration );", 10, 0, input);
+                    new NoViableAltException("1008:1: objectPropertyInitializer : ( nameValuePair | getMethodDeclaration | setMethodDeclaration );", 10, 0, input);
 
                 throw nvae;
             }
 
             switch (alt10) {
                 case 1 :
-                    // JS.g:1005:5: nameValuePair
+                    // JS.g:1009:5: nameValuePair
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_nameValuePair_in_objectPropertyInitializer3664);
+                    pushFollow(FOLLOW_nameValuePair_in_objectPropertyInitializer3692);
                     nameValuePair39=nameValuePair();
                     _fsp--;
 
@@ -2088,11 +2089,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1006:5: getMethodDeclaration
+                    // JS.g:1010:5: getMethodDeclaration
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_getMethodDeclaration_in_objectPropertyInitializer3671);
+                    pushFollow(FOLLOW_getMethodDeclaration_in_objectPropertyInitializer3699);
                     getMethodDeclaration40=getMethodDeclaration();
                     _fsp--;
 
@@ -2101,11 +2102,11 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:1007:5: setMethodDeclaration
+                    // JS.g:1011:5: setMethodDeclaration
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_setMethodDeclaration_in_objectPropertyInitializer3677);
+                    pushFollow(FOLLOW_setMethodDeclaration_in_objectPropertyInitializer3705);
                     setMethodDeclaration41=setMethodDeclaration();
                     _fsp--;
 
@@ -2137,7 +2138,7 @@
     };
 
     // $ANTLR start nameValuePair
-    // JS.g:1010:1: nameValuePair : propertyName COLON assignmentExpression -> ^( NAMEDVALUE propertyName assignmentExpression ) ;
+    // JS.g:1014:1: nameValuePair : propertyName COLON assignmentExpression -> ^( NAMEDVALUE propertyName assignmentExpression ) ;
     public final nameValuePair_return nameValuePair() throws RecognitionException {
         nameValuePair_return retval = new nameValuePair_return();
         retval.start = input.LT(1);
@@ -2155,19 +2156,19 @@
         RewriteRuleSubtreeStream stream_propertyName=new RewriteRuleSubtreeStream(adaptor,"rule propertyName");
         RewriteRuleSubtreeStream stream_assignmentExpression=new RewriteRuleSubtreeStream(adaptor,"rule assignmentExpression");
         try {
-            // JS.g:1011:2: ( propertyName COLON assignmentExpression -> ^( NAMEDVALUE propertyName assignmentExpression ) )
-            // JS.g:1011:4: propertyName COLON assignmentExpression
+            // JS.g:1015:2: ( propertyName COLON assignmentExpression -> ^( NAMEDVALUE propertyName assignmentExpression ) )
+            // JS.g:1015:4: propertyName COLON assignmentExpression
             {
-            pushFollow(FOLLOW_propertyName_in_nameValuePair3690);
+            pushFollow(FOLLOW_propertyName_in_nameValuePair3718);
             propertyName42=propertyName();
             _fsp--;
 
             stream_propertyName.add(propertyName42.getTree());
             COLON43=(Token)input.LT(1);
-            match(input,COLON,FOLLOW_COLON_in_nameValuePair3692); 
+            match(input,COLON,FOLLOW_COLON_in_nameValuePair3720); 
             stream_COLON.add(COLON43);
 
-            pushFollow(FOLLOW_assignmentExpression_in_nameValuePair3694);
+            pushFollow(FOLLOW_assignmentExpression_in_nameValuePair3722);
             assignmentExpression44=assignmentExpression();
             _fsp--;
 
@@ -2183,9 +2184,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1012:2: -> ^( NAMEDVALUE propertyName assignmentExpression )
+            // 1016:2: -> ^( NAMEDVALUE propertyName assignmentExpression )
             {
-                // JS.g:1012:5: ^( NAMEDVALUE propertyName assignmentExpression )
+                // JS.g:1016:5: ^( NAMEDVALUE propertyName assignmentExpression )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(NAMEDVALUE, "NAMEDVALUE"), root_1);
@@ -2224,7 +2225,7 @@
     };
 
     // $ANTLR start propertyName
-    // JS.g:1015:1: propertyName : ( identifier | StringLiteral | numericLiteral | XmlAttribute );
+    // JS.g:1019:1: propertyName : ( identifier | StringLiteral | numericLiteral | XmlAttribute );
     public final propertyName_return propertyName() throws RecognitionException {
         propertyName_return retval = new propertyName_return();
         retval.start = input.LT(1);
@@ -2242,7 +2243,7 @@
         Object XmlAttribute48_tree=null;
 
         try {
-            // JS.g:1016:2: ( identifier | StringLiteral | numericLiteral | XmlAttribute )
+            // JS.g:1020:2: ( identifier | StringLiteral | numericLiteral | XmlAttribute )
             int alt11=4;
             switch ( input.LA(1) ) {
             case EACH:
@@ -2274,18 +2275,18 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("1015:1: propertyName : ( identifier | StringLiteral | numericLiteral | XmlAttribute );", 11, 0, input);
+                    new NoViableAltException("1019:1: propertyName : ( identifier | StringLiteral | numericLiteral | XmlAttribute );", 11, 0, input);
 
                 throw nvae;
             }
 
             switch (alt11) {
                 case 1 :
-                    // JS.g:1016:4: identifier
+                    // JS.g:1020:4: identifier
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_identifier_in_propertyName3718);
+                    pushFollow(FOLLOW_identifier_in_propertyName3746);
                     identifier45=identifier();
                     _fsp--;
 
@@ -2294,12 +2295,12 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1017:4: StringLiteral
+                    // JS.g:1021:4: StringLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
                     StringLiteral46=(Token)input.LT(1);
-                    match(input,StringLiteral,FOLLOW_StringLiteral_in_propertyName3723); 
+                    match(input,StringLiteral,FOLLOW_StringLiteral_in_propertyName3751); 
                     StringLiteral46_tree = (Object)adaptor.create(StringLiteral46);
                     adaptor.addChild(root_0, StringLiteral46_tree);
 
@@ -2307,11 +2308,11 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:1018:4: numericLiteral
+                    // JS.g:1022:4: numericLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_numericLiteral_in_propertyName3728);
+                    pushFollow(FOLLOW_numericLiteral_in_propertyName3756);
                     numericLiteral47=numericLiteral();
                     _fsp--;
 
@@ -2320,12 +2321,12 @@
                     }
                     break;
                 case 4 :
-                    // JS.g:1019:4: XmlAttribute
+                    // JS.g:1023:4: XmlAttribute
                     {
                     root_0 = (Object)adaptor.nil();
 
                     XmlAttribute48=(Token)input.LT(1);
-                    match(input,XmlAttribute,FOLLOW_XmlAttribute_in_propertyName3733); 
+                    match(input,XmlAttribute,FOLLOW_XmlAttribute_in_propertyName3761); 
                     XmlAttribute48_tree = (Object)adaptor.create(XmlAttribute48);
                     adaptor.addChild(root_0, XmlAttribute48_tree);
 
@@ -2356,7 +2357,7 @@
     };
 
     // $ANTLR start memberExpression
-    // JS.g:1031:1: memberExpression : ( primaryExpression | functionExpression | newExpression );
+    // JS.g:1035:1: memberExpression : ( primaryExpression | functionExpression | newExpression );
     public final memberExpression_return memberExpression() throws RecognitionException {
         memberExpression_return retval = new memberExpression_return();
         retval.start = input.LT(1);
@@ -2372,7 +2373,7 @@
 
 
         try {
-            // JS.g:1032:2: ( primaryExpression | functionExpression | newExpression )
+            // JS.g:1036:2: ( primaryExpression | functionExpression | newExpression )
             int alt12=3;
             switch ( input.LA(1) ) {
             case NULL:
@@ -2410,18 +2411,18 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("1031:1: memberExpression : ( primaryExpression | functionExpression | newExpression );", 12, 0, input);
+                    new NoViableAltException("1035:1: memberExpression : ( primaryExpression | functionExpression | newExpression );", 12, 0, input);
 
                 throw nvae;
             }
 
             switch (alt12) {
                 case 1 :
-                    // JS.g:1032:4: primaryExpression
+                    // JS.g:1036:4: primaryExpression
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_primaryExpression_in_memberExpression3751);
+                    pushFollow(FOLLOW_primaryExpression_in_memberExpression3779);
                     primaryExpression49=primaryExpression();
                     _fsp--;
 
@@ -2430,11 +2431,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1033:4: functionExpression
+                    // JS.g:1037:4: functionExpression
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_functionExpression_in_memberExpression3756);
+                    pushFollow(FOLLOW_functionExpression_in_memberExpression3784);
                     functionExpression50=functionExpression();
                     _fsp--;
 
@@ -2443,11 +2444,11 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:1034:4: newExpression
+                    // JS.g:1038:4: newExpression
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_newExpression_in_memberExpression3761);
+                    pushFollow(FOLLOW_newExpression_in_memberExpression3789);
                     newExpression51=newExpression();
                     _fsp--;
 
@@ -2479,7 +2480,7 @@
     };
 
     // $ANTLR start newExpression
-    // JS.g:1037:1: newExpression : NEW memberExpression ;
+    // JS.g:1041:1: newExpression : NEW memberExpression ;
     public final newExpression_return newExpression() throws RecognitionException {
         newExpression_return retval = new newExpression_return();
         retval.start = input.LT(1);
@@ -2493,17 +2494,17 @@
         Object NEW52_tree=null;
 
         try {
-            // JS.g:1038:2: ( NEW memberExpression )
-            // JS.g:1038:4: NEW memberExpression
+            // JS.g:1042:2: ( NEW memberExpression )
+            // JS.g:1042:4: NEW memberExpression
             {
             root_0 = (Object)adaptor.nil();
 
             NEW52=(Token)input.LT(1);
-            match(input,NEW,FOLLOW_NEW_in_newExpression3772); 
+            match(input,NEW,FOLLOW_NEW_in_newExpression3800); 
             NEW52_tree = (Object)adaptor.create(NEW52);
             root_0 = (Object)adaptor.becomeRoot(NEW52_tree, root_0);
 
-            pushFollow(FOLLOW_memberExpression_in_newExpression3775);
+            pushFollow(FOLLOW_memberExpression_in_newExpression3803);
             memberExpression53=memberExpression();
             _fsp--;
 
@@ -2533,7 +2534,7 @@
     };
 
     // $ANTLR start arguments
-    // JS.g:1042:1: arguments : LPAREN ( assignmentExpression ( COMMA assignmentExpression )* )? RPAREN -> ^( ARGS ( assignmentExpression )* ) ;
+    // JS.g:1046:1: arguments : LPAREN ( assignmentExpression ( COMMA assignmentExpression )* )? RPAREN -> ^( ARGS ( assignmentExpression )* ) ;
     public final arguments_return arguments() throws RecognitionException {
         arguments_return retval = new arguments_return();
         retval.start = input.LT(1);
@@ -2556,14 +2557,14 @@
         RewriteRuleTokenStream stream_LPAREN=new RewriteRuleTokenStream(adaptor,"token LPAREN");
         RewriteRuleSubtreeStream stream_assignmentExpression=new RewriteRuleSubtreeStream(adaptor,"rule assignmentExpression");
         try {
-            // JS.g:1043:2: ( LPAREN ( assignmentExpression ( COMMA assignmentExpression )* )? RPAREN -> ^( ARGS ( assignmentExpression )* ) )
-            // JS.g:1043:4: LPAREN ( assignmentExpression ( COMMA assignmentExpression )* )? RPAREN
+            // JS.g:1047:2: ( LPAREN ( assignmentExpression ( COMMA assignmentExpression )* )? RPAREN -> ^( ARGS ( assignmentExpression )* ) )
+            // JS.g:1047:4: LPAREN ( assignmentExpression ( COMMA assignmentExpression )* )? RPAREN
             {
             LPAREN54=(Token)input.LT(1);
-            match(input,LPAREN,FOLLOW_LPAREN_in_arguments3788); 
+            match(input,LPAREN,FOLLOW_LPAREN_in_arguments3816); 
             stream_LPAREN.add(LPAREN54);
 
-            // JS.g:1043:11: ( assignmentExpression ( COMMA assignmentExpression )* )?
+            // JS.g:1047:11: ( assignmentExpression ( COMMA assignmentExpression )* )?
             int alt14=2;
             int LA14_0 = input.LA(1);
 
@@ -2572,14 +2573,14 @@
             }
             switch (alt14) {
                 case 1 :
-                    // JS.g:1043:13: assignmentExpression ( COMMA assignmentExpression )*
+                    // JS.g:1047:13: assignmentExpression ( COMMA assignmentExpression )*
                     {
-                    pushFollow(FOLLOW_assignmentExpression_in_arguments3792);
+                    pushFollow(FOLLOW_assignmentExpression_in_arguments3820);
                     assignmentExpression55=assignmentExpression();
                     _fsp--;
 
                     stream_assignmentExpression.add(assignmentExpression55.getTree());
-                    // JS.g:1043:34: ( COMMA assignmentExpression )*
+                    // JS.g:1047:34: ( COMMA assignmentExpression )*
                     loop13:
                     do {
                         int alt13=2;
@@ -2592,13 +2593,13 @@
 
                         switch (alt13) {
                     	case 1 :
-                    	    // JS.g:1043:36: COMMA assignmentExpression
+                    	    // JS.g:1047:36: COMMA assignmentExpression
                     	    {
                     	    COMMA56=(Token)input.LT(1);
-                    	    match(input,COMMA,FOLLOW_COMMA_in_arguments3796); 
+                    	    match(input,COMMA,FOLLOW_COMMA_in_arguments3824); 
                     	    stream_COMMA.add(COMMA56);
 
-                    	    pushFollow(FOLLOW_assignmentExpression_in_arguments3798);
+                    	    pushFollow(FOLLOW_assignmentExpression_in_arguments3826);
                     	    assignmentExpression57=assignmentExpression();
                     	    _fsp--;
 
@@ -2619,7 +2620,7 @@
             }
 
             RPAREN58=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_arguments3806); 
+            match(input,RPAREN,FOLLOW_RPAREN_in_arguments3834); 
             stream_RPAREN.add(RPAREN58);
 
 
@@ -2633,14 +2634,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1044:2: -> ^( ARGS ( assignmentExpression )* )
+            // 1048:2: -> ^( ARGS ( assignmentExpression )* )
             {
-                // JS.g:1044:5: ^( ARGS ( assignmentExpression )* )
+                // JS.g:1048:5: ^( ARGS ( assignmentExpression )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(ARGS, "ARGS"), root_1);
 
-                // JS.g:1044:13: ( assignmentExpression )*
+                // JS.g:1048:13: ( assignmentExpression )*
                 while ( stream_assignmentExpression.hasNext() ) {
                     adaptor.addChild(root_1, stream_assignmentExpression.next());
 
@@ -2678,7 +2679,7 @@
     };
 
     // $ANTLR start leftHandSideExpression
-    // JS.g:1047:1: leftHandSideExpression : ( memberExpression -> memberExpression ) ( arguments -> ^( CALL $leftHandSideExpression arguments ) | LBRACK expression RBRACK -> ^( BYINDEX $leftHandSideExpression expression ) | DOT rightHandSideExpression -> ^( BYFIELD $leftHandSideExpression rightHandSideExpression ) | DOTDOT expression -> ^( ALLCHILDREN $leftHandSideExpression expression ) | COLONCOLON expression -> ^( LOCALNAME $leftHandSideExpression expression ) )* ;
+    // JS.g:1051:1: leftHandSideExpression : ( memberExpression -> memberExpression ) ( arguments -> ^( CALL $leftHandSideExpression arguments ) | LBRACK expression RBRACK -> ^( BYINDEX $leftHandSideExpression expression ) | DOT rightHandSideExpression -> ^( BYFIELD $leftHandSideExpression rightHandSideExpression ) | DOTDOT expression -> ^( ALLCHILDREN $leftHandSideExpression expression ) | COLONCOLON expression -> ^( LOCALNAME $leftHandSideExpression expression ) )* ;
     public final leftHandSideExpression_return leftHandSideExpression() throws RecognitionException {
         leftHandSideExpression_return retval = new leftHandSideExpression_return();
         retval.start = input.LT(1);
@@ -2718,13 +2719,13 @@
         RewriteRuleSubtreeStream stream_arguments=new RewriteRuleSubtreeStream(adaptor,"rule arguments");
         RewriteRuleSubtreeStream stream_rightHandSideExpression=new RewriteRuleSubtreeStream(adaptor,"rule rightHandSideExpression");
         try {
-            // JS.g:1048:3: ( ( memberExpression -> memberExpression ) ( arguments -> ^( CALL $leftHandSideExpression arguments ) | LBRACK expression RBRACK -> ^( BYINDEX $leftHandSideExpression expression ) | DOT rightHandSideExpression -> ^( BYFIELD $leftHandSideExpression rightHandSideExpression ) | DOTDOT expression -> ^( ALLCHILDREN $leftHandSideExpression expression ) | COLONCOLON expression -> ^( LOCALNAME $leftHandSideExpression expression ) )* )
-            // JS.g:1049:3: ( memberExpression -> memberExpression ) ( arguments -> ^( CALL $leftHandSideExpression arguments ) | LBRACK expression RBRACK -> ^( BYINDEX $leftHandSideExpression expression ) | DOT rightHandSideExpression -> ^( BYFIELD $leftHandSideExpression rightHandSideExpression ) | DOTDOT expression -> ^( ALLCHILDREN $leftHandSideExpression expression ) | COLONCOLON expression -> ^( LOCALNAME $leftHandSideExpression expression ) )*
+            // JS.g:1052:3: ( ( memberExpression -> memberExpression ) ( arguments -> ^( CALL $leftHandSideExpression arguments ) | LBRACK expression RBRACK -> ^( BYINDEX $leftHandSideExpression expression ) | DOT rightHandSideExpression -> ^( BYFIELD $leftHandSideExpression rightHandSideExpression ) | DOTDOT expression -> ^( ALLCHILDREN $leftHandSideExpression expression ) | COLONCOLON expression -> ^( LOCALNAME $leftHandSideExpression expression ) )* )
+            // JS.g:1053:3: ( memberExpression -> memberExpression ) ( arguments -> ^( CALL $leftHandSideExpression arguments ) | LBRACK expression RBRACK -> ^( BYINDEX $leftHandSideExpression expression ) | DOT rightHandSideExpression -> ^( BYFIELD $leftHandSideExpression rightHandSideExpression ) | DOTDOT expression -> ^( ALLCHILDREN $leftHandSideExpression expression ) | COLONCOLON expression -> ^( LOCALNAME $leftHandSideExpression expression ) )*
             {
-            // JS.g:1049:3: ( memberExpression -> memberExpression )
-            // JS.g:1050:5: memberExpression
+            // JS.g:1053:3: ( memberExpression -> memberExpression )
+            // JS.g:1054:5: memberExpression
             {
-            pushFollow(FOLLOW_memberExpression_in_leftHandSideExpression3839);
+            pushFollow(FOLLOW_memberExpression_in_leftHandSideExpression3867);
             memberExpression59=memberExpression();
             _fsp--;
 
@@ -2740,7 +2741,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1050:25: -> memberExpression
+            // 1054:25: -> memberExpression
             {
                 adaptor.addChild(root_0, stream_memberExpression.next());
 
@@ -2750,7 +2751,7 @@
 
             }
 
-            // JS.g:1052:3: ( arguments -> ^( CALL $leftHandSideExpression arguments ) | LBRACK expression RBRACK -> ^( BYINDEX $leftHandSideExpression expression ) | DOT rightHandSideExpression -> ^( BYFIELD $leftHandSideExpression rightHandSideExpression ) | DOTDOT expression -> ^( ALLCHILDREN $leftHandSideExpression expression ) | COLONCOLON expression -> ^( LOCALNAME $leftHandSideExpression expression ) )*
+            // JS.g:1056:3: ( arguments -> ^( CALL $leftHandSideExpression arguments ) | LBRACK expression RBRACK -> ^( BYINDEX $leftHandSideExpression expression ) | DOT rightHandSideExpression -> ^( BYFIELD $leftHandSideExpression rightHandSideExpression ) | DOTDOT expression -> ^( ALLCHILDREN $leftHandSideExpression expression ) | COLONCOLON expression -> ^( LOCALNAME $leftHandSideExpression expression ) )*
             loop15:
             do {
                 int alt15=6;
@@ -2785,16 +2786,16 @@
 
                 switch (alt15) {
             	case 1 :
-            	    // JS.g:1053:5: arguments
+            	    // JS.g:1057:5: arguments
             	    {
-            	    pushFollow(FOLLOW_arguments_in_leftHandSideExpression3860);
+            	    pushFollow(FOLLOW_arguments_in_leftHandSideExpression3888);
             	    arguments60=arguments();
             	    _fsp--;
 
             	    stream_arguments.add(arguments60.getTree());
 
             	    // AST REWRITE
-            	    // elements: leftHandSideExpression, arguments
+            	    // elements: arguments, leftHandSideExpression
             	    // token labels: 
             	    // rule labels: retval
             	    // token list labels: 
@@ -2803,9 +2804,9 @@
             	    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             	    root_0 = (Object)adaptor.nil();
-            	    // 1053:19: -> ^( CALL $leftHandSideExpression arguments )
+            	    // 1057:19: -> ^( CALL $leftHandSideExpression arguments )
             	    {
-            	        // JS.g:1053:22: ^( CALL $leftHandSideExpression arguments )
+            	        // JS.g:1057:22: ^( CALL $leftHandSideExpression arguments )
             	        {
             	        Object root_1 = (Object)adaptor.nil();
             	        root_1 = (Object)adaptor.becomeRoot(adaptor.create(CALL, "CALL"), root_1);
@@ -2823,24 +2824,24 @@
             	    }
             	    break;
             	case 2 :
-            	    // JS.g:1054:7: LBRACK expression RBRACK
+            	    // JS.g:1058:7: LBRACK expression RBRACK
             	    {
             	    LBRACK61=(Token)input.LT(1);
-            	    match(input,LBRACK,FOLLOW_LBRACK_in_leftHandSideExpression3885); 
+            	    match(input,LBRACK,FOLLOW_LBRACK_in_leftHandSideExpression3913); 
             	    stream_LBRACK.add(LBRACK61);
 
-            	    pushFollow(FOLLOW_expression_in_leftHandSideExpression3887);
+            	    pushFollow(FOLLOW_expression_in_leftHandSideExpression3915);
             	    expression62=expression();
             	    _fsp--;
 
             	    stream_expression.add(expression62.getTree());
             	    RBRACK63=(Token)input.LT(1);
-            	    match(input,RBRACK,FOLLOW_RBRACK_in_leftHandSideExpression3889); 
+            	    match(input,RBRACK,FOLLOW_RBRACK_in_leftHandSideExpression3917); 
             	    stream_RBRACK.add(RBRACK63);
 
 
             	    // AST REWRITE
-            	    // elements: leftHandSideExpression, expression
+            	    // elements: expression, leftHandSideExpression
             	    // token labels: 
             	    // rule labels: retval
             	    // token list labels: 
@@ -2849,9 +2850,9 @@
             	    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             	    root_0 = (Object)adaptor.nil();
-            	    // 1054:33: -> ^( BYINDEX $leftHandSideExpression expression )
+            	    // 1058:33: -> ^( BYINDEX $leftHandSideExpression expression )
             	    {
-            	        // JS.g:1054:36: ^( BYINDEX $leftHandSideExpression expression )
+            	        // JS.g:1058:36: ^( BYINDEX $leftHandSideExpression expression )
             	        {
             	        Object root_1 = (Object)adaptor.nil();
             	        root_1 = (Object)adaptor.becomeRoot(adaptor.create(BYINDEX, "BYINDEX"), root_1);
@@ -2869,13 +2870,13 @@
             	    }
             	    break;
             	case 3 :
-            	    // JS.g:1055:7: DOT rightHandSideExpression
+            	    // JS.g:1059:7: DOT rightHandSideExpression
             	    {
             	    DOT64=(Token)input.LT(1);
-            	    match(input,DOT,FOLLOW_DOT_in_leftHandSideExpression3911); 
+            	    match(input,DOT,FOLLOW_DOT_in_leftHandSideExpression3939); 
             	    stream_DOT.add(DOT64);
 
-            	    pushFollow(FOLLOW_rightHandSideExpression_in_leftHandSideExpression3913);
+            	    pushFollow(FOLLOW_rightHandSideExpression_in_leftHandSideExpression3941);
             	    rightHandSideExpression65=rightHandSideExpression();
             	    _fsp--;
 
@@ -2891,9 +2892,9 @@
             	    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             	    root_0 = (Object)adaptor.nil();
-            	    // 1055:35: -> ^( BYFIELD $leftHandSideExpression rightHandSideExpression )
+            	    // 1059:35: -> ^( BYFIELD $leftHandSideExpression rightHandSideExpression )
             	    {
-            	        // JS.g:1055:38: ^( BYFIELD $leftHandSideExpression rightHandSideExpression )
+            	        // JS.g:1059:38: ^( BYFIELD $leftHandSideExpression rightHandSideExpression )
             	        {
             	        Object root_1 = (Object)adaptor.nil();
             	        root_1 = (Object)adaptor.becomeRoot(adaptor.create(BYFIELD, "BYFIELD"), root_1);
@@ -2911,13 +2912,13 @@
             	    }
             	    break;
             	case 4 :
-            	    // JS.g:1056:7: DOTDOT expression
+            	    // JS.g:1060:7: DOTDOT expression
             	    {
             	    DOTDOT66=(Token)input.LT(1);
-            	    match(input,DOTDOT,FOLLOW_DOTDOT_in_leftHandSideExpression3934); 
+            	    match(input,DOTDOT,FOLLOW_DOTDOT_in_leftHandSideExpression3962); 
             	    stream_DOTDOT.add(DOTDOT66);
 
-            	    pushFollow(FOLLOW_expression_in_leftHandSideExpression3936);
+            	    pushFollow(FOLLOW_expression_in_leftHandSideExpression3964);
             	    expression67=expression();
             	    _fsp--;
 
@@ -2933,9 +2934,9 @@
             	    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             	    root_0 = (Object)adaptor.nil();
-            	    // 1056:25: -> ^( ALLCHILDREN $leftHandSideExpression expression )
+            	    // 1060:25: -> ^( ALLCHILDREN $leftHandSideExpression expression )
             	    {
-            	        // JS.g:1056:28: ^( ALLCHILDREN $leftHandSideExpression expression )
+            	        // JS.g:1060:28: ^( ALLCHILDREN $leftHandSideExpression expression )
             	        {
             	        Object root_1 = (Object)adaptor.nil();
             	        root_1 = (Object)adaptor.becomeRoot(adaptor.create(ALLCHILDREN, "ALLCHILDREN"), root_1);
@@ -2953,13 +2954,13 @@
             	    }
             	    break;
             	case 5 :
-            	    // JS.g:1057:7: COLONCOLON expression
+            	    // JS.g:1061:7: COLONCOLON expression
             	    {
             	    COLONCOLON68=(Token)input.LT(1);
-            	    match(input,COLONCOLON,FOLLOW_COLONCOLON_in_leftHandSideExpression3955); 
+            	    match(input,COLONCOLON,FOLLOW_COLONCOLON_in_leftHandSideExpression3983); 
             	    stream_COLONCOLON.add(COLONCOLON68);
 
-            	    pushFollow(FOLLOW_expression_in_leftHandSideExpression3957);
+            	    pushFollow(FOLLOW_expression_in_leftHandSideExpression3985);
             	    expression69=expression();
             	    _fsp--;
 
@@ -2975,9 +2976,9 @@
             	    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             	    root_0 = (Object)adaptor.nil();
-            	    // 1057:29: -> ^( LOCALNAME $leftHandSideExpression expression )
+            	    // 1061:29: -> ^( LOCALNAME $leftHandSideExpression expression )
             	    {
-            	        // JS.g:1057:32: ^( LOCALNAME $leftHandSideExpression expression )
+            	        // JS.g:1061:32: ^( LOCALNAME $leftHandSideExpression expression )
             	        {
             	        Object root_1 = (Object)adaptor.nil();
             	        root_1 = (Object)adaptor.becomeRoot(adaptor.create(LOCALNAME, "LOCALNAME"), root_1);
@@ -3025,7 +3026,7 @@
     };
 
     // $ANTLR start rightHandSideExpression
-    // JS.g:1061:1: rightHandSideExpression : ( parenExpression | identifier | XmlAttribute | MUL );
+    // JS.g:1065:1: rightHandSideExpression : ( parenExpression | identifier | XmlAttribute | MUL );
     public final rightHandSideExpression_return rightHandSideExpression() throws RecognitionException {
         rightHandSideExpression_return retval = new rightHandSideExpression_return();
         retval.start = input.LT(1);
@@ -3043,7 +3044,7 @@
         Object MUL73_tree=null;
 
         try {
-            // JS.g:1062:3: ( parenExpression | identifier | XmlAttribute | MUL )
+            // JS.g:1066:3: ( parenExpression | identifier | XmlAttribute | MUL )
             int alt16=4;
             switch ( input.LA(1) ) {
             case LPAREN:
@@ -3073,18 +3074,18 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("1061:1: rightHandSideExpression : ( parenExpression | identifier | XmlAttribute | MUL );", 16, 0, input);
+                    new NoViableAltException("1065:1: rightHandSideExpression : ( parenExpression | identifier | XmlAttribute | MUL );", 16, 0, input);
 
                 throw nvae;
             }
 
             switch (alt16) {
                 case 1 :
-                    // JS.g:1062:5: parenExpression
+                    // JS.g:1066:5: parenExpression
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_parenExpression_in_rightHandSideExpression3986);
+                    pushFollow(FOLLOW_parenExpression_in_rightHandSideExpression4014);
                     parenExpression70=parenExpression();
                     _fsp--;
 
@@ -3093,11 +3094,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1063:5: identifier
+                    // JS.g:1067:5: identifier
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_identifier_in_rightHandSideExpression3993);
+                    pushFollow(FOLLOW_identifier_in_rightHandSideExpression4021);
                     identifier71=identifier();
                     _fsp--;
 
@@ -3106,12 +3107,12 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:1064:5: XmlAttribute
+                    // JS.g:1068:5: XmlAttribute
                     {
                     root_0 = (Object)adaptor.nil();
 
                     XmlAttribute72=(Token)input.LT(1);
-                    match(input,XmlAttribute,FOLLOW_XmlAttribute_in_rightHandSideExpression3999); 
+                    match(input,XmlAttribute,FOLLOW_XmlAttribute_in_rightHandSideExpression4027); 
                     XmlAttribute72_tree = (Object)adaptor.create(XmlAttribute72);
                     adaptor.addChild(root_0, XmlAttribute72_tree);
 
@@ -3119,12 +3120,12 @@
                     }
                     break;
                 case 4 :
-                    // JS.g:1065:5: MUL
+                    // JS.g:1069:5: MUL
                     {
                     root_0 = (Object)adaptor.nil();
 
                     MUL73=(Token)input.LT(1);
-                    match(input,MUL,FOLLOW_MUL_in_rightHandSideExpression4005); 
+                    match(input,MUL,FOLLOW_MUL_in_rightHandSideExpression4033); 
                     MUL73_tree = (Object)adaptor.create(MUL73);
                     adaptor.addChild(root_0, MUL73_tree);
 
@@ -3155,7 +3156,7 @@
     };
 
     // $ANTLR start postfixExpression
-    // JS.g:1098:1: postfixExpression : leftHandSideExpression ( postfixOperator )? ;
+    // JS.g:1102:1: postfixExpression : leftHandSideExpression ( postfixOperator )? ;
     public final postfixExpression_return postfixExpression() throws RecognitionException {
         postfixExpression_return retval = new postfixExpression_return();
         retval.start = input.LT(1);
@@ -3169,18 +3170,18 @@
 
 
         try {
-            // JS.g:1099:2: ( leftHandSideExpression ( postfixOperator )? )
-            // JS.g:1099:4: leftHandSideExpression ( postfixOperator )?
+            // JS.g:1103:2: ( leftHandSideExpression ( postfixOperator )? )
+            // JS.g:1103:4: leftHandSideExpression ( postfixOperator )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_leftHandSideExpression_in_postfixExpression4043);
+            pushFollow(FOLLOW_leftHandSideExpression_in_postfixExpression4071);
             leftHandSideExpression74=leftHandSideExpression();
             _fsp--;
 
             adaptor.addChild(root_0, leftHandSideExpression74.getTree());
              if (input.LA(1) == INC || input.LA(1) == DEC) promoteEOL(null); 
-            // JS.g:1099:95: ( postfixOperator )?
+            // JS.g:1103:95: ( postfixOperator )?
             int alt17=2;
             int LA17_0 = input.LA(1);
 
@@ -3192,9 +3193,9 @@
             }
             switch (alt17) {
                 case 1 :
-                    // JS.g:1099:97: postfixOperator
+                    // JS.g:1103:97: postfixOperator
                     {
-                    pushFollow(FOLLOW_postfixOperator_in_postfixExpression4049);
+                    pushFollow(FOLLOW_postfixOperator_in_postfixExpression4077);
                     postfixOperator75=postfixOperator();
                     _fsp--;
 
@@ -3230,7 +3231,7 @@
     };
 
     // $ANTLR start postfixOperator
-    // JS.g:1102:1: postfixOperator : (op= INC | op= DEC );
+    // JS.g:1106:1: postfixOperator : (op= INC | op= DEC );
     public final postfixOperator_return postfixOperator() throws RecognitionException {
         postfixOperator_return retval = new postfixOperator_return();
         retval.start = input.LT(1);
@@ -3242,7 +3243,7 @@
         Object op_tree=null;
 
         try {
-            // JS.g:1103:2: (op= INC | op= DEC )
+            // JS.g:1107:2: (op= INC | op= DEC )
             int alt18=2;
             int LA18_0 = input.LA(1);
 
@@ -3254,18 +3255,18 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("1102:1: postfixOperator : (op= INC | op= DEC );", 18, 0, input);
+                    new NoViableAltException("1106:1: postfixOperator : (op= INC | op= DEC );", 18, 0, input);
 
                 throw nvae;
             }
             switch (alt18) {
                 case 1 :
-                    // JS.g:1103:4: op= INC
+                    // JS.g:1107:4: op= INC
                     {
                     root_0 = (Object)adaptor.nil();
 
                     op=(Token)input.LT(1);
-                    match(input,INC,FOLLOW_INC_in_postfixOperator4067); 
+                    match(input,INC,FOLLOW_INC_in_postfixOperator4095); 
                     op_tree = (Object)adaptor.create(op);
                     adaptor.addChild(root_0, op_tree);
 
@@ -3274,12 +3275,12 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1104:4: op= DEC
+                    // JS.g:1108:4: op= DEC
                     {
                     root_0 = (Object)adaptor.nil();
 
                     op=(Token)input.LT(1);
-                    match(input,DEC,FOLLOW_DEC_in_postfixOperator4076); 
+                    match(input,DEC,FOLLOW_DEC_in_postfixOperator4104); 
                     op_tree = (Object)adaptor.create(op);
                     adaptor.addChild(root_0, op_tree);
 
@@ -3311,7 +3312,7 @@
     };
 
     // $ANTLR start unaryExpression
-    // JS.g:1111:1: unaryExpression : ( postfixExpression | unaryOperator unaryExpression | XMLLiteral );
+    // JS.g:1115:1: unaryExpression : ( postfixExpression | unaryOperator unaryExpression | XMLLiteral );
     public final unaryExpression_return unaryExpression() throws RecognitionException {
         unaryExpression_return retval = new unaryExpression_return();
         retval.start = input.LT(1);
@@ -3329,7 +3330,7 @@
         Object XMLLiteral79_tree=null;
 
         try {
-            // JS.g:1112:2: ( postfixExpression | unaryOperator unaryExpression | XMLLiteral )
+            // JS.g:1116:2: ( postfixExpression | unaryOperator unaryExpression | XMLLiteral )
             int alt19=3;
             switch ( input.LA(1) ) {
             case NULL:
@@ -3378,18 +3379,18 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("1111:1: unaryExpression : ( postfixExpression | unaryOperator unaryExpression | XMLLiteral );", 19, 0, input);
+                    new NoViableAltException("1115:1: unaryExpression : ( postfixExpression | unaryOperator unaryExpression | XMLLiteral );", 19, 0, input);
 
                 throw nvae;
             }
 
             switch (alt19) {
                 case 1 :
-                    // JS.g:1112:4: postfixExpression
+                    // JS.g:1116:4: postfixExpression
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_postfixExpression_in_unaryExpression4093);
+                    pushFollow(FOLLOW_postfixExpression_in_unaryExpression4121);
                     postfixExpression76=postfixExpression();
                     _fsp--;
 
@@ -3398,16 +3399,16 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1113:4: unaryOperator unaryExpression
+                    // JS.g:1117:4: unaryOperator unaryExpression
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_unaryOperator_in_unaryExpression4098);
+                    pushFollow(FOLLOW_unaryOperator_in_unaryExpression4126);
                     unaryOperator77=unaryOperator();
                     _fsp--;
 
                     root_0 = (Object)adaptor.becomeRoot(unaryOperator77.getTree(), root_0);
-                    pushFollow(FOLLOW_unaryExpression_in_unaryExpression4101);
+                    pushFollow(FOLLOW_unaryExpression_in_unaryExpression4129);
                     unaryExpression78=unaryExpression();
                     _fsp--;
 
@@ -3416,12 +3417,12 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:1114:5: XMLLiteral
+                    // JS.g:1118:5: XMLLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
                     XMLLiteral79=(Token)input.LT(1);
-                    match(input,XMLLiteral,FOLLOW_XMLLiteral_in_unaryExpression4107); 
+                    match(input,XMLLiteral,FOLLOW_XMLLiteral_in_unaryExpression4135); 
                     XMLLiteral79_tree = (Object)adaptor.create(XMLLiteral79);
                     adaptor.addChild(root_0, XMLLiteral79_tree);
 
@@ -3452,7 +3453,7 @@
     };
 
     // $ANTLR start unaryOperator
-    // JS.g:1117:1: unaryOperator : ( DELETE | VOID | TYPEOF | INC | DEC | op= ADD | op= SUB | INV | NOT | YIELD );
+    // JS.g:1121:1: unaryOperator : ( DELETE | VOID | TYPEOF | INC | DEC | op= ADD | op= SUB | INV | NOT | YIELD );
     public final unaryOperator_return unaryOperator() throws RecognitionException {
         unaryOperator_return retval = new unaryOperator_return();
         retval.start = input.LT(1);
@@ -3480,7 +3481,7 @@
         Object YIELD87_tree=null;
 
         try {
-            // JS.g:1118:2: ( DELETE | VOID | TYPEOF | INC | DEC | op= ADD | op= SUB | INV | NOT | YIELD )
+            // JS.g:1122:2: ( DELETE | VOID | TYPEOF | INC | DEC | op= ADD | op= SUB | INV | NOT | YIELD )
             int alt20=10;
             switch ( input.LA(1) ) {
             case DELETE:
@@ -3535,19 +3536,19 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("1117:1: unaryOperator : ( DELETE | VOID | TYPEOF | INC | DEC | op= ADD | op= SUB | INV | NOT | YIELD );", 20, 0, input);
+                    new NoViableAltException("1121:1: unaryOperator : ( DELETE | VOID | TYPEOF | INC | DEC | op= ADD | op= SUB | INV | NOT | YIELD );", 20, 0, input);
 
                 throw nvae;
             }
 
             switch (alt20) {
                 case 1 :
-                    // JS.g:1118:4: DELETE
+                    // JS.g:1122:4: DELETE
                     {
                     root_0 = (Object)adaptor.nil();
 
                     DELETE80=(Token)input.LT(1);
-                    match(input,DELETE,FOLLOW_DELETE_in_unaryOperator4119); 
+                    match(input,DELETE,FOLLOW_DELETE_in_unaryOperator4147); 
                     DELETE80_tree = (Object)adaptor.create(DELETE80);
                     adaptor.addChild(root_0, DELETE80_tree);
 
@@ -3555,12 +3556,12 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1119:4: VOID
+                    // JS.g:1123:4: VOID
                     {
                     root_0 = (Object)adaptor.nil();
 
                     VOID81=(Token)input.LT(1);
-                    match(input,VOID,FOLLOW_VOID_in_unaryOperator4124); 
+                    match(input,VOID,FOLLOW_VOID_in_unaryOperator4152); 
                     VOID81_tree = (Object)adaptor.create(VOID81);
                     adaptor.addChild(root_0, VOID81_tree);
 
@@ -3568,12 +3569,12 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:1120:4: TYPEOF
+                    // JS.g:1124:4: TYPEOF
                     {
                     root_0 = (Object)adaptor.nil();
 
                     TYPEOF82=(Token)input.LT(1);
-                    match(input,TYPEOF,FOLLOW_TYPEOF_in_unaryOperator4129); 
+                    match(input,TYPEOF,FOLLOW_TYPEOF_in_unaryOperator4157); 
                     TYPEOF82_tree = (Object)adaptor.create(TYPEOF82);
                     adaptor.addChild(root_0, TYPEOF82_tree);
 
@@ -3581,12 +3582,12 @@
                     }
                     break;
                 case 4 :
-                    // JS.g:1121:4: INC
+                    // JS.g:1125:4: INC
                     {
                     root_0 = (Object)adaptor.nil();
 
                     INC83=(Token)input.LT(1);
-                    match(input,INC,FOLLOW_INC_in_unaryOperator4134); 
+                    match(input,INC,FOLLOW_INC_in_unaryOperator4162); 
                     INC83_tree = (Object)adaptor.create(INC83);
                     adaptor.addChild(root_0, INC83_tree);
 
@@ -3594,12 +3595,12 @@
                     }
                     break;
                 case 5 :
-                    // JS.g:1122:4: DEC
+                    // JS.g:1126:4: DEC
                     {
                     root_0 = (Object)adaptor.nil();
 
                     DEC84=(Token)input.LT(1);
-                    match(input,DEC,FOLLOW_DEC_in_unaryOperator4139); 
+                    match(input,DEC,FOLLOW_DEC_in_unaryOperator4167); 
                     DEC84_tree = (Object)adaptor.create(DEC84);
                     adaptor.addChild(root_0, DEC84_tree);
 
@@ -3607,12 +3608,12 @@
                     }
                     break;
                 case 6 :
-                    // JS.g:1123:4: op= ADD
+                    // JS.g:1127:4: op= ADD
                     {
                     root_0 = (Object)adaptor.nil();
 
                     op=(Token)input.LT(1);
-                    match(input,ADD,FOLLOW_ADD_in_unaryOperator4146); 
+                    match(input,ADD,FOLLOW_ADD_in_unaryOperator4174); 
                     op_tree = (Object)adaptor.create(op);
                     adaptor.addChild(root_0, op_tree);
 
@@ -3621,12 +3622,12 @@
                     }
                     break;
                 case 7 :
-                    // JS.g:1124:4: op= SUB
+                    // JS.g:1128:4: op= SUB
                     {
                     root_0 = (Object)adaptor.nil();
 
                     op=(Token)input.LT(1);
-                    match(input,SUB,FOLLOW_SUB_in_unaryOperator4155); 
+                    match(input,SUB,FOLLOW_SUB_in_unaryOperator4183); 
                     op_tree = (Object)adaptor.create(op);
                     adaptor.addChild(root_0, op_tree);
 
@@ -3635,12 +3636,12 @@
                     }
                     break;
                 case 8 :
-                    // JS.g:1125:4: INV
+                    // JS.g:1129:4: INV
                     {
                     root_0 = (Object)adaptor.nil();
 
                     INV85=(Token)input.LT(1);
-                    match(input,INV,FOLLOW_INV_in_unaryOperator4162); 
+                    match(input,INV,FOLLOW_INV_in_unaryOperator4190); 
                     INV85_tree = (Object)adaptor.create(INV85);
                     adaptor.addChild(root_0, INV85_tree);
 
@@ -3648,12 +3649,12 @@
                     }
                     break;
                 case 9 :
-                    // JS.g:1126:4: NOT
+                    // JS.g:1130:4: NOT
                     {
                     root_0 = (Object)adaptor.nil();
 
                     NOT86=(Token)input.LT(1);
-                    match(input,NOT,FOLLOW_NOT_in_unaryOperator4167); 
+                    match(input,NOT,FOLLOW_NOT_in_unaryOperator4195); 
                     NOT86_tree = (Object)adaptor.create(NOT86);
                     adaptor.addChild(root_0, NOT86_tree);
 
@@ -3661,12 +3662,12 @@
                     }
                     break;
                 case 10 :
-                    // JS.g:1127:4: YIELD
+                    // JS.g:1131:4: YIELD
                     {
                     root_0 = (Object)adaptor.nil();
 
                     YIELD87=(Token)input.LT(1);
-                    match(input,YIELD,FOLLOW_YIELD_in_unaryOperator4172); 
+                    match(input,YIELD,FOLLOW_YIELD_in_unaryOperator4200); 
                     YIELD87_tree = (Object)adaptor.create(YIELD87);
                     adaptor.addChild(root_0, YIELD87_tree);
 
@@ -3697,7 +3698,7 @@
     };
 
     // $ANTLR start namespaceStatement
-    // JS.g:1154:1: namespaceStatement : DEFAULT WXML NAMESPACE ASSIGN StringLiteral semic -> ^( DEFAULT_XML_NAMESPACE DEFAULT WXML ASSIGN StringLiteral ) ;
+    // JS.g:1158:1: namespaceStatement : DEFAULT WXML NAMESPACE ASSIGN StringLiteral semic -> ^( DEFAULT_XML_NAMESPACE DEFAULT WXML ASSIGN StringLiteral ) ;
     public final namespaceStatement_return namespaceStatement() throws RecognitionException {
         namespaceStatement_return retval = new namespaceStatement_return();
         retval.start = input.LT(1);
@@ -3724,37 +3725,37 @@
         RewriteRuleTokenStream stream_ASSIGN=new RewriteRuleTokenStream(adaptor,"token ASSIGN");
         RewriteRuleSubtreeStream stream_semic=new RewriteRuleSubtreeStream(adaptor,"rule semic");
         try {
-            // JS.g:1155:3: ( DEFAULT WXML NAMESPACE ASSIGN StringLiteral semic -> ^( DEFAULT_XML_NAMESPACE DEFAULT WXML ASSIGN StringLiteral ) )
-            // JS.g:1155:5: DEFAULT WXML NAMESPACE ASSIGN StringLiteral semic
+            // JS.g:1159:3: ( DEFAULT WXML NAMESPACE ASSIGN StringLiteral semic -> ^( DEFAULT_XML_NAMESPACE DEFAULT WXML ASSIGN StringLiteral ) )
+            // JS.g:1159:5: DEFAULT WXML NAMESPACE ASSIGN StringLiteral semic
             {
             DEFAULT88=(Token)input.LT(1);
-            match(input,DEFAULT,FOLLOW_DEFAULT_in_namespaceStatement4208); 
+            match(input,DEFAULT,FOLLOW_DEFAULT_in_namespaceStatement4236); 
             stream_DEFAULT.add(DEFAULT88);
 
             WXML89=(Token)input.LT(1);
-            match(input,WXML,FOLLOW_WXML_in_namespaceStatement4210); 
+            match(input,WXML,FOLLOW_WXML_in_namespaceStatement4238); 
             stream_WXML.add(WXML89);
 
             NAMESPACE90=(Token)input.LT(1);
-            match(input,NAMESPACE,FOLLOW_NAMESPACE_in_namespaceStatement4212); 
+            match(input,NAMESPACE,FOLLOW_NAMESPACE_in_namespaceStatement4240); 
             stream_NAMESPACE.add(NAMESPACE90);
 
             ASSIGN91=(Token)input.LT(1);
-            match(input,ASSIGN,FOLLOW_ASSIGN_in_namespaceStatement4214); 
+            match(input,ASSIGN,FOLLOW_ASSIGN_in_namespaceStatement4242); 
             stream_ASSIGN.add(ASSIGN91);
 
             StringLiteral92=(Token)input.LT(1);
-            match(input,StringLiteral,FOLLOW_StringLiteral_in_namespaceStatement4216); 
+            match(input,StringLiteral,FOLLOW_StringLiteral_in_namespaceStatement4244); 
             stream_StringLiteral.add(StringLiteral92);
 
-            pushFollow(FOLLOW_semic_in_namespaceStatement4218);
+            pushFollow(FOLLOW_semic_in_namespaceStatement4246);
             semic93=semic();
             _fsp--;
 
             stream_semic.add(semic93.getTree());
 
             // AST REWRITE
-            // elements: StringLiteral, DEFAULT, ASSIGN, WXML
+            // elements: StringLiteral, ASSIGN, WXML, DEFAULT
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -3763,9 +3764,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1156:5: -> ^( DEFAULT_XML_NAMESPACE DEFAULT WXML ASSIGN StringLiteral )
+            // 1160:5: -> ^( DEFAULT_XML_NAMESPACE DEFAULT WXML ASSIGN StringLiteral )
             {
-                // JS.g:1156:8: ^( DEFAULT_XML_NAMESPACE DEFAULT WXML ASSIGN StringLiteral )
+                // JS.g:1160:8: ^( DEFAULT_XML_NAMESPACE DEFAULT WXML ASSIGN StringLiteral )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(DEFAULT_XML_NAMESPACE, "DEFAULT_XML_NAMESPACE"), root_1);
@@ -3806,7 +3807,7 @@
     };
 
     // $ANTLR start multiplicativeExpression
-    // JS.g:1161:1: multiplicativeExpression : unaryExpression ( ( MUL | DIV | MOD ) unaryExpression )* ;
+    // JS.g:1165:1: multiplicativeExpression : unaryExpression ( ( MUL | DIV | MOD ) unaryExpression )* ;
     public final multiplicativeExpression_return multiplicativeExpression() throws RecognitionException {
         multiplicativeExpression_return retval = new multiplicativeExpression_return();
         retval.start = input.LT(1);
@@ -3822,17 +3823,17 @@
         Object set95_tree=null;
 
         try {
-            // JS.g:1162:2: ( unaryExpression ( ( MUL | DIV | MOD ) unaryExpression )* )
-            // JS.g:1162:4: unaryExpression ( ( MUL | DIV | MOD ) unaryExpression )*
+            // JS.g:1166:2: ( unaryExpression ( ( MUL | DIV | MOD ) unaryExpression )* )
+            // JS.g:1166:4: unaryExpression ( ( MUL | DIV | MOD ) unaryExpression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_unaryExpression_in_multiplicativeExpression4250);
+            pushFollow(FOLLOW_unaryExpression_in_multiplicativeExpression4278);
             unaryExpression94=unaryExpression();
             _fsp--;
 
             adaptor.addChild(root_0, unaryExpression94.getTree());
-            // JS.g:1162:20: ( ( MUL | DIV | MOD ) unaryExpression )*
+            // JS.g:1166:20: ( ( MUL | DIV | MOD ) unaryExpression )*
             loop21:
             do {
                 int alt21=2;
@@ -3845,7 +3846,7 @@
 
                 switch (alt21) {
             	case 1 :
-            	    // JS.g:1162:22: ( MUL | DIV | MOD ) unaryExpression
+            	    // JS.g:1166:22: ( MUL | DIV | MOD ) unaryExpression
             	    {
             	    set95=(Token)input.LT(1);
             	    if ( (input.LA(1)>=MUL && input.LA(1)<=MOD)||input.LA(1)==DIV ) {
@@ -3856,10 +3857,10 @@
             	    else {
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_multiplicativeExpression4254);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_multiplicativeExpression4282);    throw mse;
             	    }
 
-            	    pushFollow(FOLLOW_unaryExpression_in_multiplicativeExpression4269);
+            	    pushFollow(FOLLOW_unaryExpression_in_multiplicativeExpression4297);
             	    unaryExpression96=unaryExpression();
             	    _fsp--;
 
@@ -3898,7 +3899,7 @@
     };
 
     // $ANTLR start additiveExpression
-    // JS.g:1169:1: additiveExpression : multiplicativeExpression ( ( ADD | SUB ) multiplicativeExpression )* ;
+    // JS.g:1173:1: additiveExpression : multiplicativeExpression ( ( ADD | SUB ) multiplicativeExpression )* ;
     public final additiveExpression_return additiveExpression() throws RecognitionException {
         additiveExpression_return retval = new additiveExpression_return();
         retval.start = input.LT(1);
@@ -3914,17 +3915,17 @@
         Object set98_tree=null;
 
         try {
-            // JS.g:1170:2: ( multiplicativeExpression ( ( ADD | SUB ) multiplicativeExpression )* )
-            // JS.g:1170:4: multiplicativeExpression ( ( ADD | SUB ) multiplicativeExpression )*
+            // JS.g:1174:2: ( multiplicativeExpression ( ( ADD | SUB ) multiplicativeExpression )* )
+            // JS.g:1174:4: multiplicativeExpression ( ( ADD | SUB ) multiplicativeExpression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_multiplicativeExpression_in_additiveExpression4287);
+            pushFollow(FOLLOW_multiplicativeExpression_in_additiveExpression4315);
             multiplicativeExpression97=multiplicativeExpression();
             _fsp--;
 
             adaptor.addChild(root_0, multiplicativeExpression97.getTree());
-            // JS.g:1170:29: ( ( ADD | SUB ) multiplicativeExpression )*
+            // JS.g:1174:29: ( ( ADD | SUB ) multiplicativeExpression )*
             loop22:
             do {
                 int alt22=2;
@@ -3937,7 +3938,7 @@
 
                 switch (alt22) {
             	case 1 :
-            	    // JS.g:1170:31: ( ADD | SUB ) multiplicativeExpression
+            	    // JS.g:1174:31: ( ADD | SUB ) multiplicativeExpression
             	    {
             	    set98=(Token)input.LT(1);
             	    if ( (input.LA(1)>=ADD && input.LA(1)<=SUB) ) {
@@ -3948,10 +3949,10 @@
             	    else {
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_additiveExpression4291);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_additiveExpression4319);    throw mse;
             	    }
 
-            	    pushFollow(FOLLOW_multiplicativeExpression_in_additiveExpression4302);
+            	    pushFollow(FOLLOW_multiplicativeExpression_in_additiveExpression4330);
             	    multiplicativeExpression99=multiplicativeExpression();
             	    _fsp--;
 
@@ -3990,7 +3991,7 @@
     };
 
     // $ANTLR start shiftExpression
-    // JS.g:1177:1: shiftExpression : additiveExpression ( ( SHL | SHR | SHU ) additiveExpression )* ;
+    // JS.g:1181:1: shiftExpression : additiveExpression ( ( SHL | SHR | SHU ) additiveExpression )* ;
     public final shiftExpression_return shiftExpression() throws RecognitionException {
         shiftExpression_return retval = new shiftExpression_return();
         retval.start = input.LT(1);
@@ -4006,17 +4007,17 @@
         Object set101_tree=null;
 
         try {
-            // JS.g:1178:2: ( additiveExpression ( ( SHL | SHR | SHU ) additiveExpression )* )
-            // JS.g:1178:4: additiveExpression ( ( SHL | SHR | SHU ) additiveExpression )*
+            // JS.g:1182:2: ( additiveExpression ( ( SHL | SHR | SHU ) additiveExpression )* )
+            // JS.g:1182:4: additiveExpression ( ( SHL | SHR | SHU ) additiveExpression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_additiveExpression_in_shiftExpression4321);
+            pushFollow(FOLLOW_additiveExpression_in_shiftExpression4349);
             additiveExpression100=additiveExpression();
             _fsp--;
 
             adaptor.addChild(root_0, additiveExpression100.getTree());
-            // JS.g:1178:23: ( ( SHL | SHR | SHU ) additiveExpression )*
+            // JS.g:1182:23: ( ( SHL | SHR | SHU ) additiveExpression )*
             loop23:
             do {
                 int alt23=2;
@@ -4029,7 +4030,7 @@
 
                 switch (alt23) {
             	case 1 :
-            	    // JS.g:1178:25: ( SHL | SHR | SHU ) additiveExpression
+            	    // JS.g:1182:25: ( SHL | SHR | SHU ) additiveExpression
             	    {
             	    set101=(Token)input.LT(1);
             	    if ( (input.LA(1)>=SHL && input.LA(1)<=SHU) ) {
@@ -4040,10 +4041,10 @@
             	    else {
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_shiftExpression4325);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_shiftExpression4353);    throw mse;
             	    }
 
-            	    pushFollow(FOLLOW_additiveExpression_in_shiftExpression4340);
+            	    pushFollow(FOLLOW_additiveExpression_in_shiftExpression4368);
             	    additiveExpression102=additiveExpression();
             	    _fsp--;
 
@@ -4082,7 +4083,7 @@
     };
 
     // $ANTLR start relationalExpression
-    // JS.g:1185:1: relationalExpression : shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF | IN ) shiftExpression )* ;
+    // JS.g:1189:1: relationalExpression : shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF | IN ) shiftExpression )* ;
     public final relationalExpression_return relationalExpression() throws RecognitionException {
         relationalExpression_return retval = new relationalExpression_return();
         retval.start = input.LT(1);
@@ -4098,17 +4099,17 @@
         Object set104_tree=null;
 
         try {
-            // JS.g:1186:2: ( shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF | IN ) shiftExpression )* )
-            // JS.g:1186:4: shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF | IN ) shiftExpression )*
+            // JS.g:1190:2: ( shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF | IN ) shiftExpression )* )
+            // JS.g:1190:4: shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF | IN ) shiftExpression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_shiftExpression_in_relationalExpression4359);
+            pushFollow(FOLLOW_shiftExpression_in_relationalExpression4387);
             shiftExpression103=shiftExpression();
             _fsp--;
 
             adaptor.addChild(root_0, shiftExpression103.getTree());
-            // JS.g:1186:20: ( ( LT | GT | LTE | GTE | INSTANCEOF | IN ) shiftExpression )*
+            // JS.g:1190:20: ( ( LT | GT | LTE | GTE | INSTANCEOF | IN ) shiftExpression )*
             loop24:
             do {
                 int alt24=2;
@@ -4124,7 +4125,7 @@
 
                 switch (alt24) {
             	case 1 :
-            	    // JS.g:1186:22: ( LT | GT | LTE | GTE | INSTANCEOF | IN ) shiftExpression
+            	    // JS.g:1190:22: ( LT | GT | LTE | GTE | INSTANCEOF | IN ) shiftExpression
             	    {
             	    set104=(Token)input.LT(1);
             	    if ( (input.LA(1)>=IN && input.LA(1)<=INSTANCEOF)||(input.LA(1)>=LT && input.LA(1)<=GTE) ) {
@@ -4135,10 +4136,10 @@
             	    else {
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_relationalExpression4363);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_relationalExpression4391);    throw mse;
             	    }
 
-            	    pushFollow(FOLLOW_shiftExpression_in_relationalExpression4390);
+            	    pushFollow(FOLLOW_shiftExpression_in_relationalExpression4418);
             	    shiftExpression105=shiftExpression();
             	    _fsp--;
 
@@ -4177,7 +4178,7 @@
     };
 
     // $ANTLR start relationalExpressionNoIn
-    // JS.g:1189:1: relationalExpressionNoIn : shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF ) shiftExpression )* ;
+    // JS.g:1193:1: relationalExpressionNoIn : shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF ) shiftExpression )* ;
     public final relationalExpressionNoIn_return relationalExpressionNoIn() throws RecognitionException {
         relationalExpressionNoIn_return retval = new relationalExpressionNoIn_return();
         retval.start = input.LT(1);
@@ -4193,17 +4194,17 @@
         Object set107_tree=null;
 
         try {
-            // JS.g:1190:2: ( shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF ) shiftExpression )* )
-            // JS.g:1190:4: shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF ) shiftExpression )*
+            // JS.g:1194:2: ( shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF ) shiftExpression )* )
+            // JS.g:1194:4: shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF ) shiftExpression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_shiftExpression_in_relationalExpressionNoIn4404);
+            pushFollow(FOLLOW_shiftExpression_in_relationalExpressionNoIn4432);
             shiftExpression106=shiftExpression();
             _fsp--;
 
             adaptor.addChild(root_0, shiftExpression106.getTree());
-            // JS.g:1190:20: ( ( LT | GT | LTE | GTE | INSTANCEOF ) shiftExpression )*
+            // JS.g:1194:20: ( ( LT | GT | LTE | GTE | INSTANCEOF ) shiftExpression )*
             loop25:
             do {
                 int alt25=2;
@@ -4216,7 +4217,7 @@
 
                 switch (alt25) {
             	case 1 :
-            	    // JS.g:1190:22: ( LT | GT | LTE | GTE | INSTANCEOF ) shiftExpression
+            	    // JS.g:1194:22: ( LT | GT | LTE | GTE | INSTANCEOF ) shiftExpression
             	    {
             	    set107=(Token)input.LT(1);
             	    if ( input.LA(1)==INSTANCEOF||(input.LA(1)>=LT && input.LA(1)<=GTE) ) {
@@ -4227,10 +4228,10 @@
             	    else {
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_relationalExpressionNoIn4408);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_relationalExpressionNoIn4436);    throw mse;
             	    }
 
-            	    pushFollow(FOLLOW_shiftExpression_in_relationalExpressionNoIn4431);
+            	    pushFollow(FOLLOW_shiftExpression_in_relationalExpressionNoIn4459);
             	    shiftExpression108=shiftExpression();
             	    _fsp--;
 
@@ -4269,7 +4270,7 @@
     };
 
     // $ANTLR start equalityExpression
-    // JS.g:1197:1: equalityExpression : relationalExpression ( ( EQ | NEQ | SAME | NSAME ) relationalExpression )* ;
+    // JS.g:1201:1: equalityExpression : relationalExpression ( ( EQ | NEQ | SAME | NSAME ) relationalExpression )* ;
     public final equalityExpression_return equalityExpression() throws RecognitionException {
         equalityExpression_return retval = new equalityExpression_return();
         retval.start = input.LT(1);
@@ -4285,17 +4286,17 @@
         Object set110_tree=null;
 
         try {
-            // JS.g:1198:2: ( relationalExpression ( ( EQ | NEQ | SAME | NSAME ) relationalExpression )* )
-            // JS.g:1198:4: relationalExpression ( ( EQ | NEQ | SAME | NSAME ) relationalExpression )*
+            // JS.g:1202:2: ( relationalExpression ( ( EQ | NEQ | SAME | NSAME ) relationalExpression )* )
+            // JS.g:1202:4: relationalExpression ( ( EQ | NEQ | SAME | NSAME ) relationalExpression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_relationalExpression_in_equalityExpression4450);
+            pushFollow(FOLLOW_relationalExpression_in_equalityExpression4478);
             relationalExpression109=relationalExpression();
             _fsp--;
 
             adaptor.addChild(root_0, relationalExpression109.getTree());
-            // JS.g:1198:25: ( ( EQ | NEQ | SAME | NSAME ) relationalExpression )*
+            // JS.g:1202:25: ( ( EQ | NEQ | SAME | NSAME ) relationalExpression )*
             loop26:
             do {
                 int alt26=2;
@@ -4308,7 +4309,7 @@
 
                 switch (alt26) {
             	case 1 :
-            	    // JS.g:1198:27: ( EQ | NEQ | SAME | NSAME ) relationalExpression
+            	    // JS.g:1202:27: ( EQ | NEQ | SAME | NSAME ) relationalExpression
             	    {
             	    set110=(Token)input.LT(1);
             	    if ( (input.LA(1)>=EQ && input.LA(1)<=NSAME) ) {
@@ -4319,10 +4320,10 @@
             	    else {
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_equalityExpression4454);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_equalityExpression4482);    throw mse;
             	    }
 
-            	    pushFollow(FOLLOW_relationalExpression_in_equalityExpression4473);
+            	    pushFollow(FOLLOW_relationalExpression_in_equalityExpression4501);
             	    relationalExpression111=relationalExpression();
             	    _fsp--;
 
@@ -4361,7 +4362,7 @@
     };
 
     // $ANTLR start equalityExpressionNoIn
-    // JS.g:1201:1: equalityExpressionNoIn : relationalExpressionNoIn ( ( EQ | NEQ | SAME | NSAME ) relationalExpressionNoIn )* ;
+    // JS.g:1205:1: equalityExpressionNoIn : relationalExpressionNoIn ( ( EQ | NEQ | SAME | NSAME ) relationalExpressionNoIn )* ;
     public final equalityExpressionNoIn_return equalityExpressionNoIn() throws RecognitionException {
         equalityExpressionNoIn_return retval = new equalityExpressionNoIn_return();
         retval.start = input.LT(1);
@@ -4377,17 +4378,17 @@
         Object set113_tree=null;
 
         try {
-            // JS.g:1202:2: ( relationalExpressionNoIn ( ( EQ | NEQ | SAME | NSAME ) relationalExpressionNoIn )* )
-            // JS.g:1202:4: relationalExpressionNoIn ( ( EQ | NEQ | SAME | NSAME ) relationalExpressionNoIn )*
+            // JS.g:1206:2: ( relationalExpressionNoIn ( ( EQ | NEQ | SAME | NSAME ) relationalExpressionNoIn )* )
+            // JS.g:1206:4: relationalExpressionNoIn ( ( EQ | NEQ | SAME | NSAME ) relationalExpressionNoIn )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_relationalExpressionNoIn_in_equalityExpressionNoIn4487);
+            pushFollow(FOLLOW_relationalExpressionNoIn_in_equalityExpressionNoIn4515);
             relationalExpressionNoIn112=relationalExpressionNoIn();
             _fsp--;
 
             adaptor.addChild(root_0, relationalExpressionNoIn112.getTree());
-            // JS.g:1202:29: ( ( EQ | NEQ | SAME | NSAME ) relationalExpressionNoIn )*
+            // JS.g:1206:29: ( ( EQ | NEQ | SAME | NSAME ) relationalExpressionNoIn )*
             loop27:
             do {
                 int alt27=2;
@@ -4400,7 +4401,7 @@
 
                 switch (alt27) {
             	case 1 :
-            	    // JS.g:1202:31: ( EQ | NEQ | SAME | NSAME ) relationalExpressionNoIn
+            	    // JS.g:1206:31: ( EQ | NEQ | SAME | NSAME ) relationalExpressionNoIn
             	    {
             	    set113=(Token)input.LT(1);
             	    if ( (input.LA(1)>=EQ && input.LA(1)<=NSAME) ) {
@@ -4411,10 +4412,10 @@
             	    else {
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_equalityExpressionNoIn4491);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_equalityExpressionNoIn4519);    throw mse;
             	    }
 
-            	    pushFollow(FOLLOW_relationalExpressionNoIn_in_equalityExpressionNoIn4510);
+            	    pushFollow(FOLLOW_relationalExpressionNoIn_in_equalityExpressionNoIn4538);
             	    relationalExpressionNoIn114=relationalExpressionNoIn();
             	    _fsp--;
 
@@ -4453,7 +4454,7 @@
     };
 
     // $ANTLR start bitwiseANDExpression
-    // JS.g:1209:1: bitwiseANDExpression : equalityExpression ( AND equalityExpression )* ;
+    // JS.g:1213:1: bitwiseANDExpression : equalityExpression ( AND equalityExpression )* ;
     public final bitwiseANDExpression_return bitwiseANDExpression() throws RecognitionException {
         bitwiseANDExpression_return retval = new bitwiseANDExpression_return();
         retval.start = input.LT(1);
@@ -4469,17 +4470,17 @@
         Object AND116_tree=null;
 
         try {
-            // JS.g:1210:2: ( equalityExpression ( AND equalityExpression )* )
-            // JS.g:1210:4: equalityExpression ( AND equalityExpression )*
+            // JS.g:1214:2: ( equalityExpression ( AND equalityExpression )* )
+            // JS.g:1214:4: equalityExpression ( AND equalityExpression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_equalityExpression_in_bitwiseANDExpression4530);
+            pushFollow(FOLLOW_equalityExpression_in_bitwiseANDExpression4558);
             equalityExpression115=equalityExpression();
             _fsp--;
 
             adaptor.addChild(root_0, equalityExpression115.getTree());
-            // JS.g:1210:23: ( AND equalityExpression )*
+            // JS.g:1214:23: ( AND equalityExpression )*
             loop28:
             do {
                 int alt28=2;
@@ -4492,14 +4493,14 @@
 
                 switch (alt28) {
             	case 1 :
-            	    // JS.g:1210:25: AND equalityExpression
+            	    // JS.g:1214:25: AND equalityExpression
             	    {
             	    AND116=(Token)input.LT(1);
-            	    match(input,AND,FOLLOW_AND_in_bitwiseANDExpression4534); 
+            	    match(input,AND,FOLLOW_AND_in_bitwiseANDExpression4562); 
             	    AND116_tree = (Object)adaptor.create(AND116);
             	    root_0 = (Object)adaptor.becomeRoot(AND116_tree, root_0);
 
-            	    pushFollow(FOLLOW_equalityExpression_in_bitwiseANDExpression4537);
+            	    pushFollow(FOLLOW_equalityExpression_in_bitwiseANDExpression4565);
             	    equalityExpression117=equalityExpression();
             	    _fsp--;
 
@@ -4538,7 +4539,7 @@
     };
 
     // $ANTLR start bitwiseANDExpressionNoIn
-    // JS.g:1213:1: bitwiseANDExpressionNoIn : equalityExpressionNoIn ( AND equalityExpressionNoIn )* ;
+    // JS.g:1217:1: bitwiseANDExpressionNoIn : equalityExpressionNoIn ( AND equalityExpressionNoIn )* ;
     public final bitwiseANDExpressionNoIn_return bitwiseANDExpressionNoIn() throws RecognitionException {
         bitwiseANDExpressionNoIn_return retval = new bitwiseANDExpressionNoIn_return();
         retval.start = input.LT(1);
@@ -4554,17 +4555,17 @@
         Object AND119_tree=null;
 
         try {
-            // JS.g:1214:2: ( equalityExpressionNoIn ( AND equalityExpressionNoIn )* )
-            // JS.g:1214:4: equalityExpressionNoIn ( AND equalityExpressionNoIn )*
+            // JS.g:1218:2: ( equalityExpressionNoIn ( AND equalityExpressionNoIn )* )
+            // JS.g:1218:4: equalityExpressionNoIn ( AND equalityExpressionNoIn )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_equalityExpressionNoIn_in_bitwiseANDExpressionNoIn4551);
+            pushFollow(FOLLOW_equalityExpressionNoIn_in_bitwiseANDExpressionNoIn4579);
             equalityExpressionNoIn118=equalityExpressionNoIn();
             _fsp--;
 
             adaptor.addChild(root_0, equalityExpressionNoIn118.getTree());
-            // JS.g:1214:27: ( AND equalityExpressionNoIn )*
+            // JS.g:1218:27: ( AND equalityExpressionNoIn )*
             loop29:
             do {
                 int alt29=2;
@@ -4577,14 +4578,14 @@
 
                 switch (alt29) {
             	case 1 :
-            	    // JS.g:1214:29: AND equalityExpressionNoIn
+            	    // JS.g:1218:29: AND equalityExpressionNoIn
             	    {
             	    AND119=(Token)input.LT(1);
-            	    match(input,AND,FOLLOW_AND_in_bitwiseANDExpressionNoIn4555); 
+            	    match(input,AND,FOLLOW_AND_in_bitwiseANDExpressionNoIn4583); 
             	    AND119_tree = (Object)adaptor.create(AND119);
             	    root_0 = (Object)adaptor.becomeRoot(AND119_tree, root_0);
 
-            	    pushFollow(FOLLOW_equalityExpressionNoIn_in_bitwiseANDExpressionNoIn4558);
+            	    pushFollow(FOLLOW_equalityExpressionNoIn_in_bitwiseANDExpressionNoIn4586);
             	    equalityExpressionNoIn120=equalityExpressionNoIn();
             	    _fsp--;
 
@@ -4623,7 +4624,7 @@
     };
 
     // $ANTLR start bitwiseXORExpression
-    // JS.g:1217:1: bitwiseXORExpression : bitwiseANDExpression ( XOR bitwiseANDExpression )* ;
+    // JS.g:1221:1: bitwiseXORExpression : bitwiseANDExpression ( XOR bitwiseANDExpression )* ;
     public final bitwiseXORExpression_return bitwiseXORExpression() throws RecognitionException {
         bitwiseXORExpression_return retval = new bitwiseXORExpression_return();
         retval.start = input.LT(1);
@@ -4639,17 +4640,17 @@
         Object XOR122_tree=null;
 
         try {
-            // JS.g:1218:2: ( bitwiseANDExpression ( XOR bitwiseANDExpression )* )
-            // JS.g:1218:4: bitwiseANDExpression ( XOR bitwiseANDExpression )*
+            // JS.g:1222:2: ( bitwiseANDExpression ( XOR bitwiseANDExpression )* )
+            // JS.g:1222:4: bitwiseANDExpression ( XOR bitwiseANDExpression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_bitwiseANDExpression_in_bitwiseXORExpression4574);
+            pushFollow(FOLLOW_bitwiseANDExpression_in_bitwiseXORExpression4602);
             bitwiseANDExpression121=bitwiseANDExpression();
             _fsp--;
 
             adaptor.addChild(root_0, bitwiseANDExpression121.getTree());
-            // JS.g:1218:25: ( XOR bitwiseANDExpression )*
+            // JS.g:1222:25: ( XOR bitwiseANDExpression )*
             loop30:
             do {
                 int alt30=2;
@@ -4662,14 +4663,14 @@
 
                 switch (alt30) {
             	case 1 :
-            	    // JS.g:1218:27: XOR bitwiseANDExpression
+            	    // JS.g:1222:27: XOR bitwiseANDExpression
             	    {
             	    XOR122=(Token)input.LT(1);
-            	    match(input,XOR,FOLLOW_XOR_in_bitwiseXORExpression4578); 
+            	    match(input,XOR,FOLLOW_XOR_in_bitwiseXORExpression4606); 
             	    XOR122_tree = (Object)adaptor.create(XOR122);
             	    root_0 = (Object)adaptor.becomeRoot(XOR122_tree, root_0);
 
-            	    pushFollow(FOLLOW_bitwiseANDExpression_in_bitwiseXORExpression4581);
+            	    pushFollow(FOLLOW_bitwiseANDExpression_in_bitwiseXORExpression4609);
             	    bitwiseANDExpression123=bitwiseANDExpression();
             	    _fsp--;
 
@@ -4708,7 +4709,7 @@
     };
 
     // $ANTLR start bitwiseXORExpressionNoIn
-    // JS.g:1221:1: bitwiseXORExpressionNoIn : bitwiseANDExpressionNoIn ( XOR bitwiseANDExpressionNoIn )* ;
+    // JS.g:1225:1: bitwiseXORExpressionNoIn : bitwiseANDExpressionNoIn ( XOR bitwiseANDExpressionNoIn )* ;
     public final bitwiseXORExpressionNoIn_return bitwiseXORExpressionNoIn() throws RecognitionException {
         bitwiseXORExpressionNoIn_return retval = new bitwiseXORExpressionNoIn_return();
         retval.start = input.LT(1);
@@ -4724,17 +4725,17 @@
         Object XOR125_tree=null;
 
         try {
-            // JS.g:1222:2: ( bitwiseANDExpressionNoIn ( XOR bitwiseANDExpressionNoIn )* )
-            // JS.g:1222:4: bitwiseANDExpressionNoIn ( XOR bitwiseANDExpressionNoIn )*
+            // JS.g:1226:2: ( bitwiseANDExpressionNoIn ( XOR bitwiseANDExpressionNoIn )* )
+            // JS.g:1226:4: bitwiseANDExpressionNoIn ( XOR bitwiseANDExpressionNoIn )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_bitwiseANDExpressionNoIn_in_bitwiseXORExpressionNoIn4597);
+            pushFollow(FOLLOW_bitwiseANDExpressionNoIn_in_bitwiseXORExpressionNoIn4625);
             bitwiseANDExpressionNoIn124=bitwiseANDExpressionNoIn();
             _fsp--;
 
             adaptor.addChild(root_0, bitwiseANDExpressionNoIn124.getTree());
-            // JS.g:1222:29: ( XOR bitwiseANDExpressionNoIn )*
+            // JS.g:1226:29: ( XOR bitwiseANDExpressionNoIn )*
             loop31:
             do {
                 int alt31=2;
@@ -4747,14 +4748,14 @@
 
                 switch (alt31) {
             	case 1 :
-            	    // JS.g:1222:31: XOR bitwiseANDExpressionNoIn
+            	    // JS.g:1226:31: XOR bitwiseANDExpressionNoIn
             	    {
             	    XOR125=(Token)input.LT(1);
-            	    match(input,XOR,FOLLOW_XOR_in_bitwiseXORExpressionNoIn4601); 
+            	    match(input,XOR,FOLLOW_XOR_in_bitwiseXORExpressionNoIn4629); 
             	    XOR125_tree = (Object)adaptor.create(XOR125);
             	    root_0 = (Object)adaptor.becomeRoot(XOR125_tree, root_0);
 
-            	    pushFollow(FOLLOW_bitwiseANDExpressionNoIn_in_bitwiseXORExpressionNoIn4604);
+            	    pushFollow(FOLLOW_bitwiseANDExpressionNoIn_in_bitwiseXORExpressionNoIn4632);
             	    bitwiseANDExpressionNoIn126=bitwiseANDExpressionNoIn();
             	    _fsp--;
 
@@ -4793,7 +4794,7 @@
     };
 
     // $ANTLR start bitwiseORExpression
-    // JS.g:1225:1: bitwiseORExpression : bitwiseXORExpression ( OR bitwiseXORExpression )* ;
+    // JS.g:1229:1: bitwiseORExpression : bitwiseXORExpression ( OR bitwiseXORExpression )* ;
     public final bitwiseORExpression_return bitwiseORExpression() throws RecognitionException {
         bitwiseORExpression_return retval = new bitwiseORExpression_return();
         retval.start = input.LT(1);
@@ -4809,17 +4810,17 @@
         Object OR128_tree=null;
 
         try {
-            // JS.g:1226:2: ( bitwiseXORExpression ( OR bitwiseXORExpression )* )
-            // JS.g:1226:4: bitwiseXORExpression ( OR bitwiseXORExpression )*
+            // JS.g:1230:2: ( bitwiseXORExpression ( OR bitwiseXORExpression )* )
+            // JS.g:1230:4: bitwiseXORExpression ( OR bitwiseXORExpression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_bitwiseXORExpression_in_bitwiseORExpression4619);
+            pushFollow(FOLLOW_bitwiseXORExpression_in_bitwiseORExpression4647);
             bitwiseXORExpression127=bitwiseXORExpression();
             _fsp--;
 
             adaptor.addChild(root_0, bitwiseXORExpression127.getTree());
-            // JS.g:1226:25: ( OR bitwiseXORExpression )*
+            // JS.g:1230:25: ( OR bitwiseXORExpression )*
             loop32:
             do {
                 int alt32=2;
@@ -4832,14 +4833,14 @@
 
                 switch (alt32) {
             	case 1 :
-            	    // JS.g:1226:27: OR bitwiseXORExpression
+            	    // JS.g:1230:27: OR bitwiseXORExpression
             	    {
             	    OR128=(Token)input.LT(1);
-            	    match(input,OR,FOLLOW_OR_in_bitwiseORExpression4623); 
+            	    match(input,OR,FOLLOW_OR_in_bitwiseORExpression4651); 
             	    OR128_tree = (Object)adaptor.create(OR128);
             	    root_0 = (Object)adaptor.becomeRoot(OR128_tree, root_0);
 
-            	    pushFollow(FOLLOW_bitwiseXORExpression_in_bitwiseORExpression4626);
+            	    pushFollow(FOLLOW_bitwiseXORExpression_in_bitwiseORExpression4654);
             	    bitwiseXORExpression129=bitwiseXORExpression();
             	    _fsp--;
 
@@ -4878,7 +4879,7 @@
     };
 
     // $ANTLR start bitwiseORExpressionNoIn
-    // JS.g:1229:1: bitwiseORExpressionNoIn : bitwiseXORExpressionNoIn ( OR bitwiseXORExpressionNoIn )* ;
+    // JS.g:1233:1: bitwiseORExpressionNoIn : bitwiseXORExpressionNoIn ( OR bitwiseXORExpressionNoIn )* ;
     public final bitwiseORExpressionNoIn_return bitwiseORExpressionNoIn() throws RecognitionException {
         bitwiseORExpressionNoIn_return retval = new bitwiseORExpressionNoIn_return();
         retval.start = input.LT(1);
@@ -4894,17 +4895,17 @@
         Object OR131_tree=null;
 
         try {
-            // JS.g:1230:2: ( bitwiseXORExpressionNoIn ( OR bitwiseXORExpressionNoIn )* )
-            // JS.g:1230:4: bitwiseXORExpressionNoIn ( OR bitwiseXORExpressionNoIn )*
+            // JS.g:1234:2: ( bitwiseXORExpressionNoIn ( OR bitwiseXORExpressionNoIn )* )
+            // JS.g:1234:4: bitwiseXORExpressionNoIn ( OR bitwiseXORExpressionNoIn )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_bitwiseXORExpressionNoIn_in_bitwiseORExpressionNoIn4641);
+            pushFollow(FOLLOW_bitwiseXORExpressionNoIn_in_bitwiseORExpressionNoIn4669);
             bitwiseXORExpressionNoIn130=bitwiseXORExpressionNoIn();
             _fsp--;
 
             adaptor.addChild(root_0, bitwiseXORExpressionNoIn130.getTree());
-            // JS.g:1230:29: ( OR bitwiseXORExpressionNoIn )*
+            // JS.g:1234:29: ( OR bitwiseXORExpressionNoIn )*
             loop33:
             do {
                 int alt33=2;
@@ -4917,14 +4918,14 @@
 
                 switch (alt33) {
             	case 1 :
-            	    // JS.g:1230:31: OR bitwiseXORExpressionNoIn
+            	    // JS.g:1234:31: OR bitwiseXORExpressionNoIn
             	    {
             	    OR131=(Token)input.LT(1);
-            	    match(input,OR,FOLLOW_OR_in_bitwiseORExpressionNoIn4645); 
+            	    match(input,OR,FOLLOW_OR_in_bitwiseORExpressionNoIn4673); 
             	    OR131_tree = (Object)adaptor.create(OR131);
             	    root_0 = (Object)adaptor.becomeRoot(OR131_tree, root_0);
 
-            	    pushFollow(FOLLOW_bitwiseXORExpressionNoIn_in_bitwiseORExpressionNoIn4648);
+            	    pushFollow(FOLLOW_bitwiseXORExpressionNoIn_in_bitwiseORExpressionNoIn4676);
             	    bitwiseXORExpressionNoIn132=bitwiseXORExpressionNoIn();
             	    _fsp--;
 
@@ -4963,7 +4964,7 @@
     };
 
     // $ANTLR start logicalANDExpression
-    // JS.g:1237:1: logicalANDExpression : bitwiseORExpression ( LAND bitwiseORExpression )* ;
+    // JS.g:1241:1: logicalANDExpression : bitwiseORExpression ( LAND bitwiseORExpression )* ;
     public final logicalANDExpression_return logicalANDExpression() throws RecognitionException {
         logicalANDExpression_return retval = new logicalANDExpression_return();
         retval.start = input.LT(1);
@@ -4979,17 +4980,17 @@
         Object LAND134_tree=null;
 
         try {
-            // JS.g:1238:2: ( bitwiseORExpression ( LAND bitwiseORExpression )* )
-            // JS.g:1238:4: bitwiseORExpression ( LAND bitwiseORExpression )*
+            // JS.g:1242:2: ( bitwiseORExpression ( LAND bitwiseORExpression )* )
+            // JS.g:1242:4: bitwiseORExpression ( LAND bitwiseORExpression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_bitwiseORExpression_in_logicalANDExpression4667);
+            pushFollow(FOLLOW_bitwiseORExpression_in_logicalANDExpression4695);
             bitwiseORExpression133=bitwiseORExpression();
             _fsp--;
 
             adaptor.addChild(root_0, bitwiseORExpression133.getTree());
-            // JS.g:1238:24: ( LAND bitwiseORExpression )*
+            // JS.g:1242:24: ( LAND bitwiseORExpression )*
             loop34:
             do {
                 int alt34=2;
@@ -5002,14 +5003,14 @@
 
                 switch (alt34) {
             	case 1 :
-            	    // JS.g:1238:26: LAND bitwiseORExpression
+            	    // JS.g:1242:26: LAND bitwiseORExpression
             	    {
             	    LAND134=(Token)input.LT(1);
-            	    match(input,LAND,FOLLOW_LAND_in_logicalANDExpression4671); 
+            	    match(input,LAND,FOLLOW_LAND_in_logicalANDExpression4699); 
             	    LAND134_tree = (Object)adaptor.create(LAND134);
             	    root_0 = (Object)adaptor.becomeRoot(LAND134_tree, root_0);
 
-            	    pushFollow(FOLLOW_bitwiseORExpression_in_logicalANDExpression4674);
+            	    pushFollow(FOLLOW_bitwiseORExpression_in_logicalANDExpression4702);
             	    bitwiseORExpression135=bitwiseORExpression();
             	    _fsp--;
 
@@ -5048,7 +5049,7 @@
     };
 
     // $ANTLR start logicalANDExpressionNoIn
-    // JS.g:1241:1: logicalANDExpressionNoIn : bitwiseORExpressionNoIn ( LAND bitwiseORExpressionNoIn )* ;
+    // JS.g:1245:1: logicalANDExpressionNoIn : bitwiseORExpressionNoIn ( LAND bitwiseORExpressionNoIn )* ;
     public final logicalANDExpressionNoIn_return logicalANDExpressionNoIn() throws RecognitionException {
         logicalANDExpressionNoIn_return retval = new logicalANDExpressionNoIn_return();
         retval.start = input.LT(1);
@@ -5064,17 +5065,17 @@
         Object LAND137_tree=null;
 
         try {
-            // JS.g:1242:2: ( bitwiseORExpressionNoIn ( LAND bitwiseORExpressionNoIn )* )
-            // JS.g:1242:4: bitwiseORExpressionNoIn ( LAND bitwiseORExpressionNoIn )*
+            // JS.g:1246:2: ( bitwiseORExpressionNoIn ( LAND bitwiseORExpressionNoIn )* )
+            // JS.g:1246:4: bitwiseORExpressionNoIn ( LAND bitwiseORExpressionNoIn )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_bitwiseORExpressionNoIn_in_logicalANDExpressionNoIn4688);
+            pushFollow(FOLLOW_bitwiseORExpressionNoIn_in_logicalANDExpressionNoIn4716);
             bitwiseORExpressionNoIn136=bitwiseORExpressionNoIn();
             _fsp--;
 
             adaptor.addChild(root_0, bitwiseORExpressionNoIn136.getTree());
-            // JS.g:1242:28: ( LAND bitwiseORExpressionNoIn )*
+            // JS.g:1246:28: ( LAND bitwiseORExpressionNoIn )*
             loop35:
             do {
                 int alt35=2;
@@ -5087,14 +5088,14 @@
 
                 switch (alt35) {
             	case 1 :
-            	    // JS.g:1242:30: LAND bitwiseORExpressionNoIn
+            	    // JS.g:1246:30: LAND bitwiseORExpressionNoIn
             	    {
             	    LAND137=(Token)input.LT(1);
-            	    match(input,LAND,FOLLOW_LAND_in_logicalANDExpressionNoIn4692); 
+            	    match(input,LAND,FOLLOW_LAND_in_logicalANDExpressionNoIn4720); 
             	    LAND137_tree = (Object)adaptor.create(LAND137);
             	    root_0 = (Object)adaptor.becomeRoot(LAND137_tree, root_0);
 
-            	    pushFollow(FOLLOW_bitwiseORExpressionNoIn_in_logicalANDExpressionNoIn4695);
+            	    pushFollow(FOLLOW_bitwiseORExpressionNoIn_in_logicalANDExpressionNoIn4723);
             	    bitwiseORExpressionNoIn138=bitwiseORExpressionNoIn();
             	    _fsp--;
 
@@ -5133,7 +5134,7 @@
     };
 
     // $ANTLR start logicalORExpression
-    // JS.g:1245:1: logicalORExpression : logicalANDExpression ( LOR logicalANDExpression )* ;
+    // JS.g:1249:1: logicalORExpression : logicalANDExpression ( LOR logicalANDExpression )* ;
     public final logicalORExpression_return logicalORExpression() throws RecognitionException {
         logicalORExpression_return retval = new logicalORExpression_return();
         retval.start = input.LT(1);
@@ -5149,17 +5150,17 @@
         Object LOR140_tree=null;
 
         try {
-            // JS.g:1246:2: ( logicalANDExpression ( LOR logicalANDExpression )* )
-            // JS.g:1246:4: logicalANDExpression ( LOR logicalANDExpression )*
+            // JS.g:1250:2: ( logicalANDExpression ( LOR logicalANDExpression )* )
+            // JS.g:1250:4: logicalANDExpression ( LOR logicalANDExpression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_logicalANDExpression_in_logicalORExpression4710);
+            pushFollow(FOLLOW_logicalANDExpression_in_logicalORExpression4738);
             logicalANDExpression139=logicalANDExpression();
             _fsp--;
 
             adaptor.addChild(root_0, logicalANDExpression139.getTree());
-            // JS.g:1246:25: ( LOR logicalANDExpression )*
+            // JS.g:1250:25: ( LOR logicalANDExpression )*
             loop36:
             do {
                 int alt36=2;
@@ -5172,14 +5173,14 @@
 
                 switch (alt36) {
             	case 1 :
-            	    // JS.g:1246:27: LOR logicalANDExpression
+            	    // JS.g:1250:27: LOR logicalANDExpression
             	    {
             	    LOR140=(Token)input.LT(1);
-            	    match(input,LOR,FOLLOW_LOR_in_logicalORExpression4714); 
+            	    match(input,LOR,FOLLOW_LOR_in_logicalORExpression4742); 
             	    LOR140_tree = (Object)adaptor.create(LOR140);
             	    root_0 = (Object)adaptor.becomeRoot(LOR140_tree, root_0);
 
-            	    pushFollow(FOLLOW_logicalANDExpression_in_logicalORExpression4717);
+            	    pushFollow(FOLLOW_logicalANDExpression_in_logicalORExpression4745);
             	    logicalANDExpression141=logicalANDExpression();
             	    _fsp--;
 
@@ -5218,7 +5219,7 @@
     };
 
     // $ANTLR start logicalORExpressionNoIn
-    // JS.g:1249:1: logicalORExpressionNoIn : logicalANDExpressionNoIn ( LOR logicalANDExpressionNoIn )* ;
+    // JS.g:1253:1: logicalORExpressionNoIn : logicalANDExpressionNoIn ( LOR logicalANDExpressionNoIn )* ;
     public final logicalORExpressionNoIn_return logicalORExpressionNoIn() throws RecognitionException {
         logicalORExpressionNoIn_return retval = new logicalORExpressionNoIn_return();
         retval.start = input.LT(1);
@@ -5234,17 +5235,17 @@
         Object LOR143_tree=null;
 
         try {
-            // JS.g:1250:2: ( logicalANDExpressionNoIn ( LOR logicalANDExpressionNoIn )* )
-            // JS.g:1250:4: logicalANDExpressionNoIn ( LOR logicalANDExpressionNoIn )*
+            // JS.g:1254:2: ( logicalANDExpressionNoIn ( LOR logicalANDExpressionNoIn )* )
+            // JS.g:1254:4: logicalANDExpressionNoIn ( LOR logicalANDExpressionNoIn )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_logicalANDExpressionNoIn_in_logicalORExpressionNoIn4732);
+            pushFollow(FOLLOW_logicalANDExpressionNoIn_in_logicalORExpressionNoIn4760);
             logicalANDExpressionNoIn142=logicalANDExpressionNoIn();
             _fsp--;
 
             adaptor.addChild(root_0, logicalANDExpressionNoIn142.getTree());
-            // JS.g:1250:29: ( LOR logicalANDExpressionNoIn )*
+            // JS.g:1254:29: ( LOR logicalANDExpressionNoIn )*
             loop37:
             do {
                 int alt37=2;
@@ -5257,14 +5258,14 @@
 
                 switch (alt37) {
             	case 1 :
-            	    // JS.g:1250:31: LOR logicalANDExpressionNoIn
+            	    // JS.g:1254:31: LOR logicalANDExpressionNoIn
             	    {
             	    LOR143=(Token)input.LT(1);
-            	    match(input,LOR,FOLLOW_LOR_in_logicalORExpressionNoIn4736); 
+            	    match(input,LOR,FOLLOW_LOR_in_logicalORExpressionNoIn4764); 
             	    LOR143_tree = (Object)adaptor.create(LOR143);
             	    root_0 = (Object)adaptor.becomeRoot(LOR143_tree, root_0);
 
-            	    pushFollow(FOLLOW_logicalANDExpressionNoIn_in_logicalORExpressionNoIn4739);
+            	    pushFollow(FOLLOW_logicalANDExpressionNoIn_in_logicalORExpressionNoIn4767);
             	    logicalANDExpressionNoIn144=logicalANDExpressionNoIn();
             	    _fsp--;
 
@@ -5303,7 +5304,7 @@
     };
 
     // $ANTLR start conditionalExpression
-    // JS.g:1257:1: conditionalExpression : logicalORExpression ( QUE assignmentExpression COLON assignmentExpression )? ;
+    // JS.g:1261:1: conditionalExpression : logicalORExpression ( QUE assignmentExpression COLON assignmentExpression )? ;
     public final conditionalExpression_return conditionalExpression() throws RecognitionException {
         conditionalExpression_return retval = new conditionalExpression_return();
         retval.start = input.LT(1);
@@ -5323,17 +5324,17 @@
         Object COLON148_tree=null;
 
         try {
-            // JS.g:1258:2: ( logicalORExpression ( QUE assignmentExpression COLON assignmentExpression )? )
-            // JS.g:1258:4: logicalORExpression ( QUE assignmentExpression COLON assignmentExpression )?
+            // JS.g:1262:2: ( logicalORExpression ( QUE assignmentExpression COLON assignmentExpression )? )
+            // JS.g:1262:4: logicalORExpression ( QUE assignmentExpression COLON assignmentExpression )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_logicalORExpression_in_conditionalExpression4758);
+            pushFollow(FOLLOW_logicalORExpression_in_conditionalExpression4786);
             logicalORExpression145=logicalORExpression();
             _fsp--;
 
             adaptor.addChild(root_0, logicalORExpression145.getTree());
-            // JS.g:1258:24: ( QUE assignmentExpression COLON assignmentExpression )?
+            // JS.g:1262:24: ( QUE assignmentExpression COLON assignmentExpression )?
             int alt38=2;
             int LA38_0 = input.LA(1);
 
@@ -5342,21 +5343,21 @@
             }
             switch (alt38) {
                 case 1 :
-                    // JS.g:1258:26: QUE assignmentExpression COLON assignmentExpression
+                    // JS.g:1262:26: QUE assignmentExpression COLON assignmentExpression
                     {
                     QUE146=(Token)input.LT(1);
-                    match(input,QUE,FOLLOW_QUE_in_conditionalExpression4762); 
+                    match(input,QUE,FOLLOW_QUE_in_conditionalExpression4790); 
                     QUE146_tree = (Object)adaptor.create(QUE146);
                     root_0 = (Object)adaptor.becomeRoot(QUE146_tree, root_0);
 
-                    pushFollow(FOLLOW_assignmentExpression_in_conditionalExpression4765);
+                    pushFollow(FOLLOW_assignmentExpression_in_conditionalExpression4793);
                     assignmentExpression147=assignmentExpression();
                     _fsp--;
 
                     adaptor.addChild(root_0, assignmentExpression147.getTree());
                     COLON148=(Token)input.LT(1);
-                    match(input,COLON,FOLLOW_COLON_in_conditionalExpression4767); 
-                    pushFollow(FOLLOW_assignmentExpression_in_conditionalExpression4770);
+                    match(input,COLON,FOLLOW_COLON_in_conditionalExpression4795); 
+                    pushFollow(FOLLOW_assignmentExpression_in_conditionalExpression4798);
                     assignmentExpression149=assignmentExpression();
                     _fsp--;
 
@@ -5392,7 +5393,7 @@
     };
 
     // $ANTLR start conditionalExpressionNoIn
-    // JS.g:1261:1: conditionalExpressionNoIn : logicalORExpressionNoIn ( QUE assignmentExpressionNoIn COLON assignmentExpressionNoIn )? ;
+    // JS.g:1265:1: conditionalExpressionNoIn : logicalORExpressionNoIn ( QUE assignmentExpressionNoIn COLON assignmentExpressionNoIn )? ;
     public final conditionalExpressionNoIn_return conditionalExpressionNoIn() throws RecognitionException {
         conditionalExpressionNoIn_return retval = new conditionalExpressionNoIn_return();
         retval.start = input.LT(1);
@@ -5412,17 +5413,17 @@
         Object COLON153_tree=null;
 
         try {
-            // JS.g:1262:2: ( logicalORExpressionNoIn ( QUE assignmentExpressionNoIn COLON assignmentExpressionNoIn )? )
-            // JS.g:1262:4: logicalORExpressionNoIn ( QUE assignmentExpressionNoIn COLON assignmentExpressionNoIn )?
+            // JS.g:1266:2: ( logicalORExpressionNoIn ( QUE assignmentExpressionNoIn COLON assignmentExpressionNoIn )? )
+            // JS.g:1266:4: logicalORExpressionNoIn ( QUE assignmentExpressionNoIn COLON assignmentExpressionNoIn )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_logicalORExpressionNoIn_in_conditionalExpressionNoIn4784);
+            pushFollow(FOLLOW_logicalORExpressionNoIn_in_conditionalExpressionNoIn4812);
             logicalORExpressionNoIn150=logicalORExpressionNoIn();
             _fsp--;
 
             adaptor.addChild(root_0, logicalORExpressionNoIn150.getTree());
-            // JS.g:1262:28: ( QUE assignmentExpressionNoIn COLON assignmentExpressionNoIn )?
+            // JS.g:1266:28: ( QUE assignmentExpressionNoIn COLON assignmentExpressionNoIn )?
             int alt39=2;
             int LA39_0 = input.LA(1);
 
@@ -5431,21 +5432,21 @@
             }
             switch (alt39) {
                 case 1 :
-                    // JS.g:1262:30: QUE assignmentExpressionNoIn COLON assignmentExpressionNoIn
+                    // JS.g:1266:30: QUE assignmentExpressionNoIn COLON assignmentExpressionNoIn
                     {
                     QUE151=(Token)input.LT(1);
-                    match(input,QUE,FOLLOW_QUE_in_conditionalExpressionNoIn4788); 
+                    match(input,QUE,FOLLOW_QUE_in_conditionalExpressionNoIn4816); 
                     QUE151_tree = (Object)adaptor.create(QUE151);
                     root_0 = (Object)adaptor.becomeRoot(QUE151_tree, root_0);
 
-                    pushFollow(FOLLOW_assignmentExpressionNoIn_in_conditionalExpressionNoIn4791);
+                    pushFollow(FOLLOW_assignmentExpressionNoIn_in_conditionalExpressionNoIn4819);
                     assignmentExpressionNoIn152=assignmentExpressionNoIn();
                     _fsp--;
 
                     adaptor.addChild(root_0, assignmentExpressionNoIn152.getTree());
                     COLON153=(Token)input.LT(1);
-                    match(input,COLON,FOLLOW_COLON_in_conditionalExpressionNoIn4793); 
-                    pushFollow(FOLLOW_assignmentExpressionNoIn_in_conditionalExpressionNoIn4796);
+                    match(input,COLON,FOLLOW_COLON_in_conditionalExpressionNoIn4821); 
+                    pushFollow(FOLLOW_assignmentExpressionNoIn_in_conditionalExpressionNoIn4824);
                     assignmentExpressionNoIn154=assignmentExpressionNoIn();
                     _fsp--;
 
@@ -5481,7 +5482,7 @@
     };
 
     // $ANTLR start assignmentExpression
-    // JS.g:1291:1: assignmentExpression : lhs= conditionalExpression ({...}? assignmentOperator assignmentExpression )? ;
+    // JS.g:1295:1: assignmentExpression : lhs= conditionalExpression ({...}? assignmentOperator assignmentExpression )? ;
     public final assignmentExpression_return assignmentExpression() throws RecognitionException {
         assignmentExpression_return retval = new assignmentExpression_return();
         retval.start = input.LT(1);
@@ -5496,21 +5497,21 @@
 
 
 
-
+        
         	Object[] isLhs = new Object[1];
 
         try {
-            // JS.g:1296:2: (lhs= conditionalExpression ({...}? assignmentOperator assignmentExpression )? )
-            // JS.g:1296:4: lhs= conditionalExpression ({...}? assignmentOperator assignmentExpression )?
+            // JS.g:1300:2: (lhs= conditionalExpression ({...}? assignmentOperator assignmentExpression )? )
+            // JS.g:1300:4: lhs= conditionalExpression ({...}? assignmentOperator assignmentExpression )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_conditionalExpression_in_assignmentExpression4824);
+            pushFollow(FOLLOW_conditionalExpression_in_assignmentExpression4852);
             lhs=conditionalExpression();
             _fsp--;
 
             adaptor.addChild(root_0, lhs.getTree());
-            // JS.g:1297:2: ({...}? assignmentOperator assignmentExpression )?
+            // JS.g:1301:2: ({...}? assignmentOperator assignmentExpression )?
             int alt40=2;
             int LA40_0 = input.LA(1);
 
@@ -5523,17 +5524,17 @@
             }
             switch (alt40) {
                 case 1 :
-                    // JS.g:1297:4: {...}? assignmentOperator assignmentExpression
+                    // JS.g:1301:4: {...}? assignmentOperator assignmentExpression
                     {
                     if ( !( isLeftHandSideAssign(lhs, isLhs) ) ) {
                         throw new FailedPredicateException(input, "assignmentExpression", " isLeftHandSideAssign(lhs, isLhs) ");
                     }
-                    pushFollow(FOLLOW_assignmentOperator_in_assignmentExpression4831);
+                    pushFollow(FOLLOW_assignmentOperator_in_assignmentExpression4859);
                     assignmentOperator155=assignmentOperator();
                     _fsp--;
 
                     root_0 = (Object)adaptor.becomeRoot(assignmentOperator155.getTree(), root_0);
-                    pushFollow(FOLLOW_assignmentExpression_in_assignmentExpression4834);
+                    pushFollow(FOLLOW_assignmentExpression_in_assignmentExpression4862);
                     assignmentExpression156=assignmentExpression();
                     _fsp--;
 
@@ -5569,7 +5570,7 @@
     };
 
     // $ANTLR start assignmentOperator
-    // JS.g:1300:1: assignmentOperator : ( ASSIGN | MULASS | DIVASS | MODASS | ADDASS | SUBASS | SHLASS | SHRASS | SHUASS | ANDASS | XORASS | ORASS );
+    // JS.g:1304:1: assignmentOperator : ( ASSIGN | MULASS | DIVASS | MODASS | ADDASS | SUBASS | SHLASS | SHRASS | SHUASS | ANDASS | XORASS | ORASS );
     public final assignmentOperator_return assignmentOperator() throws RecognitionException {
         assignmentOperator_return retval = new assignmentOperator_return();
         retval.start = input.LT(1);
@@ -5581,7 +5582,7 @@
         Object set157_tree=null;
 
         try {
-            // JS.g:1301:3: ( ASSIGN | MULASS | DIVASS | MODASS | ADDASS | SUBASS | SHLASS | SHRASS | SHUASS | ANDASS | XORASS | ORASS )
+            // JS.g:1305:3: ( ASSIGN | MULASS | DIVASS | MODASS | ADDASS | SUBASS | SHLASS | SHRASS | SHUASS | ANDASS | XORASS | ORASS )
             // JS.g:
             {
             root_0 = (Object)adaptor.nil();
@@ -5623,7 +5624,7 @@
     };
 
     // $ANTLR start assignmentExpressionNoIn
-    // JS.g:1304:1: assignmentExpressionNoIn : lhs= conditionalExpressionNoIn ({...}? assignmentOperator assignmentExpressionNoIn )? ;
+    // JS.g:1308:1: assignmentExpressionNoIn : lhs= conditionalExpressionNoIn ({...}? assignmentOperator assignmentExpressionNoIn )? ;
     public final assignmentExpressionNoIn_return assignmentExpressionNoIn() throws RecognitionException {
         assignmentExpressionNoIn_return retval = new assignmentExpressionNoIn_return();
         retval.start = input.LT(1);
@@ -5638,21 +5639,21 @@
 
 
 
-
+        
         	Object[] isLhs = new Object[1];
 
         try {
-            // JS.g:1309:2: (lhs= conditionalExpressionNoIn ({...}? assignmentOperator assignmentExpressionNoIn )? )
-            // JS.g:1309:4: lhs= conditionalExpressionNoIn ({...}? assignmentOperator assignmentExpressionNoIn )?
+            // JS.g:1313:2: (lhs= conditionalExpressionNoIn ({...}? assignmentOperator assignmentExpressionNoIn )? )
+            // JS.g:1313:4: lhs= conditionalExpressionNoIn ({...}? assignmentOperator assignmentExpressionNoIn )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_conditionalExpressionNoIn_in_assignmentExpressionNoIn4912);
+            pushFollow(FOLLOW_conditionalExpressionNoIn_in_assignmentExpressionNoIn4940);
             lhs=conditionalExpressionNoIn();
             _fsp--;
 
             adaptor.addChild(root_0, lhs.getTree());
-            // JS.g:1310:2: ({...}? assignmentOperator assignmentExpressionNoIn )?
+            // JS.g:1314:2: ({...}? assignmentOperator assignmentExpressionNoIn )?
             int alt41=2;
             int LA41_0 = input.LA(1);
 
@@ -5665,17 +5666,17 @@
             }
             switch (alt41) {
                 case 1 :
-                    // JS.g:1310:4: {...}? assignmentOperator assignmentExpressionNoIn
+                    // JS.g:1314:4: {...}? assignmentOperator assignmentExpressionNoIn
                     {
                     if ( !( isLeftHandSideAssign(lhs, isLhs) ) ) {
                         throw new FailedPredicateException(input, "assignmentExpressionNoIn", " isLeftHandSideAssign(lhs, isLhs) ");
                     }
-                    pushFollow(FOLLOW_assignmentOperator_in_assignmentExpressionNoIn4919);
+                    pushFollow(FOLLOW_assignmentOperator_in_assignmentExpressionNoIn4947);
                     assignmentOperator158=assignmentOperator();
                     _fsp--;
 
                     root_0 = (Object)adaptor.becomeRoot(assignmentOperator158.getTree(), root_0);
-                    pushFollow(FOLLOW_assignmentExpressionNoIn_in_assignmentExpressionNoIn4922);
+                    pushFollow(FOLLOW_assignmentExpressionNoIn_in_assignmentExpressionNoIn4950);
                     assignmentExpressionNoIn159=assignmentExpressionNoIn();
                     _fsp--;
 
@@ -5711,7 +5712,7 @@
     };
 
     // $ANTLR start expression
-    // JS.g:1317:1: expression : exprs+= assignmentExpression ( COMMA exprs+= assignmentExpression )* -> { $exprs.size() > 1 }? ^( CEXPR ( $exprs)+ ) -> $exprs;
+    // JS.g:1321:1: expression : exprs+= assignmentExpression ( COMMA exprs+= assignmentExpression )* -> { $exprs.size() > 1 }? ^( CEXPR ( $exprs)+ ) -> $exprs;
     public final expression_return expression() throws RecognitionException {
         expression_return retval = new expression_return();
         retval.start = input.LT(1);
@@ -5725,10 +5726,10 @@
         RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
         RewriteRuleSubtreeStream stream_assignmentExpression=new RewriteRuleSubtreeStream(adaptor,"rule assignmentExpression");
         try {
-            // JS.g:1318:2: (exprs+= assignmentExpression ( COMMA exprs+= assignmentExpression )* -> { $exprs.size() > 1 }? ^( CEXPR ( $exprs)+ ) -> $exprs)
-            // JS.g:1318:4: exprs+= assignmentExpression ( COMMA exprs+= assignmentExpression )*
+            // JS.g:1322:2: (exprs+= assignmentExpression ( COMMA exprs+= assignmentExpression )* -> { $exprs.size() > 1 }? ^( CEXPR ( $exprs)+ ) -> $exprs)
+            // JS.g:1322:4: exprs+= assignmentExpression ( COMMA exprs+= assignmentExpression )*
             {
-            pushFollow(FOLLOW_assignmentExpression_in_expression4944);
+            pushFollow(FOLLOW_assignmentExpression_in_expression4972);
             exprs=assignmentExpression();
             _fsp--;
 
@@ -5736,7 +5737,7 @@
             if (list_exprs==null) list_exprs=new ArrayList();
             list_exprs.add(exprs);
 
-            // JS.g:1318:32: ( COMMA exprs+= assignmentExpression )*
+            // JS.g:1322:32: ( COMMA exprs+= assignmentExpression )*
             loop42:
             do {
                 int alt42=2;
@@ -5749,13 +5750,13 @@
 
                 switch (alt42) {
             	case 1 :
-            	    // JS.g:1318:34: COMMA exprs+= assignmentExpression
+            	    // JS.g:1322:34: COMMA exprs+= assignmentExpression
             	    {
             	    COMMA160=(Token)input.LT(1);
-            	    match(input,COMMA,FOLLOW_COMMA_in_expression4948); 
+            	    match(input,COMMA,FOLLOW_COMMA_in_expression4976); 
             	    stream_COMMA.add(COMMA160);
 
-            	    pushFollow(FOLLOW_assignmentExpression_in_expression4952);
+            	    pushFollow(FOLLOW_assignmentExpression_in_expression4980);
             	    exprs=assignmentExpression();
             	    _fsp--;
 
@@ -5783,9 +5784,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
             RewriteRuleSubtreeStream stream_exprs=new RewriteRuleSubtreeStream(adaptor,"token exprs",list_exprs);
             root_0 = (Object)adaptor.nil();
-            // 1319:2: -> { $exprs.size() > 1 }? ^( CEXPR ( $exprs)+ )
+            // 1323:2: -> { $exprs.size() > 1 }? ^( CEXPR ( $exprs)+ )
             if ( list_exprs.size() > 1 ) {
-                // JS.g:1319:28: ^( CEXPR ( $exprs)+ )
+                // JS.g:1323:28: ^( CEXPR ( $exprs)+ )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(CEXPR, "CEXPR"), root_1);
@@ -5803,7 +5804,7 @@
                 }
 
             }
-            else // 1320:2: -> $exprs
+            else // 1324:2: -> $exprs
             {
                 adaptor.addChild(root_0, ((ParserRuleReturnScope)stream_exprs.next()).getTree());
 
@@ -5835,7 +5836,7 @@
     };
 
     // $ANTLR start expressionNoIn
-    // JS.g:1323:1: expressionNoIn : exprs+= assignmentExpressionNoIn ( COMMA exprs+= assignmentExpressionNoIn )* -> { $exprs.size() > 1 }? ^( CEXPR ( $exprs)+ ) -> $exprs;
+    // JS.g:1327:1: expressionNoIn : exprs+= assignmentExpressionNoIn ( COMMA exprs+= assignmentExpressionNoIn )* -> { $exprs.size() > 1 }? ^( CEXPR ( $exprs)+ ) -> $exprs;
     public final expressionNoIn_return expressionNoIn() throws RecognitionException {
         expressionNoIn_return retval = new expressionNoIn_return();
         retval.start = input.LT(1);
@@ -5849,10 +5850,10 @@
         RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
         RewriteRuleSubtreeStream stream_assignmentExpressionNoIn=new RewriteRuleSubtreeStream(adaptor,"rule assignmentExpressionNoIn");
         try {
-            // JS.g:1324:2: (exprs+= assignmentExpressionNoIn ( COMMA exprs+= assignmentExpressionNoIn )* -> { $exprs.size() > 1 }? ^( CEXPR ( $exprs)+ ) -> $exprs)
-            // JS.g:1324:4: exprs+= assignmentExpressionNoIn ( COMMA exprs+= assignmentExpressionNoIn )*
+            // JS.g:1328:2: (exprs+= assignmentExpressionNoIn ( COMMA exprs+= assignmentExpressionNoIn )* -> { $exprs.size() > 1 }? ^( CEXPR ( $exprs)+ ) -> $exprs)
+            // JS.g:1328:4: exprs+= assignmentExpressionNoIn ( COMMA exprs+= assignmentExpressionNoIn )*
             {
-            pushFollow(FOLLOW_assignmentExpressionNoIn_in_expressionNoIn4989);
+            pushFollow(FOLLOW_assignmentExpressionNoIn_in_expressionNoIn5017);
             exprs=assignmentExpressionNoIn();
             _fsp--;
 
@@ -5860,7 +5861,7 @@
             if (list_exprs==null) list_exprs=new ArrayList();
             list_exprs.add(exprs);
 
-            // JS.g:1324:36: ( COMMA exprs+= assignmentExpressionNoIn )*
+            // JS.g:1328:36: ( COMMA exprs+= assignmentExpressionNoIn )*
             loop43:
             do {
                 int alt43=2;
@@ -5873,13 +5874,13 @@
 
                 switch (alt43) {
             	case 1 :
-            	    // JS.g:1324:38: COMMA exprs+= assignmentExpressionNoIn
+            	    // JS.g:1328:38: COMMA exprs+= assignmentExpressionNoIn
             	    {
             	    COMMA161=(Token)input.LT(1);
-            	    match(input,COMMA,FOLLOW_COMMA_in_expressionNoIn4993); 
+            	    match(input,COMMA,FOLLOW_COMMA_in_expressionNoIn5021); 
             	    stream_COMMA.add(COMMA161);
 
-            	    pushFollow(FOLLOW_assignmentExpressionNoIn_in_expressionNoIn4997);
+            	    pushFollow(FOLLOW_assignmentExpressionNoIn_in_expressionNoIn5025);
             	    exprs=assignmentExpressionNoIn();
             	    _fsp--;
 
@@ -5907,9 +5908,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
             RewriteRuleSubtreeStream stream_exprs=new RewriteRuleSubtreeStream(adaptor,"token exprs",list_exprs);
             root_0 = (Object)adaptor.nil();
-            // 1325:2: -> { $exprs.size() > 1 }? ^( CEXPR ( $exprs)+ )
+            // 1329:2: -> { $exprs.size() > 1 }? ^( CEXPR ( $exprs)+ )
             if ( list_exprs.size() > 1 ) {
-                // JS.g:1325:28: ^( CEXPR ( $exprs)+ )
+                // JS.g:1329:28: ^( CEXPR ( $exprs)+ )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(CEXPR, "CEXPR"), root_1);
@@ -5927,7 +5928,7 @@
                 }
 
             }
-            else // 1326:2: -> $exprs
+            else // 1330:2: -> $exprs
             {
                 adaptor.addChild(root_0, ((ParserRuleReturnScope)stream_exprs.next()).getTree());
 
@@ -5959,7 +5960,7 @@
     };
 
     // $ANTLR start semic
-    // JS.g:1351:1: semic : ( SEMIC | EOF | RBRACE | EOL | MultiLineComment );
+    // JS.g:1355:1: semic : ( SEMIC | EOF | RBRACE | EOL | MultiLineComment );
     public final semic_return semic() throws RecognitionException {
         semic_return retval = new semic_return();
         retval.start = input.LT(1);
@@ -5978,14 +5979,14 @@
         Object EOL165_tree=null;
         Object MultiLineComment166_tree=null;
 
-
+        
         	// Mark current position so we can unconsume a RBRACE.
         	int marker = input.mark();
         	// Promote EOL if appropriate	
         	promoteEOL(retval);
 
         try {
-            // JS.g:1359:2: ( SEMIC | EOF | RBRACE | EOL | MultiLineComment )
+            // JS.g:1363:2: ( SEMIC | EOF | RBRACE | EOL | MultiLineComment )
             int alt44=5;
             switch ( input.LA(1) ) {
             case SEMIC:
@@ -6015,19 +6016,19 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("1351:1: semic : ( SEMIC | EOF | RBRACE | EOL | MultiLineComment );", 44, 0, input);
+                    new NoViableAltException("1355:1: semic : ( SEMIC | EOF | RBRACE | EOL | MultiLineComment );", 44, 0, input);
 
                 throw nvae;
             }
 
             switch (alt44) {
                 case 1 :
-                    // JS.g:1359:4: SEMIC
+                    // JS.g:1363:4: SEMIC
                     {
                     root_0 = (Object)adaptor.nil();
 
                     SEMIC162=(Token)input.LT(1);
-                    match(input,SEMIC,FOLLOW_SEMIC_in_semic5048); 
+                    match(input,SEMIC,FOLLOW_SEMIC_in_semic5076); 
                     SEMIC162_tree = (Object)adaptor.create(SEMIC162);
                     adaptor.addChild(root_0, SEMIC162_tree);
 
@@ -6035,12 +6036,12 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1360:4: EOF
+                    // JS.g:1364:4: EOF
                     {
                     root_0 = (Object)adaptor.nil();
 
                     EOF163=(Token)input.LT(1);
-                    match(input,EOF,FOLLOW_EOF_in_semic5053); 
+                    match(input,EOF,FOLLOW_EOF_in_semic5081); 
                     EOF163_tree = (Object)adaptor.create(EOF163);
                     adaptor.addChild(root_0, EOF163_tree);
 
@@ -6048,12 +6049,12 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:1361:4: RBRACE
+                    // JS.g:1365:4: RBRACE
                     {
                     root_0 = (Object)adaptor.nil();
 
                     RBRACE164=(Token)input.LT(1);
-                    match(input,RBRACE,FOLLOW_RBRACE_in_semic5058); 
+                    match(input,RBRACE,FOLLOW_RBRACE_in_semic5086); 
                     RBRACE164_tree = (Object)adaptor.create(RBRACE164);
                     adaptor.addChild(root_0, RBRACE164_tree);
 
@@ -6062,12 +6063,12 @@
                     }
                     break;
                 case 4 :
-                    // JS.g:1362:4: EOL
+                    // JS.g:1366:4: EOL
                     {
                     root_0 = (Object)adaptor.nil();
 
                     EOL165=(Token)input.LT(1);
-                    match(input,EOL,FOLLOW_EOL_in_semic5065); 
+                    match(input,EOL,FOLLOW_EOL_in_semic5093); 
                     EOL165_tree = (Object)adaptor.create(EOL165);
                     adaptor.addChild(root_0, EOL165_tree);
 
@@ -6075,12 +6076,12 @@
                     }
                     break;
                 case 5 :
-                    // JS.g:1362:10: MultiLineComment
+                    // JS.g:1366:10: MultiLineComment
                     {
                     root_0 = (Object)adaptor.nil();
 
                     MultiLineComment166=(Token)input.LT(1);
-                    match(input,MultiLineComment,FOLLOW_MultiLineComment_in_semic5069); 
+                    match(input,MultiLineComment,FOLLOW_MultiLineComment_in_semic5097); 
                     MultiLineComment166_tree = (Object)adaptor.create(MultiLineComment166);
                     adaptor.addChild(root_0, MultiLineComment166_tree);
 
@@ -6111,7 +6112,7 @@
     };
 
     // $ANTLR start statement
-    // JS.g:1370:1: statement options {k=1; } : ({...}? block | statementTail );
+    // JS.g:1374:1: statement options {k=1; } : ({...}? block | statementTail );
     public final statement_return statement() throws RecognitionException {
         statement_return retval = new statement_return();
         retval.start = input.LT(1);
@@ -6125,7 +6126,7 @@
 
 
         try {
-            // JS.g:1375:2: ({...}? block | statementTail )
+            // JS.g:1379:2: ({...}? block | statementTail )
             int alt45=2;
             int LA45_0 = input.LA(1);
 
@@ -6140,7 +6141,7 @@
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("1370:1: statement options {k=1; } : ({...}? block | statementTail );", 45, 1, input);
+                        new NoViableAltException("1374:1: statement options {k=1; } : ({...}? block | statementTail );", 45, 1, input);
 
                     throw nvae;
                 }
@@ -6150,20 +6151,20 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("1370:1: statement options {k=1; } : ({...}? block | statementTail );", 45, 0, input);
+                    new NoViableAltException("1374:1: statement options {k=1; } : ({...}? block | statementTail );", 45, 0, input);
 
                 throw nvae;
             }
             switch (alt45) {
                 case 1 :
-                    // JS.g:1375:4: {...}? block
+                    // JS.g:1379:4: {...}? block
                     {
                     root_0 = (Object)adaptor.nil();
 
                     if ( !( input.LA(1) == LBRACE ) ) {
                         throw new FailedPredicateException(input, "statement", " input.LA(1) == LBRACE ");
                     }
-                    pushFollow(FOLLOW_block_in_statement5098);
+                    pushFollow(FOLLOW_block_in_statement5126);
                     block167=block();
                     _fsp--;
 
@@ -6172,11 +6173,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1376:4: statementTail
+                    // JS.g:1380:4: statementTail
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_statementTail_in_statement5103);
+                    pushFollow(FOLLOW_statementTail_in_statement5131);
                     statementTail168=statementTail();
                     _fsp--;
 
@@ -6208,7 +6209,7 @@
     };
 
     // $ANTLR start statementTail
-    // JS.g:1379:1: statementTail : ( variableStatement | emptyStatement | expressionStatement | ifStatement | iterationStatement | continueStatement | breakStatement | returnStatement | withStatement | labelledStatement | switchStatement | throwStatement | tryStatement | constStatement | namespaceStatement );
+    // JS.g:1383:1: statementTail : ( variableStatement | emptyStatement | expressionStatement | ifStatement | iterationStatement | continueStatement | breakStatement | returnStatement | withStatement | labelledStatement | switchStatement | throwStatement | tryStatement | constStatement | namespaceStatement );
     public final statementTail_return statementTail() throws RecognitionException {
         statementTail_return retval = new statementTail_return();
         retval.start = input.LT(1);
@@ -6248,7 +6249,7 @@
 
 
         try {
-            // JS.g:1380:2: ( variableStatement | emptyStatement | expressionStatement | ifStatement | iterationStatement | continueStatement | breakStatement | returnStatement | withStatement | labelledStatement | switchStatement | throwStatement | tryStatement | constStatement | namespaceStatement )
+            // JS.g:1384:2: ( variableStatement | emptyStatement | expressionStatement | ifStatement | iterationStatement | continueStatement | breakStatement | returnStatement | withStatement | labelledStatement | switchStatement | throwStatement | tryStatement | constStatement | namespaceStatement )
             int alt46=15;
             switch ( input.LA(1) ) {
             case VAR:
@@ -6308,7 +6309,7 @@
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("1379:1: statementTail : ( variableStatement | emptyStatement | expressionStatement | ifStatement | iterationStatement | continueStatement | breakStatement | returnStatement | withStatement | labelledStatement | switchStatement | throwStatement | tryStatement | constStatement | namespaceStatement );", 46, 4, input);
+                        new NoViableAltException("1383:1: statementTail : ( variableStatement | emptyStatement | expressionStatement | ifStatement | iterationStatement | continueStatement | breakStatement | returnStatement | withStatement | labelledStatement | switchStatement | throwStatement | tryStatement | constStatement | namespaceStatement );", 46, 4, input);
 
                     throw nvae;
                 }
@@ -6373,18 +6374,18 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("1379:1: statementTail : ( variableStatement | emptyStatement | expressionStatement | ifStatement | iterationStatement | continueStatement | breakStatement | returnStatement | withStatement | labelledStatement | switchStatement | throwStatement | tryStatement | constStatement | namespaceStatement );", 46, 0, input);
+                    new NoViableAltException("1383:1: statementTail : ( variableStatement | emptyStatement | expressionStatement | ifStatement | iterationStatement | continueStatement | breakStatement | returnStatement | withStatement | labelledStatement | switchStatement | throwStatement | tryStatement | constStatement | namespaceStatement );", 46, 0, input);
 
                 throw nvae;
             }
 
             switch (alt46) {
                 case 1 :
-                    // JS.g:1380:4: variableStatement
+                    // JS.g:1384:4: variableStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_variableStatement_in_statementTail5115);
+                    pushFollow(FOLLOW_variableStatement_in_statementTail5143);
                     variableStatement169=variableStatement();
                     _fsp--;
 
@@ -6393,11 +6394,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1381:4: emptyStatement
+                    // JS.g:1385:4: emptyStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_emptyStatement_in_statementTail5120);
+                    pushFollow(FOLLOW_emptyStatement_in_statementTail5148);
                     emptyStatement170=emptyStatement();
                     _fsp--;
 
@@ -6406,11 +6407,11 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:1382:4: expressionStatement
+                    // JS.g:1386:4: expressionStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_expressionStatement_in_statementTail5125);
+                    pushFollow(FOLLOW_expressionStatement_in_statementTail5153);
                     expressionStatement171=expressionStatement();
                     _fsp--;
 
@@ -6419,11 +6420,11 @@
                     }
                     break;
                 case 4 :
-                    // JS.g:1383:4: ifStatement
+                    // JS.g:1387:4: ifStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_ifStatement_in_statementTail5130);
+                    pushFollow(FOLLOW_ifStatement_in_statementTail5158);
                     ifStatement172=ifStatement();
                     _fsp--;
 
@@ -6432,11 +6433,11 @@
                     }
                     break;
                 case 5 :
-                    // JS.g:1384:4: iterationStatement
+                    // JS.g:1388:4: iterationStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_iterationStatement_in_statementTail5135);
+                    pushFollow(FOLLOW_iterationStatement_in_statementTail5163);
                     iterationStatement173=iterationStatement();
                     _fsp--;
 
@@ -6445,11 +6446,11 @@
                     }
                     break;
                 case 6 :
-                    // JS.g:1385:4: continueStatement
+                    // JS.g:1389:4: continueStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_continueStatement_in_statementTail5140);
+                    pushFollow(FOLLOW_continueStatement_in_statementTail5168);
                     continueStatement174=continueStatement();
                     _fsp--;
 
@@ -6458,11 +6459,11 @@
                     }
                     break;
                 case 7 :
-                    // JS.g:1386:4: breakStatement
+                    // JS.g:1390:4: breakStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_breakStatement_in_statementTail5145);
+                    pushFollow(FOLLOW_breakStatement_in_statementTail5173);
                     breakStatement175=breakStatement();
                     _fsp--;
 
@@ -6471,11 +6472,11 @@
                     }
                     break;
                 case 8 :
-                    // JS.g:1387:4: returnStatement
+                    // JS.g:1391:4: returnStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_returnStatement_in_statementTail5150);
+                    pushFollow(FOLLOW_returnStatement_in_statementTail5178);
                     returnStatement176=returnStatement();
                     _fsp--;
 
@@ -6484,11 +6485,11 @@
                     }
                     break;
                 case 9 :
-                    // JS.g:1388:4: withStatement
+                    // JS.g:1392:4: withStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_withStatement_in_statementTail5155);
+                    pushFollow(FOLLOW_withStatement_in_statementTail5183);
                     withStatement177=withStatement();
                     _fsp--;
 
@@ -6497,11 +6498,11 @@
                     }
                     break;
                 case 10 :
-                    // JS.g:1389:4: labelledStatement
+                    // JS.g:1393:4: labelledStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_labelledStatement_in_statementTail5160);
+                    pushFollow(FOLLOW_labelledStatement_in_statementTail5188);
                     labelledStatement178=labelledStatement();
                     _fsp--;
 
@@ -6510,11 +6511,11 @@
                     }
                     break;
                 case 11 :
-                    // JS.g:1390:4: switchStatement
+                    // JS.g:1394:4: switchStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_switchStatement_in_statementTail5165);
+                    pushFollow(FOLLOW_switchStatement_in_statementTail5193);
                     switchStatement179=switchStatement();
                     _fsp--;
 
@@ -6523,11 +6524,11 @@
                     }
                     break;
                 case 12 :
-                    // JS.g:1391:4: throwStatement
+                    // JS.g:1395:4: throwStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_throwStatement_in_statementTail5170);
+                    pushFollow(FOLLOW_throwStatement_in_statementTail5198);
                     throwStatement180=throwStatement();
                     _fsp--;
 
@@ -6536,11 +6537,11 @@
                     }
                     break;
                 case 13 :
-                    // JS.g:1392:4: tryStatement
+                    // JS.g:1396:4: tryStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_tryStatement_in_statementTail5175);
+                    pushFollow(FOLLOW_tryStatement_in_statementTail5203);
                     tryStatement181=tryStatement();
                     _fsp--;
 
@@ -6549,11 +6550,11 @@
                     }
                     break;
                 case 14 :
-                    // JS.g:1393:4: constStatement
+                    // JS.g:1397:4: constStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_constStatement_in_statementTail5180);
+                    pushFollow(FOLLOW_constStatement_in_statementTail5208);
                     constStatement182=constStatement();
                     _fsp--;
 
@@ -6562,11 +6563,11 @@
                     }
                     break;
                 case 15 :
-                    // JS.g:1394:4: namespaceStatement
+                    // JS.g:1398:4: namespaceStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_namespaceStatement_in_statementTail5185);
+                    pushFollow(FOLLOW_namespaceStatement_in_statementTail5213);
                     namespaceStatement183=namespaceStatement();
                     _fsp--;
 
@@ -6598,7 +6599,7 @@
     };
 
     // $ANTLR start block
-    // JS.g:1399:1: block : lb= LBRACE ( statement )* RBRACE -> ^( BLOCK[$lb, \"BLOCK\"] ( statement )* ) ;
+    // JS.g:1403:1: block : lb= LBRACE ( statement )* RBRACE -> ^( BLOCK[$lb, \"BLOCK\"] ( statement )* ) ;
     public final block_return block() throws RecognitionException {
         block_return retval = new block_return();
         retval.start = input.LT(1);
@@ -6616,14 +6617,14 @@
         RewriteRuleTokenStream stream_LBRACE=new RewriteRuleTokenStream(adaptor,"token LBRACE");
         RewriteRuleSubtreeStream stream_statement=new RewriteRuleSubtreeStream(adaptor,"rule statement");
         try {
-            // JS.g:1400:2: (lb= LBRACE ( statement )* RBRACE -> ^( BLOCK[$lb, \"BLOCK\"] ( statement )* ) )
-            // JS.g:1400:4: lb= LBRACE ( statement )* RBRACE
+            // JS.g:1404:2: (lb= LBRACE ( statement )* RBRACE -> ^( BLOCK[$lb, \"BLOCK\"] ( statement )* ) )
+            // JS.g:1404:4: lb= LBRACE ( statement )* RBRACE
             {
             lb=(Token)input.LT(1);
-            match(input,LBRACE,FOLLOW_LBRACE_in_block5200); 
+            match(input,LBRACE,FOLLOW_LBRACE_in_block5228); 
             stream_LBRACE.add(lb);
 
-            // JS.g:1400:14: ( statement )*
+            // JS.g:1404:14: ( statement )*
             loop47:
             do {
                 int alt47=2;
@@ -6636,9 +6637,9 @@
 
                 switch (alt47) {
             	case 1 :
-            	    // JS.g:1400:14: statement
+            	    // JS.g:1404:14: statement
             	    {
-            	    pushFollow(FOLLOW_statement_in_block5202);
+            	    pushFollow(FOLLOW_statement_in_block5230);
             	    statement184=statement();
             	    _fsp--;
 
@@ -6653,7 +6654,7 @@
             } while (true);
 
             RBRACE185=(Token)input.LT(1);
-            match(input,RBRACE,FOLLOW_RBRACE_in_block5205); 
+            match(input,RBRACE,FOLLOW_RBRACE_in_block5233); 
             stream_RBRACE.add(RBRACE185);
 
 
@@ -6667,14 +6668,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1401:2: -> ^( BLOCK[$lb, \"BLOCK\"] ( statement )* )
+            // 1405:2: -> ^( BLOCK[$lb, \"BLOCK\"] ( statement )* )
             {
-                // JS.g:1401:5: ^( BLOCK[$lb, \"BLOCK\"] ( statement )* )
+                // JS.g:1405:5: ^( BLOCK[$lb, \"BLOCK\"] ( statement )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(BLOCK, lb,  "BLOCK"), root_1);
 
-                // JS.g:1401:28: ( statement )*
+                // JS.g:1405:28: ( statement )*
                 while ( stream_statement.hasNext() ) {
                     adaptor.addChild(root_1, stream_statement.next());
 
@@ -6712,7 +6713,7 @@
     };
 
     // $ANTLR start variableStatement
-    // JS.g:1408:1: variableStatement : VAR variableDeclaration ( COMMA variableDeclaration )* semic -> ^( VAR ( variableDeclaration )+ ) ;
+    // JS.g:1412:1: variableStatement : VAR variableDeclaration ( COMMA variableDeclaration )* semic -> ^( VAR ( variableDeclaration )+ ) ;
     public final variableStatement_return variableStatement() throws RecognitionException {
         variableStatement_return retval = new variableStatement_return();
         retval.start = input.LT(1);
@@ -6735,19 +6736,19 @@
         RewriteRuleSubtreeStream stream_variableDeclaration=new RewriteRuleSubtreeStream(adaptor,"rule variableDeclaration");
         RewriteRuleSubtreeStream stream_semic=new RewriteRuleSubtreeStream(adaptor,"rule semic");
         try {
-            // JS.g:1409:2: ( VAR variableDeclaration ( COMMA variableDeclaration )* semic -> ^( VAR ( variableDeclaration )+ ) )
-            // JS.g:1409:4: VAR variableDeclaration ( COMMA variableDeclaration )* semic
+            // JS.g:1413:2: ( VAR variableDeclaration ( COMMA variableDeclaration )* semic -> ^( VAR ( variableDeclaration )+ ) )
+            // JS.g:1413:4: VAR variableDeclaration ( COMMA variableDeclaration )* semic
             {
             VAR186=(Token)input.LT(1);
-            match(input,VAR,FOLLOW_VAR_in_variableStatement5234); 
+            match(input,VAR,FOLLOW_VAR_in_variableStatement5262); 
             stream_VAR.add(VAR186);
 
-            pushFollow(FOLLOW_variableDeclaration_in_variableStatement5236);
+            pushFollow(FOLLOW_variableDeclaration_in_variableStatement5264);
             variableDeclaration187=variableDeclaration();
             _fsp--;
 
             stream_variableDeclaration.add(variableDeclaration187.getTree());
-            // JS.g:1409:28: ( COMMA variableDeclaration )*
+            // JS.g:1413:28: ( COMMA variableDeclaration )*
             loop48:
             do {
                 int alt48=2;
@@ -6760,13 +6761,13 @@
 
                 switch (alt48) {
             	case 1 :
-            	    // JS.g:1409:30: COMMA variableDeclaration
+            	    // JS.g:1413:30: COMMA variableDeclaration
             	    {
             	    COMMA188=(Token)input.LT(1);
-            	    match(input,COMMA,FOLLOW_COMMA_in_variableStatement5240); 
+            	    match(input,COMMA,FOLLOW_COMMA_in_variableStatement5268); 
             	    stream_COMMA.add(COMMA188);
 
-            	    pushFollow(FOLLOW_variableDeclaration_in_variableStatement5242);
+            	    pushFollow(FOLLOW_variableDeclaration_in_variableStatement5270);
             	    variableDeclaration189=variableDeclaration();
             	    _fsp--;
 
@@ -6780,7 +6781,7 @@
                 }
             } while (true);
 
-            pushFollow(FOLLOW_semic_in_variableStatement5247);
+            pushFollow(FOLLOW_semic_in_variableStatement5275);
             semic190=semic();
             _fsp--;
 
@@ -6796,9 +6797,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1410:2: -> ^( VAR ( variableDeclaration )+ )
+            // 1414:2: -> ^( VAR ( variableDeclaration )+ )
             {
-                // JS.g:1410:5: ^( VAR ( variableDeclaration )+ )
+                // JS.g:1414:5: ^( VAR ( variableDeclaration )+ )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_VAR.next(), root_1);
@@ -6843,7 +6844,7 @@
     };
 
     // $ANTLR start variableDeclaration
-    // JS.g:1413:1: variableDeclaration : identifier ( ASSIGN assignmentExpression )? ;
+    // JS.g:1417:1: variableDeclaration : identifier ( ASSIGN assignmentExpression )? ;
     public final variableDeclaration_return variableDeclaration() throws RecognitionException {
         variableDeclaration_return retval = new variableDeclaration_return();
         retval.start = input.LT(1);
@@ -6859,17 +6860,17 @@
         Object ASSIGN192_tree=null;
 
         try {
-            // JS.g:1414:2: ( identifier ( ASSIGN assignmentExpression )? )
-            // JS.g:1414:4: identifier ( ASSIGN assignmentExpression )?
+            // JS.g:1418:2: ( identifier ( ASSIGN assignmentExpression )? )
+            // JS.g:1418:4: identifier ( ASSIGN assignmentExpression )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_identifier_in_variableDeclaration5270);
+            pushFollow(FOLLOW_identifier_in_variableDeclaration5298);
             identifier191=identifier();
             _fsp--;
 
             adaptor.addChild(root_0, identifier191.getTree());
-            // JS.g:1414:15: ( ASSIGN assignmentExpression )?
+            // JS.g:1418:15: ( ASSIGN assignmentExpression )?
             int alt49=2;
             int LA49_0 = input.LA(1);
 
@@ -6878,14 +6879,14 @@
             }
             switch (alt49) {
                 case 1 :
-                    // JS.g:1414:17: ASSIGN assignmentExpression
+                    // JS.g:1418:17: ASSIGN assignmentExpression
                     {
                     ASSIGN192=(Token)input.LT(1);
-                    match(input,ASSIGN,FOLLOW_ASSIGN_in_variableDeclaration5274); 
+                    match(input,ASSIGN,FOLLOW_ASSIGN_in_variableDeclaration5302); 
                     ASSIGN192_tree = (Object)adaptor.create(ASSIGN192);
                     root_0 = (Object)adaptor.becomeRoot(ASSIGN192_tree, root_0);
 
-                    pushFollow(FOLLOW_assignmentExpression_in_variableDeclaration5277);
+                    pushFollow(FOLLOW_assignmentExpression_in_variableDeclaration5305);
                     assignmentExpression193=assignmentExpression();
                     _fsp--;
 
@@ -6921,7 +6922,7 @@
     };
 
     // $ANTLR start variableDeclarationNoIn
-    // JS.g:1417:1: variableDeclarationNoIn : identifier ( ASSIGN assignmentExpressionNoIn )? ;
+    // JS.g:1421:1: variableDeclarationNoIn : identifier ( ASSIGN assignmentExpressionNoIn )? ;
     public final variableDeclarationNoIn_return variableDeclarationNoIn() throws RecognitionException {
         variableDeclarationNoIn_return retval = new variableDeclarationNoIn_return();
         retval.start = input.LT(1);
@@ -6937,17 +6938,17 @@
         Object ASSIGN195_tree=null;
 
         try {
-            // JS.g:1418:2: ( identifier ( ASSIGN assignmentExpressionNoIn )? )
-            // JS.g:1418:4: identifier ( ASSIGN assignmentExpressionNoIn )?
+            // JS.g:1422:2: ( identifier ( ASSIGN assignmentExpressionNoIn )? )
+            // JS.g:1422:4: identifier ( ASSIGN assignmentExpressionNoIn )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_identifier_in_variableDeclarationNoIn5292);
+            pushFollow(FOLLOW_identifier_in_variableDeclarationNoIn5320);
             identifier194=identifier();
             _fsp--;
 
             adaptor.addChild(root_0, identifier194.getTree());
-            // JS.g:1418:15: ( ASSIGN assignmentExpressionNoIn )?
+            // JS.g:1422:15: ( ASSIGN assignmentExpressionNoIn )?
             int alt50=2;
             int LA50_0 = input.LA(1);
 
@@ -6956,14 +6957,14 @@
             }
             switch (alt50) {
                 case 1 :
-                    // JS.g:1418:17: ASSIGN assignmentExpressionNoIn
+                    // JS.g:1422:17: ASSIGN assignmentExpressionNoIn
                     {
                     ASSIGN195=(Token)input.LT(1);
-                    match(input,ASSIGN,FOLLOW_ASSIGN_in_variableDeclarationNoIn5296); 
+                    match(input,ASSIGN,FOLLOW_ASSIGN_in_variableDeclarationNoIn5324); 
                     ASSIGN195_tree = (Object)adaptor.create(ASSIGN195);
                     root_0 = (Object)adaptor.becomeRoot(ASSIGN195_tree, root_0);
 
-                    pushFollow(FOLLOW_assignmentExpressionNoIn_in_variableDeclarationNoIn5299);
+                    pushFollow(FOLLOW_assignmentExpressionNoIn_in_variableDeclarationNoIn5327);
                     assignmentExpressionNoIn196=assignmentExpressionNoIn();
                     _fsp--;
 
@@ -6999,7 +7000,7 @@
     };
 
     // $ANTLR start constStatement
-    // JS.g:1421:1: constStatement : CONST variableDeclaration ( COMMA variableDeclaration )* semic -> ^( CONST ( variableDeclaration )+ ) ;
+    // JS.g:1425:1: constStatement : CONST variableDeclaration ( COMMA variableDeclaration )* semic -> ^( CONST ( variableDeclaration )+ ) ;
     public final constStatement_return constStatement() throws RecognitionException {
         constStatement_return retval = new constStatement_return();
         retval.start = input.LT(1);
@@ -7022,19 +7023,19 @@
         RewriteRuleSubtreeStream stream_variableDeclaration=new RewriteRuleSubtreeStream(adaptor,"rule variableDeclaration");
         RewriteRuleSubtreeStream stream_semic=new RewriteRuleSubtreeStream(adaptor,"rule semic");
         try {
-            // JS.g:1422:3: ( CONST variableDeclaration ( COMMA variableDeclaration )* semic -> ^( CONST ( variableDeclaration )+ ) )
-            // JS.g:1422:5: CONST variableDeclaration ( COMMA variableDeclaration )* semic
+            // JS.g:1426:3: ( CONST variableDeclaration ( COMMA variableDeclaration )* semic -> ^( CONST ( variableDeclaration )+ ) )
+            // JS.g:1426:5: CONST variableDeclaration ( COMMA variableDeclaration )* semic
             {
             CONST197=(Token)input.LT(1);
-            match(input,CONST,FOLLOW_CONST_in_constStatement5314); 
+            match(input,CONST,FOLLOW_CONST_in_constStatement5342); 
             stream_CONST.add(CONST197);
 
-            pushFollow(FOLLOW_variableDeclaration_in_constStatement5316);
+            pushFollow(FOLLOW_variableDeclaration_in_constStatement5344);
             variableDeclaration198=variableDeclaration();
             _fsp--;
 
             stream_variableDeclaration.add(variableDeclaration198.getTree());
-            // JS.g:1422:31: ( COMMA variableDeclaration )*
+            // JS.g:1426:31: ( COMMA variableDeclaration )*
             loop51:
             do {
                 int alt51=2;
@@ -7047,13 +7048,13 @@
 
                 switch (alt51) {
             	case 1 :
-            	    // JS.g:1422:33: COMMA variableDeclaration
+            	    // JS.g:1426:33: COMMA variableDeclaration
             	    {
             	    COMMA199=(Token)input.LT(1);
-            	    match(input,COMMA,FOLLOW_COMMA_in_constStatement5320); 
+            	    match(input,COMMA,FOLLOW_COMMA_in_constStatement5348); 
             	    stream_COMMA.add(COMMA199);
 
-            	    pushFollow(FOLLOW_variableDeclaration_in_constStatement5322);
+            	    pushFollow(FOLLOW_variableDeclaration_in_constStatement5350);
             	    variableDeclaration200=variableDeclaration();
             	    _fsp--;
 
@@ -7067,14 +7068,14 @@
                 }
             } while (true);
 
-            pushFollow(FOLLOW_semic_in_constStatement5327);
+            pushFollow(FOLLOW_semic_in_constStatement5355);
             semic201=semic();
             _fsp--;
 
             stream_semic.add(semic201.getTree());
 
             // AST REWRITE
-            // elements: CONST, variableDeclaration
+            // elements: variableDeclaration, CONST
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -7083,9 +7084,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1423:3: -> ^( CONST ( variableDeclaration )+ )
+            // 1427:3: -> ^( CONST ( variableDeclaration )+ )
             {
-                // JS.g:1423:6: ^( CONST ( variableDeclaration )+ )
+                // JS.g:1427:6: ^( CONST ( variableDeclaration )+ )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_CONST.next(), root_1);
@@ -7130,7 +7131,7 @@
     };
 
     // $ANTLR start emptyStatement
-    // JS.g:1430:1: emptyStatement : SEMIC ;
+    // JS.g:1434:1: emptyStatement : SEMIC ;
     public final emptyStatement_return emptyStatement() throws RecognitionException {
         emptyStatement_return retval = new emptyStatement_return();
         retval.start = input.LT(1);
@@ -7142,13 +7143,13 @@
         Object SEMIC202_tree=null;
 
         try {
-            // JS.g:1431:2: ( SEMIC )
-            // JS.g:1431:4: SEMIC
+            // JS.g:1435:2: ( SEMIC )
+            // JS.g:1435:4: SEMIC
             {
             root_0 = (Object)adaptor.nil();
 
             SEMIC202=(Token)input.LT(1);
-            match(input,SEMIC,FOLLOW_SEMIC_in_emptyStatement5357); 
+            match(input,SEMIC,FOLLOW_SEMIC_in_emptyStatement5385); 
 
             }
 
@@ -7174,7 +7175,7 @@
     };
 
     // $ANTLR start expressionStatement
-    // JS.g:1444:1: expressionStatement : expression semic ;
+    // JS.g:1448:1: expressionStatement : expression semic ;
     public final expressionStatement_return expressionStatement() throws RecognitionException {
         expressionStatement_return retval = new expressionStatement_return();
         retval.start = input.LT(1);
@@ -7188,17 +7189,17 @@
 
 
         try {
-            // JS.g:1445:2: ( expression semic )
-            // JS.g:1445:4: expression semic
+            // JS.g:1449:2: ( expression semic )
+            // JS.g:1449:4: expression semic
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_expression_in_expressionStatement5376);
+            pushFollow(FOLLOW_expression_in_expressionStatement5404);
             expression203=expression();
             _fsp--;
 
             adaptor.addChild(root_0, expression203.getTree());
-            pushFollow(FOLLOW_semic_in_expressionStatement5378);
+            pushFollow(FOLLOW_semic_in_expressionStatement5406);
             semic204=semic();
             _fsp--;
 
@@ -7227,7 +7228,7 @@
     };
 
     // $ANTLR start ifStatement
-    // JS.g:1452:1: ifStatement : IF LPAREN expression RPAREN statement ({...}? ELSE statement )? -> ^( IF expression ( statement )+ ) ;
+    // JS.g:1456:1: ifStatement : IF LPAREN expression RPAREN statement ({...}? ELSE statement )? -> ^( IF expression ( statement )+ ) ;
     public final ifStatement_return ifStatement() throws RecognitionException {
         ifStatement_return retval = new ifStatement_return();
         retval.start = input.LT(1);
@@ -7256,32 +7257,32 @@
         RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
         RewriteRuleSubtreeStream stream_statement=new RewriteRuleSubtreeStream(adaptor,"rule statement");
         try {
-            // JS.g:1454:2: ( IF LPAREN expression RPAREN statement ({...}? ELSE statement )? -> ^( IF expression ( statement )+ ) )
-            // JS.g:1454:4: IF LPAREN expression RPAREN statement ({...}? ELSE statement )?
+            // JS.g:1458:2: ( IF LPAREN expression RPAREN statement ({...}? ELSE statement )? -> ^( IF expression ( statement )+ ) )
+            // JS.g:1458:4: IF LPAREN expression RPAREN statement ({...}? ELSE statement )?
             {
             IF205=(Token)input.LT(1);
-            match(input,IF,FOLLOW_IF_in_ifStatement5396); 
+            match(input,IF,FOLLOW_IF_in_ifStatement5424); 
             stream_IF.add(IF205);
 
             LPAREN206=(Token)input.LT(1);
-            match(input,LPAREN,FOLLOW_LPAREN_in_ifStatement5398); 
+            match(input,LPAREN,FOLLOW_LPAREN_in_ifStatement5426); 
             stream_LPAREN.add(LPAREN206);
 
-            pushFollow(FOLLOW_expression_in_ifStatement5400);
+            pushFollow(FOLLOW_expression_in_ifStatement5428);
             expression207=expression();
             _fsp--;
 
             stream_expression.add(expression207.getTree());
             RPAREN208=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_ifStatement5402); 
+            match(input,RPAREN,FOLLOW_RPAREN_in_ifStatement5430); 
             stream_RPAREN.add(RPAREN208);
 
-            pushFollow(FOLLOW_statement_in_ifStatement5404);
+            pushFollow(FOLLOW_statement_in_ifStatement5432);
             statement209=statement();
             _fsp--;
 
             stream_statement.add(statement209.getTree());
-            // JS.g:1454:42: ({...}? ELSE statement )?
+            // JS.g:1458:42: ({...}? ELSE statement )?
             int alt52=2;
             int LA52_0 = input.LA(1);
 
@@ -7294,16 +7295,16 @@
             }
             switch (alt52) {
                 case 1 :
-                    // JS.g:1454:44: {...}? ELSE statement
+                    // JS.g:1458:44: {...}? ELSE statement
                     {
                     if ( !( input.LA(1) == ELSE ) ) {
                         throw new FailedPredicateException(input, "ifStatement", " input.LA(1) == ELSE ");
                     }
                     ELSE210=(Token)input.LT(1);
-                    match(input,ELSE,FOLLOW_ELSE_in_ifStatement5410); 
+                    match(input,ELSE,FOLLOW_ELSE_in_ifStatement5438); 
                     stream_ELSE.add(ELSE210);
 
-                    pushFollow(FOLLOW_statement_in_ifStatement5412);
+                    pushFollow(FOLLOW_statement_in_ifStatement5440);
                     statement211=statement();
                     _fsp--;
 
@@ -7316,7 +7317,7 @@
 
 
             // AST REWRITE
-            // elements: statement, IF, expression
+            // elements: statement, expression, IF
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -7325,9 +7326,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1455:2: -> ^( IF expression ( statement )+ )
+            // 1459:2: -> ^( IF expression ( statement )+ )
             {
-                // JS.g:1455:5: ^( IF expression ( statement )+ )
+                // JS.g:1459:5: ^( IF expression ( statement )+ )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_IF.next(), root_1);
@@ -7373,7 +7374,7 @@
     };
 
     // $ANTLR start iterationStatement
-    // JS.g:1462:1: iterationStatement : ( doStatement | whileStatement | forEachStatement | forStatement );
+    // JS.g:1466:1: iterationStatement : ( doStatement | whileStatement | forEachStatement | forStatement );
     public final iterationStatement_return iterationStatement() throws RecognitionException {
         iterationStatement_return retval = new iterationStatement_return();
         retval.start = input.LT(1);
@@ -7391,7 +7392,7 @@
 
 
         try {
-            // JS.g:1463:2: ( doStatement | whileStatement | forEachStatement | forStatement )
+            // JS.g:1467:2: ( doStatement | whileStatement | forEachStatement | forStatement )
             int alt53=4;
             switch ( input.LA(1) ) {
             case DO:
@@ -7416,7 +7417,7 @@
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("1462:1: iterationStatement : ( doStatement | whileStatement | forEachStatement | forStatement );", 53, 3, input);
+                        new NoViableAltException("1466:1: iterationStatement : ( doStatement | whileStatement | forEachStatement | forStatement );", 53, 3, input);
 
                     throw nvae;
                 }
@@ -7424,18 +7425,18 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("1462:1: iterationStatement : ( doStatement | whileStatement | forEachStatement | forStatement );", 53, 0, input);
+                    new NoViableAltException("1466:1: iterationStatement : ( doStatement | whileStatement | forEachStatement | forStatement );", 53, 0, input);
 
                 throw nvae;
             }
 
             switch (alt53) {
                 case 1 :
-                    // JS.g:1463:4: doStatement
+                    // JS.g:1467:4: doStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_doStatement_in_iterationStatement5445);
+                    pushFollow(FOLLOW_doStatement_in_iterationStatement5473);
                     doStatement212=doStatement();
                     _fsp--;
 
@@ -7444,11 +7445,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1464:4: whileStatement
+                    // JS.g:1468:4: whileStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_whileStatement_in_iterationStatement5450);
+                    pushFollow(FOLLOW_whileStatement_in_iterationStatement5478);
                     whileStatement213=whileStatement();
                     _fsp--;
 
@@ -7457,11 +7458,11 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:1465:4: forEachStatement
+                    // JS.g:1469:4: forEachStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_forEachStatement_in_iterationStatement5455);
+                    pushFollow(FOLLOW_forEachStatement_in_iterationStatement5483);
                     forEachStatement214=forEachStatement();
                     _fsp--;
 
@@ -7470,11 +7471,11 @@
                     }
                     break;
                 case 4 :
-                    // JS.g:1466:4: forStatement
+                    // JS.g:1470:4: forStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_forStatement_in_iterationStatement5460);
+                    pushFollow(FOLLOW_forStatement_in_iterationStatement5488);
                     forStatement215=forStatement();
                     _fsp--;
 
@@ -7506,7 +7507,7 @@
     };
 
     // $ANTLR start doStatement
-    // JS.g:1469:1: doStatement : DO statement WHILE LPAREN expression RPAREN semic -> ^( DO statement expression ) ;
+    // JS.g:1473:1: doStatement : DO statement WHILE LPAREN expression RPAREN semic -> ^( DO statement expression ) ;
     public final doStatement_return doStatement() throws RecognitionException {
         doStatement_return retval = new doStatement_return();
         retval.start = input.LT(1);
@@ -7536,43 +7537,43 @@
         RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
         RewriteRuleSubtreeStream stream_semic=new RewriteRuleSubtreeStream(adaptor,"rule semic");
         try {
-            // JS.g:1470:2: ( DO statement WHILE LPAREN expression RPAREN semic -> ^( DO statement expression ) )
-            // JS.g:1470:4: DO statement WHILE LPAREN expression RPAREN semic
+            // JS.g:1474:2: ( DO statement WHILE LPAREN expression RPAREN semic -> ^( DO statement expression ) )
+            // JS.g:1474:4: DO statement WHILE LPAREN expression RPAREN semic
             {
             DO216=(Token)input.LT(1);
-            match(input,DO,FOLLOW_DO_in_doStatement5472); 
+            match(input,DO,FOLLOW_DO_in_doStatement5500); 
             stream_DO.add(DO216);
 
-            pushFollow(FOLLOW_statement_in_doStatement5474);
+            pushFollow(FOLLOW_statement_in_doStatement5502);
             statement217=statement();
             _fsp--;
 
             stream_statement.add(statement217.getTree());
             WHILE218=(Token)input.LT(1);
-            match(input,WHILE,FOLLOW_WHILE_in_doStatement5476); 
+            match(input,WHILE,FOLLOW_WHILE_in_doStatement5504); 
             stream_WHILE.add(WHILE218);
 
             LPAREN219=(Token)input.LT(1);
-            match(input,LPAREN,FOLLOW_LPAREN_in_doStatement5478); 
+            match(input,LPAREN,FOLLOW_LPAREN_in_doStatement5506); 
             stream_LPAREN.add(LPAREN219);
 
-            pushFollow(FOLLOW_expression_in_doStatement5480);
+            pushFollow(FOLLOW_expression_in_doStatement5508);
             expression220=expression();
             _fsp--;
 
             stream_expression.add(expression220.getTree());
             RPAREN221=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_doStatement5482); 
+            match(input,RPAREN,FOLLOW_RPAREN_in_doStatement5510); 
             stream_RPAREN.add(RPAREN221);
 
-            pushFollow(FOLLOW_semic_in_doStatement5484);
+            pushFollow(FOLLOW_semic_in_doStatement5512);
             semic222=semic();
             _fsp--;
 
             stream_semic.add(semic222.getTree());
 
             // AST REWRITE
-            // elements: expression, statement, DO
+            // elements: statement, expression, DO
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -7581,9 +7582,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1471:2: -> ^( DO statement expression )
+            // 1475:2: -> ^( DO statement expression )
             {
-                // JS.g:1471:5: ^( DO statement expression )
+                // JS.g:1475:5: ^( DO statement expression )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_DO.next(), root_1);
@@ -7622,7 +7623,7 @@
     };
 
     // $ANTLR start whileStatement
-    // JS.g:1474:1: whileStatement : WHILE LPAREN expression RPAREN statement ;
+    // JS.g:1478:1: whileStatement : WHILE LPAREN expression RPAREN statement ;
     public final whileStatement_return whileStatement() throws RecognitionException {
         whileStatement_return retval = new whileStatement_return();
         retval.start = input.LT(1);
@@ -7642,26 +7643,26 @@
         Object RPAREN226_tree=null;
 
         try {
-            // JS.g:1475:2: ( WHILE LPAREN expression RPAREN statement )
-            // JS.g:1475:4: WHILE LPAREN expression RPAREN statement
+            // JS.g:1479:2: ( WHILE LPAREN expression RPAREN statement )
+            // JS.g:1479:4: WHILE LPAREN expression RPAREN statement
             {
             root_0 = (Object)adaptor.nil();
 
             WHILE223=(Token)input.LT(1);
-            match(input,WHILE,FOLLOW_WHILE_in_whileStatement5509); 
+            match(input,WHILE,FOLLOW_WHILE_in_whileStatement5537); 
             WHILE223_tree = (Object)adaptor.create(WHILE223);
             root_0 = (Object)adaptor.becomeRoot(WHILE223_tree, root_0);
 
             LPAREN224=(Token)input.LT(1);
-            match(input,LPAREN,FOLLOW_LPAREN_in_whileStatement5512); 
-            pushFollow(FOLLOW_expression_in_whileStatement5515);
+            match(input,LPAREN,FOLLOW_LPAREN_in_whileStatement5540); 
+            pushFollow(FOLLOW_expression_in_whileStatement5543);
             expression225=expression();
             _fsp--;
 
             adaptor.addChild(root_0, expression225.getTree());
             RPAREN226=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_whileStatement5517); 
-            pushFollow(FOLLOW_statement_in_whileStatement5520);
+            match(input,RPAREN,FOLLOW_RPAREN_in_whileStatement5545); 
+            pushFollow(FOLLOW_statement_in_whileStatement5548);
             statement227=statement();
             _fsp--;
 
@@ -7691,7 +7692,7 @@
     };
 
     // $ANTLR start forEachStatement
-    // JS.g:1520:1: forEachStatement : FOR EACH LPAREN forEachControl RPAREN statement -> ^( FOREACH forEachControl statement ) ;
+    // JS.g:1524:1: forEachStatement : FOR EACH LPAREN forEachControl RPAREN statement -> ^( FOREACH forEachControl statement ) ;
     public final forEachStatement_return forEachStatement() throws RecognitionException {
         forEachStatement_return retval = new forEachStatement_return();
         retval.start = input.LT(1);
@@ -7718,31 +7719,31 @@
         RewriteRuleSubtreeStream stream_statement=new RewriteRuleSubtreeStream(adaptor,"rule statement");
         RewriteRuleSubtreeStream stream_forEachControl=new RewriteRuleSubtreeStream(adaptor,"rule forEachControl");
         try {
-            // JS.g:1521:3: ( FOR EACH LPAREN forEachControl RPAREN statement -> ^( FOREACH forEachControl statement ) )
-            // JS.g:1521:5: FOR EACH LPAREN forEachControl RPAREN statement
+            // JS.g:1525:3: ( FOR EACH LPAREN forEachControl RPAREN statement -> ^( FOREACH forEachControl statement ) )
+            // JS.g:1525:5: FOR EACH LPAREN forEachControl RPAREN statement
             {
             FOR228=(Token)input.LT(1);
-            match(input,FOR,FOLLOW_FOR_in_forEachStatement5535); 
+            match(input,FOR,FOLLOW_FOR_in_forEachStatement5563); 
             stream_FOR.add(FOR228);
 
             EACH229=(Token)input.LT(1);
-            match(input,EACH,FOLLOW_EACH_in_forEachStatement5537); 
+            match(input,EACH,FOLLOW_EACH_in_forEachStatement5565); 
             stream_EACH.add(EACH229);
 
             LPAREN230=(Token)input.LT(1);
-            match(input,LPAREN,FOLLOW_LPAREN_in_forEachStatement5539); 
+            match(input,LPAREN,FOLLOW_LPAREN_in_forEachStatement5567); 
             stream_LPAREN.add(LPAREN230);
 
-            pushFollow(FOLLOW_forEachControl_in_forEachStatement5541);
+            pushFollow(FOLLOW_forEachControl_in_forEachStatement5569);
             forEachControl231=forEachControl();
             _fsp--;
 
             stream_forEachControl.add(forEachControl231.getTree());
             RPAREN232=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_forEachStatement5543); 
+            match(input,RPAREN,FOLLOW_RPAREN_in_forEachStatement5571); 
             stream_RPAREN.add(RPAREN232);
 
-            pushFollow(FOLLOW_statement_in_forEachStatement5545);
+            pushFollow(FOLLOW_statement_in_forEachStatement5573);
             statement233=statement();
             _fsp--;
 
@@ -7758,9 +7759,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1522:4: -> ^( FOREACH forEachControl statement )
+            // 1526:4: -> ^( FOREACH forEachControl statement )
             {
-                // JS.g:1522:7: ^( FOREACH forEachControl statement )
+                // JS.g:1526:7: ^( FOREACH forEachControl statement )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(FOREACH, "FOREACH"), root_1);
@@ -7799,7 +7800,7 @@
     };
 
     // $ANTLR start forEachControl
-    // JS.g:1525:1: forEachControl : ( forControlVar | forControlExpression );
+    // JS.g:1529:1: forEachControl : ( forControlVar | forControlExpression );
     public final forEachControl_return forEachControl() throws RecognitionException {
         forEachControl_return retval = new forEachControl_return();
         retval.start = input.LT(1);
@@ -7813,7 +7814,7 @@
 
 
         try {
-            // JS.g:1526:3: ( forControlVar | forControlExpression )
+            // JS.g:1530:3: ( forControlVar | forControlExpression )
             int alt54=2;
             int LA54_0 = input.LA(1);
 
@@ -7825,17 +7826,17 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("1525:1: forEachControl : ( forControlVar | forControlExpression );", 54, 0, input);
+                    new NoViableAltException("1529:1: forEachControl : ( forControlVar | forControlExpression );", 54, 0, input);
 
                 throw nvae;
             }
             switch (alt54) {
                 case 1 :
-                    // JS.g:1526:5: forControlVar
+                    // JS.g:1530:5: forControlVar
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_forControlVar_in_forEachControl5572);
+                    pushFollow(FOLLOW_forControlVar_in_forEachControl5600);
                     forControlVar234=forControlVar();
                     _fsp--;
 
@@ -7844,11 +7845,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1527:5: forControlExpression
+                    // JS.g:1531:5: forControlExpression
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_forControlExpression_in_forEachControl5578);
+                    pushFollow(FOLLOW_forControlExpression_in_forEachControl5606);
                     forControlExpression235=forControlExpression();
                     _fsp--;
 
@@ -7880,7 +7881,7 @@
     };
 
     // $ANTLR start forStatement
-    // JS.g:1530:1: forStatement : FOR LPAREN forControl RPAREN statement ;
+    // JS.g:1534:1: forStatement : FOR LPAREN forControl RPAREN statement ;
     public final forStatement_return forStatement() throws RecognitionException {
         forStatement_return retval = new forStatement_return();
         retval.start = input.LT(1);
@@ -7900,26 +7901,26 @@
         Object RPAREN239_tree=null;
 
         try {
-            // JS.g:1531:2: ( FOR LPAREN forControl RPAREN statement )
-            // JS.g:1531:4: FOR LPAREN forControl RPAREN statement
+            // JS.g:1535:2: ( FOR LPAREN forControl RPAREN statement )
+            // JS.g:1535:4: FOR LPAREN forControl RPAREN statement
             {
             root_0 = (Object)adaptor.nil();
 
             FOR236=(Token)input.LT(1);
-            match(input,FOR,FOLLOW_FOR_in_forStatement5590); 
+            match(input,FOR,FOLLOW_FOR_in_forStatement5618); 
             FOR236_tree = (Object)adaptor.create(FOR236);
             root_0 = (Object)adaptor.becomeRoot(FOR236_tree, root_0);
 
             LPAREN237=(Token)input.LT(1);
-            match(input,LPAREN,FOLLOW_LPAREN_in_forStatement5593); 
-            pushFollow(FOLLOW_forControl_in_forStatement5596);
+            match(input,LPAREN,FOLLOW_LPAREN_in_forStatement5621); 
+            pushFollow(FOLLOW_forControl_in_forStatement5624);
             forControl238=forControl();
             _fsp--;
 
             adaptor.addChild(root_0, forControl238.getTree());
             RPAREN239=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_forStatement5598); 
-            pushFollow(FOLLOW_statement_in_forStatement5601);
+            match(input,RPAREN,FOLLOW_RPAREN_in_forStatement5626); 
+            pushFollow(FOLLOW_statement_in_forStatement5629);
             statement240=statement();
             _fsp--;
 
@@ -7949,7 +7950,7 @@
     };
 
     // $ANTLR start forControl
-    // JS.g:1534:1: forControl : ( forControlVar | forControlExpression | forControlSemic );
+    // JS.g:1538:1: forControl : ( forControlVar | forControlExpression | forControlSemic );
     public final forControl_return forControl() throws RecognitionException {
         forControl_return retval = new forControl_return();
         retval.start = input.LT(1);
@@ -7965,7 +7966,7 @@
 
 
         try {
-            // JS.g:1535:2: ( forControlVar | forControlExpression | forControlSemic )
+            // JS.g:1539:2: ( forControlVar | forControlExpression | forControlSemic )
             int alt55=3;
             switch ( input.LA(1) ) {
             case VAR:
@@ -8016,18 +8017,18 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("1534:1: forControl : ( forControlVar | forControlExpression | forControlSemic );", 55, 0, input);
+                    new NoViableAltException("1538:1: forControl : ( forControlVar | forControlExpression | forControlSemic );", 55, 0, input);
 
                 throw nvae;
             }
 
             switch (alt55) {
                 case 1 :
-                    // JS.g:1535:4: forControlVar
+                    // JS.g:1539:4: forControlVar
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_forControlVar_in_forControl5612);
+                    pushFollow(FOLLOW_forControlVar_in_forControl5640);
                     forControlVar241=forControlVar();
                     _fsp--;
 
@@ -8036,11 +8037,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1536:4: forControlExpression
+                    // JS.g:1540:4: forControlExpression
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_forControlExpression_in_forControl5617);
+                    pushFollow(FOLLOW_forControlExpression_in_forControl5645);
                     forControlExpression242=forControlExpression();
                     _fsp--;
 
@@ -8049,11 +8050,11 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:1537:4: forControlSemic
+                    // JS.g:1541:4: forControlSemic
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_forControlSemic_in_forControl5622);
+                    pushFollow(FOLLOW_forControlSemic_in_forControl5650);
                     forControlSemic243=forControlSemic();
                     _fsp--;
 
@@ -8085,7 +8086,7 @@
     };
 
     // $ANTLR start forControlVar
-    // JS.g:1540:1: forControlVar : VAR variableDeclarationNoIn ( ( IN expression -> ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) ) ) | ( ( COMMA variableDeclarationNoIn )* SEMIC (ex1= expression )? SEMIC (ex2= expression )? -> ^( FORSTEP ^( VAR ( variableDeclarationNoIn )+ ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) ) ) ) ;
+    // JS.g:1544:1: forControlVar : VAR variableDeclarationNoIn ( ( IN expression -> ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) ) ) | ( ( COMMA variableDeclarationNoIn )* SEMIC (ex1= expression )? SEMIC (ex2= expression )? -> ^( FORSTEP ^( VAR ( variableDeclarationNoIn )+ ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) ) ) ) ;
     public final forControlVar_return forControlVar() throws RecognitionException {
         forControlVar_return retval = new forControlVar_return();
         retval.start = input.LT(1);
@@ -8120,19 +8121,19 @@
         RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
         RewriteRuleSubtreeStream stream_variableDeclarationNoIn=new RewriteRuleSubtreeStream(adaptor,"rule variableDeclarationNoIn");
         try {
-            // JS.g:1541:2: ( VAR variableDeclarationNoIn ( ( IN expression -> ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) ) ) | ( ( COMMA variableDeclarationNoIn )* SEMIC (ex1= expression )? SEMIC (ex2= expression )? -> ^( FORSTEP ^( VAR ( variableDeclarationNoIn )+ ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) ) ) ) )
-            // JS.g:1541:4: VAR variableDeclarationNoIn ( ( IN expression -> ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) ) ) | ( ( COMMA variableDeclarationNoIn )* SEMIC (ex1= expression )? SEMIC (ex2= expression )? -> ^( FORSTEP ^( VAR ( variableDeclarationNoIn )+ ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) ) ) )
+            // JS.g:1545:2: ( VAR variableDeclarationNoIn ( ( IN expression -> ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) ) ) | ( ( COMMA variableDeclarationNoIn )* SEMIC (ex1= expression )? SEMIC (ex2= expression )? -> ^( FORSTEP ^( VAR ( variableDeclarationNoIn )+ ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) ) ) ) )
+            // JS.g:1545:4: VAR variableDeclarationNoIn ( ( IN expression -> ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) ) ) | ( ( COMMA variableDeclarationNoIn )* SEMIC (ex1= expression )? SEMIC (ex2= expression )? -> ^( FORSTEP ^( VAR ( variableDeclarationNoIn )+ ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) ) ) )
             {
             VAR244=(Token)input.LT(1);
-            match(input,VAR,FOLLOW_VAR_in_forControlVar5633); 
+            match(input,VAR,FOLLOW_VAR_in_forControlVar5661); 
             stream_VAR.add(VAR244);
 
-            pushFollow(FOLLOW_variableDeclarationNoIn_in_forControlVar5635);
+            pushFollow(FOLLOW_variableDeclarationNoIn_in_forControlVar5663);
             variableDeclarationNoIn245=variableDeclarationNoIn();
             _fsp--;
 
             stream_variableDeclarationNoIn.add(variableDeclarationNoIn245.getTree());
-            // JS.g:1542:2: ( ( IN expression -> ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) ) ) | ( ( COMMA variableDeclarationNoIn )* SEMIC (ex1= expression )? SEMIC (ex2= expression )? -> ^( FORSTEP ^( VAR ( variableDeclarationNoIn )+ ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) ) ) )
+            // JS.g:1546:2: ( ( IN expression -> ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) ) ) | ( ( COMMA variableDeclarationNoIn )* SEMIC (ex1= expression )? SEMIC (ex2= expression )? -> ^( FORSTEP ^( VAR ( variableDeclarationNoIn )+ ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) ) ) )
             int alt59=2;
             int LA59_0 = input.LA(1);
 
@@ -8144,29 +8145,29 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("1542:2: ( ( IN expression -> ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) ) ) | ( ( COMMA variableDeclarationNoIn )* SEMIC (ex1= expression )? SEMIC (ex2= expression )? -> ^( FORSTEP ^( VAR ( variableDeclarationNoIn )+ ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) ) ) )", 59, 0, input);
+                    new NoViableAltException("1546:2: ( ( IN expression -> ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) ) ) | ( ( COMMA variableDeclarationNoIn )* SEMIC (ex1= expression )? SEMIC (ex2= expression )? -> ^( FORSTEP ^( VAR ( variableDeclarationNoIn )+ ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) ) ) )", 59, 0, input);
 
                 throw nvae;
             }
             switch (alt59) {
                 case 1 :
-                    // JS.g:1543:3: ( IN expression -> ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) ) )
+                    // JS.g:1547:3: ( IN expression -> ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) ) )
                     {
-                    // JS.g:1543:3: ( IN expression -> ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) ) )
-                    // JS.g:1544:4: IN expression
+                    // JS.g:1547:3: ( IN expression -> ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) ) )
+                    // JS.g:1548:4: IN expression
                     {
                     IN246=(Token)input.LT(1);
-                    match(input,IN,FOLLOW_IN_in_forControlVar5647); 
+                    match(input,IN,FOLLOW_IN_in_forControlVar5675); 
                     stream_IN.add(IN246);
 
-                    pushFollow(FOLLOW_expression_in_forControlVar5649);
+                    pushFollow(FOLLOW_expression_in_forControlVar5677);
                     expression247=expression();
                     _fsp--;
 
                     stream_expression.add(expression247.getTree());
 
                     // AST REWRITE
-                    // elements: expression, VAR, variableDeclarationNoIn
+                    // elements: variableDeclarationNoIn, VAR, expression
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
@@ -8175,14 +8176,14 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1545:4: -> ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) )
+                    // 1549:4: -> ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) )
                     {
-                        // JS.g:1545:7: ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) )
+                        // JS.g:1549:7: ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot(adaptor.create(FORITER, "FORITER"), root_1);
 
-                        // JS.g:1545:18: ^( VAR variableDeclarationNoIn )
+                        // JS.g:1549:18: ^( VAR variableDeclarationNoIn )
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot(stream_VAR.next(), root_2);
@@ -8191,7 +8192,7 @@
 
                         adaptor.addChild(root_1, root_2);
                         }
-                        // JS.g:1545:51: ^( EXPR expression )
+                        // JS.g:1549:51: ^( EXPR expression )
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot(adaptor.create(EXPR, "EXPR"), root_2);
@@ -8214,12 +8215,12 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1548:3: ( ( COMMA variableDeclarationNoIn )* SEMIC (ex1= expression )? SEMIC (ex2= expression )? -> ^( FORSTEP ^( VAR ( variableDeclarationNoIn )+ ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) ) )
+                    // JS.g:1552:3: ( ( COMMA variableDeclarationNoIn )* SEMIC (ex1= expression )? SEMIC (ex2= expression )? -> ^( FORSTEP ^( VAR ( variableDeclarationNoIn )+ ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) ) )
                     {
-                    // JS.g:1548:3: ( ( COMMA variableDeclarationNoIn )* SEMIC (ex1= expression )? SEMIC (ex2= expression )? -> ^( FORSTEP ^( VAR ( variableDeclarationNoIn )+ ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) ) )
-                    // JS.g:1549:4: ( COMMA variableDeclarationNoIn )* SEMIC (ex1= expression )? SEMIC (ex2= expression )?
+                    // JS.g:1552:3: ( ( COMMA variableDeclarationNoIn )* SEMIC (ex1= expression )? SEMIC (ex2= expression )? -> ^( FORSTEP ^( VAR ( variableDeclarationNoIn )+ ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) ) )
+                    // JS.g:1553:4: ( COMMA variableDeclarationNoIn )* SEMIC (ex1= expression )? SEMIC (ex2= expression )?
                     {
-                    // JS.g:1549:4: ( COMMA variableDeclarationNoIn )*
+                    // JS.g:1553:4: ( COMMA variableDeclarationNoIn )*
                     loop56:
                     do {
                         int alt56=2;
@@ -8232,13 +8233,13 @@
 
                         switch (alt56) {
                     	case 1 :
-                    	    // JS.g:1549:6: COMMA variableDeclarationNoIn
+                    	    // JS.g:1553:6: COMMA variableDeclarationNoIn
                     	    {
                     	    COMMA248=(Token)input.LT(1);
-                    	    match(input,COMMA,FOLLOW_COMMA_in_forControlVar5695); 
+                    	    match(input,COMMA,FOLLOW_COMMA_in_forControlVar5723); 
                     	    stream_COMMA.add(COMMA248);
 
-                    	    pushFollow(FOLLOW_variableDeclarationNoIn_in_forControlVar5697);
+                    	    pushFollow(FOLLOW_variableDeclarationNoIn_in_forControlVar5725);
                     	    variableDeclarationNoIn249=variableDeclarationNoIn();
                     	    _fsp--;
 
@@ -8253,10 +8254,10 @@
                     } while (true);
 
                     SEMIC250=(Token)input.LT(1);
-                    match(input,SEMIC,FOLLOW_SEMIC_in_forControlVar5702); 
+                    match(input,SEMIC,FOLLOW_SEMIC_in_forControlVar5730); 
                     stream_SEMIC.add(SEMIC250);
 
-                    // JS.g:1549:48: (ex1= expression )?
+                    // JS.g:1553:48: (ex1= expression )?
                     int alt57=2;
                     int LA57_0 = input.LA(1);
 
@@ -8265,9 +8266,9 @@
                     }
                     switch (alt57) {
                         case 1 :
-                            // JS.g:1549:48: ex1= expression
+                            // JS.g:1553:48: ex1= expression
                             {
-                            pushFollow(FOLLOW_expression_in_forControlVar5706);
+                            pushFollow(FOLLOW_expression_in_forControlVar5734);
                             ex1=expression();
                             _fsp--;
 
@@ -8279,10 +8280,10 @@
                     }
 
                     SEMIC251=(Token)input.LT(1);
-                    match(input,SEMIC,FOLLOW_SEMIC_in_forControlVar5709); 
+                    match(input,SEMIC,FOLLOW_SEMIC_in_forControlVar5737); 
                     stream_SEMIC.add(SEMIC251);
 
-                    // JS.g:1549:70: (ex2= expression )?
+                    // JS.g:1553:70: (ex2= expression )?
                     int alt58=2;
                     int LA58_0 = input.LA(1);
 
@@ -8291,9 +8292,9 @@
                     }
                     switch (alt58) {
                         case 1 :
-                            // JS.g:1549:70: ex2= expression
+                            // JS.g:1553:70: ex2= expression
                             {
-                            pushFollow(FOLLOW_expression_in_forControlVar5713);
+                            pushFollow(FOLLOW_expression_in_forControlVar5741);
                             ex2=expression();
                             _fsp--;
 
@@ -8306,7 +8307,7 @@
 
 
                     // AST REWRITE
-                    // elements: variableDeclarationNoIn, ex1, ex2, VAR
+                    // elements: ex2, ex1, variableDeclarationNoIn, VAR
                     // token labels: 
                     // rule labels: retval, ex2, ex1
                     // token list labels: 
@@ -8317,14 +8318,14 @@
                     RewriteRuleSubtreeStream stream_ex1=new RewriteRuleSubtreeStream(adaptor,"token ex1",ex1!=null?ex1.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1550:4: -> ^( FORSTEP ^( VAR ( variableDeclarationNoIn )+ ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) )
+                    // 1554:4: -> ^( FORSTEP ^( VAR ( variableDeclarationNoIn )+ ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) )
                     {
-                        // JS.g:1550:7: ^( FORSTEP ^( VAR ( variableDeclarationNoIn )+ ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) )
+                        // JS.g:1554:7: ^( FORSTEP ^( VAR ( variableDeclarationNoIn )+ ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot(adaptor.create(FORSTEP, "FORSTEP"), root_1);
 
-                        // JS.g:1550:18: ^( VAR ( variableDeclarationNoIn )+ )
+                        // JS.g:1554:18: ^( VAR ( variableDeclarationNoIn )+ )
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot(stream_VAR.next(), root_2);
@@ -8340,12 +8341,12 @@
 
                         adaptor.addChild(root_1, root_2);
                         }
-                        // JS.g:1550:52: ^( EXPR ( $ex1)? )
+                        // JS.g:1554:52: ^( EXPR ( $ex1)? )
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot(adaptor.create(EXPR, "EXPR"), root_2);
 
-                        // JS.g:1550:60: ( $ex1)?
+                        // JS.g:1554:60: ( $ex1)?
                         if ( stream_ex1.hasNext() ) {
                             adaptor.addChild(root_2, stream_ex1.next());
 
@@ -8354,12 +8355,12 @@
 
                         adaptor.addChild(root_1, root_2);
                         }
-                        // JS.g:1550:68: ^( EXPR ( $ex2)? )
+                        // JS.g:1554:68: ^( EXPR ( $ex2)? )
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot(adaptor.create(EXPR, "EXPR"), root_2);
 
-                        // JS.g:1550:76: ( $ex2)?
+                        // JS.g:1554:76: ( $ex2)?
                         if ( stream_ex2.hasNext() ) {
                             adaptor.addChild(root_2, stream_ex2.next());
 
@@ -8409,7 +8410,7 @@
     };
 
     // $ANTLR start forControlExpression
-    // JS.g:1555:1: forControlExpression : ex1= expressionNoIn ({...}? ( IN ex2= expression -> ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) ) ) | ( SEMIC (ex2= expression )? SEMIC (ex3= expression )? -> ^( FORSTEP ^( EXPR $ex1) ^( EXPR ( $ex2)? ) ^( EXPR ( $ex3)? ) ) ) ) ;
+    // JS.g:1559:1: forControlExpression : ex1= expressionNoIn ({...}? ( IN ex2= expression -> ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) ) ) | ( SEMIC (ex2= expression )? SEMIC (ex3= expression )? -> ^( FORSTEP ^( EXPR $ex1) ^( EXPR ( $ex2)? ) ^( EXPR ( $ex3)? ) ) ) ) ;
     public final forControlExpression_return forControlExpression() throws RecognitionException {
         forControlExpression_return retval = new forControlExpression_return();
         retval.start = input.LT(1);
@@ -8433,19 +8434,19 @@
         RewriteRuleTokenStream stream_SEMIC=new RewriteRuleTokenStream(adaptor,"token SEMIC");
         RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
         RewriteRuleSubtreeStream stream_expressionNoIn=new RewriteRuleSubtreeStream(adaptor,"rule expressionNoIn");
-
+        
         	Object[] isLhs = new Object[1];
 
         try {
-            // JS.g:1560:2: (ex1= expressionNoIn ({...}? ( IN ex2= expression -> ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) ) ) | ( SEMIC (ex2= expression )? SEMIC (ex3= expression )? -> ^( FORSTEP ^( EXPR $ex1) ^( EXPR ( $ex2)? ) ^( EXPR ( $ex3)? ) ) ) ) )
-            // JS.g:1560:4: ex1= expressionNoIn ({...}? ( IN ex2= expression -> ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) ) ) | ( SEMIC (ex2= expression )? SEMIC (ex3= expression )? -> ^( FORSTEP ^( EXPR $ex1) ^( EXPR ( $ex2)? ) ^( EXPR ( $ex3)? ) ) ) )
+            // JS.g:1564:2: (ex1= expressionNoIn ({...}? ( IN ex2= expression -> ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) ) ) | ( SEMIC (ex2= expression )? SEMIC (ex3= expression )? -> ^( FORSTEP ^( EXPR $ex1) ^( EXPR ( $ex2)? ) ^( EXPR ( $ex3)? ) ) ) ) )
+            // JS.g:1564:4: ex1= expressionNoIn ({...}? ( IN ex2= expression -> ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) ) ) | ( SEMIC (ex2= expression )? SEMIC (ex3= expression )? -> ^( FORSTEP ^( EXPR $ex1) ^( EXPR ( $ex2)? ) ^( EXPR ( $ex3)? ) ) ) )
             {
-            pushFollow(FOLLOW_expressionNoIn_in_forControlExpression5779);
+            pushFollow(FOLLOW_expressionNoIn_in_forControlExpression5807);
             ex1=expressionNoIn();
             _fsp--;
 
             stream_expressionNoIn.add(ex1.getTree());
-            // JS.g:1561:2: ({...}? ( IN ex2= expression -> ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) ) ) | ( SEMIC (ex2= expression )? SEMIC (ex3= expression )? -> ^( FORSTEP ^( EXPR $ex1) ^( EXPR ( $ex2)? ) ^( EXPR ( $ex3)? ) ) ) )
+            // JS.g:1565:2: ({...}? ( IN ex2= expression -> ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) ) ) | ( SEMIC (ex2= expression )? SEMIC (ex3= expression )? -> ^( FORSTEP ^( EXPR $ex1) ^( EXPR ( $ex2)? ) ^( EXPR ( $ex3)? ) ) ) )
             int alt62=2;
             int LA62_0 = input.LA(1);
 
@@ -8457,25 +8458,25 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("1561:2: ({...}? ( IN ex2= expression -> ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) ) ) | ( SEMIC (ex2= expression )? SEMIC (ex3= expression )? -> ^( FORSTEP ^( EXPR $ex1) ^( EXPR ( $ex2)? ) ^( EXPR ( $ex3)? ) ) ) )", 62, 0, input);
+                    new NoViableAltException("1565:2: ({...}? ( IN ex2= expression -> ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) ) ) | ( SEMIC (ex2= expression )? SEMIC (ex3= expression )? -> ^( FORSTEP ^( EXPR $ex1) ^( EXPR ( $ex2)? ) ^( EXPR ( $ex3)? ) ) ) )", 62, 0, input);
 
                 throw nvae;
             }
             switch (alt62) {
                 case 1 :
-                    // JS.g:1562:3: {...}? ( IN ex2= expression -> ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) ) )
+                    // JS.g:1566:3: {...}? ( IN ex2= expression -> ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) ) )
                     {
                     if ( !( isLeftHandSideIn(ex1, isLhs) ) ) {
                         throw new FailedPredicateException(input, "forControlExpression", " isLeftHandSideIn(ex1, isLhs) ");
                     }
-                    // JS.g:1562:37: ( IN ex2= expression -> ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) ) )
-                    // JS.g:1563:4: IN ex2= expression
+                    // JS.g:1566:37: ( IN ex2= expression -> ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) ) )
+                    // JS.g:1567:4: IN ex2= expression
                     {
                     IN252=(Token)input.LT(1);
-                    match(input,IN,FOLLOW_IN_in_forControlExpression5794); 
+                    match(input,IN,FOLLOW_IN_in_forControlExpression5822); 
                     stream_IN.add(IN252);
 
-                    pushFollow(FOLLOW_expression_in_forControlExpression5798);
+                    pushFollow(FOLLOW_expression_in_forControlExpression5826);
                     ex2=expression();
                     _fsp--;
 
@@ -8493,14 +8494,14 @@
                     RewriteRuleSubtreeStream stream_ex1=new RewriteRuleSubtreeStream(adaptor,"token ex1",ex1!=null?ex1.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1564:4: -> ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) )
+                    // 1568:4: -> ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) )
                     {
-                        // JS.g:1564:7: ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) )
+                        // JS.g:1568:7: ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot(adaptor.create(FORITER, "FORITER"), root_1);
 
-                        // JS.g:1564:18: ^( EXPR $ex1)
+                        // JS.g:1568:18: ^( EXPR $ex1)
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot(adaptor.create(EXPR, "EXPR"), root_2);
@@ -8509,7 +8510,7 @@
 
                         adaptor.addChild(root_1, root_2);
                         }
-                        // JS.g:1564:33: ^( EXPR $ex2)
+                        // JS.g:1568:33: ^( EXPR $ex2)
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot(adaptor.create(EXPR, "EXPR"), root_2);
@@ -8532,16 +8533,16 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1567:3: ( SEMIC (ex2= expression )? SEMIC (ex3= expression )? -> ^( FORSTEP ^( EXPR $ex1) ^( EXPR ( $ex2)? ) ^( EXPR ( $ex3)? ) ) )
+                    // JS.g:1571:3: ( SEMIC (ex2= expression )? SEMIC (ex3= expression )? -> ^( FORSTEP ^( EXPR $ex1) ^( EXPR ( $ex2)? ) ^( EXPR ( $ex3)? ) ) )
                     {
-                    // JS.g:1567:3: ( SEMIC (ex2= expression )? SEMIC (ex3= expression )? -> ^( FORSTEP ^( EXPR $ex1) ^( EXPR ( $ex2)? ) ^( EXPR ( $ex3)? ) ) )
-                    // JS.g:1568:4: SEMIC (ex2= expression )? SEMIC (ex3= expression )?
+                    // JS.g:1571:3: ( SEMIC (ex2= expression )? SEMIC (ex3= expression )? -> ^( FORSTEP ^( EXPR $ex1) ^( EXPR ( $ex2)? ) ^( EXPR ( $ex3)? ) ) )
+                    // JS.g:1572:4: SEMIC (ex2= expression )? SEMIC (ex3= expression )?
                     {
                     SEMIC253=(Token)input.LT(1);
-                    match(input,SEMIC,FOLLOW_SEMIC_in_forControlExpression5844); 
+                    match(input,SEMIC,FOLLOW_SEMIC_in_forControlExpression5872); 
                     stream_SEMIC.add(SEMIC253);
 
-                    // JS.g:1568:13: (ex2= expression )?
+                    // JS.g:1572:13: (ex2= expression )?
                     int alt60=2;
                     int LA60_0 = input.LA(1);
 
@@ -8550,9 +8551,9 @@
                     }
                     switch (alt60) {
                         case 1 :
-                            // JS.g:1568:13: ex2= expression
+                            // JS.g:1572:13: ex2= expression
                             {
-                            pushFollow(FOLLOW_expression_in_forControlExpression5848);
+                            pushFollow(FOLLOW_expression_in_forControlExpression5876);
                             ex2=expression();
                             _fsp--;
 
@@ -8564,10 +8565,10 @@
                     }
 
                     SEMIC254=(Token)input.LT(1);
-                    match(input,SEMIC,FOLLOW_SEMIC_in_forControlExpression5851); 
+                    match(input,SEMIC,FOLLOW_SEMIC_in_forControlExpression5879); 
                     stream_SEMIC.add(SEMIC254);
 
-                    // JS.g:1568:35: (ex3= expression )?
+                    // JS.g:1572:35: (ex3= expression )?
                     int alt61=2;
                     int LA61_0 = input.LA(1);
 
@@ -8576,9 +8577,9 @@
                     }
                     switch (alt61) {
                         case 1 :
-                            // JS.g:1568:35: ex3= expression
+                            // JS.g:1572:35: ex3= expression
                             {
-                            pushFollow(FOLLOW_expression_in_forControlExpression5855);
+                            pushFollow(FOLLOW_expression_in_forControlExpression5883);
                             ex3=expression();
                             _fsp--;
 
@@ -8591,7 +8592,7 @@
 
 
                     // AST REWRITE
-                    // elements: ex3, ex2, ex1
+                    // elements: ex2, ex3, ex1
                     // token labels: 
                     // rule labels: retval, ex3, ex2, ex1
                     // token list labels: 
@@ -8603,14 +8604,14 @@
                     RewriteRuleSubtreeStream stream_ex1=new RewriteRuleSubtreeStream(adaptor,"token ex1",ex1!=null?ex1.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1569:4: -> ^( FORSTEP ^( EXPR $ex1) ^( EXPR ( $ex2)? ) ^( EXPR ( $ex3)? ) )
+                    // 1573:4: -> ^( FORSTEP ^( EXPR $ex1) ^( EXPR ( $ex2)? ) ^( EXPR ( $ex3)? ) )
                     {
-                        // JS.g:1569:7: ^( FORSTEP ^( EXPR $ex1) ^( EXPR ( $ex2)? ) ^( EXPR ( $ex3)? ) )
+                        // JS.g:1573:7: ^( FORSTEP ^( EXPR $ex1) ^( EXPR ( $ex2)? ) ^( EXPR ( $ex3)? ) )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot(adaptor.create(FORSTEP, "FORSTEP"), root_1);
 
-                        // JS.g:1569:18: ^( EXPR $ex1)
+                        // JS.g:1573:18: ^( EXPR $ex1)
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot(adaptor.create(EXPR, "EXPR"), root_2);
@@ -8619,12 +8620,12 @@
 
                         adaptor.addChild(root_1, root_2);
                         }
-                        // JS.g:1569:33: ^( EXPR ( $ex2)? )
+                        // JS.g:1573:33: ^( EXPR ( $ex2)? )
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot(adaptor.create(EXPR, "EXPR"), root_2);
 
-                        // JS.g:1569:41: ( $ex2)?
+                        // JS.g:1573:41: ( $ex2)?
                         if ( stream_ex2.hasNext() ) {
                             adaptor.addChild(root_2, stream_ex2.next());
 
@@ -8633,12 +8634,12 @@
 
                         adaptor.addChild(root_1, root_2);
                         }
-                        // JS.g:1569:49: ^( EXPR ( $ex3)? )
+                        // JS.g:1573:49: ^( EXPR ( $ex3)? )
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot(adaptor.create(EXPR, "EXPR"), root_2);
 
-                        // JS.g:1569:57: ( $ex3)?
+                        // JS.g:1573:57: ( $ex3)?
                         if ( stream_ex3.hasNext() ) {
                             adaptor.addChild(root_2, stream_ex3.next());
 
@@ -8688,7 +8689,7 @@
     };
 
     // $ANTLR start forControlSemic
-    // JS.g:1574:1: forControlSemic : SEMIC (ex1= expression )? SEMIC (ex2= expression )? -> ^( FORSTEP ^( EXPR ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) ) ;
+    // JS.g:1578:1: forControlSemic : SEMIC (ex1= expression )? SEMIC (ex2= expression )? -> ^( FORSTEP ^( EXPR ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) ) ;
     public final forControlSemic_return forControlSemic() throws RecognitionException {
         forControlSemic_return retval = new forControlSemic_return();
         retval.start = input.LT(1);
@@ -8707,14 +8708,14 @@
         RewriteRuleTokenStream stream_SEMIC=new RewriteRuleTokenStream(adaptor,"token SEMIC");
         RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
         try {
-            // JS.g:1575:2: ( SEMIC (ex1= expression )? SEMIC (ex2= expression )? -> ^( FORSTEP ^( EXPR ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) ) )
-            // JS.g:1575:4: SEMIC (ex1= expression )? SEMIC (ex2= expression )?
+            // JS.g:1579:2: ( SEMIC (ex1= expression )? SEMIC (ex2= expression )? -> ^( FORSTEP ^( EXPR ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) ) )
+            // JS.g:1579:4: SEMIC (ex1= expression )? SEMIC (ex2= expression )?
             {
             SEMIC255=(Token)input.LT(1);
-            match(input,SEMIC,FOLLOW_SEMIC_in_forControlSemic5914); 
+            match(input,SEMIC,FOLLOW_SEMIC_in_forControlSemic5942); 
             stream_SEMIC.add(SEMIC255);
 
-            // JS.g:1575:13: (ex1= expression )?
+            // JS.g:1579:13: (ex1= expression )?
             int alt63=2;
             int LA63_0 = input.LA(1);
 
@@ -8723,9 +8724,9 @@
             }
             switch (alt63) {
                 case 1 :
-                    // JS.g:1575:13: ex1= expression
+                    // JS.g:1579:13: ex1= expression
                     {
-                    pushFollow(FOLLOW_expression_in_forControlSemic5918);
+                    pushFollow(FOLLOW_expression_in_forControlSemic5946);
                     ex1=expression();
                     _fsp--;
 
@@ -8737,10 +8738,10 @@
             }
 
             SEMIC256=(Token)input.LT(1);
-            match(input,SEMIC,FOLLOW_SEMIC_in_forControlSemic5921); 
+            match(input,SEMIC,FOLLOW_SEMIC_in_forControlSemic5949); 
             stream_SEMIC.add(SEMIC256);
 
-            // JS.g:1575:35: (ex2= expression )?
+            // JS.g:1579:35: (ex2= expression )?
             int alt64=2;
             int LA64_0 = input.LA(1);
 
@@ -8749,9 +8750,9 @@
             }
             switch (alt64) {
                 case 1 :
-                    // JS.g:1575:35: ex2= expression
+                    // JS.g:1579:35: ex2= expression
                     {
-                    pushFollow(FOLLOW_expression_in_forControlSemic5925);
+                    pushFollow(FOLLOW_expression_in_forControlSemic5953);
                     ex2=expression();
                     _fsp--;
 
@@ -8775,26 +8776,26 @@
             RewriteRuleSubtreeStream stream_ex1=new RewriteRuleSubtreeStream(adaptor,"token ex1",ex1!=null?ex1.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1576:2: -> ^( FORSTEP ^( EXPR ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) )
+            // 1580:2: -> ^( FORSTEP ^( EXPR ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) )
             {
-                // JS.g:1576:5: ^( FORSTEP ^( EXPR ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) )
+                // JS.g:1580:5: ^( FORSTEP ^( EXPR ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(FORSTEP, "FORSTEP"), root_1);
 
-                // JS.g:1576:16: ^( EXPR )
+                // JS.g:1580:16: ^( EXPR )
                 {
                 Object root_2 = (Object)adaptor.nil();
                 root_2 = (Object)adaptor.becomeRoot(adaptor.create(EXPR, "EXPR"), root_2);
 
                 adaptor.addChild(root_1, root_2);
                 }
-                // JS.g:1576:26: ^( EXPR ( $ex1)? )
+                // JS.g:1580:26: ^( EXPR ( $ex1)? )
                 {
                 Object root_2 = (Object)adaptor.nil();
                 root_2 = (Object)adaptor.becomeRoot(adaptor.create(EXPR, "EXPR"), root_2);
 
-                // JS.g:1576:34: ( $ex1)?
+                // JS.g:1580:34: ( $ex1)?
                 if ( stream_ex1.hasNext() ) {
                     adaptor.addChild(root_2, stream_ex1.next());
 
@@ -8803,12 +8804,12 @@
 
                 adaptor.addChild(root_1, root_2);
                 }
-                // JS.g:1576:42: ^( EXPR ( $ex2)? )
+                // JS.g:1580:42: ^( EXPR ( $ex2)? )
                 {
                 Object root_2 = (Object)adaptor.nil();
                 root_2 = (Object)adaptor.becomeRoot(adaptor.create(EXPR, "EXPR"), root_2);
 
-                // JS.g:1576:50: ( $ex2)?
+                // JS.g:1580:50: ( $ex2)?
                 if ( stream_ex2.hasNext() ) {
                     adaptor.addChild(root_2, stream_ex2.next());
 
@@ -8849,7 +8850,7 @@
     };
 
     // $ANTLR start continueStatement
-    // JS.g:1588:1: continueStatement : CONTINUE ( Identifier )? semic ;
+    // JS.g:1592:1: continueStatement : CONTINUE ( Identifier )? semic ;
     public final continueStatement_return continueStatement() throws RecognitionException {
         continueStatement_return retval = new continueStatement_return();
         retval.start = input.LT(1);
@@ -8865,18 +8866,18 @@
         Object Identifier258_tree=null;
 
         try {
-            // JS.g:1589:2: ( CONTINUE ( Identifier )? semic )
-            // JS.g:1589:4: CONTINUE ( Identifier )? semic
+            // JS.g:1593:2: ( CONTINUE ( Identifier )? semic )
+            // JS.g:1593:4: CONTINUE ( Identifier )? semic
             {
             root_0 = (Object)adaptor.nil();
 
             CONTINUE257=(Token)input.LT(1);
-            match(input,CONTINUE,FOLLOW_CONTINUE_in_continueStatement5979); 
+            match(input,CONTINUE,FOLLOW_CONTINUE_in_continueStatement6007); 
             CONTINUE257_tree = (Object)adaptor.create(CONTINUE257);
             root_0 = (Object)adaptor.becomeRoot(CONTINUE257_tree, root_0);
 
              if (input.LA(1) == Identifier) promoteEOL(null); 
-            // JS.g:1589:67: ( Identifier )?
+            // JS.g:1593:67: ( Identifier )?
             int alt65=2;
             int LA65_0 = input.LA(1);
 
@@ -8885,10 +8886,10 @@
             }
             switch (alt65) {
                 case 1 :
-                    // JS.g:1589:67: Identifier
+                    // JS.g:1593:67: Identifier
                     {
                     Identifier258=(Token)input.LT(1);
-                    match(input,Identifier,FOLLOW_Identifier_in_continueStatement5984); 
+                    match(input,Identifier,FOLLOW_Identifier_in_continueStatement6012); 
                     Identifier258_tree = (Object)adaptor.create(Identifier258);
                     adaptor.addChild(root_0, Identifier258_tree);
 
@@ -8898,7 +8899,7 @@
 
             }
 
-            pushFollow(FOLLOW_semic_in_continueStatement5987);
+            pushFollow(FOLLOW_semic_in_continueStatement6015);
             semic259=semic();
             _fsp--;
 
@@ -8927,7 +8928,7 @@
     };
 
     // $ANTLR start breakStatement
-    // JS.g:1601:1: breakStatement : BREAK ( Identifier )? semic ;
+    // JS.g:1605:1: breakStatement : BREAK ( Identifier )? semic ;
     public final breakStatement_return breakStatement() throws RecognitionException {
         breakStatement_return retval = new breakStatement_return();
         retval.start = input.LT(1);
@@ -8943,18 +8944,18 @@
         Object Identifier261_tree=null;
 
         try {
-            // JS.g:1602:2: ( BREAK ( Identifier )? semic )
-            // JS.g:1602:4: BREAK ( Identifier )? semic
+            // JS.g:1606:2: ( BREAK ( Identifier )? semic )
+            // JS.g:1606:4: BREAK ( Identifier )? semic
             {
             root_0 = (Object)adaptor.nil();
 
             BREAK260=(Token)input.LT(1);
-            match(input,BREAK,FOLLOW_BREAK_in_breakStatement6006); 
+            match(input,BREAK,FOLLOW_BREAK_in_breakStatement6034); 
             BREAK260_tree = (Object)adaptor.create(BREAK260);
             root_0 = (Object)adaptor.becomeRoot(BREAK260_tree, root_0);
 
              if (input.LA(1) == Identifier) promoteEOL(null); 
-            // JS.g:1602:64: ( Identifier )?
+            // JS.g:1606:64: ( Identifier )?
             int alt66=2;
             int LA66_0 = input.LA(1);
 
@@ -8963,10 +8964,10 @@
             }
             switch (alt66) {
                 case 1 :
-                    // JS.g:1602:64: Identifier
+                    // JS.g:1606:64: Identifier
                     {
                     Identifier261=(Token)input.LT(1);
-                    match(input,Identifier,FOLLOW_Identifier_in_breakStatement6011); 
+                    match(input,Identifier,FOLLOW_Identifier_in_breakStatement6039); 
                     Identifier261_tree = (Object)adaptor.create(Identifier261);
                     adaptor.addChild(root_0, Identifier261_tree);
 
@@ -8976,7 +8977,7 @@
 
             }
 
-            pushFollow(FOLLOW_semic_in_breakStatement6014);
+            pushFollow(FOLLOW_semic_in_breakStatement6042);
             semic262=semic();
             _fsp--;
 
@@ -9005,7 +9006,7 @@
     };
 
     // $ANTLR start returnStatement
-    // JS.g:1622:1: returnStatement : RETURN ( expression )? semic ;
+    // JS.g:1626:1: returnStatement : RETURN ( expression )? semic ;
     public final returnStatement_return returnStatement() throws RecognitionException {
         returnStatement_return retval = new returnStatement_return();
         retval.start = input.LT(1);
@@ -9021,18 +9022,18 @@
         Object RETURN263_tree=null;
 
         try {
-            // JS.g:1623:2: ( RETURN ( expression )? semic )
-            // JS.g:1623:4: RETURN ( expression )? semic
+            // JS.g:1627:2: ( RETURN ( expression )? semic )
+            // JS.g:1627:4: RETURN ( expression )? semic
             {
             root_0 = (Object)adaptor.nil();
 
             RETURN263=(Token)input.LT(1);
-            match(input,RETURN,FOLLOW_RETURN_in_returnStatement6033); 
+            match(input,RETURN,FOLLOW_RETURN_in_returnStatement6061); 
             RETURN263_tree = (Object)adaptor.create(RETURN263);
             root_0 = (Object)adaptor.becomeRoot(RETURN263_tree, root_0);
 
              promoteEOL(null); 
-            // JS.g:1623:34: ( expression )?
+            // JS.g:1627:34: ( expression )?
             int alt67=2;
             int LA67_0 = input.LA(1);
 
@@ -9041,9 +9042,9 @@
             }
             switch (alt67) {
                 case 1 :
-                    // JS.g:1623:34: expression
+                    // JS.g:1627:34: expression
                     {
-                    pushFollow(FOLLOW_expression_in_returnStatement6038);
+                    pushFollow(FOLLOW_expression_in_returnStatement6066);
                     expression264=expression();
                     _fsp--;
 
@@ -9054,7 +9055,7 @@
 
             }
 
-            pushFollow(FOLLOW_semic_in_returnStatement6041);
+            pushFollow(FOLLOW_semic_in_returnStatement6069);
             semic265=semic();
             _fsp--;
 
@@ -9083,7 +9084,7 @@
     };
 
     // $ANTLR start withStatement
-    // JS.g:1630:1: withStatement : WITH LPAREN expression RPAREN statement ;
+    // JS.g:1634:1: withStatement : WITH LPAREN expression RPAREN statement ;
     public final withStatement_return withStatement() throws RecognitionException {
         withStatement_return retval = new withStatement_return();
         retval.start = input.LT(1);
@@ -9103,26 +9104,26 @@
         Object RPAREN269_tree=null;
 
         try {
-            // JS.g:1631:2: ( WITH LPAREN expression RPAREN statement )
-            // JS.g:1631:4: WITH LPAREN expression RPAREN statement
+            // JS.g:1635:2: ( WITH LPAREN expression RPAREN statement )
+            // JS.g:1635:4: WITH LPAREN expression RPAREN statement
             {
             root_0 = (Object)adaptor.nil();
 
             WITH266=(Token)input.LT(1);
-            match(input,WITH,FOLLOW_WITH_in_withStatement6058); 
+            match(input,WITH,FOLLOW_WITH_in_withStatement6086); 
             WITH266_tree = (Object)adaptor.create(WITH266);
             root_0 = (Object)adaptor.becomeRoot(WITH266_tree, root_0);
 
             LPAREN267=(Token)input.LT(1);
-            match(input,LPAREN,FOLLOW_LPAREN_in_withStatement6061); 
-            pushFollow(FOLLOW_expression_in_withStatement6064);
+            match(input,LPAREN,FOLLOW_LPAREN_in_withStatement6089); 
+            pushFollow(FOLLOW_expression_in_withStatement6092);
             expression268=expression();
             _fsp--;
 
             adaptor.addChild(root_0, expression268.getTree());
             RPAREN269=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_withStatement6066); 
-            pushFollow(FOLLOW_statement_in_withStatement6069);
+            match(input,RPAREN,FOLLOW_RPAREN_in_withStatement6094); 
+            pushFollow(FOLLOW_statement_in_withStatement6097);
             statement270=statement();
             _fsp--;
 
@@ -9152,7 +9153,7 @@
     };
 
     // $ANTLR start switchStatement
-    // JS.g:1638:1: switchStatement : SWITCH LPAREN expression RPAREN LBRACE ({...}? => defaultClause | caseClause )* RBRACE -> ^( SWITCH expression ( defaultClause )? ( caseClause )* ) ;
+    // JS.g:1642:1: switchStatement : SWITCH LPAREN expression RPAREN LBRACE ({...}? => defaultClause | caseClause )* RBRACE -> ^( SWITCH expression ( defaultClause )? ( caseClause )* ) ;
     public final switchStatement_return switchStatement() throws RecognitionException {
         switchStatement_return retval = new switchStatement_return();
         retval.start = input.LT(1);
@@ -9184,35 +9185,35 @@
         RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
         RewriteRuleSubtreeStream stream_caseClause=new RewriteRuleSubtreeStream(adaptor,"rule caseClause");
         RewriteRuleSubtreeStream stream_defaultClause=new RewriteRuleSubtreeStream(adaptor,"rule defaultClause");
-
+        
         	int defaultClauseCount = 0;
 
         try {
-            // JS.g:1643:2: ( SWITCH LPAREN expression RPAREN LBRACE ({...}? => defaultClause | caseClause )* RBRACE -> ^( SWITCH expression ( defaultClause )? ( caseClause )* ) )
-            // JS.g:1643:4: SWITCH LPAREN expression RPAREN LBRACE ({...}? => defaultClause | caseClause )* RBRACE
+            // JS.g:1647:2: ( SWITCH LPAREN expression RPAREN LBRACE ({...}? => defaultClause | caseClause )* RBRACE -> ^( SWITCH expression ( defaultClause )? ( caseClause )* ) )
+            // JS.g:1647:4: SWITCH LPAREN expression RPAREN LBRACE ({...}? => defaultClause | caseClause )* RBRACE
             {
             SWITCH271=(Token)input.LT(1);
-            match(input,SWITCH,FOLLOW_SWITCH_in_switchStatement6090); 
+            match(input,SWITCH,FOLLOW_SWITCH_in_switchStatement6118); 
             stream_SWITCH.add(SWITCH271);
 
             LPAREN272=(Token)input.LT(1);
-            match(input,LPAREN,FOLLOW_LPAREN_in_switchStatement6092); 
+            match(input,LPAREN,FOLLOW_LPAREN_in_switchStatement6120); 
             stream_LPAREN.add(LPAREN272);
 
-            pushFollow(FOLLOW_expression_in_switchStatement6094);
+            pushFollow(FOLLOW_expression_in_switchStatement6122);
             expression273=expression();
             _fsp--;
 
             stream_expression.add(expression273.getTree());
             RPAREN274=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_switchStatement6096); 
+            match(input,RPAREN,FOLLOW_RPAREN_in_switchStatement6124); 
             stream_RPAREN.add(RPAREN274);
 
             LBRACE275=(Token)input.LT(1);
-            match(input,LBRACE,FOLLOW_LBRACE_in_switchStatement6098); 
+            match(input,LBRACE,FOLLOW_LBRACE_in_switchStatement6126); 
             stream_LBRACE.add(LBRACE275);
 
-            // JS.g:1643:43: ({...}? => defaultClause | caseClause )*
+            // JS.g:1647:43: ({...}? => defaultClause | caseClause )*
             loop68:
             do {
                 int alt68=3;
@@ -9228,12 +9229,12 @@
 
                 switch (alt68) {
             	case 1 :
-            	    // JS.g:1643:45: {...}? => defaultClause
+            	    // JS.g:1647:45: {...}? => defaultClause
             	    {
             	    if ( !( defaultClauseCount == 0 ) ) {
             	        throw new FailedPredicateException(input, "switchStatement", " defaultClauseCount == 0 ");
             	    }
-            	    pushFollow(FOLLOW_defaultClause_in_switchStatement6105);
+            	    pushFollow(FOLLOW_defaultClause_in_switchStatement6133);
             	    defaultClause276=defaultClause();
             	    _fsp--;
 
@@ -9243,9 +9244,9 @@
             	    }
             	    break;
             	case 2 :
-            	    // JS.g:1643:118: caseClause
+            	    // JS.g:1647:118: caseClause
             	    {
-            	    pushFollow(FOLLOW_caseClause_in_switchStatement6111);
+            	    pushFollow(FOLLOW_caseClause_in_switchStatement6139);
             	    caseClause277=caseClause();
             	    _fsp--;
 
@@ -9260,12 +9261,12 @@
             } while (true);
 
             RBRACE278=(Token)input.LT(1);
-            match(input,RBRACE,FOLLOW_RBRACE_in_switchStatement6116); 
+            match(input,RBRACE,FOLLOW_RBRACE_in_switchStatement6144); 
             stream_RBRACE.add(RBRACE278);
 
 
             // AST REWRITE
-            // elements: defaultClause, expression, SWITCH, caseClause
+            // elements: expression, defaultClause, caseClause, SWITCH
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -9274,21 +9275,21 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1644:2: -> ^( SWITCH expression ( defaultClause )? ( caseClause )* )
+            // 1648:2: -> ^( SWITCH expression ( defaultClause )? ( caseClause )* )
             {
-                // JS.g:1644:5: ^( SWITCH expression ( defaultClause )? ( caseClause )* )
+                // JS.g:1648:5: ^( SWITCH expression ( defaultClause )? ( caseClause )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_SWITCH.next(), root_1);
 
                 adaptor.addChild(root_1, stream_expression.next());
-                // JS.g:1644:26: ( defaultClause )?
+                // JS.g:1648:26: ( defaultClause )?
                 if ( stream_defaultClause.hasNext() ) {
                     adaptor.addChild(root_1, stream_defaultClause.next());
 
                 }
                 stream_defaultClause.reset();
-                // JS.g:1644:41: ( caseClause )*
+                // JS.g:1648:41: ( caseClause )*
                 while ( stream_caseClause.hasNext() ) {
                     adaptor.addChild(root_1, stream_caseClause.next());
 
@@ -9326,7 +9327,7 @@
     };
 
     // $ANTLR start caseClause
-    // JS.g:1647:1: caseClause : CASE expression COLON ( statement )* ;
+    // JS.g:1651:1: caseClause : CASE expression COLON ( statement )* ;
     public final caseClause_return caseClause() throws RecognitionException {
         caseClause_return retval = new caseClause_return();
         retval.start = input.LT(1);
@@ -9344,24 +9345,24 @@
         Object COLON281_tree=null;
 
         try {
-            // JS.g:1648:2: ( CASE expression COLON ( statement )* )
-            // JS.g:1648:4: CASE expression COLON ( statement )*
+            // JS.g:1652:2: ( CASE expression COLON ( statement )* )
+            // JS.g:1652:4: CASE expression COLON ( statement )*
             {
             root_0 = (Object)adaptor.nil();
 
             CASE279=(Token)input.LT(1);
-            match(input,CASE,FOLLOW_CASE_in_caseClause6144); 
+            match(input,CASE,FOLLOW_CASE_in_caseClause6172); 
             CASE279_tree = (Object)adaptor.create(CASE279);
             root_0 = (Object)adaptor.becomeRoot(CASE279_tree, root_0);
 
-            pushFollow(FOLLOW_expression_in_caseClause6147);
+            pushFollow(FOLLOW_expression_in_caseClause6175);
             expression280=expression();
             _fsp--;
 
             adaptor.addChild(root_0, expression280.getTree());
             COLON281=(Token)input.LT(1);
-            match(input,COLON,FOLLOW_COLON_in_caseClause6149); 
-            // JS.g:1648:28: ( statement )*
+            match(input,COLON,FOLLOW_COLON_in_caseClause6177); 
+            // JS.g:1652:28: ( statement )*
             loop69:
             do {
                 int alt69=2;
@@ -9383,9 +9384,9 @@
 
                 switch (alt69) {
             	case 1 :
-            	    // JS.g:1648:28: statement
+            	    // JS.g:1652:28: statement
             	    {
-            	    pushFollow(FOLLOW_statement_in_caseClause6152);
+            	    pushFollow(FOLLOW_statement_in_caseClause6180);
             	    statement282=statement();
             	    _fsp--;
 
@@ -9424,7 +9425,7 @@
     };
 
     // $ANTLR start defaultClause
-    // JS.g:1651:1: defaultClause : DEFAULT COLON ( statement )* ;
+    // JS.g:1655:1: defaultClause : DEFAULT COLON ( statement )* ;
     public final defaultClause_return defaultClause() throws RecognitionException {
         defaultClause_return retval = new defaultClause_return();
         retval.start = input.LT(1);
@@ -9440,19 +9441,19 @@
         Object COLON284_tree=null;
 
         try {
-            // JS.g:1652:2: ( DEFAULT COLON ( statement )* )
-            // JS.g:1652:4: DEFAULT COLON ( statement )*
+            // JS.g:1656:2: ( DEFAULT COLON ( statement )* )
+            // JS.g:1656:4: DEFAULT COLON ( statement )*
             {
             root_0 = (Object)adaptor.nil();
 
             DEFAULT283=(Token)input.LT(1);
-            match(input,DEFAULT,FOLLOW_DEFAULT_in_defaultClause6165); 
+            match(input,DEFAULT,FOLLOW_DEFAULT_in_defaultClause6193); 
             DEFAULT283_tree = (Object)adaptor.create(DEFAULT283);
             root_0 = (Object)adaptor.becomeRoot(DEFAULT283_tree, root_0);
 
             COLON284=(Token)input.LT(1);
-            match(input,COLON,FOLLOW_COLON_in_defaultClause6168); 
-            // JS.g:1652:20: ( statement )*
+            match(input,COLON,FOLLOW_COLON_in_defaultClause6196); 
+            // JS.g:1656:20: ( statement )*
             loop70:
             do {
                 int alt70=2;
@@ -9474,9 +9475,9 @@
 
                 switch (alt70) {
             	case 1 :
-            	    // JS.g:1652:20: statement
+            	    // JS.g:1656:20: statement
             	    {
-            	    pushFollow(FOLLOW_statement_in_defaultClause6171);
+            	    pushFollow(FOLLOW_statement_in_defaultClause6199);
             	    statement285=statement();
             	    _fsp--;
 
@@ -9515,7 +9516,7 @@
     };
 
     // $ANTLR start labelledStatement
-    // JS.g:1659:1: labelledStatement : identifier COLON statement -> ^( LABELLED identifier statement ) ;
+    // JS.g:1663:1: labelledStatement : identifier COLON statement -> ^( LABELLED identifier statement ) ;
     public final labelledStatement_return labelledStatement() throws RecognitionException {
         labelledStatement_return retval = new labelledStatement_return();
         retval.start = input.LT(1);
@@ -9533,19 +9534,19 @@
         RewriteRuleSubtreeStream stream_statement=new RewriteRuleSubtreeStream(adaptor,"rule statement");
         RewriteRuleSubtreeStream stream_identifier=new RewriteRuleSubtreeStream(adaptor,"rule identifier");
         try {
-            // JS.g:1660:2: ( identifier COLON statement -> ^( LABELLED identifier statement ) )
-            // JS.g:1660:4: identifier COLON statement
+            // JS.g:1664:2: ( identifier COLON statement -> ^( LABELLED identifier statement ) )
+            // JS.g:1664:4: identifier COLON statement
             {
-            pushFollow(FOLLOW_identifier_in_labelledStatement6188);
+            pushFollow(FOLLOW_identifier_in_labelledStatement6216);
             identifier286=identifier();
             _fsp--;
 
             stream_identifier.add(identifier286.getTree());
             COLON287=(Token)input.LT(1);
-            match(input,COLON,FOLLOW_COLON_in_labelledStatement6190); 
+            match(input,COLON,FOLLOW_COLON_in_labelledStatement6218); 
             stream_COLON.add(COLON287);
 
-            pushFollow(FOLLOW_statement_in_labelledStatement6192);
+            pushFollow(FOLLOW_statement_in_labelledStatement6220);
             statement288=statement();
             _fsp--;
 
@@ -9561,9 +9562,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1661:2: -> ^( LABELLED identifier statement )
+            // 1665:2: -> ^( LABELLED identifier statement )
             {
-                // JS.g:1661:5: ^( LABELLED identifier statement )
+                // JS.g:1665:5: ^( LABELLED identifier statement )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(LABELLED, "LABELLED"), root_1);
@@ -9602,7 +9603,7 @@
     };
 
     // $ANTLR start throwStatement
-    // JS.g:1683:1: throwStatement : THROW expression semic ;
+    // JS.g:1687:1: throwStatement : THROW expression semic ;
     public final throwStatement_return throwStatement() throws RecognitionException {
         throwStatement_return retval = new throwStatement_return();
         retval.start = input.LT(1);
@@ -9618,23 +9619,23 @@
         Object THROW289_tree=null;
 
         try {
-            // JS.g:1684:2: ( THROW expression semic )
-            // JS.g:1684:4: THROW expression semic
+            // JS.g:1688:2: ( THROW expression semic )
+            // JS.g:1688:4: THROW expression semic
             {
             root_0 = (Object)adaptor.nil();
 
             THROW289=(Token)input.LT(1);
-            match(input,THROW,FOLLOW_THROW_in_throwStatement6223); 
+            match(input,THROW,FOLLOW_THROW_in_throwStatement6251); 
             THROW289_tree = (Object)adaptor.create(THROW289);
             root_0 = (Object)adaptor.becomeRoot(THROW289_tree, root_0);
 
              promoteEOL(null); 
-            pushFollow(FOLLOW_expression_in_throwStatement6228);
+            pushFollow(FOLLOW_expression_in_throwStatement6256);
             expression290=expression();
             _fsp--;
 
             adaptor.addChild(root_0, expression290.getTree());
-            pushFollow(FOLLOW_semic_in_throwStatement6230);
+            pushFollow(FOLLOW_semic_in_throwStatement6258);
             semic291=semic();
             _fsp--;
 
@@ -9663,7 +9664,7 @@
     };
 
     // $ANTLR start tryStatement
-    // JS.g:1691:1: tryStatement : TRY block ( ( catchClause )+ ( finallyClause )? | finallyClause ) ;
+    // JS.g:1695:1: tryStatement : TRY block ( ( catchClause )+ ( finallyClause )? | finallyClause ) ;
     public final tryStatement_return tryStatement() throws RecognitionException {
         tryStatement_return retval = new tryStatement_return();
         retval.start = input.LT(1);
@@ -9683,22 +9684,22 @@
         Object TRY292_tree=null;
 
         try {
-            // JS.g:1692:2: ( TRY block ( ( catchClause )+ ( finallyClause )? | finallyClause ) )
-            // JS.g:1692:4: TRY block ( ( catchClause )+ ( finallyClause )? | finallyClause )
+            // JS.g:1696:2: ( TRY block ( ( catchClause )+ ( finallyClause )? | finallyClause ) )
+            // JS.g:1696:4: TRY block ( ( catchClause )+ ( finallyClause )? | finallyClause )
             {
             root_0 = (Object)adaptor.nil();
 
             TRY292=(Token)input.LT(1);
-            match(input,TRY,FOLLOW_TRY_in_tryStatement6247); 
+            match(input,TRY,FOLLOW_TRY_in_tryStatement6275); 
             TRY292_tree = (Object)adaptor.create(TRY292);
             root_0 = (Object)adaptor.becomeRoot(TRY292_tree, root_0);
 
-            pushFollow(FOLLOW_block_in_tryStatement6250);
+            pushFollow(FOLLOW_block_in_tryStatement6278);
             block293=block();
             _fsp--;
 
             adaptor.addChild(root_0, block293.getTree());
-            // JS.g:1692:15: ( ( catchClause )+ ( finallyClause )? | finallyClause )
+            // JS.g:1696:15: ( ( catchClause )+ ( finallyClause )? | finallyClause )
             int alt73=2;
             int LA73_0 = input.LA(1);
 
@@ -9710,15 +9711,15 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("1692:15: ( ( catchClause )+ ( finallyClause )? | finallyClause )", 73, 0, input);
+                    new NoViableAltException("1696:15: ( ( catchClause )+ ( finallyClause )? | finallyClause )", 73, 0, input);
 
                 throw nvae;
             }
             switch (alt73) {
                 case 1 :
-                    // JS.g:1692:17: ( catchClause )+ ( finallyClause )?
+                    // JS.g:1696:17: ( catchClause )+ ( finallyClause )?
                     {
-                    // JS.g:1692:17: ( catchClause )+
+                    // JS.g:1696:17: ( catchClause )+
                     int cnt71=0;
                     loop71:
                     do {
@@ -9732,9 +9733,9 @@
 
                         switch (alt71) {
                     	case 1 :
-                    	    // JS.g:1692:17: catchClause
+                    	    // JS.g:1696:17: catchClause
                     	    {
-                    	    pushFollow(FOLLOW_catchClause_in_tryStatement6254);
+                    	    pushFollow(FOLLOW_catchClause_in_tryStatement6282);
                     	    catchClause294=catchClause();
                     	    _fsp--;
 
@@ -9752,7 +9753,7 @@
                         cnt71++;
                     } while (true);
 
-                    // JS.g:1692:30: ( finallyClause )?
+                    // JS.g:1696:30: ( finallyClause )?
                     int alt72=2;
                     int LA72_0 = input.LA(1);
 
@@ -9761,9 +9762,9 @@
                     }
                     switch (alt72) {
                         case 1 :
-                            // JS.g:1692:30: finallyClause
+                            // JS.g:1696:30: finallyClause
                             {
-                            pushFollow(FOLLOW_finallyClause_in_tryStatement6257);
+                            pushFollow(FOLLOW_finallyClause_in_tryStatement6285);
                             finallyClause295=finallyClause();
                             _fsp--;
 
@@ -9778,9 +9779,9 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1692:47: finallyClause
+                    // JS.g:1696:47: finallyClause
                     {
-                    pushFollow(FOLLOW_finallyClause_in_tryStatement6262);
+                    pushFollow(FOLLOW_finallyClause_in_tryStatement6290);
                     finallyClause296=finallyClause();
                     _fsp--;
 
@@ -9816,7 +9817,7 @@
     };
 
     // $ANTLR start catchClause
-    // JS.g:1695:1: catchClause : CATCH LPAREN identifier ( catchFilter )? RPAREN block ;
+    // JS.g:1699:1: catchClause : CATCH LPAREN identifier ( catchFilter )? RPAREN block ;
     public final catchClause_return catchClause() throws RecognitionException {
         catchClause_return retval = new catchClause_return();
         retval.start = input.LT(1);
@@ -9838,24 +9839,24 @@
         Object RPAREN301_tree=null;
 
         try {
-            // JS.g:1696:2: ( CATCH LPAREN identifier ( catchFilter )? RPAREN block )
-            // JS.g:1696:4: CATCH LPAREN identifier ( catchFilter )? RPAREN block
+            // JS.g:1700:2: ( CATCH LPAREN identifier ( catchFilter )? RPAREN block )
+            // JS.g:1700:4: CATCH LPAREN identifier ( catchFilter )? RPAREN block
             {
             root_0 = (Object)adaptor.nil();
 
             CATCH297=(Token)input.LT(1);
-            match(input,CATCH,FOLLOW_CATCH_in_catchClause6276); 
+            match(input,CATCH,FOLLOW_CATCH_in_catchClause6304); 
             CATCH297_tree = (Object)adaptor.create(CATCH297);
             root_0 = (Object)adaptor.becomeRoot(CATCH297_tree, root_0);
 
             LPAREN298=(Token)input.LT(1);
-            match(input,LPAREN,FOLLOW_LPAREN_in_catchClause6279); 
-            pushFollow(FOLLOW_identifier_in_catchClause6282);
+            match(input,LPAREN,FOLLOW_LPAREN_in_catchClause6307); 
+            pushFollow(FOLLOW_identifier_in_catchClause6310);
             identifier299=identifier();
             _fsp--;
 
             adaptor.addChild(root_0, identifier299.getTree());
-            // JS.g:1696:30: ( catchFilter )?
+            // JS.g:1700:30: ( catchFilter )?
             int alt74=2;
             int LA74_0 = input.LA(1);
 
@@ -9864,9 +9865,9 @@
             }
             switch (alt74) {
                 case 1 :
-                    // JS.g:1696:30: catchFilter
+                    // JS.g:1700:30: catchFilter
                     {
-                    pushFollow(FOLLOW_catchFilter_in_catchClause6284);
+                    pushFollow(FOLLOW_catchFilter_in_catchClause6312);
                     catchFilter300=catchFilter();
                     _fsp--;
 
@@ -9878,8 +9879,8 @@
             }
 
             RPAREN301=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_catchClause6287); 
-            pushFollow(FOLLOW_block_in_catchClause6290);
+            match(input,RPAREN,FOLLOW_RPAREN_in_catchClause6315); 
+            pushFollow(FOLLOW_block_in_catchClause6318);
             block302=block();
             _fsp--;
 
@@ -9909,7 +9910,7 @@
     };
 
     // $ANTLR start catchFilter
-    // JS.g:1699:1: catchFilter : IF instanceofExpression ;
+    // JS.g:1703:1: catchFilter : IF instanceofExpression ;
     public final catchFilter_return catchFilter() throws RecognitionException {
         catchFilter_return retval = new catchFilter_return();
         retval.start = input.LT(1);
@@ -9923,17 +9924,17 @@
         Object IF303_tree=null;
 
         try {
-            // JS.g:1700:3: ( IF instanceofExpression )
-            // JS.g:1700:5: IF instanceofExpression
+            // JS.g:1704:3: ( IF instanceofExpression )
+            // JS.g:1704:5: IF instanceofExpression
             {
             root_0 = (Object)adaptor.nil();
 
             IF303=(Token)input.LT(1);
-            match(input,IF,FOLLOW_IF_in_catchFilter6303); 
+            match(input,IF,FOLLOW_IF_in_catchFilter6331); 
             IF303_tree = (Object)adaptor.create(IF303);
             root_0 = (Object)adaptor.becomeRoot(IF303_tree, root_0);
 
-            pushFollow(FOLLOW_instanceofExpression_in_catchFilter6306);
+            pushFollow(FOLLOW_instanceofExpression_in_catchFilter6334);
             instanceofExpression304=instanceofExpression();
             _fsp--;
 
@@ -9963,7 +9964,7 @@
     };
 
     // $ANTLR start instanceofExpression
-    // JS.g:1703:1: instanceofExpression : identifier INSTANCEOF identifier ;
+    // JS.g:1707:1: instanceofExpression : identifier INSTANCEOF identifier ;
     public final instanceofExpression_return instanceofExpression() throws RecognitionException {
         instanceofExpression_return retval = new instanceofExpression_return();
         retval.start = input.LT(1);
@@ -9979,22 +9980,22 @@
         Object INSTANCEOF306_tree=null;
 
         try {
-            // JS.g:1704:3: ( identifier INSTANCEOF identifier )
-            // JS.g:1704:5: identifier INSTANCEOF identifier
+            // JS.g:1708:3: ( identifier INSTANCEOF identifier )
+            // JS.g:1708:5: identifier INSTANCEOF identifier
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_identifier_in_instanceofExpression6321);
+            pushFollow(FOLLOW_identifier_in_instanceofExpression6349);
             identifier305=identifier();
             _fsp--;
 
             adaptor.addChild(root_0, identifier305.getTree());
             INSTANCEOF306=(Token)input.LT(1);
-            match(input,INSTANCEOF,FOLLOW_INSTANCEOF_in_instanceofExpression6323); 
+            match(input,INSTANCEOF,FOLLOW_INSTANCEOF_in_instanceofExpression6351); 
             INSTANCEOF306_tree = (Object)adaptor.create(INSTANCEOF306);
             root_0 = (Object)adaptor.becomeRoot(INSTANCEOF306_tree, root_0);
 
-            pushFollow(FOLLOW_identifier_in_instanceofExpression6326);
+            pushFollow(FOLLOW_identifier_in_instanceofExpression6354);
             identifier307=identifier();
             _fsp--;
 
@@ -10024,7 +10025,7 @@
     };
 
     // $ANTLR start finallyClause
-    // JS.g:1707:1: finallyClause : FINALLY block ;
+    // JS.g:1711:1: finallyClause : FINALLY block ;
     public final finallyClause_return finallyClause() throws RecognitionException {
         finallyClause_return retval = new finallyClause_return();
         retval.start = input.LT(1);
@@ -10038,17 +10039,17 @@
         Object FINALLY308_tree=null;
 
         try {
-            // JS.g:1708:2: ( FINALLY block )
-            // JS.g:1708:4: FINALLY block
+            // JS.g:1712:2: ( FINALLY block )
+            // JS.g:1712:4: FINALLY block
             {
             root_0 = (Object)adaptor.nil();
 
             FINALLY308=(Token)input.LT(1);
-            match(input,FINALLY,FOLLOW_FINALLY_in_finallyClause6339); 
+            match(input,FINALLY,FOLLOW_FINALLY_in_finallyClause6367); 
             FINALLY308_tree = (Object)adaptor.create(FINALLY308);
             root_0 = (Object)adaptor.becomeRoot(FINALLY308_tree, root_0);
 
-            pushFollow(FOLLOW_block_in_finallyClause6342);
+            pushFollow(FOLLOW_block_in_finallyClause6370);
             block309=block();
             _fsp--;
 
@@ -10078,7 +10079,7 @@
     };
 
     // $ANTLR start functionDeclaration
-    // JS.g:1721:1: functionDeclaration : FUNCTION name= identifier formalParameterList functionBody -> ^( FUNCTION $name formalParameterList functionBody ) ;
+    // JS.g:1725:1: functionDeclaration : FUNCTION name= identifier formalParameterList functionBody -> ^( FUNCTION $name formalParameterList functionBody ) ;
     public final functionDeclaration_return functionDeclaration() throws RecognitionException {
         functionDeclaration_return retval = new functionDeclaration_return();
         retval.start = input.LT(1);
@@ -10099,31 +10100,31 @@
         RewriteRuleSubtreeStream stream_identifier=new RewriteRuleSubtreeStream(adaptor,"rule identifier");
         RewriteRuleSubtreeStream stream_formalParameterList=new RewriteRuleSubtreeStream(adaptor,"rule formalParameterList");
         try {
-            // JS.g:1722:2: ( FUNCTION name= identifier formalParameterList functionBody -> ^( FUNCTION $name formalParameterList functionBody ) )
-            // JS.g:1722:4: FUNCTION name= identifier formalParameterList functionBody
+            // JS.g:1726:2: ( FUNCTION name= identifier formalParameterList functionBody -> ^( FUNCTION $name formalParameterList functionBody ) )
+            // JS.g:1726:4: FUNCTION name= identifier formalParameterList functionBody
             {
             FUNCTION310=(Token)input.LT(1);
-            match(input,FUNCTION,FOLLOW_FUNCTION_in_functionDeclaration6363); 
+            match(input,FUNCTION,FOLLOW_FUNCTION_in_functionDeclaration6391); 
             stream_FUNCTION.add(FUNCTION310);
 
-            pushFollow(FOLLOW_identifier_in_functionDeclaration6367);
+            pushFollow(FOLLOW_identifier_in_functionDeclaration6395);
             name=identifier();
             _fsp--;
 
             stream_identifier.add(name.getTree());
-            pushFollow(FOLLOW_formalParameterList_in_functionDeclaration6369);
+            pushFollow(FOLLOW_formalParameterList_in_functionDeclaration6397);
             formalParameterList311=formalParameterList();
             _fsp--;
 
             stream_formalParameterList.add(formalParameterList311.getTree());
-            pushFollow(FOLLOW_functionBody_in_functionDeclaration6371);
+            pushFollow(FOLLOW_functionBody_in_functionDeclaration6399);
             functionBody312=functionBody();
             _fsp--;
 
             stream_functionBody.add(functionBody312.getTree());
 
             // AST REWRITE
-            // elements: functionBody, name, formalParameterList, FUNCTION
+            // elements: FUNCTION, name, formalParameterList, functionBody
             // token labels: 
             // rule labels: retval, name
             // token list labels: 
@@ -10133,9 +10134,9 @@
             RewriteRuleSubtreeStream stream_name=new RewriteRuleSubtreeStream(adaptor,"token name",name!=null?name.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1723:2: -> ^( FUNCTION $name formalParameterList functionBody )
+            // 1727:2: -> ^( FUNCTION $name formalParameterList functionBody )
             {
-                // JS.g:1723:5: ^( FUNCTION $name formalParameterList functionBody )
+                // JS.g:1727:5: ^( FUNCTION $name formalParameterList functionBody )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_FUNCTION.next(), root_1);
@@ -10175,7 +10176,7 @@
     };
 
     // $ANTLR start functionExpression
-    // JS.g:1726:1: functionExpression : FUNCTION (name= identifier )? formalParameterList functionBody -> ^( FUNCTION ( $name)? formalParameterList functionBody ) ;
+    // JS.g:1730:1: functionExpression : FUNCTION (name= identifier )? formalParameterList functionBody -> ^( FUNCTION ( $name)? formalParameterList functionBody ) ;
     public final functionExpression_return functionExpression() throws RecognitionException {
         functionExpression_return retval = new functionExpression_return();
         retval.start = input.LT(1);
@@ -10196,14 +10197,14 @@
         RewriteRuleSubtreeStream stream_identifier=new RewriteRuleSubtreeStream(adaptor,"rule identifier");
         RewriteRuleSubtreeStream stream_formalParameterList=new RewriteRuleSubtreeStream(adaptor,"rule formalParameterList");
         try {
-            // JS.g:1727:2: ( FUNCTION (name= identifier )? formalParameterList functionBody -> ^( FUNCTION ( $name)? formalParameterList functionBody ) )
-            // JS.g:1727:4: FUNCTION (name= identifier )? formalParameterList functionBody
+            // JS.g:1731:2: ( FUNCTION (name= identifier )? formalParameterList functionBody -> ^( FUNCTION ( $name)? formalParameterList functionBody ) )
+            // JS.g:1731:4: FUNCTION (name= identifier )? formalParameterList functionBody
             {
             FUNCTION313=(Token)input.LT(1);
-            match(input,FUNCTION,FOLLOW_FUNCTION_in_functionExpression6398); 
+            match(input,FUNCTION,FOLLOW_FUNCTION_in_functionExpression6426); 
             stream_FUNCTION.add(FUNCTION313);
 
-            // JS.g:1727:17: (name= identifier )?
+            // JS.g:1731:17: (name= identifier )?
             int alt75=2;
             int LA75_0 = input.LA(1);
 
@@ -10212,9 +10213,9 @@
             }
             switch (alt75) {
                 case 1 :
-                    // JS.g:1727:17: name= identifier
+                    // JS.g:1731:17: name= identifier
                     {
-                    pushFollow(FOLLOW_identifier_in_functionExpression6402);
+                    pushFollow(FOLLOW_identifier_in_functionExpression6430);
                     name=identifier();
                     _fsp--;
 
@@ -10225,19 +10226,19 @@
 
             }
 
-            pushFollow(FOLLOW_formalParameterList_in_functionExpression6405);
+            pushFollow(FOLLOW_formalParameterList_in_functionExpression6433);
             formalParameterList314=formalParameterList();
             _fsp--;
 
             stream_formalParameterList.add(formalParameterList314.getTree());
-            pushFollow(FOLLOW_functionBody_in_functionExpression6407);
+            pushFollow(FOLLOW_functionBody_in_functionExpression6435);
             functionBody315=functionBody();
             _fsp--;
 
             stream_functionBody.add(functionBody315.getTree());
 
             // AST REWRITE
-            // elements: formalParameterList, name, FUNCTION, functionBody
+            // elements: name, functionBody, formalParameterList, FUNCTION
             // token labels: 
             // rule labels: retval, name
             // token list labels: 
@@ -10247,14 +10248,14 @@
             RewriteRuleSubtreeStream stream_name=new RewriteRuleSubtreeStream(adaptor,"token name",name!=null?name.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1728:2: -> ^( FUNCTION ( $name)? formalParameterList functionBody )
+            // 1732:2: -> ^( FUNCTION ( $name)? formalParameterList functionBody )
             {
-                // JS.g:1728:5: ^( FUNCTION ( $name)? formalParameterList functionBody )
+                // JS.g:1732:5: ^( FUNCTION ( $name)? formalParameterList functionBody )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_FUNCTION.next(), root_1);
 
-                // JS.g:1728:17: ( $name)?
+                // JS.g:1732:17: ( $name)?
                 if ( stream_name.hasNext() ) {
                     adaptor.addChild(root_1, stream_name.next());
 
@@ -10294,7 +10295,7 @@
     };
 
     // $ANTLR start formalParameterList
-    // JS.g:1731:1: formalParameterList : LPAREN (args+= identifier ( COMMA args+= identifier )* )? RPAREN -> ^( ARGS ( $args)* ) ;
+    // JS.g:1735:1: formalParameterList : LPAREN (args+= identifier ( COMMA args+= identifier )* )? RPAREN -> ^( ARGS ( $args)* ) ;
     public final formalParameterList_return formalParameterList() throws RecognitionException {
         formalParameterList_return retval = new formalParameterList_return();
         retval.start = input.LT(1);
@@ -10314,14 +10315,14 @@
         RewriteRuleTokenStream stream_LPAREN=new RewriteRuleTokenStream(adaptor,"token LPAREN");
         RewriteRuleSubtreeStream stream_identifier=new RewriteRuleSubtreeStream(adaptor,"rule identifier");
         try {
-            // JS.g:1732:2: ( LPAREN (args+= identifier ( COMMA args+= identifier )* )? RPAREN -> ^( ARGS ( $args)* ) )
-            // JS.g:1732:4: LPAREN (args+= identifier ( COMMA args+= identifier )* )? RPAREN
+            // JS.g:1736:2: ( LPAREN (args+= identifier ( COMMA args+= identifier )* )? RPAREN -> ^( ARGS ( $args)* ) )
+            // JS.g:1736:4: LPAREN (args+= identifier ( COMMA args+= identifier )* )? RPAREN
             {
             LPAREN316=(Token)input.LT(1);
-            match(input,LPAREN,FOLLOW_LPAREN_in_formalParameterList6435); 
+            match(input,LPAREN,FOLLOW_LPAREN_in_formalParameterList6463); 
             stream_LPAREN.add(LPAREN316);
 
-            // JS.g:1732:11: (args+= identifier ( COMMA args+= identifier )* )?
+            // JS.g:1736:11: (args+= identifier ( COMMA args+= identifier )* )?
             int alt77=2;
             int LA77_0 = input.LA(1);
 
@@ -10330,9 +10331,9 @@
             }
             switch (alt77) {
                 case 1 :
-                    // JS.g:1732:13: args+= identifier ( COMMA args+= identifier )*
+                    // JS.g:1736:13: args+= identifier ( COMMA args+= identifier )*
                     {
-                    pushFollow(FOLLOW_identifier_in_formalParameterList6441);
+                    pushFollow(FOLLOW_identifier_in_formalParameterList6469);
                     args=identifier();
                     _fsp--;
 
@@ -10340,7 +10341,7 @@
                     if (list_args==null) list_args=new ArrayList();
                     list_args.add(args);
 
-                    // JS.g:1732:30: ( COMMA args+= identifier )*
+                    // JS.g:1736:30: ( COMMA args+= identifier )*
                     loop76:
                     do {
                         int alt76=2;
@@ -10353,13 +10354,13 @@
 
                         switch (alt76) {
                     	case 1 :
-                    	    // JS.g:1732:32: COMMA args+= identifier
+                    	    // JS.g:1736:32: COMMA args+= identifier
                     	    {
                     	    COMMA317=(Token)input.LT(1);
-                    	    match(input,COMMA,FOLLOW_COMMA_in_formalParameterList6445); 
+                    	    match(input,COMMA,FOLLOW_COMMA_in_formalParameterList6473); 
                     	    stream_COMMA.add(COMMA317);
 
-                    	    pushFollow(FOLLOW_identifier_in_formalParameterList6449);
+                    	    pushFollow(FOLLOW_identifier_in_formalParameterList6477);
                     	    args=identifier();
                     	    _fsp--;
 
@@ -10383,7 +10384,7 @@
             }
 
             RPAREN318=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_formalParameterList6457); 
+            match(input,RPAREN,FOLLOW_RPAREN_in_formalParameterList6485); 
             stream_RPAREN.add(RPAREN318);
 
 
@@ -10397,14 +10398,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
             RewriteRuleSubtreeStream stream_args=new RewriteRuleSubtreeStream(adaptor,"token args",list_args);
             root_0 = (Object)adaptor.nil();
-            // 1733:2: -> ^( ARGS ( $args)* )
+            // 1737:2: -> ^( ARGS ( $args)* )
             {
-                // JS.g:1733:5: ^( ARGS ( $args)* )
+                // JS.g:1737:5: ^( ARGS ( $args)* )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(ARGS, "ARGS"), root_1);
 
-                // JS.g:1733:13: ( $args)*
+                // JS.g:1737:13: ( $args)*
                 while ( stream_args.hasNext() ) {
                     adaptor.addChild(root_1, ((ParserRuleReturnScope)stream_args.next()).getTree());
 
@@ -10442,7 +10443,7 @@
     };
 
     // $ANTLR start functionBody
-    // JS.g:1736:1: functionBody : lb= LBRACE ( sourceElement )* RBRACE -> ^( BLOCK[$lb, \"BLOCK\"] ( sourceElement )* ) ;
+    // JS.g:1740:1: functionBody : lb= LBRACE ( sourceElement )* RBRACE -> ^( BLOCK[$lb, \"BLOCK\"] ( sourceElement )* ) ;
     public final functionBody_return functionBody() throws RecognitionException {
         functionBody_return retval = new functionBody_return();
         retval.start = input.LT(1);
@@ -10460,14 +10461,14 @@
         RewriteRuleTokenStream stream_LBRACE=new RewriteRuleTokenStream(adaptor,"token LBRACE");
         RewriteRuleSubtreeStream stream_sourceElement=new RewriteRuleSubtreeStream(adaptor,"rule sourceElement");
         try {
-            // JS.g:1737:2: (lb= LBRACE ( sourceElement )* RBRACE -> ^( BLOCK[$lb, \"BLOCK\"] ( sourceElement )* ) )
-            // JS.g:1737:4: lb= LBRACE ( sourceElement )* RBRACE
+            // JS.g:1741:2: (lb= LBRACE ( sourceElement )* RBRACE -> ^( BLOCK[$lb, \"BLOCK\"] ( sourceElement )* ) )
+            // JS.g:1741:4: lb= LBRACE ( sourceElement )* RBRACE
             {
             lb=(Token)input.LT(1);
-            match(input,LBRACE,FOLLOW_LBRACE_in_functionBody6483); 
+            match(input,LBRACE,FOLLOW_LBRACE_in_functionBody6511); 
             stream_LBRACE.add(lb);
 
-            // JS.g:1737:14: ( sourceElement )*
+            // JS.g:1741:14: ( sourceElement )*
             loop78:
             do {
                 int alt78=2;
@@ -10480,9 +10481,9 @@
 
                 switch (alt78) {
             	case 1 :
-            	    // JS.g:1737:14: sourceElement
+            	    // JS.g:1741:14: sourceElement
             	    {
-            	    pushFollow(FOLLOW_sourceElement_in_functionBody6485);
+            	    pushFollow(FOLLOW_sourceElement_in_functionBody6513);
             	    sourceElement319=sourceElement();
             	    _fsp--;
 
@@ -10497,7 +10498,7 @@
             } while (true);
 
             RBRACE320=(Token)input.LT(1);
-            match(input,RBRACE,FOLLOW_RBRACE_in_functionBody6488); 
+            match(input,RBRACE,FOLLOW_RBRACE_in_functionBody6516); 
             stream_RBRACE.add(RBRACE320);
 
 
@@ -10511,14 +10512,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1738:2: -> ^( BLOCK[$lb, \"BLOCK\"] ( sourceElement )* )
+            // 1742:2: -> ^( BLOCK[$lb, \"BLOCK\"] ( sourceElement )* )
             {
-                // JS.g:1738:5: ^( BLOCK[$lb, \"BLOCK\"] ( sourceElement )* )
+                // JS.g:1742:5: ^( BLOCK[$lb, \"BLOCK\"] ( sourceElement )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(BLOCK, lb,  "BLOCK"), root_1);
 
-                // JS.g:1738:28: ( sourceElement )*
+                // JS.g:1742:28: ( sourceElement )*
                 while ( stream_sourceElement.hasNext() ) {
                     adaptor.addChild(root_1, stream_sourceElement.next());
 
@@ -10556,7 +10557,7 @@
     };
 
     // $ANTLR start getMethodDeclaration
-    // JS.g:1746:1: getMethodDeclaration : GET name= identifier LPAREN RPAREN functionBody -> ^( GETTER identifier functionBody ) ;
+    // JS.g:1750:1: getMethodDeclaration : GET name= identifier LPAREN RPAREN functionBody -> ^( GETTER identifier functionBody ) ;
     public final getMethodDeclaration_return getMethodDeclaration() throws RecognitionException {
         getMethodDeclaration_return retval = new getMethodDeclaration_return();
         retval.start = input.LT(1);
@@ -10580,34 +10581,34 @@
         RewriteRuleSubtreeStream stream_functionBody=new RewriteRuleSubtreeStream(adaptor,"rule functionBody");
         RewriteRuleSubtreeStream stream_identifier=new RewriteRuleSubtreeStream(adaptor,"rule identifier");
         try {
-            // JS.g:1747:3: ( GET name= identifier LPAREN RPAREN functionBody -> ^( GETTER identifier functionBody ) )
-            // JS.g:1747:5: GET name= identifier LPAREN RPAREN functionBody
+            // JS.g:1751:3: ( GET name= identifier LPAREN RPAREN functionBody -> ^( GETTER identifier functionBody ) )
+            // JS.g:1751:5: GET name= identifier LPAREN RPAREN functionBody
             {
             GET321=(Token)input.LT(1);
-            match(input,GET,FOLLOW_GET_in_getMethodDeclaration6518); 
+            match(input,GET,FOLLOW_GET_in_getMethodDeclaration6546); 
             stream_GET.add(GET321);
 
-            pushFollow(FOLLOW_identifier_in_getMethodDeclaration6522);
+            pushFollow(FOLLOW_identifier_in_getMethodDeclaration6550);
             name=identifier();
             _fsp--;
 
             stream_identifier.add(name.getTree());
             LPAREN322=(Token)input.LT(1);
-            match(input,LPAREN,FOLLOW_LPAREN_in_getMethodDeclaration6524); 
+            match(input,LPAREN,FOLLOW_LPAREN_in_getMethodDeclaration6552); 
             stream_LPAREN.add(LPAREN322);
 
             RPAREN323=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_getMethodDeclaration6526); 
+            match(input,RPAREN,FOLLOW_RPAREN_in_getMethodDeclaration6554); 
             stream_RPAREN.add(RPAREN323);
 
-            pushFollow(FOLLOW_functionBody_in_getMethodDeclaration6528);
+            pushFollow(FOLLOW_functionBody_in_getMethodDeclaration6556);
             functionBody324=functionBody();
             _fsp--;
 
             stream_functionBody.add(functionBody324.getTree());
 
             // AST REWRITE
-            // elements: functionBody, identifier
+            // elements: identifier, functionBody
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -10616,9 +10617,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1748:4: -> ^( GETTER identifier functionBody )
+            // 1752:4: -> ^( GETTER identifier functionBody )
             {
-                // JS.g:1748:7: ^( GETTER identifier functionBody )
+                // JS.g:1752:7: ^( GETTER identifier functionBody )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(GETTER, "GETTER"), root_1);
@@ -10657,7 +10658,7 @@
     };
 
     // $ANTLR start setMethodDeclaration
-    // JS.g:1751:1: setMethodDeclaration : SET name= identifier LPAREN param= identifier RPAREN functionBody -> ^( SETTER $name $param functionBody ) ;
+    // JS.g:1755:1: setMethodDeclaration : SET name= identifier LPAREN param= identifier RPAREN functionBody -> ^( SETTER $name $param functionBody ) ;
     public final setMethodDeclaration_return setMethodDeclaration() throws RecognitionException {
         setMethodDeclaration_return retval = new setMethodDeclaration_return();
         retval.start = input.LT(1);
@@ -10683,39 +10684,39 @@
         RewriteRuleSubtreeStream stream_functionBody=new RewriteRuleSubtreeStream(adaptor,"rule functionBody");
         RewriteRuleSubtreeStream stream_identifier=new RewriteRuleSubtreeStream(adaptor,"rule identifier");
         try {
-            // JS.g:1752:3: ( SET name= identifier LPAREN param= identifier RPAREN functionBody -> ^( SETTER $name $param functionBody ) )
-            // JS.g:1752:5: SET name= identifier LPAREN param= identifier RPAREN functionBody
+            // JS.g:1756:3: ( SET name= identifier LPAREN param= identifier RPAREN functionBody -> ^( SETTER $name $param functionBody ) )
+            // JS.g:1756:5: SET name= identifier LPAREN param= identifier RPAREN functionBody
             {
             SET325=(Token)input.LT(1);
-            match(input,SET,FOLLOW_SET_in_setMethodDeclaration6556); 
+            match(input,SET,FOLLOW_SET_in_setMethodDeclaration6584); 
             stream_SET.add(SET325);
 
-            pushFollow(FOLLOW_identifier_in_setMethodDeclaration6560);
+            pushFollow(FOLLOW_identifier_in_setMethodDeclaration6588);
             name=identifier();
             _fsp--;
 
             stream_identifier.add(name.getTree());
             LPAREN326=(Token)input.LT(1);
-            match(input,LPAREN,FOLLOW_LPAREN_in_setMethodDeclaration6562); 
+            match(input,LPAREN,FOLLOW_LPAREN_in_setMethodDeclaration6590); 
             stream_LPAREN.add(LPAREN326);
 
-            pushFollow(FOLLOW_identifier_in_setMethodDeclaration6566);
+            pushFollow(FOLLOW_identifier_in_setMethodDeclaration6594);
             param=identifier();
             _fsp--;
 
             stream_identifier.add(param.getTree());
             RPAREN327=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_setMethodDeclaration6568); 
+            match(input,RPAREN,FOLLOW_RPAREN_in_setMethodDeclaration6596); 
             stream_RPAREN.add(RPAREN327);
 
-            pushFollow(FOLLOW_functionBody_in_setMethodDeclaration6570);
+            pushFollow(FOLLOW_functionBody_in_setMethodDeclaration6598);
             functionBody328=functionBody();
             _fsp--;
 
             stream_functionBody.add(functionBody328.getTree());
 
             // AST REWRITE
-            // elements: functionBody, param, name
+            // elements: name, param, functionBody
             // token labels: 
             // rule labels: retval, param, name
             // token list labels: 
@@ -10726,9 +10727,9 @@
             RewriteRuleSubtreeStream stream_name=new RewriteRuleSubtreeStream(adaptor,"token name",name!=null?name.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1753:5: -> ^( SETTER $name $param functionBody )
+            // 1757:5: -> ^( SETTER $name $param functionBody )
             {
-                // JS.g:1753:8: ^( SETTER $name $param functionBody )
+                // JS.g:1757:8: ^( SETTER $name $param functionBody )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(SETTER, "SETTER"), root_1);
@@ -10768,7 +10769,7 @@
     };
 
     // $ANTLR start program
-    // JS.g:1760:1: program : ( sourceElement )* EOF ;
+    // JS.g:1764:1: program : ( sourceElement )* EOF ;
     public final program_return program() throws RecognitionException {
         program_return retval = new program_return();
         retval.start = input.LT(1);
@@ -10782,12 +10783,12 @@
         Object EOF330_tree=null;
 
         try {
-            // JS.g:1761:2: ( ( sourceElement )* EOF )
-            // JS.g:1761:4: ( sourceElement )* EOF
+            // JS.g:1765:2: ( ( sourceElement )* EOF )
+            // JS.g:1765:4: ( sourceElement )* EOF
             {
             root_0 = (Object)adaptor.nil();
 
-            // JS.g:1761:4: ( sourceElement )*
+            // JS.g:1765:4: ( sourceElement )*
             loop79:
             do {
                 int alt79=2;
@@ -10800,9 +10801,9 @@
 
                 switch (alt79) {
             	case 1 :
-            	    // JS.g:1761:4: sourceElement
+            	    // JS.g:1765:4: sourceElement
             	    {
-            	    pushFollow(FOLLOW_sourceElement_in_program6605);
+            	    pushFollow(FOLLOW_sourceElement_in_program6633);
             	    sourceElement329=sourceElement();
             	    _fsp--;
 
@@ -10817,7 +10818,7 @@
             } while (true);
 
             EOF330=(Token)input.LT(1);
-            match(input,EOF,FOLLOW_EOF_in_program6608); 
+            match(input,EOF,FOLLOW_EOF_in_program6636); 
 
             }
 
@@ -10843,7 +10844,7 @@
     };
 
     // $ANTLR start sourceElement
-    // JS.g:1769:1: sourceElement options {k=1; } : ({...}? functionDeclaration | statement );
+    // JS.g:1773:1: sourceElement options {k=1; } : ({...}? functionDeclaration | statement );
     public final sourceElement_return sourceElement() throws RecognitionException {
         sourceElement_return retval = new sourceElement_return();
         retval.start = input.LT(1);
@@ -10857,7 +10858,7 @@
 
 
         try {
-            // JS.g:1774:2: ({...}? functionDeclaration | statement )
+            // JS.g:1778:2: ({...}? functionDeclaration | statement )
             int alt80=2;
             int LA80_0 = input.LA(1);
 
@@ -10872,7 +10873,7 @@
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("1769:1: sourceElement options {k=1; } : ({...}? functionDeclaration | statement );", 80, 1, input);
+                        new NoViableAltException("1773:1: sourceElement options {k=1; } : ({...}? functionDeclaration | statement );", 80, 1, input);
 
                     throw nvae;
                 }
@@ -10882,20 +10883,20 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("1769:1: sourceElement options {k=1; } : ({...}? functionDeclaration | statement );", 80, 0, input);
+                    new NoViableAltException("1773:1: sourceElement options {k=1; } : ({...}? functionDeclaration | statement );", 80, 0, input);
 
                 throw nvae;
             }
             switch (alt80) {
                 case 1 :
-                    // JS.g:1774:4: {...}? functionDeclaration
+                    // JS.g:1778:4: {...}? functionDeclaration
                     {
                     root_0 = (Object)adaptor.nil();
 
                     if ( !( input.LA(1) == FUNCTION ) ) {
                         throw new FailedPredicateException(input, "sourceElement", " input.LA(1) == FUNCTION ");
                     }
-                    pushFollow(FOLLOW_functionDeclaration_in_sourceElement6637);
+                    pushFollow(FOLLOW_functionDeclaration_in_sourceElement6665);
                     functionDeclaration331=functionDeclaration();
                     _fsp--;
 
@@ -10904,11 +10905,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1775:4: statement
+                    // JS.g:1779:4: statement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_statement_in_sourceElement6642);
+                    pushFollow(FOLLOW_statement_in_sourceElement6670);
                     statement332=statement();
                     _fsp--;
 
@@ -10937,368 +10938,368 @@
 
  
 
-    public static final BitSet FOLLOW_reservedWord_in_token1969 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_identifier_in_token1974 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_punctuator_in_token1979 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_numericLiteral_in_token1984 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_StringLiteral_in_token1989 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_XmlAttribute_in_token1994 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_keyword_in_reservedWord2009 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_futureReservedWord_in_reservedWord2014 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_NULL_in_reservedWord2019 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_booleanLiteral_in_reservedWord2024 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_reservedWord_in_token1997 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_identifier_in_token2002 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_punctuator_in_token2007 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_numericLiteral_in_token2012 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_StringLiteral_in_token2017 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_XmlAttribute_in_token2022 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_keyword_in_reservedWord2037 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_futureReservedWord_in_reservedWord2042 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NULL_in_reservedWord2047 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_booleanLiteral_in_reservedWord2052 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_set_in_keyword0 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_set_in_futureReservedWord0 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_set_in_identifier0 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_set_in_punctuator0 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_NULL_in_literal2819 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_booleanLiteral_in_literal2824 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_numericLiteral_in_literal2829 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_StringLiteral_in_literal2834 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_RegularExpressionLiteral_in_literal2839 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NULL_in_literal2847 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_booleanLiteral_in_literal2852 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_numericLiteral_in_literal2857 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_StringLiteral_in_literal2862 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RegularExpressionLiteral_in_literal2867 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_set_in_booleanLiteral0 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_set_in_numericLiteral0 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_THIS_in_primaryExpression3468 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_identifier_in_primaryExpression3473 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_XmlAttribute_in_primaryExpression3478 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_literal_in_primaryExpression3483 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_arrayLiteral_in_primaryExpression3488 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_objectLiteral_in_primaryExpression3493 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_parenExpression_in_primaryExpression3498 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LPAREN_in_parenExpression3514 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_expression_in_parenExpression3516 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_RPAREN_in_parenExpression3518 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LBRACK_in_arrayLiteral3543 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819804D40L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_arrayItem_in_arrayLiteral3547 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004800L});
-    public static final BitSet FOLLOW_COMMA_in_arrayLiteral3551 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819804D40L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_arrayItem_in_arrayLiteral3553 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004800L});
-    public static final BitSet FOLLOW_RBRACK_in_arrayLiteral3561 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_assignmentExpression_in_arrayItem3589 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LBRACE_in_objectLiteral3621 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000080L,0x0E08300000000000L});
-    public static final BitSet FOLLOW_objectPropertyInitializer_in_objectLiteral3625 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004080L});
-    public static final BitSet FOLLOW_COMMA_in_objectLiteral3629 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0E08300000000000L});
-    public static final BitSet FOLLOW_objectPropertyInitializer_in_objectLiteral3631 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004080L});
-    public static final BitSet FOLLOW_RBRACE_in_objectLiteral3639 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_nameValuePair_in_objectPropertyInitializer3664 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_getMethodDeclaration_in_objectPropertyInitializer3671 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_setMethodDeclaration_in_objectPropertyInitializer3677 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_propertyName_in_nameValuePair3690 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
-    public static final BitSet FOLLOW_COLON_in_nameValuePair3692 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_assignmentExpression_in_nameValuePair3694 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_identifier_in_propertyName3718 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_StringLiteral_in_propertyName3723 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_numericLiteral_in_propertyName3728 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_XmlAttribute_in_propertyName3733 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_primaryExpression_in_memberExpression3751 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_functionExpression_in_memberExpression3756 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_newExpression_in_memberExpression3761 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_NEW_in_newExpression3772 = new BitSet(new long[]{0x0000006602460070L,0x0000000000000540L,0x0E28300000000000L});
-    public static final BitSet FOLLOW_memberExpression_in_newExpression3775 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LPAREN_in_arguments3788 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800740L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_assignmentExpression_in_arguments3792 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004200L});
-    public static final BitSet FOLLOW_COMMA_in_arguments3796 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_assignmentExpression_in_arguments3798 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004200L});
-    public static final BitSet FOLLOW_RPAREN_in_arguments3806 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_memberExpression_in_leftHandSideExpression3839 = new BitSet(new long[]{0x0000000000000002L,0xC000000000001500L});
-    public static final BitSet FOLLOW_arguments_in_leftHandSideExpression3860 = new BitSet(new long[]{0x0000000000000002L,0xC000000000001500L});
-    public static final BitSet FOLLOW_LBRACK_in_leftHandSideExpression3885 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_expression_in_leftHandSideExpression3887 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
-    public static final BitSet FOLLOW_RBRACK_in_leftHandSideExpression3889 = new BitSet(new long[]{0x0000000000000002L,0xC000000000001500L});
-    public static final BitSet FOLLOW_DOT_in_leftHandSideExpression3911 = new BitSet(new long[]{0x0000006600020000L,0x0000000002000100L,0x0008200000000000L});
-    public static final BitSet FOLLOW_rightHandSideExpression_in_leftHandSideExpression3913 = new BitSet(new long[]{0x0000000000000002L,0xC000000000001500L});
-    public static final BitSet FOLLOW_DOTDOT_in_leftHandSideExpression3934 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_expression_in_leftHandSideExpression3936 = new BitSet(new long[]{0x0000000000000002L,0xC000000000001500L});
-    public static final BitSet FOLLOW_COLONCOLON_in_leftHandSideExpression3955 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_expression_in_leftHandSideExpression3957 = new BitSet(new long[]{0x0000000000000002L,0xC000000000001500L});
-    public static final BitSet FOLLOW_parenExpression_in_rightHandSideExpression3986 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_identifier_in_rightHandSideExpression3993 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_XmlAttribute_in_rightHandSideExpression3999 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_MUL_in_rightHandSideExpression4005 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_leftHandSideExpression_in_postfixExpression4043 = new BitSet(new long[]{0x0000000000000002L,0x0000000018000000L});
-    public static final BitSet FOLLOW_postfixOperator_in_postfixExpression4049 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_INC_in_postfixOperator4067 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DEC_in_postfixOperator4076 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_postfixExpression_in_unaryExpression4093 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_unaryOperator_in_unaryExpression4098 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_unaryExpression_in_unaryExpression4101 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_XMLLiteral_in_unaryExpression4107 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DELETE_in_unaryOperator4119 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VOID_in_unaryOperator4124 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_TYPEOF_in_unaryOperator4129 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_INC_in_unaryOperator4134 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DEC_in_unaryOperator4139 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ADD_in_unaryOperator4146 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_SUB_in_unaryOperator4155 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_INV_in_unaryOperator4162 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_NOT_in_unaryOperator4167 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_YIELD_in_unaryOperator4172 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DEFAULT_in_namespaceStatement4208 = new BitSet(new long[]{0x0000002000000000L});
-    public static final BitSet FOLLOW_WXML_in_namespaceStatement4210 = new BitSet(new long[]{0x0000004000000000L});
-    public static final BitSet FOLLOW_NAMESPACE_in_namespaceStatement4212 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_ASSIGN_in_namespaceStatement4214 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000100000000000L});
-    public static final BitSet FOLLOW_StringLiteral_in_namespaceStatement4216 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x0000060000000000L});
-    public static final BitSet FOLLOW_semic_in_namespaceStatement4218 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_unaryExpression_in_multiplicativeExpression4250 = new BitSet(new long[]{0x0000000000000002L,0x0010000006000000L});
-    public static final BitSet FOLLOW_set_in_multiplicativeExpression4254 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_unaryExpression_in_multiplicativeExpression4269 = new BitSet(new long[]{0x0000000000000002L,0x0010000006000000L});
-    public static final BitSet FOLLOW_multiplicativeExpression_in_additiveExpression4287 = new BitSet(new long[]{0x0000000000000002L,0x0000000001800000L});
-    public static final BitSet FOLLOW_set_in_additiveExpression4291 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_multiplicativeExpression_in_additiveExpression4302 = new BitSet(new long[]{0x0000000000000002L,0x0000000001800000L});
-    public static final BitSet FOLLOW_additiveExpression_in_shiftExpression4321 = new BitSet(new long[]{0x0000000000000002L,0x00000000E0000000L});
-    public static final BitSet FOLLOW_set_in_shiftExpression4325 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_additiveExpression_in_shiftExpression4340 = new BitSet(new long[]{0x0000000000000002L,0x00000000E0000000L});
-    public static final BitSet FOLLOW_shiftExpression_in_relationalExpression4359 = new BitSet(new long[]{0x0000000000300002L,0x0000000000078000L});
-    public static final BitSet FOLLOW_set_in_relationalExpression4363 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_shiftExpression_in_relationalExpression4390 = new BitSet(new long[]{0x0000000000300002L,0x0000000000078000L});
-    public static final BitSet FOLLOW_shiftExpression_in_relationalExpressionNoIn4404 = new BitSet(new long[]{0x0000000000200002L,0x0000000000078000L});
-    public static final BitSet FOLLOW_set_in_relationalExpressionNoIn4408 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_shiftExpression_in_relationalExpressionNoIn4431 = new BitSet(new long[]{0x0000000000200002L,0x0000000000078000L});
-    public static final BitSet FOLLOW_relationalExpression_in_equalityExpression4450 = new BitSet(new long[]{0x0000000000000002L,0x0000000000780000L});
-    public static final BitSet FOLLOW_set_in_equalityExpression4454 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_relationalExpression_in_equalityExpression4473 = new BitSet(new long[]{0x0000000000000002L,0x0000000000780000L});
-    public static final BitSet FOLLOW_relationalExpressionNoIn_in_equalityExpressionNoIn4487 = new BitSet(new long[]{0x0000000000000002L,0x0000000000780000L});
-    public static final BitSet FOLLOW_set_in_equalityExpressionNoIn4491 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_relationalExpressionNoIn_in_equalityExpressionNoIn4510 = new BitSet(new long[]{0x0000000000000002L,0x0000000000780000L});
-    public static final BitSet FOLLOW_equalityExpression_in_bitwiseANDExpression4530 = new BitSet(new long[]{0x0000000000000002L,0x0000000100000000L});
-    public static final BitSet FOLLOW_AND_in_bitwiseANDExpression4534 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_equalityExpression_in_bitwiseANDExpression4537 = new BitSet(new long[]{0x0000000000000002L,0x0000000100000000L});
-    public static final BitSet FOLLOW_equalityExpressionNoIn_in_bitwiseANDExpressionNoIn4551 = new BitSet(new long[]{0x0000000000000002L,0x0000000100000000L});
-    public static final BitSet FOLLOW_AND_in_bitwiseANDExpressionNoIn4555 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_equalityExpressionNoIn_in_bitwiseANDExpressionNoIn4558 = new BitSet(new long[]{0x0000000000000002L,0x0000000100000000L});
-    public static final BitSet FOLLOW_bitwiseANDExpression_in_bitwiseXORExpression4574 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
-    public static final BitSet FOLLOW_XOR_in_bitwiseXORExpression4578 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_bitwiseANDExpression_in_bitwiseXORExpression4581 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
-    public static final BitSet FOLLOW_bitwiseANDExpressionNoIn_in_bitwiseXORExpressionNoIn4597 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
-    public static final BitSet FOLLOW_XOR_in_bitwiseXORExpressionNoIn4601 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_bitwiseANDExpressionNoIn_in_bitwiseXORExpressionNoIn4604 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
-    public static final BitSet FOLLOW_bitwiseXORExpression_in_bitwiseORExpression4619 = new BitSet(new long[]{0x0000000000000002L,0x0000000200000000L});
-    public static final BitSet FOLLOW_OR_in_bitwiseORExpression4623 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_bitwiseXORExpression_in_bitwiseORExpression4626 = new BitSet(new long[]{0x0000000000000002L,0x0000000200000000L});
-    public static final BitSet FOLLOW_bitwiseXORExpressionNoIn_in_bitwiseORExpressionNoIn4641 = new BitSet(new long[]{0x0000000000000002L,0x0000000200000000L});
-    public static final BitSet FOLLOW_OR_in_bitwiseORExpressionNoIn4645 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_bitwiseXORExpressionNoIn_in_bitwiseORExpressionNoIn4648 = new BitSet(new long[]{0x0000000000000002L,0x0000000200000000L});
-    public static final BitSet FOLLOW_bitwiseORExpression_in_logicalANDExpression4667 = new BitSet(new long[]{0x0000000000000002L,0x0000002000000000L});
-    public static final BitSet FOLLOW_LAND_in_logicalANDExpression4671 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_bitwiseORExpression_in_logicalANDExpression4674 = new BitSet(new long[]{0x0000000000000002L,0x0000002000000000L});
-    public static final BitSet FOLLOW_bitwiseORExpressionNoIn_in_logicalANDExpressionNoIn4688 = new BitSet(new long[]{0x0000000000000002L,0x0000002000000000L});
-    public static final BitSet FOLLOW_LAND_in_logicalANDExpressionNoIn4692 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_bitwiseORExpressionNoIn_in_logicalANDExpressionNoIn4695 = new BitSet(new long[]{0x0000000000000002L,0x0000002000000000L});
-    public static final BitSet FOLLOW_logicalANDExpression_in_logicalORExpression4710 = new BitSet(new long[]{0x0000000000000002L,0x0000004000000000L});
-    public static final BitSet FOLLOW_LOR_in_logicalORExpression4714 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_logicalANDExpression_in_logicalORExpression4717 = new BitSet(new long[]{0x0000000000000002L,0x0000004000000000L});
-    public static final BitSet FOLLOW_logicalANDExpressionNoIn_in_logicalORExpressionNoIn4732 = new BitSet(new long[]{0x0000000000000002L,0x0000004000000000L});
-    public static final BitSet FOLLOW_LOR_in_logicalORExpressionNoIn4736 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_logicalANDExpressionNoIn_in_logicalORExpressionNoIn4739 = new BitSet(new long[]{0x0000000000000002L,0x0000004000000000L});
-    public static final BitSet FOLLOW_logicalORExpression_in_conditionalExpression4758 = new BitSet(new long[]{0x0000000000000002L,0x0000008000000000L});
-    public static final BitSet FOLLOW_QUE_in_conditionalExpression4762 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_assignmentExpression_in_conditionalExpression4765 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
-    public static final BitSet FOLLOW_COLON_in_conditionalExpression4767 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_assignmentExpression_in_conditionalExpression4770 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_logicalORExpressionNoIn_in_conditionalExpressionNoIn4784 = new BitSet(new long[]{0x0000000000000002L,0x0000008000000000L});
-    public static final BitSet FOLLOW_QUE_in_conditionalExpressionNoIn4788 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_assignmentExpressionNoIn_in_conditionalExpressionNoIn4791 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
-    public static final BitSet FOLLOW_COLON_in_conditionalExpressionNoIn4793 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_assignmentExpressionNoIn_in_conditionalExpressionNoIn4796 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_conditionalExpression_in_assignmentExpression4824 = new BitSet(new long[]{0x0000000000000002L,0x002FFE0000000000L});
-    public static final BitSet FOLLOW_assignmentOperator_in_assignmentExpression4831 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_assignmentExpression_in_assignmentExpression4834 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_THIS_in_primaryExpression3496 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_identifier_in_primaryExpression3501 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_XmlAttribute_in_primaryExpression3506 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_literal_in_primaryExpression3511 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_arrayLiteral_in_primaryExpression3516 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_objectLiteral_in_primaryExpression3521 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_parenExpression_in_primaryExpression3526 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LPAREN_in_parenExpression3542 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_expression_in_parenExpression3544 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_RPAREN_in_parenExpression3546 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LBRACK_in_arrayLiteral3571 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819804D40L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_arrayItem_in_arrayLiteral3575 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004800L});
+    public static final BitSet FOLLOW_COMMA_in_arrayLiteral3579 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819804D40L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_arrayItem_in_arrayLiteral3581 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004800L});
+    public static final BitSet FOLLOW_RBRACK_in_arrayLiteral3589 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_assignmentExpression_in_arrayItem3617 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LBRACE_in_objectLiteral3649 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000080L,0x1C10600000000000L});
+    public static final BitSet FOLLOW_objectPropertyInitializer_in_objectLiteral3653 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004080L});
+    public static final BitSet FOLLOW_COMMA_in_objectLiteral3657 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x1C10600000000000L});
+    public static final BitSet FOLLOW_objectPropertyInitializer_in_objectLiteral3659 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004080L});
+    public static final BitSet FOLLOW_RBRACE_in_objectLiteral3667 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_nameValuePair_in_objectPropertyInitializer3692 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_getMethodDeclaration_in_objectPropertyInitializer3699 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_setMethodDeclaration_in_objectPropertyInitializer3705 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_propertyName_in_nameValuePair3718 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
+    public static final BitSet FOLLOW_COLON_in_nameValuePair3720 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_assignmentExpression_in_nameValuePair3722 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_identifier_in_propertyName3746 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_StringLiteral_in_propertyName3751 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_numericLiteral_in_propertyName3756 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_XmlAttribute_in_propertyName3761 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_primaryExpression_in_memberExpression3779 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_functionExpression_in_memberExpression3784 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_newExpression_in_memberExpression3789 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NEW_in_newExpression3800 = new BitSet(new long[]{0x0000006602460070L,0x0000000000000540L,0x1C50600000000000L});
+    public static final BitSet FOLLOW_memberExpression_in_newExpression3803 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LPAREN_in_arguments3816 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800740L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_assignmentExpression_in_arguments3820 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004200L});
+    public static final BitSet FOLLOW_COMMA_in_arguments3824 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_assignmentExpression_in_arguments3826 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004200L});
+    public static final BitSet FOLLOW_RPAREN_in_arguments3834 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_memberExpression_in_leftHandSideExpression3867 = new BitSet(new long[]{0x0000000000000002L,0xC000000000001500L});
+    public static final BitSet FOLLOW_arguments_in_leftHandSideExpression3888 = new BitSet(new long[]{0x0000000000000002L,0xC000000000001500L});
+    public static final BitSet FOLLOW_LBRACK_in_leftHandSideExpression3913 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_expression_in_leftHandSideExpression3915 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
+    public static final BitSet FOLLOW_RBRACK_in_leftHandSideExpression3917 = new BitSet(new long[]{0x0000000000000002L,0xC000000000001500L});
+    public static final BitSet FOLLOW_DOT_in_leftHandSideExpression3939 = new BitSet(new long[]{0x0000006600020000L,0x0000000002000100L,0x0010400000000000L});
+    public static final BitSet FOLLOW_rightHandSideExpression_in_leftHandSideExpression3941 = new BitSet(new long[]{0x0000000000000002L,0xC000000000001500L});
+    public static final BitSet FOLLOW_DOTDOT_in_leftHandSideExpression3962 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_expression_in_leftHandSideExpression3964 = new BitSet(new long[]{0x0000000000000002L,0xC000000000001500L});
+    public static final BitSet FOLLOW_COLONCOLON_in_leftHandSideExpression3983 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_expression_in_leftHandSideExpression3985 = new BitSet(new long[]{0x0000000000000002L,0xC000000000001500L});
+    public static final BitSet FOLLOW_parenExpression_in_rightHandSideExpression4014 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_identifier_in_rightHandSideExpression4021 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_XmlAttribute_in_rightHandSideExpression4027 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_MUL_in_rightHandSideExpression4033 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_leftHandSideExpression_in_postfixExpression4071 = new BitSet(new long[]{0x0000000000000002L,0x0000000018000000L});
+    public static final BitSet FOLLOW_postfixOperator_in_postfixExpression4077 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_INC_in_postfixOperator4095 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DEC_in_postfixOperator4104 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_postfixExpression_in_unaryExpression4121 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_unaryOperator_in_unaryExpression4126 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_unaryExpression_in_unaryExpression4129 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_XMLLiteral_in_unaryExpression4135 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DELETE_in_unaryOperator4147 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VOID_in_unaryOperator4152 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_TYPEOF_in_unaryOperator4157 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_INC_in_unaryOperator4162 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DEC_in_unaryOperator4167 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ADD_in_unaryOperator4174 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_SUB_in_unaryOperator4183 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_INV_in_unaryOperator4190 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NOT_in_unaryOperator4195 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_YIELD_in_unaryOperator4200 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DEFAULT_in_namespaceStatement4236 = new BitSet(new long[]{0x0000002000000000L});
+    public static final BitSet FOLLOW_WXML_in_namespaceStatement4238 = new BitSet(new long[]{0x0000004000000000L});
+    public static final BitSet FOLLOW_NAMESPACE_in_namespaceStatement4240 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_ASSIGN_in_namespaceStatement4242 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_StringLiteral_in_namespaceStatement4244 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x00000C0000000000L});
+    public static final BitSet FOLLOW_semic_in_namespaceStatement4246 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_unaryExpression_in_multiplicativeExpression4278 = new BitSet(new long[]{0x0000000000000002L,0x0010000006000000L});
+    public static final BitSet FOLLOW_set_in_multiplicativeExpression4282 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_unaryExpression_in_multiplicativeExpression4297 = new BitSet(new long[]{0x0000000000000002L,0x0010000006000000L});
+    public static final BitSet FOLLOW_multiplicativeExpression_in_additiveExpression4315 = new BitSet(new long[]{0x0000000000000002L,0x0000000001800000L});
+    public static final BitSet FOLLOW_set_in_additiveExpression4319 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_multiplicativeExpression_in_additiveExpression4330 = new BitSet(new long[]{0x0000000000000002L,0x0000000001800000L});
+    public static final BitSet FOLLOW_additiveExpression_in_shiftExpression4349 = new BitSet(new long[]{0x0000000000000002L,0x00000000E0000000L});
+    public static final BitSet FOLLOW_set_in_shiftExpression4353 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_additiveExpression_in_shiftExpression4368 = new BitSet(new long[]{0x0000000000000002L,0x00000000E0000000L});
+    public static final BitSet FOLLOW_shiftExpression_in_relationalExpression4387 = new BitSet(new long[]{0x0000000000300002L,0x0000000000078000L});
+    public static final BitSet FOLLOW_set_in_relationalExpression4391 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_shiftExpression_in_relationalExpression4418 = new BitSet(new long[]{0x0000000000300002L,0x0000000000078000L});
+    public static final BitSet FOLLOW_shiftExpression_in_relationalExpressionNoIn4432 = new BitSet(new long[]{0x0000000000200002L,0x0000000000078000L});
+    public static final BitSet FOLLOW_set_in_relationalExpressionNoIn4436 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_shiftExpression_in_relationalExpressionNoIn4459 = new BitSet(new long[]{0x0000000000200002L,0x0000000000078000L});
+    public static final BitSet FOLLOW_relationalExpression_in_equalityExpression4478 = new BitSet(new long[]{0x0000000000000002L,0x0000000000780000L});
+    public static final BitSet FOLLOW_set_in_equalityExpression4482 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_relationalExpression_in_equalityExpression4501 = new BitSet(new long[]{0x0000000000000002L,0x0000000000780000L});
+    public static final BitSet FOLLOW_relationalExpressionNoIn_in_equalityExpressionNoIn4515 = new BitSet(new long[]{0x0000000000000002L,0x0000000000780000L});
+    public static final BitSet FOLLOW_set_in_equalityExpressionNoIn4519 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_relationalExpressionNoIn_in_equalityExpressionNoIn4538 = new BitSet(new long[]{0x0000000000000002L,0x0000000000780000L});
+    public static final BitSet FOLLOW_equalityExpression_in_bitwiseANDExpression4558 = new BitSet(new long[]{0x0000000000000002L,0x0000000100000000L});
+    public static final BitSet FOLLOW_AND_in_bitwiseANDExpression4562 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_equalityExpression_in_bitwiseANDExpression4565 = new BitSet(new long[]{0x0000000000000002L,0x0000000100000000L});
+    public static final BitSet FOLLOW_equalityExpressionNoIn_in_bitwiseANDExpressionNoIn4579 = new BitSet(new long[]{0x0000000000000002L,0x0000000100000000L});
+    public static final BitSet FOLLOW_AND_in_bitwiseANDExpressionNoIn4583 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_equalityExpressionNoIn_in_bitwiseANDExpressionNoIn4586 = new BitSet(new long[]{0x0000000000000002L,0x0000000100000000L});
+    public static final BitSet FOLLOW_bitwiseANDExpression_in_bitwiseXORExpression4602 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
+    public static final BitSet FOLLOW_XOR_in_bitwiseXORExpression4606 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_bitwiseANDExpression_in_bitwiseXORExpression4609 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
+    public static final BitSet FOLLOW_bitwiseANDExpressionNoIn_in_bitwiseXORExpressionNoIn4625 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
+    public static final BitSet FOLLOW_XOR_in_bitwiseXORExpressionNoIn4629 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_bitwiseANDExpressionNoIn_in_bitwiseXORExpressionNoIn4632 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
+    public static final BitSet FOLLOW_bitwiseXORExpression_in_bitwiseORExpression4647 = new BitSet(new long[]{0x0000000000000002L,0x0000000200000000L});
+    public static final BitSet FOLLOW_OR_in_bitwiseORExpression4651 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_bitwiseXORExpression_in_bitwiseORExpression4654 = new BitSet(new long[]{0x0000000000000002L,0x0000000200000000L});
+    public static final BitSet FOLLOW_bitwiseXORExpressionNoIn_in_bitwiseORExpressionNoIn4669 = new BitSet(new long[]{0x0000000000000002L,0x0000000200000000L});
+    public static final BitSet FOLLOW_OR_in_bitwiseORExpressionNoIn4673 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_bitwiseXORExpressionNoIn_in_bitwiseORExpressionNoIn4676 = new BitSet(new long[]{0x0000000000000002L,0x0000000200000000L});
+    public static final BitSet FOLLOW_bitwiseORExpression_in_logicalANDExpression4695 = new BitSet(new long[]{0x0000000000000002L,0x0000002000000000L});
+    public static final BitSet FOLLOW_LAND_in_logicalANDExpression4699 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_bitwiseORExpression_in_logicalANDExpression4702 = new BitSet(new long[]{0x0000000000000002L,0x0000002000000000L});
+    public static final BitSet FOLLOW_bitwiseORExpressionNoIn_in_logicalANDExpressionNoIn4716 = new BitSet(new long[]{0x0000000000000002L,0x0000002000000000L});
+    public static final BitSet FOLLOW_LAND_in_logicalANDExpressionNoIn4720 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_bitwiseORExpressionNoIn_in_logicalANDExpressionNoIn4723 = new BitSet(new long[]{0x0000000000000002L,0x0000002000000000L});
+    public static final BitSet FOLLOW_logicalANDExpression_in_logicalORExpression4738 = new BitSet(new long[]{0x0000000000000002L,0x0000004000000000L});
+    public static final BitSet FOLLOW_LOR_in_logicalORExpression4742 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_logicalANDExpression_in_logicalORExpression4745 = new BitSet(new long[]{0x0000000000000002L,0x0000004000000000L});
+    public static final BitSet FOLLOW_logicalANDExpressionNoIn_in_logicalORExpressionNoIn4760 = new BitSet(new long[]{0x0000000000000002L,0x0000004000000000L});
+    public static final BitSet FOLLOW_LOR_in_logicalORExpressionNoIn4764 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_logicalANDExpressionNoIn_in_logicalORExpressionNoIn4767 = new BitSet(new long[]{0x0000000000000002L,0x0000004000000000L});
+    public static final BitSet FOLLOW_logicalORExpression_in_conditionalExpression4786 = new BitSet(new long[]{0x0000000000000002L,0x0000008000000000L});
+    public static final BitSet FOLLOW_QUE_in_conditionalExpression4790 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_assignmentExpression_in_conditionalExpression4793 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
+    public static final BitSet FOLLOW_COLON_in_conditionalExpression4795 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_assignmentExpression_in_conditionalExpression4798 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_logicalORExpressionNoIn_in_conditionalExpressionNoIn4812 = new BitSet(new long[]{0x0000000000000002L,0x0000008000000000L});
+    public static final BitSet FOLLOW_QUE_in_conditionalExpressionNoIn4816 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_assignmentExpressionNoIn_in_conditionalExpressionNoIn4819 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
+    public static final BitSet FOLLOW_COLON_in_conditionalExpressionNoIn4821 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_assignmentExpressionNoIn_in_conditionalExpressionNoIn4824 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_conditionalExpression_in_assignmentExpression4852 = new BitSet(new long[]{0x0000000000000002L,0x002FFE0000000000L});
+    public static final BitSet FOLLOW_assignmentOperator_in_assignmentExpression4859 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_assignmentExpression_in_assignmentExpression4862 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_set_in_assignmentOperator0 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_conditionalExpressionNoIn_in_assignmentExpressionNoIn4912 = new BitSet(new long[]{0x0000000000000002L,0x002FFE0000000000L});
-    public static final BitSet FOLLOW_assignmentOperator_in_assignmentExpressionNoIn4919 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_assignmentExpressionNoIn_in_assignmentExpressionNoIn4922 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_assignmentExpression_in_expression4944 = new BitSet(new long[]{0x0000000000000002L,0x0000000000004000L});
-    public static final BitSet FOLLOW_COMMA_in_expression4948 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_assignmentExpression_in_expression4952 = new BitSet(new long[]{0x0000000000000002L,0x0000000000004000L});
-    public static final BitSet FOLLOW_assignmentExpressionNoIn_in_expressionNoIn4989 = new BitSet(new long[]{0x0000000000000002L,0x0000000000004000L});
-    public static final BitSet FOLLOW_COMMA_in_expressionNoIn4993 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_assignmentExpressionNoIn_in_expressionNoIn4997 = new BitSet(new long[]{0x0000000000000002L,0x0000000000004000L});
-    public static final BitSet FOLLOW_SEMIC_in_semic5048 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_EOF_in_semic5053 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_RBRACE_in_semic5058 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_EOL_in_semic5065 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_MultiLineComment_in_semic5069 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_block_in_statement5098 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_statementTail_in_statement5103 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_variableStatement_in_statementTail5115 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_emptyStatement_in_statementTail5120 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_expressionStatement_in_statementTail5125 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ifStatement_in_statementTail5130 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_iterationStatement_in_statementTail5135 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_continueStatement_in_statementTail5140 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_breakStatement_in_statementTail5145 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_returnStatement_in_statementTail5150 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_withStatement_in_statementTail5155 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_labelledStatement_in_statementTail5160 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_switchStatement_in_statementTail5165 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_throwStatement_in_statementTail5170 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_tryStatement_in_statementTail5175 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_constStatement_in_statementTail5180 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_namespaceStatement_in_statementTail5185 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LBRACE_in_block5200 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x00000018198025C0L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_statement_in_block5202 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x00000018198025C0L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_RBRACE_in_block5205 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VAR_in_variableStatement5234 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_variableDeclaration_in_variableStatement5236 = new BitSet(new long[]{0x0000000000000000L,0x0000000000006080L,0x0000060000000000L});
-    public static final BitSet FOLLOW_COMMA_in_variableStatement5240 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_variableDeclaration_in_variableStatement5242 = new BitSet(new long[]{0x0000000000000000L,0x0000000000006080L,0x0000060000000000L});
-    public static final BitSet FOLLOW_semic_in_variableStatement5247 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_identifier_in_variableDeclaration5270 = new BitSet(new long[]{0x0000000000000002L,0x0000020000000000L});
-    public static final BitSet FOLLOW_ASSIGN_in_variableDeclaration5274 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_assignmentExpression_in_variableDeclaration5277 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_identifier_in_variableDeclarationNoIn5292 = new BitSet(new long[]{0x0000000000000002L,0x0000020000000000L});
-    public static final BitSet FOLLOW_ASSIGN_in_variableDeclarationNoIn5296 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_assignmentExpressionNoIn_in_variableDeclarationNoIn5299 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_CONST_in_constStatement5314 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_variableDeclaration_in_constStatement5316 = new BitSet(new long[]{0x0000000000000000L,0x0000000000006080L,0x0000060000000000L});
-    public static final BitSet FOLLOW_COMMA_in_constStatement5320 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_variableDeclaration_in_constStatement5322 = new BitSet(new long[]{0x0000000000000000L,0x0000000000006080L,0x0000060000000000L});
-    public static final BitSet FOLLOW_semic_in_constStatement5327 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_SEMIC_in_emptyStatement5357 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_expression_in_expressionStatement5376 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x0000060000000000L});
-    public static final BitSet FOLLOW_semic_in_expressionStatement5378 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_IF_in_ifStatement5396 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_LPAREN_in_ifStatement5398 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_expression_in_ifStatement5400 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_RPAREN_in_ifStatement5402 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x0000001819802540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_statement_in_ifStatement5404 = new BitSet(new long[]{0x0000000000004002L});
-    public static final BitSet FOLLOW_ELSE_in_ifStatement5410 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x0000001819802540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_statement_in_ifStatement5412 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_doStatement_in_iterationStatement5445 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_whileStatement_in_iterationStatement5450 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_forEachStatement_in_iterationStatement5455 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_forStatement_in_iterationStatement5460 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DO_in_doStatement5472 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x0000001819802540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_statement_in_doStatement5474 = new BitSet(new long[]{0x0000000080000000L});
-    public static final BitSet FOLLOW_WHILE_in_doStatement5476 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_LPAREN_in_doStatement5478 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_expression_in_doStatement5480 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_RPAREN_in_doStatement5482 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x0000060000000000L});
-    public static final BitSet FOLLOW_semic_in_doStatement5484 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_WHILE_in_whileStatement5509 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_LPAREN_in_whileStatement5512 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_expression_in_whileStatement5515 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_RPAREN_in_whileStatement5517 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x0000001819802540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_statement_in_whileStatement5520 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FOR_in_forEachStatement5535 = new BitSet(new long[]{0x0000000000020000L});
-    public static final BitSet FOLLOW_EACH_in_forEachStatement5537 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_LPAREN_in_forEachStatement5539 = new BitSet(new long[]{0x0000006E72461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_forEachControl_in_forEachStatement5541 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_RPAREN_in_forEachStatement5543 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x0000001819802540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_statement_in_forEachStatement5545 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_forControlVar_in_forEachControl5572 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_forControlExpression_in_forEachControl5578 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FOR_in_forStatement5590 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_LPAREN_in_forStatement5593 = new BitSet(new long[]{0x0000006E72461070L,0x0000001819802540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_forControl_in_forStatement5596 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_RPAREN_in_forStatement5598 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x0000001819802540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_statement_in_forStatement5601 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_forControlVar_in_forControl5612 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_forControlExpression_in_forControl5617 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_forControlSemic_in_forControl5622 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VAR_in_forControlVar5633 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_variableDeclarationNoIn_in_forControlVar5635 = new BitSet(new long[]{0x0000000000100000L,0x0000000000006000L});
-    public static final BitSet FOLLOW_IN_in_forControlVar5647 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_expression_in_forControlVar5649 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_COMMA_in_forControlVar5695 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_variableDeclarationNoIn_in_forControlVar5697 = new BitSet(new long[]{0x0000000000000000L,0x0000000000006000L});
-    public static final BitSet FOLLOW_SEMIC_in_forControlVar5702 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819802540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_expression_in_forControlVar5706 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
-    public static final BitSet FOLLOW_SEMIC_in_forControlVar5709 = new BitSet(new long[]{0x0000006E52461072L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_expression_in_forControlVar5713 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_expressionNoIn_in_forControlExpression5779 = new BitSet(new long[]{0x0000000000100000L,0x0000000000002000L});
-    public static final BitSet FOLLOW_IN_in_forControlExpression5794 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_expression_in_forControlExpression5798 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_SEMIC_in_forControlExpression5844 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819802540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_expression_in_forControlExpression5848 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
-    public static final BitSet FOLLOW_SEMIC_in_forControlExpression5851 = new BitSet(new long[]{0x0000006E52461072L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_expression_in_forControlExpression5855 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_SEMIC_in_forControlSemic5914 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819802540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_expression_in_forControlSemic5918 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
-    public static final BitSet FOLLOW_SEMIC_in_forControlSemic5921 = new BitSet(new long[]{0x0000006E52461072L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_expression_in_forControlSemic5925 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_CONTINUE_in_continueStatement5979 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x0008060000000000L});
-    public static final BitSet FOLLOW_Identifier_in_continueStatement5984 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x0000060000000000L});
-    public static final BitSet FOLLOW_semic_in_continueStatement5987 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_BREAK_in_breakStatement6006 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x0008060000000000L});
-    public static final BitSet FOLLOW_Identifier_in_breakStatement6011 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x0000060000000000L});
-    public static final BitSet FOLLOW_semic_in_breakStatement6014 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_RETURN_in_returnStatement6033 = new BitSet(new long[]{0x0000006E52461070L,0x00000018198025C0L,0x0E28360000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_expression_in_returnStatement6038 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x0000060000000000L});
-    public static final BitSet FOLLOW_semic_in_returnStatement6041 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_WITH_in_withStatement6058 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_LPAREN_in_withStatement6061 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_expression_in_withStatement6064 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_RPAREN_in_withStatement6066 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x0000001819802540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_statement_in_withStatement6069 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_SWITCH_in_switchStatement6090 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_LPAREN_in_switchStatement6092 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_expression_in_switchStatement6094 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_RPAREN_in_switchStatement6096 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
-    public static final BitSet FOLLOW_LBRACE_in_switchStatement6098 = new BitSet(new long[]{0x0000000000000900L,0x0000000000000080L});
-    public static final BitSet FOLLOW_defaultClause_in_switchStatement6105 = new BitSet(new long[]{0x0000000000000900L,0x0000000000000080L});
-    public static final BitSet FOLLOW_caseClause_in_switchStatement6111 = new BitSet(new long[]{0x0000000000000900L,0x0000000000000080L});
-    public static final BitSet FOLLOW_RBRACE_in_switchStatement6116 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_CASE_in_caseClause6144 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_expression_in_caseClause6147 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
-    public static final BitSet FOLLOW_COLON_in_caseClause6149 = new BitSet(new long[]{0x0000106FFFCF3CF2L,0x0000001819802540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_statement_in_caseClause6152 = new BitSet(new long[]{0x0000106FFFCF3CF2L,0x0000001819802540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_DEFAULT_in_defaultClause6165 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
-    public static final BitSet FOLLOW_COLON_in_defaultClause6168 = new BitSet(new long[]{0x0000106FFFCF3CF2L,0x0000001819802540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_statement_in_defaultClause6171 = new BitSet(new long[]{0x0000106FFFCF3CF2L,0x0000001819802540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_identifier_in_labelledStatement6188 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
-    public static final BitSet FOLLOW_COLON_in_labelledStatement6190 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x0000001819802540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_statement_in_labelledStatement6192 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_THROW_in_throwStatement6223 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_expression_in_throwStatement6228 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x0000060000000000L});
-    public static final BitSet FOLLOW_semic_in_throwStatement6230 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_TRY_in_tryStatement6247 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
-    public static final BitSet FOLLOW_block_in_tryStatement6250 = new BitSet(new long[]{0x0000000000008200L});
-    public static final BitSet FOLLOW_catchClause_in_tryStatement6254 = new BitSet(new long[]{0x0000000000008202L});
-    public static final BitSet FOLLOW_finallyClause_in_tryStatement6257 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_finallyClause_in_tryStatement6262 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_CATCH_in_catchClause6276 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_LPAREN_in_catchClause6279 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_identifier_in_catchClause6282 = new BitSet(new long[]{0x0000000000080000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_catchFilter_in_catchClause6284 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_RPAREN_in_catchClause6287 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
-    public static final BitSet FOLLOW_block_in_catchClause6290 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_IF_in_catchFilter6303 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_instanceofExpression_in_catchFilter6306 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_identifier_in_instanceofExpression6321 = new BitSet(new long[]{0x0000000000200000L});
-    public static final BitSet FOLLOW_INSTANCEOF_in_instanceofExpression6323 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_identifier_in_instanceofExpression6326 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FINALLY_in_finallyClause6339 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
-    public static final BitSet FOLLOW_block_in_finallyClause6342 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FUNCTION_in_functionDeclaration6363 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_identifier_in_functionDeclaration6367 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_formalParameterList_in_functionDeclaration6369 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
-    public static final BitSet FOLLOW_functionBody_in_functionDeclaration6371 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FUNCTION_in_functionExpression6398 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000100L,0x0008000000000000L});
-    public static final BitSet FOLLOW_identifier_in_functionExpression6402 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_formalParameterList_in_functionExpression6405 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
-    public static final BitSet FOLLOW_functionBody_in_functionExpression6407 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LPAREN_in_formalParameterList6435 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000200L,0x0008000000000000L});
-    public static final BitSet FOLLOW_identifier_in_formalParameterList6441 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004200L});
-    public static final BitSet FOLLOW_COMMA_in_formalParameterList6445 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_identifier_in_formalParameterList6449 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004200L});
-    public static final BitSet FOLLOW_RPAREN_in_formalParameterList6457 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LBRACE_in_functionBody6483 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x00000018198025C0L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_sourceElement_in_functionBody6485 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x00000018198025C0L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_RBRACE_in_functionBody6488 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_GET_in_getMethodDeclaration6518 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_identifier_in_getMethodDeclaration6522 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_LPAREN_in_getMethodDeclaration6524 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_RPAREN_in_getMethodDeclaration6526 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
-    public static final BitSet FOLLOW_functionBody_in_getMethodDeclaration6528 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_SET_in_setMethodDeclaration6556 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_identifier_in_setMethodDeclaration6560 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_LPAREN_in_setMethodDeclaration6562 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_identifier_in_setMethodDeclaration6566 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_RPAREN_in_setMethodDeclaration6568 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
-    public static final BitSet FOLLOW_functionBody_in_setMethodDeclaration6570 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_sourceElement_in_program6605 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x0000001819802540L,0x0E28300000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_EOF_in_program6608 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_functionDeclaration_in_sourceElement6637 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_statement_in_sourceElement6642 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_conditionalExpressionNoIn_in_assignmentExpressionNoIn4940 = new BitSet(new long[]{0x0000000000000002L,0x002FFE0000000000L});
+    public static final BitSet FOLLOW_assignmentOperator_in_assignmentExpressionNoIn4947 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_assignmentExpressionNoIn_in_assignmentExpressionNoIn4950 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_assignmentExpression_in_expression4972 = new BitSet(new long[]{0x0000000000000002L,0x0000000000004000L});
+    public static final BitSet FOLLOW_COMMA_in_expression4976 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_assignmentExpression_in_expression4980 = new BitSet(new long[]{0x0000000000000002L,0x0000000000004000L});
+    public static final BitSet FOLLOW_assignmentExpressionNoIn_in_expressionNoIn5017 = new BitSet(new long[]{0x0000000000000002L,0x0000000000004000L});
+    public static final BitSet FOLLOW_COMMA_in_expressionNoIn5021 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_assignmentExpressionNoIn_in_expressionNoIn5025 = new BitSet(new long[]{0x0000000000000002L,0x0000000000004000L});
+    public static final BitSet FOLLOW_SEMIC_in_semic5076 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_EOF_in_semic5081 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RBRACE_in_semic5086 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_EOL_in_semic5093 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_MultiLineComment_in_semic5097 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_block_in_statement5126 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_statementTail_in_statement5131 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_variableStatement_in_statementTail5143 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_emptyStatement_in_statementTail5148 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_expressionStatement_in_statementTail5153 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ifStatement_in_statementTail5158 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_iterationStatement_in_statementTail5163 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_continueStatement_in_statementTail5168 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_breakStatement_in_statementTail5173 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_returnStatement_in_statementTail5178 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_withStatement_in_statementTail5183 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_labelledStatement_in_statementTail5188 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_switchStatement_in_statementTail5193 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_throwStatement_in_statementTail5198 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_tryStatement_in_statementTail5203 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_constStatement_in_statementTail5208 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_namespaceStatement_in_statementTail5213 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LBRACE_in_block5228 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x00000018198025C0L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_statement_in_block5230 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x00000018198025C0L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_RBRACE_in_block5233 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VAR_in_variableStatement5262 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0010000000000000L});
+    public static final BitSet FOLLOW_variableDeclaration_in_variableStatement5264 = new BitSet(new long[]{0x0000000000000000L,0x0000000000006080L,0x00000C0000000000L});
+    public static final BitSet FOLLOW_COMMA_in_variableStatement5268 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0010000000000000L});
+    public static final BitSet FOLLOW_variableDeclaration_in_variableStatement5270 = new BitSet(new long[]{0x0000000000000000L,0x0000000000006080L,0x00000C0000000000L});
+    public static final BitSet FOLLOW_semic_in_variableStatement5275 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_identifier_in_variableDeclaration5298 = new BitSet(new long[]{0x0000000000000002L,0x0000020000000000L});
+    public static final BitSet FOLLOW_ASSIGN_in_variableDeclaration5302 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_assignmentExpression_in_variableDeclaration5305 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_identifier_in_variableDeclarationNoIn5320 = new BitSet(new long[]{0x0000000000000002L,0x0000020000000000L});
+    public static final BitSet FOLLOW_ASSIGN_in_variableDeclarationNoIn5324 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_assignmentExpressionNoIn_in_variableDeclarationNoIn5327 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_CONST_in_constStatement5342 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0010000000000000L});
+    public static final BitSet FOLLOW_variableDeclaration_in_constStatement5344 = new BitSet(new long[]{0x0000000000000000L,0x0000000000006080L,0x00000C0000000000L});
+    public static final BitSet FOLLOW_COMMA_in_constStatement5348 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0010000000000000L});
+    public static final BitSet FOLLOW_variableDeclaration_in_constStatement5350 = new BitSet(new long[]{0x0000000000000000L,0x0000000000006080L,0x00000C0000000000L});
+    public static final BitSet FOLLOW_semic_in_constStatement5355 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_SEMIC_in_emptyStatement5385 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_expression_in_expressionStatement5404 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x00000C0000000000L});
+    public static final BitSet FOLLOW_semic_in_expressionStatement5406 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_IF_in_ifStatement5424 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
+    public static final BitSet FOLLOW_LPAREN_in_ifStatement5426 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_expression_in_ifStatement5428 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_RPAREN_in_ifStatement5430 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x0000001819802540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_statement_in_ifStatement5432 = new BitSet(new long[]{0x0000000000004002L});
+    public static final BitSet FOLLOW_ELSE_in_ifStatement5438 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x0000001819802540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_statement_in_ifStatement5440 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_doStatement_in_iterationStatement5473 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_whileStatement_in_iterationStatement5478 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_forEachStatement_in_iterationStatement5483 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_forStatement_in_iterationStatement5488 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DO_in_doStatement5500 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x0000001819802540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_statement_in_doStatement5502 = new BitSet(new long[]{0x0000000080000000L});
+    public static final BitSet FOLLOW_WHILE_in_doStatement5504 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
+    public static final BitSet FOLLOW_LPAREN_in_doStatement5506 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_expression_in_doStatement5508 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_RPAREN_in_doStatement5510 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x00000C0000000000L});
+    public static final BitSet FOLLOW_semic_in_doStatement5512 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_WHILE_in_whileStatement5537 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
+    public static final BitSet FOLLOW_LPAREN_in_whileStatement5540 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_expression_in_whileStatement5543 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_RPAREN_in_whileStatement5545 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x0000001819802540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_statement_in_whileStatement5548 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FOR_in_forEachStatement5563 = new BitSet(new long[]{0x0000000000020000L});
+    public static final BitSet FOLLOW_EACH_in_forEachStatement5565 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
+    public static final BitSet FOLLOW_LPAREN_in_forEachStatement5567 = new BitSet(new long[]{0x0000006E72461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_forEachControl_in_forEachStatement5569 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_RPAREN_in_forEachStatement5571 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x0000001819802540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_statement_in_forEachStatement5573 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_forControlVar_in_forEachControl5600 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_forControlExpression_in_forEachControl5606 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FOR_in_forStatement5618 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
+    public static final BitSet FOLLOW_LPAREN_in_forStatement5621 = new BitSet(new long[]{0x0000006E72461070L,0x0000001819802540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_forControl_in_forStatement5624 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_RPAREN_in_forStatement5626 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x0000001819802540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_statement_in_forStatement5629 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_forControlVar_in_forControl5640 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_forControlExpression_in_forControl5645 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_forControlSemic_in_forControl5650 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VAR_in_forControlVar5661 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0010000000000000L});
+    public static final BitSet FOLLOW_variableDeclarationNoIn_in_forControlVar5663 = new BitSet(new long[]{0x0000000000100000L,0x0000000000006000L});
+    public static final BitSet FOLLOW_IN_in_forControlVar5675 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_expression_in_forControlVar5677 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_COMMA_in_forControlVar5723 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0010000000000000L});
+    public static final BitSet FOLLOW_variableDeclarationNoIn_in_forControlVar5725 = new BitSet(new long[]{0x0000000000000000L,0x0000000000006000L});
+    public static final BitSet FOLLOW_SEMIC_in_forControlVar5730 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819802540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_expression_in_forControlVar5734 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
+    public static final BitSet FOLLOW_SEMIC_in_forControlVar5737 = new BitSet(new long[]{0x0000006E52461072L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_expression_in_forControlVar5741 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_expressionNoIn_in_forControlExpression5807 = new BitSet(new long[]{0x0000000000100000L,0x0000000000002000L});
+    public static final BitSet FOLLOW_IN_in_forControlExpression5822 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_expression_in_forControlExpression5826 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_SEMIC_in_forControlExpression5872 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819802540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_expression_in_forControlExpression5876 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
+    public static final BitSet FOLLOW_SEMIC_in_forControlExpression5879 = new BitSet(new long[]{0x0000006E52461072L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_expression_in_forControlExpression5883 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_SEMIC_in_forControlSemic5942 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819802540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_expression_in_forControlSemic5946 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
+    public static final BitSet FOLLOW_SEMIC_in_forControlSemic5949 = new BitSet(new long[]{0x0000006E52461072L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_expression_in_forControlSemic5953 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_CONTINUE_in_continueStatement6007 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x00100C0000000000L});
+    public static final BitSet FOLLOW_Identifier_in_continueStatement6012 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x00000C0000000000L});
+    public static final BitSet FOLLOW_semic_in_continueStatement6015 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_BREAK_in_breakStatement6034 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x00100C0000000000L});
+    public static final BitSet FOLLOW_Identifier_in_breakStatement6039 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x00000C0000000000L});
+    public static final BitSet FOLLOW_semic_in_breakStatement6042 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_RETURN_in_returnStatement6061 = new BitSet(new long[]{0x0000006E52461070L,0x00000018198025C0L,0x1C506C0000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_expression_in_returnStatement6066 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x00000C0000000000L});
+    public static final BitSet FOLLOW_semic_in_returnStatement6069 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_WITH_in_withStatement6086 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
+    public static final BitSet FOLLOW_LPAREN_in_withStatement6089 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_expression_in_withStatement6092 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_RPAREN_in_withStatement6094 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x0000001819802540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_statement_in_withStatement6097 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_SWITCH_in_switchStatement6118 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
+    public static final BitSet FOLLOW_LPAREN_in_switchStatement6120 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_expression_in_switchStatement6122 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_RPAREN_in_switchStatement6124 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_LBRACE_in_switchStatement6126 = new BitSet(new long[]{0x0000000000000900L,0x0000000000000080L});
+    public static final BitSet FOLLOW_defaultClause_in_switchStatement6133 = new BitSet(new long[]{0x0000000000000900L,0x0000000000000080L});
+    public static final BitSet FOLLOW_caseClause_in_switchStatement6139 = new BitSet(new long[]{0x0000000000000900L,0x0000000000000080L});
+    public static final BitSet FOLLOW_RBRACE_in_switchStatement6144 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_CASE_in_caseClause6172 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_expression_in_caseClause6175 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
+    public static final BitSet FOLLOW_COLON_in_caseClause6177 = new BitSet(new long[]{0x0000106FFFCF3CF2L,0x0000001819802540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_statement_in_caseClause6180 = new BitSet(new long[]{0x0000106FFFCF3CF2L,0x0000001819802540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_DEFAULT_in_defaultClause6193 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
+    public static final BitSet FOLLOW_COLON_in_defaultClause6196 = new BitSet(new long[]{0x0000106FFFCF3CF2L,0x0000001819802540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_statement_in_defaultClause6199 = new BitSet(new long[]{0x0000106FFFCF3CF2L,0x0000001819802540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_identifier_in_labelledStatement6216 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
+    public static final BitSet FOLLOW_COLON_in_labelledStatement6218 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x0000001819802540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_statement_in_labelledStatement6220 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_THROW_in_throwStatement6251 = new BitSet(new long[]{0x0000006E52461070L,0x0000001819800540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_expression_in_throwStatement6256 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x00000C0000000000L});
+    public static final BitSet FOLLOW_semic_in_throwStatement6258 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_TRY_in_tryStatement6275 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_block_in_tryStatement6278 = new BitSet(new long[]{0x0000000000008200L});
+    public static final BitSet FOLLOW_catchClause_in_tryStatement6282 = new BitSet(new long[]{0x0000000000008202L});
+    public static final BitSet FOLLOW_finallyClause_in_tryStatement6285 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_finallyClause_in_tryStatement6290 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_CATCH_in_catchClause6304 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
+    public static final BitSet FOLLOW_LPAREN_in_catchClause6307 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0010000000000000L});
+    public static final BitSet FOLLOW_identifier_in_catchClause6310 = new BitSet(new long[]{0x0000000000080000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_catchFilter_in_catchClause6312 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_RPAREN_in_catchClause6315 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_block_in_catchClause6318 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_IF_in_catchFilter6331 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0010000000000000L});
+    public static final BitSet FOLLOW_instanceofExpression_in_catchFilter6334 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_identifier_in_instanceofExpression6349 = new BitSet(new long[]{0x0000000000200000L});
+    public static final BitSet FOLLOW_INSTANCEOF_in_instanceofExpression6351 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0010000000000000L});
+    public static final BitSet FOLLOW_identifier_in_instanceofExpression6354 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FINALLY_in_finallyClause6367 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_block_in_finallyClause6370 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FUNCTION_in_functionDeclaration6391 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0010000000000000L});
+    public static final BitSet FOLLOW_identifier_in_functionDeclaration6395 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
+    public static final BitSet FOLLOW_formalParameterList_in_functionDeclaration6397 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_functionBody_in_functionDeclaration6399 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FUNCTION_in_functionExpression6426 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000100L,0x0010000000000000L});
+    public static final BitSet FOLLOW_identifier_in_functionExpression6430 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
+    public static final BitSet FOLLOW_formalParameterList_in_functionExpression6433 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_functionBody_in_functionExpression6435 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LPAREN_in_formalParameterList6463 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000200L,0x0010000000000000L});
+    public static final BitSet FOLLOW_identifier_in_formalParameterList6469 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004200L});
+    public static final BitSet FOLLOW_COMMA_in_formalParameterList6473 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0010000000000000L});
+    public static final BitSet FOLLOW_identifier_in_formalParameterList6477 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004200L});
+    public static final BitSet FOLLOW_RPAREN_in_formalParameterList6485 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LBRACE_in_functionBody6511 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x00000018198025C0L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_sourceElement_in_functionBody6513 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x00000018198025C0L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_RBRACE_in_functionBody6516 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_GET_in_getMethodDeclaration6546 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0010000000000000L});
+    public static final BitSet FOLLOW_identifier_in_getMethodDeclaration6550 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
+    public static final BitSet FOLLOW_LPAREN_in_getMethodDeclaration6552 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_RPAREN_in_getMethodDeclaration6554 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_functionBody_in_getMethodDeclaration6556 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_SET_in_setMethodDeclaration6584 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0010000000000000L});
+    public static final BitSet FOLLOW_identifier_in_setMethodDeclaration6588 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
+    public static final BitSet FOLLOW_LPAREN_in_setMethodDeclaration6590 = new BitSet(new long[]{0x0000006600020000L,0x0000000000000000L,0x0010000000000000L});
+    public static final BitSet FOLLOW_identifier_in_setMethodDeclaration6594 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_RPAREN_in_setMethodDeclaration6596 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_functionBody_in_setMethodDeclaration6598 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_sourceElement_in_program6633 = new BitSet(new long[]{0x0000106FFFCF3CF0L,0x0000001819802540L,0x1C50600000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_EOF_in_program6636 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_functionDeclaration_in_sourceElement6665 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_statement_in_sourceElement6670 = new BitSet(new long[]{0x0000000000000002L});
 
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.dltk.javascript.parser/src/org/eclipse/dltk/javascript/parser/JavaScriptTokenFilter.java b/plugins/org.eclipse.dltk.javascript.parser/src/org/eclipse/dltk/javascript/parser/JavaScriptTokenFilter.java
index c87454a..c1b5945 100644
--- a/plugins/org.eclipse.dltk.javascript.parser/src/org/eclipse/dltk/javascript/parser/JavaScriptTokenFilter.java
+++ b/plugins/org.eclipse.dltk.javascript.parser/src/org/eclipse/dltk/javascript/parser/JavaScriptTokenFilter.java
@@ -379,10 +379,7 @@
 
 			}
 
-			Token newToken = new JavaScriptToken(source.get(i));
-			// newToken.setTokenIndex(tokenIndex++);
-
-			tokens.add(newToken);
+			tokens.add(tk);
 		}
 		return tokens;
 	}