keywords get/set/each/namespace could be used as identifiers
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 bd44d5f..8301bad 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
@@ -205,6 +205,10 @@
 	EXPR ;
 	FORITER ;
 	FORSTEP ;
+	FOREACH ;
+	GETTER ;
+	SETTER ;
+	DEFAULT_XML_NAMESPACE ;
 	ITEM ;
 	LABELLED ;
 	NAMEDVALUE ;
@@ -233,7 +237,11 @@
 
 final static boolean isIdentifierKeyword(int token)
 {
-	return token == WXML; 
+	return token == WXML
+		|| token == GET
+  		|| token == SET
+  		|| token == EACH
+  		|| token == NAMESPACE; 
 }
 
 private final boolean areRegularExpressionsEnabled()
@@ -739,6 +747,7 @@
   | GET
   | SET
   | EACH
+  | NAMESPACE
   | Identifier
 ;
 
@@ -1143,7 +1152,8 @@
 // $>
 
 namespaceStatement
-  : DEFAULT WXML NAMESPACE^ ASSIGN StringLiteral semic!
+  : DEFAULT WXML NAMESPACE ASSIGN StringLiteral semic
+    -> ^(DEFAULT_XML_NAMESPACE DEFAULT WXML ASSIGN StringLiteral)
   ;
 
 // $<Multiplicative operators (11.5)
@@ -1508,7 +1518,8 @@
 */
 
 forEachStatement
-  : FOR! EACH^ LPAREN! forEachControl RPAREN! statement
+  : FOR EACH LPAREN forEachControl RPAREN statement 
+  	-> ^(FOREACH forEachControl statement)
   ;
 
 forEachControl
@@ -1733,11 +1744,13 @@
 // $< get/set methods
 
 getMethodDeclaration
-  : GET^ name=identifier LPAREN! RPAREN! functionBody
+  : GET name=identifier LPAREN RPAREN functionBody
+  	-> ^(GETTER identifier functionBody)
   ;
   
 setMethodDeclaration
-  : SET^ name=identifier LPAREN! identifier RPAREN! functionBody
+  : SET name=identifier LPAREN param=identifier RPAREN functionBody
+    -> ^(SETTER $name $param functionBody)
   ;
 
 // $>	
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 5ae63ab..03344b3 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-08-31 22:50:18
+// $ANTLR 3.0.1 JS.g 2009-09-02 10:05:09
 
 package org.eclipse.dltk.javascript.parser;
 
@@ -12,8 +12,8 @@
     public static final int PACKAGE=59;
     public static final int FUNCTION=18;
     public static final int SHR=94;
-    public static final int VT=154;
-    public static final int RegularExpressionChar=192;
+    public static final int VT=158;
+    public static final int RegularExpressionChar=196;
     public static final int CDATA=36;
     public static final int LOCALNAME=134;
     public static final int XRCLOSE=121;
@@ -21,7 +21,7 @@
     public static final int MOD=90;
     public static final int XHOPEN=123;
     public static final int CONST=44;
-    public static final int DQUOTE=151;
+    public static final int DQUOTE=155;
     public static final int DO=13;
     public static final int NOT=99;
     public static final int EOF=-1;
@@ -33,15 +33,15 @@
     public static final int FINAL=50;
     public static final int FORSTEP=139;
     public static final int IMPORT=54;
-    public static final int EOL=165;
+    public static final int EOL=169;
     public static final int XLCLOSE=120;
-    public static final int PropertyIdentifierSymbols=176;
-    public static final int OctalDigit=178;
+    public static final int PropertyIdentifierSymbols=180;
+    public static final int OctalDigit=182;
     public static final int RETURN=23;
     public static final int THIS=25;
     public static final int ARGS=128;
     public static final int GET=33;
-    public static final int WhiteSpace=159;
+    public static final int WhiteSpace=163;
     public static final int EXPORT=48;
     public static final int EQ=83;
     public static final int GOTO=52;
@@ -54,24 +54,25 @@
     public static final int ELSE=14;
     public static final int NATIVE=58;
     public static final int INT=55;
-    public static final int FF=155;
-    public static final int OctalEscapeSequence=186;
-    public static final int RegularExpressionFirstChar=191;
+    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 TYPEOF=28;
     public static final int GT=80;
     public static final int CALL=135;
-    public static final int CharacterEscapeSequence=184;
-    public static final int XML=149;
+    public static final int CharacterEscapeSequence=188;
+    public static final int XML=153;
     public static final int LAND=101;
-    public static final int PINC=147;
+    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=177;
+    public static final int RegularExpressionLiteral=181;
     public static final int SUB=88;
     public static final int FLOAT=51;
-    public static final int DecimalIntegerLiteral=180;
-    public static final int HexDigit=170;
+    public static final int DecimalIntegerLiteral=184;
+    public static final int HexDigit=174;
     public static final int LPAREN=72;
     public static final int AT=125;
     public static final int IMPLEMENTS=53;
@@ -79,56 +80,56 @@
     public static final int YIELD=35;
     public static final int XCCLOSE=119;
     public static final int SHRASS=111;
-    public static final int PS=163;
-    public static final int MultiLineComment=166;
+    public static final int PS=167;
+    public static final int MultiLineComment=170;
     public static final int ADD=87;
-    public static final int ZeroToThree=185;
-    public static final int ITEM=140;
-    public static final int XMLLiteral=193;
-    public static final int UnicodeEscapeSequence=188;
+    public static final int ZeroToThree=189;
+    public static final int ITEM=144;
+    public static final int XMLLiteral=197;
+    public static final int UnicodeEscapeSequence=192;
     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=152;
-    public static final int Tokens=194;
+    public static final int SQUOTE=156;
+    public static final int Tokens=198;
     public static final int SAME=85;
     public static final int XHCLOSE=124;
-    public static final int StringLiteral=168;
+    public static final int StringLiteral=172;
     public static final int COLON=104;
-    public static final int PAREXPR=145;
+    public static final int PAREXPR=149;
     public static final int ENUM=47;
-    public static final int NBSP=157;
-    public static final int HexIntegerLiteral=183;
-    public static final int SP=156;
+    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=164;
+    public static final int LineTerminator=168;
     public static final int INTERFACE=56;
     public static final int DIV=116;
     public static final int LONG=57;
-    public static final int CR=161;
+    public static final int CR=165;
     public static final int PUBLIC=62;
     public static final int LOR=102;
     public static final int LT=79;
     public static final int WHILE=31;
-    public static final int BackslashSequence=190;
-    public static final int LS=162;
+    public static final int BackslashSequence=194;
+    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=172;
+    public static final int DecimalDigit=176;
     public static final int BYFIELD=131;
     public static final int BREAK=7;
-    public static final int Identifier=175;
+    public static final int Identifier=179;
     public static final int WXML=37;
-    public static final int POS=148;
+    public static final int POS=152;
     public static final int DOUBLE=46;
-    public static final int ExponentPart=179;
+    public static final int ExponentPart=183;
     public static final int VAR=29;
     public static final int VOID=30;
     public static final int SUPER=65;
     public static final int EACH=17;
-    public static final int LABELLED=141;
+    public static final int LABELLED=145;
     public static final int ADDASS=106;
     public static final int ARRAY=129;
     public static final int PRIVATE=60;
@@ -138,31 +139,33 @@
     public static final int DELETE=12;
     public static final int XCOPEN=118;
     public static final int MUL=89;
-    public static final int IdentifierStartASCII=171;
+    public static final int IdentifierStartASCII=175;
     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=158;
+    public static final int USP=162;
     public static final int ANDASS=113;
-    public static final int IdentifierNameASCIIStart=174;
+    public static final int IdentifierNameASCIIStart=178;
     public static final int QUE=103;
     public static final int OR=97;
+    public static final int SETTER=142;
     public static final int DEBUGGER=45;
-    public static final int PDEC=146;
+    public static final int FOREACH=140;
+    public static final int PDEC=150;
     public static final int CATCH=9;
     public static final int FALSE=6;
-    public static final int EscapeSequence=189;
+    public static final int EscapeSequence=193;
     public static final int THROW=26;
     public static final int MULASS=108;
-    public static final int XmlAttribute=169;
+    public static final int XmlAttribute=173;
     public static final int DEC=92;
-    public static final int OctalIntegerLiteral=182;
+    public static final int OctalIntegerLiteral=186;
     public static final int CLASS=43;
+    public static final int HexEscapeSequence=191;
     public static final int ORASS=114;
-    public static final int HexEscapeSequence=187;
-    public static final int NAMEDVALUE=142;
-    public static final int SingleLineComment=167;
+    public static final int NAMEDVALUE=146;
+    public static final int SingleLineComment=171;
     public static final int GTE=82;
     public static final int FOR=16;
     public static final int DOTDOT=126;
@@ -176,37 +179,42 @@
     public static final int EXPR=137;
     public static final int IN=20;
     public static final int CONTINUE=10;
-    public static final int OBJECT=144;
+    public static final int OBJECT=148;
     public static final int COMMA=78;
     public static final int TRANSIENT=68;
     public static final int FORITER=138;
     public static final int MODASS=109;
     public static final int DOT=76;
-    public static final int IdentifierPart=173;
+    public static final int IdentifierPart=177;
     public static final int WITH=32;
     public static final int BYTE=41;
     public static final int XOR=98;
     public static final int VOLATILE=69;
+    public static final int GETTER=141;
     public static final int NSAME=86;
     public static final int DEFAULT=11;
     public static final int ALLCHILDREN=133;
-    public static final int TAB=153;
-    public static final int DecimalLiteral=181;
+    public static final int TAB=157;
+    public static final int DecimalLiteral=185;
     public static final int TRUE=5;
     public static final int NEQ=84;
     public static final int FINALLY=15;
-    public static final int NEG=143;
+    public static final int NEG=147;
     public static final int ASSIGN=105;
     public static final int SEMIC=77;
     public static final int EXTENDS=49;
-    public static final int BSLASH=150;
-    public static final int LF=160;
+    public static final int BSLASH=154;
+    public static final int LF=164;
 
     private Token last;
 
     final static boolean isIdentifierKeyword(int token)
     {
-    	return token == WXML; 
+    	return token == WXML
+    		|| token == GET
+      		|| token == SET
+      		|| token == EACH
+      		|| token == NAMESPACE; 
     }
 
     private final boolean areRegularExpressionsEnabled()
@@ -339,8 +347,8 @@
     public final void mNULL() throws RecognitionException {
         try {
             int _type = NULL;
-            // JS.g:138:6: ( 'null' )
-            // JS.g:138:8: 'null'
+            // JS.g:142:6: ( 'null' )
+            // JS.g:142:8: 'null'
             {
             match("null"); 
 
@@ -358,8 +366,8 @@
     public final void mTRUE() throws RecognitionException {
         try {
             int _type = TRUE;
-            // JS.g:139:6: ( 'true' )
-            // JS.g:139:8: 'true'
+            // JS.g:143:6: ( 'true' )
+            // JS.g:143:8: 'true'
             {
             match("true"); 
 
@@ -377,8 +385,8 @@
     public final void mFALSE() throws RecognitionException {
         try {
             int _type = FALSE;
-            // JS.g:140:7: ( 'false' )
-            // JS.g:140:9: 'false'
+            // JS.g:144:7: ( 'false' )
+            // JS.g:144:9: 'false'
             {
             match("false"); 
 
@@ -396,8 +404,8 @@
     public final void mBREAK() throws RecognitionException {
         try {
             int _type = BREAK;
-            // JS.g:141:7: ( 'break' )
-            // JS.g:141:9: 'break'
+            // JS.g:145:7: ( 'break' )
+            // JS.g:145:9: 'break'
             {
             match("break"); 
 
@@ -415,8 +423,8 @@
     public final void mCASE() throws RecognitionException {
         try {
             int _type = CASE;
-            // JS.g:142:6: ( 'case' )
-            // JS.g:142:8: 'case'
+            // JS.g:146:6: ( 'case' )
+            // JS.g:146:8: 'case'
             {
             match("case"); 
 
@@ -434,8 +442,8 @@
     public final void mCATCH() throws RecognitionException {
         try {
             int _type = CATCH;
-            // JS.g:143:7: ( 'catch' )
-            // JS.g:143:9: 'catch'
+            // JS.g:147:7: ( 'catch' )
+            // JS.g:147:9: 'catch'
             {
             match("catch"); 
 
@@ -453,8 +461,8 @@
     public final void mCONTINUE() throws RecognitionException {
         try {
             int _type = CONTINUE;
-            // JS.g:144:10: ( 'continue' )
-            // JS.g:144:12: 'continue'
+            // JS.g:148:10: ( 'continue' )
+            // JS.g:148:12: 'continue'
             {
             match("continue"); 
 
@@ -472,8 +480,8 @@
     public final void mDEFAULT() throws RecognitionException {
         try {
             int _type = DEFAULT;
-            // JS.g:145:9: ( 'default' )
-            // JS.g:145:11: 'default'
+            // JS.g:149:9: ( 'default' )
+            // JS.g:149:11: 'default'
             {
             match("default"); 
 
@@ -491,8 +499,8 @@
     public final void mDELETE() throws RecognitionException {
         try {
             int _type = DELETE;
-            // JS.g:146:8: ( 'delete' )
-            // JS.g:146:10: 'delete'
+            // JS.g:150:8: ( 'delete' )
+            // JS.g:150:10: 'delete'
             {
             match("delete"); 
 
@@ -510,8 +518,8 @@
     public final void mDO() throws RecognitionException {
         try {
             int _type = DO;
-            // JS.g:147:4: ( 'do' )
-            // JS.g:147:6: 'do'
+            // JS.g:151:4: ( 'do' )
+            // JS.g:151:6: 'do'
             {
             match("do"); 
 
@@ -529,8 +537,8 @@
     public final void mELSE() throws RecognitionException {
         try {
             int _type = ELSE;
-            // JS.g:148:6: ( 'else' )
-            // JS.g:148:8: 'else'
+            // JS.g:152:6: ( 'else' )
+            // JS.g:152:8: 'else'
             {
             match("else"); 
 
@@ -548,8 +556,8 @@
     public final void mFINALLY() throws RecognitionException {
         try {
             int _type = FINALLY;
-            // JS.g:149:9: ( 'finally' )
-            // JS.g:149:11: 'finally'
+            // JS.g:153:9: ( 'finally' )
+            // JS.g:153:11: 'finally'
             {
             match("finally"); 
 
@@ -567,8 +575,8 @@
     public final void mFOR() throws RecognitionException {
         try {
             int _type = FOR;
-            // JS.g:150:5: ( 'for' )
-            // JS.g:150:7: 'for'
+            // JS.g:154:5: ( 'for' )
+            // JS.g:154:7: 'for'
             {
             match("for"); 
 
@@ -586,8 +594,8 @@
     public final void mEACH() throws RecognitionException {
         try {
             int _type = EACH;
-            // JS.g:151:6: ( 'each' )
-            // JS.g:151:8: 'each'
+            // JS.g:155:6: ( 'each' )
+            // JS.g:155:8: 'each'
             {
             match("each"); 
 
@@ -605,8 +613,8 @@
     public final void mFUNCTION() throws RecognitionException {
         try {
             int _type = FUNCTION;
-            // JS.g:152:10: ( 'function' )
-            // JS.g:152:12: 'function'
+            // JS.g:156:10: ( 'function' )
+            // JS.g:156:12: 'function'
             {
             match("function"); 
 
@@ -624,8 +632,8 @@
     public final void mIF() throws RecognitionException {
         try {
             int _type = IF;
-            // JS.g:153:4: ( 'if' )
-            // JS.g:153:6: 'if'
+            // JS.g:157:4: ( 'if' )
+            // JS.g:157:6: 'if'
             {
             match("if"); 
 
@@ -643,8 +651,8 @@
     public final void mIN() throws RecognitionException {
         try {
             int _type = IN;
-            // JS.g:154:4: ( 'in' )
-            // JS.g:154:6: 'in'
+            // JS.g:158:4: ( 'in' )
+            // JS.g:158:6: 'in'
             {
             match("in"); 
 
@@ -662,8 +670,8 @@
     public final void mINSTANCEOF() throws RecognitionException {
         try {
             int _type = INSTANCEOF;
-            // JS.g:155:12: ( 'instanceof' )
-            // JS.g:155:14: 'instanceof'
+            // JS.g:159:12: ( 'instanceof' )
+            // JS.g:159:14: 'instanceof'
             {
             match("instanceof"); 
 
@@ -681,8 +689,8 @@
     public final void mNEW() throws RecognitionException {
         try {
             int _type = NEW;
-            // JS.g:156:5: ( 'new' )
-            // JS.g:156:7: 'new'
+            // JS.g:160:5: ( 'new' )
+            // JS.g:160:7: 'new'
             {
             match("new"); 
 
@@ -700,8 +708,8 @@
     public final void mRETURN() throws RecognitionException {
         try {
             int _type = RETURN;
-            // JS.g:157:8: ( 'return' )
-            // JS.g:157:10: 'return'
+            // JS.g:161:8: ( 'return' )
+            // JS.g:161:10: 'return'
             {
             match("return"); 
 
@@ -719,8 +727,8 @@
     public final void mSWITCH() throws RecognitionException {
         try {
             int _type = SWITCH;
-            // JS.g:158:8: ( 'switch' )
-            // JS.g:158:10: 'switch'
+            // JS.g:162:8: ( 'switch' )
+            // JS.g:162:10: 'switch'
             {
             match("switch"); 
 
@@ -738,8 +746,8 @@
     public final void mTHIS() throws RecognitionException {
         try {
             int _type = THIS;
-            // JS.g:159:6: ( 'this' )
-            // JS.g:159:8: 'this'
+            // JS.g:163:6: ( 'this' )
+            // JS.g:163:8: 'this'
             {
             match("this"); 
 
@@ -757,8 +765,8 @@
     public final void mTHROW() throws RecognitionException {
         try {
             int _type = THROW;
-            // JS.g:160:7: ( 'throw' )
-            // JS.g:160:9: 'throw'
+            // JS.g:164:7: ( 'throw' )
+            // JS.g:164:9: 'throw'
             {
             match("throw"); 
 
@@ -776,8 +784,8 @@
     public final void mTRY() throws RecognitionException {
         try {
             int _type = TRY;
-            // JS.g:161:5: ( 'try' )
-            // JS.g:161:7: 'try'
+            // JS.g:165:5: ( 'try' )
+            // JS.g:165:7: 'try'
             {
             match("try"); 
 
@@ -795,8 +803,8 @@
     public final void mTYPEOF() throws RecognitionException {
         try {
             int _type = TYPEOF;
-            // JS.g:162:8: ( 'typeof' )
-            // JS.g:162:10: 'typeof'
+            // JS.g:166:8: ( 'typeof' )
+            // JS.g:166:10: 'typeof'
             {
             match("typeof"); 
 
@@ -814,8 +822,8 @@
     public final void mVAR() throws RecognitionException {
         try {
             int _type = VAR;
-            // JS.g:163:5: ( 'var' )
-            // JS.g:163:7: 'var'
+            // JS.g:167:5: ( 'var' )
+            // JS.g:167:7: 'var'
             {
             match("var"); 
 
@@ -833,8 +841,8 @@
     public final void mVOID() throws RecognitionException {
         try {
             int _type = VOID;
-            // JS.g:164:6: ( 'void' )
-            // JS.g:164:8: 'void'
+            // JS.g:168:6: ( 'void' )
+            // JS.g:168:8: 'void'
             {
             match("void"); 
 
@@ -852,8 +860,8 @@
     public final void mWHILE() throws RecognitionException {
         try {
             int _type = WHILE;
-            // JS.g:165:7: ( 'while' )
-            // JS.g:165:9: 'while'
+            // JS.g:169:7: ( 'while' )
+            // JS.g:169:9: 'while'
             {
             match("while"); 
 
@@ -871,8 +879,8 @@
     public final void mWITH() throws RecognitionException {
         try {
             int _type = WITH;
-            // JS.g:166:6: ( 'with' )
-            // JS.g:166:8: 'with'
+            // JS.g:170:6: ( 'with' )
+            // JS.g:170:8: 'with'
             {
             match("with"); 
 
@@ -890,8 +898,8 @@
     public final void mGET() throws RecognitionException {
         try {
             int _type = GET;
-            // JS.g:167:5: ( 'get' )
-            // JS.g:167:7: 'get'
+            // JS.g:171:5: ( 'get' )
+            // JS.g:171:7: 'get'
             {
             match("get"); 
 
@@ -909,8 +917,8 @@
     public final void mSET() throws RecognitionException {
         try {
             int _type = SET;
-            // JS.g:168:5: ( 'set' )
-            // JS.g:168:7: 'set'
+            // JS.g:172:5: ( 'set' )
+            // JS.g:172:7: 'set'
             {
             match("set"); 
 
@@ -928,8 +936,8 @@
     public final void mYIELD() throws RecognitionException {
         try {
             int _type = YIELD;
-            // JS.g:169:7: ( 'yield' )
-            // JS.g:169:9: 'yield'
+            // JS.g:173:7: ( 'yield' )
+            // JS.g:173:9: 'yield'
             {
             match("yield"); 
 
@@ -947,8 +955,8 @@
     public final void mCDATA() throws RecognitionException {
         try {
             int _type = CDATA;
-            // JS.g:170:7: ( 'CDATA' )
-            // JS.g:170:9: 'CDATA'
+            // JS.g:174:7: ( 'CDATA' )
+            // JS.g:174:9: 'CDATA'
             {
             match("CDATA"); 
 
@@ -966,8 +974,8 @@
     public final void mWXML() throws RecognitionException {
         try {
             int _type = WXML;
-            // JS.g:171:6: ( 'xml' )
-            // JS.g:171:8: 'xml'
+            // JS.g:175:6: ( 'xml' )
+            // JS.g:175:8: 'xml'
             {
             match("xml"); 
 
@@ -985,8 +993,8 @@
     public final void mNAMESPACE() throws RecognitionException {
         try {
             int _type = NAMESPACE;
-            // JS.g:172:11: ( 'namespace' )
-            // JS.g:172:13: 'namespace'
+            // JS.g:176:11: ( 'namespace' )
+            // JS.g:176:13: 'namespace'
             {
             match("namespace"); 
 
@@ -1004,8 +1012,8 @@
     public final void mABSTRACT() throws RecognitionException {
         try {
             int _type = ABSTRACT;
-            // JS.g:173:10: ( 'abstract' )
-            // JS.g:173:12: 'abstract'
+            // JS.g:177:10: ( 'abstract' )
+            // JS.g:177:12: 'abstract'
             {
             match("abstract"); 
 
@@ -1023,8 +1031,8 @@
     public final void mBOOLEAN() throws RecognitionException {
         try {
             int _type = BOOLEAN;
-            // JS.g:174:9: ( 'boolean' )
-            // JS.g:174:11: 'boolean'
+            // JS.g:178:9: ( 'boolean' )
+            // JS.g:178:11: 'boolean'
             {
             match("boolean"); 
 
@@ -1042,8 +1050,8 @@
     public final void mBYTE() throws RecognitionException {
         try {
             int _type = BYTE;
-            // JS.g:175:6: ( 'byte' )
-            // JS.g:175:8: 'byte'
+            // JS.g:179:6: ( 'byte' )
+            // JS.g:179:8: 'byte'
             {
             match("byte"); 
 
@@ -1061,8 +1069,8 @@
     public final void mCHAR() throws RecognitionException {
         try {
             int _type = CHAR;
-            // JS.g:176:6: ( 'char' )
-            // JS.g:176:8: 'char'
+            // JS.g:180:6: ( 'char' )
+            // JS.g:180:8: 'char'
             {
             match("char"); 
 
@@ -1080,8 +1088,8 @@
     public final void mCLASS() throws RecognitionException {
         try {
             int _type = CLASS;
-            // JS.g:177:7: ( 'class' )
-            // JS.g:177:9: 'class'
+            // JS.g:181:7: ( 'class' )
+            // JS.g:181:9: 'class'
             {
             match("class"); 
 
@@ -1099,8 +1107,8 @@
     public final void mCONST() throws RecognitionException {
         try {
             int _type = CONST;
-            // JS.g:178:7: ( 'const' )
-            // JS.g:178:9: 'const'
+            // JS.g:182:7: ( 'const' )
+            // JS.g:182:9: 'const'
             {
             match("const"); 
 
@@ -1118,8 +1126,8 @@
     public final void mDEBUGGER() throws RecognitionException {
         try {
             int _type = DEBUGGER;
-            // JS.g:179:10: ( 'debugger' )
-            // JS.g:179:12: 'debugger'
+            // JS.g:183:10: ( 'debugger' )
+            // JS.g:183:12: 'debugger'
             {
             match("debugger"); 
 
@@ -1137,8 +1145,8 @@
     public final void mDOUBLE() throws RecognitionException {
         try {
             int _type = DOUBLE;
-            // JS.g:180:8: ( 'double' )
-            // JS.g:180:10: 'double'
+            // JS.g:184:8: ( 'double' )
+            // JS.g:184:10: 'double'
             {
             match("double"); 
 
@@ -1156,8 +1164,8 @@
     public final void mENUM() throws RecognitionException {
         try {
             int _type = ENUM;
-            // JS.g:181:6: ( 'enum' )
-            // JS.g:181:8: 'enum'
+            // JS.g:185:6: ( 'enum' )
+            // JS.g:185:8: 'enum'
             {
             match("enum"); 
 
@@ -1175,8 +1183,8 @@
     public final void mEXPORT() throws RecognitionException {
         try {
             int _type = EXPORT;
-            // JS.g:182:8: ( 'export' )
-            // JS.g:182:10: 'export'
+            // JS.g:186:8: ( 'export' )
+            // JS.g:186:10: 'export'
             {
             match("export"); 
 
@@ -1194,8 +1202,8 @@
     public final void mEXTENDS() throws RecognitionException {
         try {
             int _type = EXTENDS;
-            // JS.g:183:9: ( 'extends' )
-            // JS.g:183:11: 'extends'
+            // JS.g:187:9: ( 'extends' )
+            // JS.g:187:11: 'extends'
             {
             match("extends"); 
 
@@ -1213,8 +1221,8 @@
     public final void mFINAL() throws RecognitionException {
         try {
             int _type = FINAL;
-            // JS.g:184:7: ( 'final' )
-            // JS.g:184:9: 'final'
+            // JS.g:188:7: ( 'final' )
+            // JS.g:188:9: 'final'
             {
             match("final"); 
 
@@ -1232,8 +1240,8 @@
     public final void mFLOAT() throws RecognitionException {
         try {
             int _type = FLOAT;
-            // JS.g:185:7: ( 'float' )
-            // JS.g:185:9: 'float'
+            // JS.g:189:7: ( 'float' )
+            // JS.g:189:9: 'float'
             {
             match("float"); 
 
@@ -1251,8 +1259,8 @@
     public final void mGOTO() throws RecognitionException {
         try {
             int _type = GOTO;
-            // JS.g:186:6: ( 'goto' )
-            // JS.g:186:8: 'goto'
+            // JS.g:190:6: ( 'goto' )
+            // JS.g:190:8: 'goto'
             {
             match("goto"); 
 
@@ -1270,8 +1278,8 @@
     public final void mIMPLEMENTS() throws RecognitionException {
         try {
             int _type = IMPLEMENTS;
-            // JS.g:187:12: ( 'implements' )
-            // JS.g:187:14: 'implements'
+            // JS.g:191:12: ( 'implements' )
+            // JS.g:191:14: 'implements'
             {
             match("implements"); 
 
@@ -1289,8 +1297,8 @@
     public final void mIMPORT() throws RecognitionException {
         try {
             int _type = IMPORT;
-            // JS.g:188:8: ( 'import' )
-            // JS.g:188:10: 'import'
+            // JS.g:192:8: ( 'import' )
+            // JS.g:192:10: 'import'
             {
             match("import"); 
 
@@ -1308,8 +1316,8 @@
     public final void mINT() throws RecognitionException {
         try {
             int _type = INT;
-            // JS.g:189:5: ( 'int' )
-            // JS.g:189:7: 'int'
+            // JS.g:193:5: ( 'int' )
+            // JS.g:193:7: 'int'
             {
             match("int"); 
 
@@ -1327,8 +1335,8 @@
     public final void mINTERFACE() throws RecognitionException {
         try {
             int _type = INTERFACE;
-            // JS.g:190:11: ( 'interface' )
-            // JS.g:190:13: 'interface'
+            // JS.g:194:11: ( 'interface' )
+            // JS.g:194:13: 'interface'
             {
             match("interface"); 
 
@@ -1346,8 +1354,8 @@
     public final void mLONG() throws RecognitionException {
         try {
             int _type = LONG;
-            // JS.g:191:6: ( 'long' )
-            // JS.g:191:8: 'long'
+            // JS.g:195:6: ( 'long' )
+            // JS.g:195:8: 'long'
             {
             match("long"); 
 
@@ -1365,8 +1373,8 @@
     public final void mNATIVE() throws RecognitionException {
         try {
             int _type = NATIVE;
-            // JS.g:192:8: ( 'native' )
-            // JS.g:192:10: 'native'
+            // JS.g:196:8: ( 'native' )
+            // JS.g:196:10: 'native'
             {
             match("native"); 
 
@@ -1384,8 +1392,8 @@
     public final void mPACKAGE() throws RecognitionException {
         try {
             int _type = PACKAGE;
-            // JS.g:193:9: ( 'package' )
-            // JS.g:193:11: 'package'
+            // JS.g:197:9: ( 'package' )
+            // JS.g:197:11: 'package'
             {
             match("package"); 
 
@@ -1403,8 +1411,8 @@
     public final void mPRIVATE() throws RecognitionException {
         try {
             int _type = PRIVATE;
-            // JS.g:194:9: ( 'private' )
-            // JS.g:194:11: 'private'
+            // JS.g:198:9: ( 'private' )
+            // JS.g:198:11: 'private'
             {
             match("private"); 
 
@@ -1422,8 +1430,8 @@
     public final void mPROTECTED() throws RecognitionException {
         try {
             int _type = PROTECTED;
-            // JS.g:195:11: ( 'protected' )
-            // JS.g:195:13: 'protected'
+            // JS.g:199:11: ( 'protected' )
+            // JS.g:199:13: 'protected'
             {
             match("protected"); 
 
@@ -1441,8 +1449,8 @@
     public final void mPUBLIC() throws RecognitionException {
         try {
             int _type = PUBLIC;
-            // JS.g:196:8: ( 'public' )
-            // JS.g:196:10: 'public'
+            // JS.g:200:8: ( 'public' )
+            // JS.g:200:10: 'public'
             {
             match("public"); 
 
@@ -1460,8 +1468,8 @@
     public final void mSHORT() throws RecognitionException {
         try {
             int _type = SHORT;
-            // JS.g:197:7: ( 'short' )
-            // JS.g:197:9: 'short'
+            // JS.g:201:7: ( 'short' )
+            // JS.g:201:9: 'short'
             {
             match("short"); 
 
@@ -1479,8 +1487,8 @@
     public final void mSTATIC() throws RecognitionException {
         try {
             int _type = STATIC;
-            // JS.g:198:8: ( 'static' )
-            // JS.g:198:10: 'static'
+            // JS.g:202:8: ( 'static' )
+            // JS.g:202:10: 'static'
             {
             match("static"); 
 
@@ -1498,8 +1506,8 @@
     public final void mSUPER() throws RecognitionException {
         try {
             int _type = SUPER;
-            // JS.g:199:7: ( 'super' )
-            // JS.g:199:9: 'super'
+            // JS.g:203:7: ( 'super' )
+            // JS.g:203:9: 'super'
             {
             match("super"); 
 
@@ -1517,8 +1525,8 @@
     public final void mSYNCHRONIZED() throws RecognitionException {
         try {
             int _type = SYNCHRONIZED;
-            // JS.g:200:14: ( 'synchronized' )
-            // JS.g:200:16: 'synchronized'
+            // JS.g:204:14: ( 'synchronized' )
+            // JS.g:204:16: 'synchronized'
             {
             match("synchronized"); 
 
@@ -1536,8 +1544,8 @@
     public final void mTHROWS() throws RecognitionException {
         try {
             int _type = THROWS;
-            // JS.g:201:8: ( 'throws' )
-            // JS.g:201:10: 'throws'
+            // JS.g:205:8: ( 'throws' )
+            // JS.g:205:10: 'throws'
             {
             match("throws"); 
 
@@ -1555,8 +1563,8 @@
     public final void mTRANSIENT() throws RecognitionException {
         try {
             int _type = TRANSIENT;
-            // JS.g:202:11: ( 'transient' )
-            // JS.g:202:13: 'transient'
+            // JS.g:206:11: ( 'transient' )
+            // JS.g:206:13: 'transient'
             {
             match("transient"); 
 
@@ -1574,8 +1582,8 @@
     public final void mVOLATILE() throws RecognitionException {
         try {
             int _type = VOLATILE;
-            // JS.g:203:10: ( 'volatile' )
-            // JS.g:203:12: 'volatile'
+            // JS.g:207:10: ( 'volatile' )
+            // JS.g:207:12: 'volatile'
             {
             match("volatile"); 
 
@@ -1593,8 +1601,8 @@
     public final void mLBRACE() throws RecognitionException {
         try {
             int _type = LBRACE;
-            // JS.g:204:8: ( '{' )
-            // JS.g:204:10: '{'
+            // JS.g:208:8: ( '{' )
+            // JS.g:208:10: '{'
             {
             match('{'); 
 
@@ -1611,8 +1619,8 @@
     public final void mRBRACE() throws RecognitionException {
         try {
             int _type = RBRACE;
-            // JS.g:205:8: ( '}' )
-            // JS.g:205:10: '}'
+            // JS.g:209:8: ( '}' )
+            // JS.g:209:10: '}'
             {
             match('}'); 
 
@@ -1629,8 +1637,8 @@
     public final void mLPAREN() throws RecognitionException {
         try {
             int _type = LPAREN;
-            // JS.g:206:8: ( '(' )
-            // JS.g:206:10: '('
+            // JS.g:210:8: ( '(' )
+            // JS.g:210:10: '('
             {
             match('('); 
 
@@ -1647,8 +1655,8 @@
     public final void mRPAREN() throws RecognitionException {
         try {
             int _type = RPAREN;
-            // JS.g:207:8: ( ')' )
-            // JS.g:207:10: ')'
+            // JS.g:211:8: ( ')' )
+            // JS.g:211:10: ')'
             {
             match(')'); 
 
@@ -1665,8 +1673,8 @@
     public final void mLBRACK() throws RecognitionException {
         try {
             int _type = LBRACK;
-            // JS.g:208:8: ( '[' )
-            // JS.g:208:10: '['
+            // JS.g:212:8: ( '[' )
+            // JS.g:212:10: '['
             {
             match('['); 
 
@@ -1683,8 +1691,8 @@
     public final void mRBRACK() throws RecognitionException {
         try {
             int _type = RBRACK;
-            // JS.g:209:8: ( ']' )
-            // JS.g:209:10: ']'
+            // JS.g:213:8: ( ']' )
+            // JS.g:213:10: ']'
             {
             match(']'); 
 
@@ -1701,8 +1709,8 @@
     public final void mDOT() throws RecognitionException {
         try {
             int _type = DOT;
-            // JS.g:210:5: ( '.' )
-            // JS.g:210:7: '.'
+            // JS.g:214:5: ( '.' )
+            // JS.g:214:7: '.'
             {
             match('.'); 
 
@@ -1719,8 +1727,8 @@
     public final void mSEMIC() throws RecognitionException {
         try {
             int _type = SEMIC;
-            // JS.g:211:7: ( ';' )
-            // JS.g:211:9: ';'
+            // JS.g:215:7: ( ';' )
+            // JS.g:215:9: ';'
             {
             match(';'); 
 
@@ -1737,8 +1745,8 @@
     public final void mCOMMA() throws RecognitionException {
         try {
             int _type = COMMA;
-            // JS.g:212:7: ( ',' )
-            // JS.g:212:9: ','
+            // JS.g:216:7: ( ',' )
+            // JS.g:216:9: ','
             {
             match(','); 
 
@@ -1755,8 +1763,8 @@
     public final void mLT() throws RecognitionException {
         try {
             int _type = LT;
-            // JS.g:213:4: ( '<' )
-            // JS.g:213:6: '<'
+            // JS.g:217:4: ( '<' )
+            // JS.g:217:6: '<'
             {
             match('<'); 
 
@@ -1773,8 +1781,8 @@
     public final void mGT() throws RecognitionException {
         try {
             int _type = GT;
-            // JS.g:214:4: ( '>' )
-            // JS.g:214:6: '>'
+            // JS.g:218:4: ( '>' )
+            // JS.g:218:6: '>'
             {
             match('>'); 
 
@@ -1791,8 +1799,8 @@
     public final void mLTE() throws RecognitionException {
         try {
             int _type = LTE;
-            // JS.g:215:5: ( '<=' )
-            // JS.g:215:7: '<='
+            // JS.g:219:5: ( '<=' )
+            // JS.g:219:7: '<='
             {
             match("<="); 
 
@@ -1810,8 +1818,8 @@
     public final void mGTE() throws RecognitionException {
         try {
             int _type = GTE;
-            // JS.g:216:5: ( '>=' )
-            // JS.g:216:7: '>='
+            // JS.g:220:5: ( '>=' )
+            // JS.g:220:7: '>='
             {
             match(">="); 
 
@@ -1829,8 +1837,8 @@
     public final void mEQ() throws RecognitionException {
         try {
             int _type = EQ;
-            // JS.g:217:4: ( '==' )
-            // JS.g:217:6: '=='
+            // JS.g:221:4: ( '==' )
+            // JS.g:221:6: '=='
             {
             match("=="); 
 
@@ -1848,8 +1856,8 @@
     public final void mNEQ() throws RecognitionException {
         try {
             int _type = NEQ;
-            // JS.g:218:5: ( '!=' )
-            // JS.g:218:7: '!='
+            // JS.g:222:5: ( '!=' )
+            // JS.g:222:7: '!='
             {
             match("!="); 
 
@@ -1867,8 +1875,8 @@
     public final void mSAME() throws RecognitionException {
         try {
             int _type = SAME;
-            // JS.g:219:6: ( '===' )
-            // JS.g:219:8: '==='
+            // JS.g:223:6: ( '===' )
+            // JS.g:223:8: '==='
             {
             match("==="); 
 
@@ -1886,8 +1894,8 @@
     public final void mNSAME() throws RecognitionException {
         try {
             int _type = NSAME;
-            // JS.g:220:7: ( '!==' )
-            // JS.g:220:9: '!=='
+            // JS.g:224:7: ( '!==' )
+            // JS.g:224:9: '!=='
             {
             match("!=="); 
 
@@ -1905,8 +1913,8 @@
     public final void mADD() throws RecognitionException {
         try {
             int _type = ADD;
-            // JS.g:221:5: ( '+' )
-            // JS.g:221:7: '+'
+            // JS.g:225:5: ( '+' )
+            // JS.g:225:7: '+'
             {
             match('+'); 
 
@@ -1923,8 +1931,8 @@
     public final void mSUB() throws RecognitionException {
         try {
             int _type = SUB;
-            // JS.g:222:5: ( '-' )
-            // JS.g:222:7: '-'
+            // JS.g:226:5: ( '-' )
+            // JS.g:226:7: '-'
             {
             match('-'); 
 
@@ -1941,8 +1949,8 @@
     public final void mMUL() throws RecognitionException {
         try {
             int _type = MUL;
-            // JS.g:223:5: ( '*' )
-            // JS.g:223:7: '*'
+            // JS.g:227:5: ( '*' )
+            // JS.g:227:7: '*'
             {
             match('*'); 
 
@@ -1959,8 +1967,8 @@
     public final void mMOD() throws RecognitionException {
         try {
             int _type = MOD;
-            // JS.g:224:5: ( '%' )
-            // JS.g:224:7: '%'
+            // JS.g:228:5: ( '%' )
+            // JS.g:228:7: '%'
             {
             match('%'); 
 
@@ -1977,8 +1985,8 @@
     public final void mINC() throws RecognitionException {
         try {
             int _type = INC;
-            // JS.g:225:5: ( '++' )
-            // JS.g:225:7: '++'
+            // JS.g:229:5: ( '++' )
+            // JS.g:229:7: '++'
             {
             match("++"); 
 
@@ -1996,8 +2004,8 @@
     public final void mDEC() throws RecognitionException {
         try {
             int _type = DEC;
-            // JS.g:226:5: ( '--' )
-            // JS.g:226:7: '--'
+            // JS.g:230:5: ( '--' )
+            // JS.g:230:7: '--'
             {
             match("--"); 
 
@@ -2015,8 +2023,8 @@
     public final void mSHL() throws RecognitionException {
         try {
             int _type = SHL;
-            // JS.g:227:5: ( '<<' )
-            // JS.g:227:7: '<<'
+            // JS.g:231:5: ( '<<' )
+            // JS.g:231:7: '<<'
             {
             match("<<"); 
 
@@ -2034,8 +2042,8 @@
     public final void mSHR() throws RecognitionException {
         try {
             int _type = SHR;
-            // JS.g:228:5: ( '>>' )
-            // JS.g:228:7: '>>'
+            // JS.g:232:5: ( '>>' )
+            // JS.g:232:7: '>>'
             {
             match(">>"); 
 
@@ -2053,8 +2061,8 @@
     public final void mSHU() throws RecognitionException {
         try {
             int _type = SHU;
-            // JS.g:229:5: ( '>>>' )
-            // JS.g:229:7: '>>>'
+            // JS.g:233:5: ( '>>>' )
+            // JS.g:233:7: '>>>'
             {
             match(">>>"); 
 
@@ -2072,8 +2080,8 @@
     public final void mAND() throws RecognitionException {
         try {
             int _type = AND;
-            // JS.g:230:5: ( '&' )
-            // JS.g:230:7: '&'
+            // JS.g:234:5: ( '&' )
+            // JS.g:234:7: '&'
             {
             match('&'); 
 
@@ -2090,8 +2098,8 @@
     public final void mOR() throws RecognitionException {
         try {
             int _type = OR;
-            // JS.g:231:4: ( '|' )
-            // JS.g:231:6: '|'
+            // JS.g:235:4: ( '|' )
+            // JS.g:235:6: '|'
             {
             match('|'); 
 
@@ -2108,8 +2116,8 @@
     public final void mXOR() throws RecognitionException {
         try {
             int _type = XOR;
-            // JS.g:232:5: ( '^' )
-            // JS.g:232:7: '^'
+            // JS.g:236:5: ( '^' )
+            // JS.g:236:7: '^'
             {
             match('^'); 
 
@@ -2126,8 +2134,8 @@
     public final void mNOT() throws RecognitionException {
         try {
             int _type = NOT;
-            // JS.g:233:5: ( '!' )
-            // JS.g:233:7: '!'
+            // JS.g:237:5: ( '!' )
+            // JS.g:237:7: '!'
             {
             match('!'); 
 
@@ -2144,8 +2152,8 @@
     public final void mINV() throws RecognitionException {
         try {
             int _type = INV;
-            // JS.g:234:5: ( '~' )
-            // JS.g:234:7: '~'
+            // JS.g:238:5: ( '~' )
+            // JS.g:238:7: '~'
             {
             match('~'); 
 
@@ -2162,8 +2170,8 @@
     public final void mLAND() throws RecognitionException {
         try {
             int _type = LAND;
-            // JS.g:235:6: ( '&&' )
-            // JS.g:235:8: '&&'
+            // JS.g:239:6: ( '&&' )
+            // JS.g:239:8: '&&'
             {
             match("&&"); 
 
@@ -2181,8 +2189,8 @@
     public final void mLOR() throws RecognitionException {
         try {
             int _type = LOR;
-            // JS.g:236:5: ( '||' )
-            // JS.g:236:7: '||'
+            // JS.g:240:5: ( '||' )
+            // JS.g:240:7: '||'
             {
             match("||"); 
 
@@ -2200,8 +2208,8 @@
     public final void mQUE() throws RecognitionException {
         try {
             int _type = QUE;
-            // JS.g:237:5: ( '?' )
-            // JS.g:237:7: '?'
+            // JS.g:241:5: ( '?' )
+            // JS.g:241:7: '?'
             {
             match('?'); 
 
@@ -2218,8 +2226,8 @@
     public final void mCOLON() throws RecognitionException {
         try {
             int _type = COLON;
-            // JS.g:238:7: ( ':' )
-            // JS.g:238:9: ':'
+            // JS.g:242:7: ( ':' )
+            // JS.g:242:9: ':'
             {
             match(':'); 
 
@@ -2236,8 +2244,8 @@
     public final void mASSIGN() throws RecognitionException {
         try {
             int _type = ASSIGN;
-            // JS.g:239:8: ( '=' )
-            // JS.g:239:10: '='
+            // JS.g:243:8: ( '=' )
+            // JS.g:243:10: '='
             {
             match('='); 
 
@@ -2254,8 +2262,8 @@
     public final void mADDASS() throws RecognitionException {
         try {
             int _type = ADDASS;
-            // JS.g:240:8: ( '+=' )
-            // JS.g:240:10: '+='
+            // JS.g:244:8: ( '+=' )
+            // JS.g:244:10: '+='
             {
             match("+="); 
 
@@ -2273,8 +2281,8 @@
     public final void mSUBASS() throws RecognitionException {
         try {
             int _type = SUBASS;
-            // JS.g:241:8: ( '-=' )
-            // JS.g:241:10: '-='
+            // JS.g:245:8: ( '-=' )
+            // JS.g:245:10: '-='
             {
             match("-="); 
 
@@ -2292,8 +2300,8 @@
     public final void mMULASS() throws RecognitionException {
         try {
             int _type = MULASS;
-            // JS.g:242:8: ( '*=' )
-            // JS.g:242:10: '*='
+            // JS.g:246:8: ( '*=' )
+            // JS.g:246:10: '*='
             {
             match("*="); 
 
@@ -2311,8 +2319,8 @@
     public final void mMODASS() throws RecognitionException {
         try {
             int _type = MODASS;
-            // JS.g:243:8: ( '%=' )
-            // JS.g:243:10: '%='
+            // JS.g:247:8: ( '%=' )
+            // JS.g:247:10: '%='
             {
             match("%="); 
 
@@ -2330,8 +2338,8 @@
     public final void mSHLASS() throws RecognitionException {
         try {
             int _type = SHLASS;
-            // JS.g:244:8: ( '<<=' )
-            // JS.g:244:10: '<<='
+            // JS.g:248:8: ( '<<=' )
+            // JS.g:248:10: '<<='
             {
             match("<<="); 
 
@@ -2349,8 +2357,8 @@
     public final void mSHRASS() throws RecognitionException {
         try {
             int _type = SHRASS;
-            // JS.g:245:8: ( '>>=' )
-            // JS.g:245:10: '>>='
+            // JS.g:249:8: ( '>>=' )
+            // JS.g:249:10: '>>='
             {
             match(">>="); 
 
@@ -2368,8 +2376,8 @@
     public final void mSHUASS() throws RecognitionException {
         try {
             int _type = SHUASS;
-            // JS.g:246:8: ( '>>>=' )
-            // JS.g:246:10: '>>>='
+            // JS.g:250:8: ( '>>>=' )
+            // JS.g:250:10: '>>>='
             {
             match(">>>="); 
 
@@ -2387,8 +2395,8 @@
     public final void mANDASS() throws RecognitionException {
         try {
             int _type = ANDASS;
-            // JS.g:247:8: ( '&=' )
-            // JS.g:247:10: '&='
+            // JS.g:251:8: ( '&=' )
+            // JS.g:251:10: '&='
             {
             match("&="); 
 
@@ -2406,8 +2414,8 @@
     public final void mORASS() throws RecognitionException {
         try {
             int _type = ORASS;
-            // JS.g:248:7: ( '|=' )
-            // JS.g:248:9: '|='
+            // JS.g:252:7: ( '|=' )
+            // JS.g:252:9: '|='
             {
             match("|="); 
 
@@ -2425,8 +2433,8 @@
     public final void mXORASS() throws RecognitionException {
         try {
             int _type = XORASS;
-            // JS.g:249:8: ( '^=' )
-            // JS.g:249:10: '^='
+            // JS.g:253:8: ( '^=' )
+            // JS.g:253:10: '^='
             {
             match("^="); 
 
@@ -2444,8 +2452,8 @@
     public final void mDIV() throws RecognitionException {
         try {
             int _type = DIV;
-            // JS.g:250:5: ( '/' )
-            // JS.g:250:7: '/'
+            // JS.g:254:5: ( '/' )
+            // JS.g:254:7: '/'
             {
             match('/'); 
 
@@ -2462,8 +2470,8 @@
     public final void mDIVASS() throws RecognitionException {
         try {
             int _type = DIVASS;
-            // JS.g:251:8: ( '/=' )
-            // JS.g:251:10: '/='
+            // JS.g:255:8: ( '/=' )
+            // JS.g:255:10: '/='
             {
             match("/="); 
 
@@ -2481,8 +2489,8 @@
     public final void mXCOPEN() throws RecognitionException {
         try {
             int _type = XCOPEN;
-            // JS.g:252:8: ( '<!--' )
-            // JS.g:252:10: '<!--'
+            // JS.g:256:8: ( '<!--' )
+            // JS.g:256:10: '<!--'
             {
             match("<!--"); 
 
@@ -2500,8 +2508,8 @@
     public final void mXCCLOSE() throws RecognitionException {
         try {
             int _type = XCCLOSE;
-            // JS.g:253:9: ( '-->' )
-            // JS.g:253:11: '-->'
+            // JS.g:257:9: ( '-->' )
+            // JS.g:257:11: '-->'
             {
             match("-->"); 
 
@@ -2519,8 +2527,8 @@
     public final void mXLCLOSE() throws RecognitionException {
         try {
             int _type = XLCLOSE;
-            // JS.g:254:9: ( '</' )
-            // JS.g:254:11: '</'
+            // JS.g:258:9: ( '</' )
+            // JS.g:258:11: '</'
             {
             match("</"); 
 
@@ -2538,8 +2546,8 @@
     public final void mXRCLOSE() throws RecognitionException {
         try {
             int _type = XRCLOSE;
-            // JS.g:255:9: ( '/>' )
-            // JS.g:255:11: '/>'
+            // JS.g:259:9: ( '/>' )
+            // JS.g:259:11: '/>'
             {
             match("/>"); 
 
@@ -2557,8 +2565,8 @@
     public final void mCDATAOPEN() throws RecognitionException {
         try {
             int _type = CDATAOPEN;
-            // JS.g:256:11: ( '<![' )
-            // JS.g:256:13: '<!['
+            // JS.g:260:11: ( '<![' )
+            // JS.g:260:13: '<!['
             {
             match("<!["); 
 
@@ -2576,8 +2584,8 @@
     public final void mXHOPEN() throws RecognitionException {
         try {
             int _type = XHOPEN;
-            // JS.g:257:8: ( '<?' )
-            // JS.g:257:10: '<?'
+            // JS.g:261:8: ( '<?' )
+            // JS.g:261:10: '<?'
             {
             match("<?"); 
 
@@ -2595,8 +2603,8 @@
     public final void mXHCLOSE() throws RecognitionException {
         try {
             int _type = XHCLOSE;
-            // JS.g:258:9: ( '?>' )
-            // JS.g:258:11: '?>'
+            // JS.g:262:9: ( '?>' )
+            // JS.g:262:11: '?>'
             {
             match("?>"); 
 
@@ -2614,8 +2622,8 @@
     public final void mAT() throws RecognitionException {
         try {
             int _type = AT;
-            // JS.g:259:4: ( '@' )
-            // JS.g:259:6: '@'
+            // JS.g:263:4: ( '@' )
+            // JS.g:263:6: '@'
             {
             match('@'); 
 
@@ -2632,8 +2640,8 @@
     public final void mDOTDOT() throws RecognitionException {
         try {
             int _type = DOTDOT;
-            // JS.g:260:8: ( '..' )
-            // JS.g:260:10: '..'
+            // JS.g:264:8: ( '..' )
+            // JS.g:264:10: '..'
             {
             match(".."); 
 
@@ -2651,8 +2659,8 @@
     public final void mCOLONCOLON() throws RecognitionException {
         try {
             int _type = COLONCOLON;
-            // JS.g:261:12: ( '::' )
-            // JS.g:261:14: '::'
+            // JS.g:265:12: ( '::' )
+            // JS.g:265:14: '::'
             {
             match("::"); 
 
@@ -2669,8 +2677,8 @@
     // $ANTLR start BSLASH
     public final void mBSLASH() throws RecognitionException {
         try {
-            // JS.g:503:2: ( '\\\\' )
-            // JS.g:503:4: '\\\\'
+            // JS.g:511:2: ( '\\\\' )
+            // JS.g:511:4: '\\\\'
             {
             match('\\'); 
 
@@ -2685,8 +2693,8 @@
     // $ANTLR start DQUOTE
     public final void mDQUOTE() throws RecognitionException {
         try {
-            // JS.g:507:2: ( '\"' )
-            // JS.g:507:4: '\"'
+            // JS.g:515:2: ( '\"' )
+            // JS.g:515:4: '\"'
             {
             match('\"'); 
 
@@ -2701,8 +2709,8 @@
     // $ANTLR start SQUOTE
     public final void mSQUOTE() throws RecognitionException {
         try {
-            // JS.g:511:2: ( '\\'' )
-            // JS.g:511:4: '\\''
+            // JS.g:519:2: ( '\\'' )
+            // JS.g:519:4: '\\''
             {
             match('\''); 
 
@@ -2717,8 +2725,8 @@
     // $ANTLR start TAB
     public final void mTAB() throws RecognitionException {
         try {
-            // JS.g:517:2: ( '\\u0009' )
-            // JS.g:517:4: '\\u0009'
+            // JS.g:525:2: ( '\\u0009' )
+            // JS.g:525:4: '\\u0009'
             {
             match('\t'); 
 
@@ -2733,8 +2741,8 @@
     // $ANTLR start VT
     public final void mVT() throws RecognitionException {
         try {
-            // JS.g:521:2: ( '\\u000b' )
-            // JS.g:521:4: '\\u000b'
+            // JS.g:529:2: ( '\\u000b' )
+            // JS.g:529:4: '\\u000b'
             {
             match('\u000B'); 
 
@@ -2749,8 +2757,8 @@
     // $ANTLR start FF
     public final void mFF() throws RecognitionException {
         try {
-            // JS.g:525:2: ( '\\u000c' )
-            // JS.g:525:4: '\\u000c'
+            // JS.g:533:2: ( '\\u000c' )
+            // JS.g:533:4: '\\u000c'
             {
             match('\f'); 
 
@@ -2765,8 +2773,8 @@
     // $ANTLR start SP
     public final void mSP() throws RecognitionException {
         try {
-            // JS.g:529:2: ( '\\u0020' )
-            // JS.g:529:4: '\\u0020'
+            // JS.g:537:2: ( '\\u0020' )
+            // JS.g:537:4: '\\u0020'
             {
             match(' '); 
 
@@ -2781,8 +2789,8 @@
     // $ANTLR start NBSP
     public final void mNBSP() throws RecognitionException {
         try {
-            // JS.g:533:2: ( '\\u00a0' )
-            // JS.g:533:4: '\\u00a0'
+            // JS.g:541:2: ( '\\u00a0' )
+            // JS.g:541:4: '\\u00a0'
             {
             match('\u00A0'); 
 
@@ -2797,7 +2805,7 @@
     // $ANTLR start USP
     public final void mUSP() throws RecognitionException {
         try {
-            // JS.g:537:2: ( '\\u1680' | '\\u180E' | '\\u2000' | '\\u2001' | '\\u2002' | '\\u2003' | '\\u2004' | '\\u2005' | '\\u2006' | '\\u2007' | '\\u2008' | '\\u2009' | '\\u200A' | '\\u202F' | '\\u205F' | '\\u3000' )
+            // JS.g:545:2: ( '\\u1680' | '\\u180E' | '\\u2000' | '\\u2001' | '\\u2002' | '\\u2003' | '\\u2004' | '\\u2005' | '\\u2006' | '\\u2007' | '\\u2008' | '\\u2009' | '\\u200A' | '\\u202F' | '\\u205F' | '\\u3000' )
             // JS.g:
             {
             if ( input.LA(1)=='\u1680'||input.LA(1)=='\u180E'||(input.LA(1)>='\u2000' && input.LA(1)<='\u200A')||input.LA(1)=='\u202F'||input.LA(1)=='\u205F'||input.LA(1)=='\u3000' ) {
@@ -2823,10 +2831,10 @@
     public final void mWhiteSpace() throws RecognitionException {
         try {
             int _type = WhiteSpace;
-            // JS.g:556:2: ( ( TAB | VT | FF | SP | NBSP | USP )+ )
-            // JS.g:556:4: ( TAB | VT | FF | SP | NBSP | USP )+
+            // JS.g:564:2: ( ( TAB | VT | FF | SP | NBSP | USP )+ )
+            // JS.g:564:4: ( TAB | VT | FF | SP | NBSP | USP )+
             {
-            // JS.g:556:4: ( TAB | VT | FF | SP | NBSP | USP )+
+            // JS.g:564:4: ( TAB | VT | FF | SP | NBSP | USP )+
             int cnt1=0;
             loop1:
             do {
@@ -2879,8 +2887,8 @@
     // $ANTLR start LF
     public final void mLF() throws RecognitionException {
         try {
-            // JS.g:564:2: ( '\\n' )
-            // JS.g:564:4: '\\n'
+            // JS.g:572:2: ( '\\n' )
+            // JS.g:572:4: '\\n'
             {
             match('\n'); 
 
@@ -2895,8 +2903,8 @@
     // $ANTLR start CR
     public final void mCR() throws RecognitionException {
         try {
-            // JS.g:568:2: ( '\\r' )
-            // JS.g:568:4: '\\r'
+            // JS.g:576:2: ( '\\r' )
+            // JS.g:576:4: '\\r'
             {
             match('\r'); 
 
@@ -2911,8 +2919,8 @@
     // $ANTLR start LS
     public final void mLS() throws RecognitionException {
         try {
-            // JS.g:572:2: ( '\\u2028' )
-            // JS.g:572:4: '\\u2028'
+            // JS.g:580:2: ( '\\u2028' )
+            // JS.g:580:4: '\\u2028'
             {
             match('\u2028'); 
 
@@ -2927,8 +2935,8 @@
     // $ANTLR start PS
     public final void mPS() throws RecognitionException {
         try {
-            // JS.g:576:2: ( '\\u2029' )
-            // JS.g:576:4: '\\u2029'
+            // JS.g:584:2: ( '\\u2029' )
+            // JS.g:584:4: '\\u2029'
             {
             match('\u2029'); 
 
@@ -2943,7 +2951,7 @@
     // $ANTLR start LineTerminator
     public final void mLineTerminator() throws RecognitionException {
         try {
-            // JS.g:580:2: ( CR | LF | LS | PS )
+            // JS.g:588:2: ( CR | LF | LS | PS )
             // JS.g:
             {
             if ( input.LA(1)=='\n'||input.LA(1)=='\r'||(input.LA(1)>='\u2028' && input.LA(1)<='\u2029') ) {
@@ -2969,10 +2977,10 @@
     public final void mEOL() throws RecognitionException {
         try {
             int _type = EOL;
-            // JS.g:584:2: ( ( ( CR ( LF )? ) | LF | LS | PS ) )
-            // JS.g:584:4: ( ( CR ( LF )? ) | LF | LS | PS )
+            // JS.g:592:2: ( ( ( CR ( LF )? ) | LF | LS | PS ) )
+            // JS.g:592:4: ( ( CR ( LF )? ) | LF | LS | PS )
             {
-            // JS.g:584:4: ( ( CR ( LF )? ) | LF | LS | PS )
+            // JS.g:592:4: ( ( CR ( LF )? ) | LF | LS | PS )
             int alt3=4;
             switch ( input.LA(1) ) {
             case '\r':
@@ -2997,20 +3005,20 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("584:4: ( ( CR ( LF )? ) | LF | LS | PS )", 3, 0, input);
+                    new NoViableAltException("592:4: ( ( CR ( LF )? ) | LF | LS | PS )", 3, 0, input);
 
                 throw nvae;
             }
 
             switch (alt3) {
                 case 1 :
-                    // JS.g:584:6: ( CR ( LF )? )
+                    // JS.g:592:6: ( CR ( LF )? )
                     {
-                    // JS.g:584:6: ( CR ( LF )? )
-                    // JS.g:584:8: CR ( LF )?
+                    // JS.g:592:6: ( CR ( LF )? )
+                    // JS.g:592:8: CR ( LF )?
                     {
                     mCR(); 
-                    // JS.g:584:11: ( LF )?
+                    // JS.g:592:11: ( LF )?
                     int alt2=2;
                     int LA2_0 = input.LA(1);
 
@@ -3019,7 +3027,7 @@
                     }
                     switch (alt2) {
                         case 1 :
-                            // JS.g:584:11: LF
+                            // JS.g:592:11: LF
                             {
                             mLF(); 
 
@@ -3035,21 +3043,21 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:584:19: LF
+                    // JS.g:592:19: LF
                     {
                     mLF(); 
 
                     }
                     break;
                 case 3 :
-                    // JS.g:584:24: LS
+                    // JS.g:592:24: LS
                     {
                     mLS(); 
 
                     }
                     break;
                 case 4 :
-                    // JS.g:584:29: PS
+                    // JS.g:592:29: PS
                     {
                     mPS(); 
 
@@ -3073,12 +3081,12 @@
     public final void mMultiLineComment() throws RecognitionException {
         try {
             int _type = MultiLineComment;
-            // JS.g:591:2: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            // JS.g:591:4: '/*' ( options {greedy=false; } : . )* '*/'
+            // JS.g:599:2: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // JS.g:599:4: '/*' ( options {greedy=false; } : . )* '*/'
             {
             match("/*"); 
 
-            // JS.g:591:9: ( options {greedy=false; } : . )*
+            // JS.g:599:9: ( options {greedy=false; } : . )*
             loop4:
             do {
                 int alt4=2;
@@ -3103,7 +3111,7 @@
 
                 switch (alt4) {
             	case 1 :
-            	    // JS.g:591:41: .
+            	    // JS.g:599:41: .
             	    {
             	    matchAny(); 
 
@@ -3132,12 +3140,12 @@
     public final void mSingleLineComment() throws RecognitionException {
         try {
             int _type = SingleLineComment;
-            // JS.g:595:2: ( '//' (~ ( LineTerminator ) )* )
-            // JS.g:595:4: '//' (~ ( LineTerminator ) )*
+            // JS.g:603:2: ( '//' (~ ( LineTerminator ) )* )
+            // JS.g:603:4: '//' (~ ( LineTerminator ) )*
             {
             match("//"); 
 
-            // JS.g:595:9: (~ ( LineTerminator ) )*
+            // JS.g:603:9: (~ ( LineTerminator ) )*
             loop5:
             do {
                 int alt5=2;
@@ -3150,7 +3158,7 @@
 
                 switch (alt5) {
             	case 1 :
-            	    // JS.g:595:11: ~ ( LineTerminator )
+            	    // JS.g:603:11: ~ ( LineTerminator )
             	    {
             	    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();
@@ -3185,7 +3193,7 @@
     // $ANTLR start IdentifierStartASCII
     public final void mIdentifierStartASCII() throws RecognitionException {
         try {
-            // JS.g:704:2: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | BSLASH 'u' HexDigit HexDigit HexDigit HexDigit )
+            // JS.g:712:2: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | BSLASH 'u' HexDigit HexDigit HexDigit HexDigit )
             int alt6=5;
             switch ( input.LA(1) ) {
             case 'a':
@@ -3265,42 +3273,42 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("703:10: fragment IdentifierStartASCII : ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | BSLASH 'u' HexDigit HexDigit HexDigit HexDigit );", 6, 0, input);
+                    new NoViableAltException("711:10: fragment IdentifierStartASCII : ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | BSLASH 'u' HexDigit HexDigit HexDigit HexDigit );", 6, 0, input);
 
                 throw nvae;
             }
 
             switch (alt6) {
                 case 1 :
-                    // JS.g:704:4: 'a' .. 'z'
+                    // JS.g:712:4: 'a' .. 'z'
                     {
                     matchRange('a','z'); 
 
                     }
                     break;
                 case 2 :
-                    // JS.g:704:15: 'A' .. 'Z'
+                    // JS.g:712:15: 'A' .. 'Z'
                     {
                     matchRange('A','Z'); 
 
                     }
                     break;
                 case 3 :
-                    // JS.g:705:4: '$'
+                    // JS.g:713:4: '$'
                     {
                     match('$'); 
 
                     }
                     break;
                 case 4 :
-                    // JS.g:706:4: '_'
+                    // JS.g:714:4: '_'
                     {
                     match('_'); 
 
                     }
                     break;
                 case 5 :
-                    // JS.g:707:4: BSLASH 'u' HexDigit HexDigit HexDigit HexDigit
+                    // JS.g:715:4: BSLASH 'u' HexDigit HexDigit HexDigit HexDigit
                     {
                     mBSLASH(); 
                     match('u'); 
@@ -3322,7 +3330,7 @@
     // $ANTLR start IdentifierPart
     public final void mIdentifierPart() throws RecognitionException {
         try {
-            // JS.g:715:2: ( DecimalDigit | IdentifierStartASCII | {...}?)
+            // JS.g:723:2: ( DecimalDigit | IdentifierStartASCII | {...}?)
             int alt7=3;
             switch ( input.LA(1) ) {
             case '0':
@@ -3403,21 +3411,21 @@
 
             switch (alt7) {
                 case 1 :
-                    // JS.g:715:4: DecimalDigit
+                    // JS.g:723:4: DecimalDigit
                     {
                     mDecimalDigit(); 
 
                     }
                     break;
                 case 2 :
-                    // JS.g:716:4: IdentifierStartASCII
+                    // JS.g:724:4: IdentifierStartASCII
                     {
                     mIdentifierStartASCII(); 
 
                     }
                     break;
                 case 3 :
-                    // JS.g:717:4: {...}?
+                    // JS.g:725:4: {...}?
                     {
                     if ( !( isIdentifierPartUnicode(input.LA(1)) ) ) {
                         throw new FailedPredicateException(input, "IdentifierPart", " isIdentifierPartUnicode(input.LA(1)) ");
@@ -3437,11 +3445,11 @@
     // $ANTLR start IdentifierNameASCIIStart
     public final void mIdentifierNameASCIIStart() throws RecognitionException {
         try {
-            // JS.g:721:2: ( IdentifierStartASCII ( IdentifierPart )* )
-            // JS.g:721:4: IdentifierStartASCII ( IdentifierPart )*
+            // JS.g:729:2: ( IdentifierStartASCII ( IdentifierPart )* )
+            // JS.g:729:4: IdentifierStartASCII ( IdentifierPart )*
             {
             mIdentifierStartASCII(); 
-            // JS.g:721:25: ( IdentifierPart )*
+            // JS.g:729:25: ( IdentifierPart )*
             loop8:
             do {
                 int alt8=2;
@@ -3457,7 +3465,7 @@
 
                 switch (alt8) {
             	case 1 :
-            	    // JS.g:721:25: IdentifierPart
+            	    // JS.g:729:25: IdentifierPart
             	    {
             	    mIdentifierPart(); 
 
@@ -3482,7 +3490,7 @@
     public final void mIdentifier() throws RecognitionException {
         try {
             int _type = Identifier;
-            // JS.g:734:3: ( IdentifierNameASCIIStart | )
+            // JS.g:742:3: ( IdentifierNameASCIIStart | )
             int alt9=2;
             int LA9_0 = input.LA(1);
 
@@ -3493,14 +3501,14 @@
                 alt9=2;}
             switch (alt9) {
                 case 1 :
-                    // JS.g:734:5: IdentifierNameASCIIStart
+                    // JS.g:742:5: IdentifierNameASCIIStart
                     {
                     mIdentifierNameASCIIStart(); 
 
                     }
                     break;
                 case 2 :
-                    // JS.g:735:5: 
+                    // JS.g:743:5: 
                     {
                      consumeIdentifierUnicodeStart(); 
 
@@ -3518,8 +3526,8 @@
     // $ANTLR start PropertyIdentifierSymbols
     public final void mPropertyIdentifierSymbols() throws RecognitionException {
         try {
-            // JS.g:746:3: ( AT Identifier )
-            // JS.g:746:5: AT Identifier
+            // JS.g:755:3: ( AT Identifier )
+            // JS.g:755:5: AT Identifier
             {
             mAT(); 
             mIdentifier(); 
@@ -3536,8 +3544,8 @@
     public final void mXmlAttribute() throws RecognitionException {
         try {
             int _type = XmlAttribute;
-            // JS.g:750:3: ( PropertyIdentifierSymbols )
-            // JS.g:750:5: PropertyIdentifierSymbols
+            // JS.g:759:3: ( PropertyIdentifierSymbols )
+            // JS.g:759:5: PropertyIdentifierSymbols
             {
             mPropertyIdentifierSymbols(); 
 
@@ -3553,8 +3561,8 @@
     // $ANTLR start DecimalDigit
     public final void mDecimalDigit() throws RecognitionException {
         try {
-            // JS.g:836:2: ( '0' .. '9' )
-            // JS.g:836:4: '0' .. '9'
+            // JS.g:845:2: ( '0' .. '9' )
+            // JS.g:845:4: '0' .. '9'
             {
             matchRange('0','9'); 
 
@@ -3569,7 +3577,7 @@
     // $ANTLR start HexDigit
     public final void mHexDigit() throws RecognitionException {
         try {
-            // JS.g:840:2: ( DecimalDigit | 'a' .. 'f' | 'A' .. 'F' )
+            // JS.g:849: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') ) {
@@ -3594,8 +3602,8 @@
     // $ANTLR start OctalDigit
     public final void mOctalDigit() throws RecognitionException {
         try {
-            // JS.g:844:2: ( '0' .. '7' )
-            // JS.g:844:4: '0' .. '7'
+            // JS.g:853:2: ( '0' .. '7' )
+            // JS.g:853:4: '0' .. '7'
             {
             matchRange('0','7'); 
 
@@ -3610,8 +3618,8 @@
     // $ANTLR start ExponentPart
     public final void mExponentPart() throws RecognitionException {
         try {
-            // JS.g:848:2: ( ( 'e' | 'E' ) ( '+' | '-' )? ( DecimalDigit )+ )
-            // JS.g:848:4: ( 'e' | 'E' ) ( '+' | '-' )? ( DecimalDigit )+
+            // JS.g:857:2: ( ( 'e' | 'E' ) ( '+' | '-' )? ( DecimalDigit )+ )
+            // JS.g:857:4: ( 'e' | 'E' ) ( '+' | '-' )? ( DecimalDigit )+
             {
             if ( input.LA(1)=='E'||input.LA(1)=='e' ) {
                 input.consume();
@@ -3623,7 +3631,7 @@
                 recover(mse);    throw mse;
             }
 
-            // JS.g:848:18: ( '+' | '-' )?
+            // JS.g:857:18: ( '+' | '-' )?
             int alt10=2;
             int LA10_0 = input.LA(1);
 
@@ -3650,7 +3658,7 @@
 
             }
 
-            // JS.g:848:33: ( DecimalDigit )+
+            // JS.g:857:33: ( DecimalDigit )+
             int cnt11=0;
             loop11:
             do {
@@ -3664,7 +3672,7 @@
 
                 switch (alt11) {
             	case 1 :
-            	    // JS.g:848:33: DecimalDigit
+            	    // JS.g:857:33: DecimalDigit
             	    {
             	    mDecimalDigit(); 
 
@@ -3692,7 +3700,7 @@
     // $ANTLR start DecimalIntegerLiteral
     public final void mDecimalIntegerLiteral() throws RecognitionException {
         try {
-            // JS.g:852:2: ( '0' | '1' .. '9' ( DecimalDigit )* )
+            // JS.g:861:2: ( '0' | '1' .. '9' ( DecimalDigit )* )
             int alt13=2;
             int LA13_0 = input.LA(1);
 
@@ -3704,23 +3712,23 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("851:10: fragment DecimalIntegerLiteral : ( '0' | '1' .. '9' ( DecimalDigit )* );", 13, 0, input);
+                    new NoViableAltException("860:10: fragment DecimalIntegerLiteral : ( '0' | '1' .. '9' ( DecimalDigit )* );", 13, 0, input);
 
                 throw nvae;
             }
             switch (alt13) {
                 case 1 :
-                    // JS.g:852:4: '0'
+                    // JS.g:861:4: '0'
                     {
                     match('0'); 
 
                     }
                     break;
                 case 2 :
-                    // JS.g:853:4: '1' .. '9' ( DecimalDigit )*
+                    // JS.g:862:4: '1' .. '9' ( DecimalDigit )*
                     {
                     matchRange('1','9'); 
-                    // JS.g:853:13: ( DecimalDigit )*
+                    // JS.g:862:13: ( DecimalDigit )*
                     loop12:
                     do {
                         int alt12=2;
@@ -3733,7 +3741,7 @@
 
                         switch (alt12) {
                     	case 1 :
-                    	    // JS.g:853:13: DecimalDigit
+                    	    // JS.g:862:13: DecimalDigit
                     	    {
                     	    mDecimalDigit(); 
 
@@ -3760,16 +3768,16 @@
     public final void mDecimalLiteral() throws RecognitionException {
         try {
             int _type = DecimalLiteral;
-            // JS.g:857:2: ( DecimalIntegerLiteral '.' ( DecimalDigit )* ( ExponentPart )? | '.' ( DecimalDigit )+ ( ExponentPart )? | DecimalIntegerLiteral ( ExponentPart )? )
+            // JS.g:866:2: ( DecimalIntegerLiteral '.' ( DecimalDigit )* ( ExponentPart )? | '.' ( DecimalDigit )+ ( ExponentPart )? | DecimalIntegerLiteral ( ExponentPart )? )
             int alt19=3;
             alt19 = dfa19.predict(input);
             switch (alt19) {
                 case 1 :
-                    // JS.g:857:4: DecimalIntegerLiteral '.' ( DecimalDigit )* ( ExponentPart )?
+                    // JS.g:866:4: DecimalIntegerLiteral '.' ( DecimalDigit )* ( ExponentPart )?
                     {
                     mDecimalIntegerLiteral(); 
                     match('.'); 
-                    // JS.g:857:30: ( DecimalDigit )*
+                    // JS.g:866:30: ( DecimalDigit )*
                     loop14:
                     do {
                         int alt14=2;
@@ -3782,7 +3790,7 @@
 
                         switch (alt14) {
                     	case 1 :
-                    	    // JS.g:857:30: DecimalDigit
+                    	    // JS.g:866:30: DecimalDigit
                     	    {
                     	    mDecimalDigit(); 
 
@@ -3794,7 +3802,7 @@
                         }
                     } while (true);
 
-                    // JS.g:857:44: ( ExponentPart )?
+                    // JS.g:866:44: ( ExponentPart )?
                     int alt15=2;
                     int LA15_0 = input.LA(1);
 
@@ -3803,7 +3811,7 @@
                     }
                     switch (alt15) {
                         case 1 :
-                            // JS.g:857:44: ExponentPart
+                            // JS.g:866:44: ExponentPart
                             {
                             mExponentPart(); 
 
@@ -3816,10 +3824,10 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:858:4: '.' ( DecimalDigit )+ ( ExponentPart )?
+                    // JS.g:867:4: '.' ( DecimalDigit )+ ( ExponentPart )?
                     {
                     match('.'); 
-                    // JS.g:858:8: ( DecimalDigit )+
+                    // JS.g:867:8: ( DecimalDigit )+
                     int cnt16=0;
                     loop16:
                     do {
@@ -3833,7 +3841,7 @@
 
                         switch (alt16) {
                     	case 1 :
-                    	    // JS.g:858:8: DecimalDigit
+                    	    // JS.g:867:8: DecimalDigit
                     	    {
                     	    mDecimalDigit(); 
 
@@ -3849,7 +3857,7 @@
                         cnt16++;
                     } while (true);
 
-                    // JS.g:858:22: ( ExponentPart )?
+                    // JS.g:867:22: ( ExponentPart )?
                     int alt17=2;
                     int LA17_0 = input.LA(1);
 
@@ -3858,7 +3866,7 @@
                     }
                     switch (alt17) {
                         case 1 :
-                            // JS.g:858:22: ExponentPart
+                            // JS.g:867:22: ExponentPart
                             {
                             mExponentPart(); 
 
@@ -3871,10 +3879,10 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:859:4: DecimalIntegerLiteral ( ExponentPart )?
+                    // JS.g:868:4: DecimalIntegerLiteral ( ExponentPart )?
                     {
                     mDecimalIntegerLiteral(); 
-                    // JS.g:859:26: ( ExponentPart )?
+                    // JS.g:868:26: ( ExponentPart )?
                     int alt18=2;
                     int LA18_0 = input.LA(1);
 
@@ -3883,7 +3891,7 @@
                     }
                     switch (alt18) {
                         case 1 :
-                            // JS.g:859:26: ExponentPart
+                            // JS.g:868:26: ExponentPart
                             {
                             mExponentPart(); 
 
@@ -3908,11 +3916,11 @@
     public final void mOctalIntegerLiteral() throws RecognitionException {
         try {
             int _type = OctalIntegerLiteral;
-            // JS.g:863:2: ( '0' ( OctalDigit )+ )
-            // JS.g:863:4: '0' ( OctalDigit )+
+            // JS.g:872:2: ( '0' ( OctalDigit )+ )
+            // JS.g:872:4: '0' ( OctalDigit )+
             {
             match('0'); 
-            // JS.g:863:8: ( OctalDigit )+
+            // JS.g:872:8: ( OctalDigit )+
             int cnt20=0;
             loop20:
             do {
@@ -3926,7 +3934,7 @@
 
                 switch (alt20) {
             	case 1 :
-            	    // JS.g:863:8: OctalDigit
+            	    // JS.g:872:8: OctalDigit
             	    {
             	    mOctalDigit(); 
 
@@ -3956,10 +3964,10 @@
     public final void mHexIntegerLiteral() throws RecognitionException {
         try {
             int _type = HexIntegerLiteral;
-            // JS.g:867:2: ( ( '0x' | '0X' ) ( HexDigit )+ )
-            // JS.g:867:4: ( '0x' | '0X' ) ( HexDigit )+
+            // JS.g:876:2: ( ( '0x' | '0X' ) ( HexDigit )+ )
+            // JS.g:876:4: ( '0x' | '0X' ) ( HexDigit )+
             {
-            // JS.g:867:4: ( '0x' | '0X' )
+            // JS.g:876:4: ( '0x' | '0X' )
             int alt21=2;
             int LA21_0 = input.LA(1);
 
@@ -3974,20 +3982,20 @@
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("867:4: ( '0x' | '0X' )", 21, 1, input);
+                        new NoViableAltException("876:4: ( '0x' | '0X' )", 21, 1, input);
 
                     throw nvae;
                 }
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("867:4: ( '0x' | '0X' )", 21, 0, input);
+                    new NoViableAltException("876:4: ( '0x' | '0X' )", 21, 0, input);
 
                 throw nvae;
             }
             switch (alt21) {
                 case 1 :
-                    // JS.g:867:6: '0x'
+                    // JS.g:876:6: '0x'
                     {
                     match("0x"); 
 
@@ -3995,7 +4003,7 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:867:13: '0X'
+                    // JS.g:876:13: '0X'
                     {
                     match("0X"); 
 
@@ -4005,7 +4013,7 @@
 
             }
 
-            // JS.g:867:20: ( HexDigit )+
+            // JS.g:876:20: ( HexDigit )+
             int cnt22=0;
             loop22:
             do {
@@ -4019,7 +4027,7 @@
 
                 switch (alt22) {
             	case 1 :
-            	    // JS.g:867:20: HexDigit
+            	    // JS.g:876:20: HexDigit
             	    {
             	    mHexDigit(); 
 
@@ -4048,8 +4056,8 @@
     // $ANTLR start CharacterEscapeSequence
     public final void mCharacterEscapeSequence() throws RecognitionException {
         try {
-            // JS.g:886:2: (~ ( DecimalDigit | 'x' | 'u' | LineTerminator ) )
-            // JS.g:886:4: ~ ( DecimalDigit | 'x' | 'u' | LineTerminator )
+            // JS.g:895:2: (~ ( DecimalDigit | 'x' | 'u' | LineTerminator ) )
+            // JS.g:895:4: ~ ( DecimalDigit | 'x' | 'u' | LineTerminator )
             {
             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();
@@ -4073,8 +4081,8 @@
     // $ANTLR start ZeroToThree
     public final void mZeroToThree() throws RecognitionException {
         try {
-            // JS.g:890:2: ( '0' .. '3' )
-            // JS.g:890:4: '0' .. '3'
+            // JS.g:899:2: ( '0' .. '3' )
+            // JS.g:899:4: '0' .. '3'
             {
             matchRange('0','3'); 
 
@@ -4089,7 +4097,7 @@
     // $ANTLR start OctalEscapeSequence
     public final void mOctalEscapeSequence() throws RecognitionException {
         try {
-            // JS.g:894:2: ( OctalDigit | ZeroToThree OctalDigit | '4' .. '7' OctalDigit | ZeroToThree OctalDigit OctalDigit )
+            // JS.g:903:2: ( OctalDigit | ZeroToThree OctalDigit | '4' .. '7' OctalDigit | ZeroToThree OctalDigit OctalDigit )
             int alt23=4;
             int LA23_0 = input.LA(1);
 
@@ -4119,20 +4127,20 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("893:10: fragment OctalEscapeSequence : ( OctalDigit | ZeroToThree OctalDigit | '4' .. '7' OctalDigit | ZeroToThree OctalDigit OctalDigit );", 23, 0, input);
+                    new NoViableAltException("902:10: fragment OctalEscapeSequence : ( OctalDigit | ZeroToThree OctalDigit | '4' .. '7' OctalDigit | ZeroToThree OctalDigit OctalDigit );", 23, 0, input);
 
                 throw nvae;
             }
             switch (alt23) {
                 case 1 :
-                    // JS.g:894:4: OctalDigit
+                    // JS.g:903:4: OctalDigit
                     {
                     mOctalDigit(); 
 
                     }
                     break;
                 case 2 :
-                    // JS.g:895:4: ZeroToThree OctalDigit
+                    // JS.g:904:4: ZeroToThree OctalDigit
                     {
                     mZeroToThree(); 
                     mOctalDigit(); 
@@ -4140,7 +4148,7 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:896:4: '4' .. '7' OctalDigit
+                    // JS.g:905:4: '4' .. '7' OctalDigit
                     {
                     matchRange('4','7'); 
                     mOctalDigit(); 
@@ -4148,7 +4156,7 @@
                     }
                     break;
                 case 4 :
-                    // JS.g:897:4: ZeroToThree OctalDigit OctalDigit
+                    // JS.g:906:4: ZeroToThree OctalDigit OctalDigit
                     {
                     mZeroToThree(); 
                     mOctalDigit(); 
@@ -4167,8 +4175,8 @@
     // $ANTLR start HexEscapeSequence
     public final void mHexEscapeSequence() throws RecognitionException {
         try {
-            // JS.g:901:2: ( 'x' HexDigit HexDigit )
-            // JS.g:901:4: 'x' HexDigit HexDigit
+            // JS.g:910:2: ( 'x' HexDigit HexDigit )
+            // JS.g:910:4: 'x' HexDigit HexDigit
             {
             match('x'); 
             mHexDigit(); 
@@ -4185,8 +4193,8 @@
     // $ANTLR start UnicodeEscapeSequence
     public final void mUnicodeEscapeSequence() throws RecognitionException {
         try {
-            // JS.g:905:2: ( 'u' HexDigit HexDigit HexDigit HexDigit )
-            // JS.g:905:4: 'u' HexDigit HexDigit HexDigit HexDigit
+            // JS.g:914:2: ( 'u' HexDigit HexDigit HexDigit HexDigit )
+            // JS.g:914:4: 'u' HexDigit HexDigit HexDigit HexDigit
             {
             match('u'); 
             mHexDigit(); 
@@ -4205,11 +4213,11 @@
     // $ANTLR start EscapeSequence
     public final void mEscapeSequence() throws RecognitionException {
         try {
-            // JS.g:909:2: ( BSLASH ( CharacterEscapeSequence | OctalEscapeSequence | HexEscapeSequence | UnicodeEscapeSequence | LineTerminator ) )
-            // JS.g:910:2: BSLASH ( CharacterEscapeSequence | OctalEscapeSequence | HexEscapeSequence | UnicodeEscapeSequence | LineTerminator )
+            // JS.g:918:2: ( BSLASH ( CharacterEscapeSequence | OctalEscapeSequence | HexEscapeSequence | UnicodeEscapeSequence | LineTerminator ) )
+            // JS.g:919:2: BSLASH ( CharacterEscapeSequence | OctalEscapeSequence | HexEscapeSequence | UnicodeEscapeSequence | LineTerminator )
             {
             mBSLASH(); 
-            // JS.g:911:2: ( CharacterEscapeSequence | OctalEscapeSequence | HexEscapeSequence | UnicodeEscapeSequence | LineTerminator )
+            // JS.g:920:2: ( CharacterEscapeSequence | OctalEscapeSequence | HexEscapeSequence | UnicodeEscapeSequence | LineTerminator )
             int alt24=5;
             int LA24_0 = input.LA(1);
 
@@ -4230,41 +4238,41 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("911:2: ( CharacterEscapeSequence | OctalEscapeSequence | HexEscapeSequence | UnicodeEscapeSequence | LineTerminator )", 24, 0, input);
+                    new NoViableAltException("920:2: ( CharacterEscapeSequence | OctalEscapeSequence | HexEscapeSequence | UnicodeEscapeSequence | LineTerminator )", 24, 0, input);
 
                 throw nvae;
             }
             switch (alt24) {
                 case 1 :
-                    // JS.g:912:3: CharacterEscapeSequence
+                    // JS.g:921:3: CharacterEscapeSequence
                     {
                     mCharacterEscapeSequence(); 
 
                     }
                     break;
                 case 2 :
-                    // JS.g:913:5: OctalEscapeSequence
+                    // JS.g:922:5: OctalEscapeSequence
                     {
                     mOctalEscapeSequence(); 
 
                     }
                     break;
                 case 3 :
-                    // JS.g:914:5: HexEscapeSequence
+                    // JS.g:923:5: HexEscapeSequence
                     {
                     mHexEscapeSequence(); 
 
                     }
                     break;
                 case 4 :
-                    // JS.g:915:5: UnicodeEscapeSequence
+                    // JS.g:924:5: UnicodeEscapeSequence
                     {
                     mUnicodeEscapeSequence(); 
 
                     }
                     break;
                 case 5 :
-                    // JS.g:916:5: LineTerminator
+                    // JS.g:925:5: LineTerminator
                     {
                     mLineTerminator(); 
 
@@ -4286,7 +4294,7 @@
     public final void mStringLiteral() throws RecognitionException {
         try {
             int _type = StringLiteral;
-            // JS.g:921:2: ( SQUOTE (~ ( SQUOTE | BSLASH | LineTerminator ) | EscapeSequence )* SQUOTE | DQUOTE (~ ( DQUOTE | BSLASH | LineTerminator ) | EscapeSequence )* DQUOTE )
+            // 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);
 
@@ -4298,16 +4306,16 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("920:1: StringLiteral : ( SQUOTE (~ ( SQUOTE | BSLASH | LineTerminator ) | EscapeSequence )* SQUOTE | DQUOTE (~ ( DQUOTE | BSLASH | LineTerminator ) | EscapeSequence )* DQUOTE );", 27, 0, input);
+                    new NoViableAltException("929:1: StringLiteral : ( SQUOTE (~ ( SQUOTE | BSLASH | LineTerminator ) | EscapeSequence )* SQUOTE | DQUOTE (~ ( DQUOTE | BSLASH | LineTerminator ) | EscapeSequence )* DQUOTE );", 27, 0, input);
 
                 throw nvae;
             }
             switch (alt27) {
                 case 1 :
-                    // JS.g:921:4: SQUOTE (~ ( SQUOTE | BSLASH | LineTerminator ) | EscapeSequence )* SQUOTE
+                    // JS.g:930:4: SQUOTE (~ ( SQUOTE | BSLASH | LineTerminator ) | EscapeSequence )* SQUOTE
                     {
                     mSQUOTE(); 
-                    // JS.g:921:11: (~ ( SQUOTE | BSLASH | LineTerminator ) | EscapeSequence )*
+                    // JS.g:930:11: (~ ( SQUOTE | BSLASH | LineTerminator ) | EscapeSequence )*
                     loop25:
                     do {
                         int alt25=3;
@@ -4323,7 +4331,7 @@
 
                         switch (alt25) {
                     	case 1 :
-                    	    // JS.g:921:13: ~ ( SQUOTE | BSLASH | LineTerminator )
+                    	    // JS.g:930:13: ~ ( SQUOTE | BSLASH | LineTerminator )
                     	    {
                     	    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();
@@ -4339,7 +4347,7 @@
                     	    }
                     	    break;
                     	case 2 :
-                    	    // JS.g:921:53: EscapeSequence
+                    	    // JS.g:930:53: EscapeSequence
                     	    {
                     	    mEscapeSequence(); 
 
@@ -4356,10 +4364,10 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:922:4: DQUOTE (~ ( DQUOTE | BSLASH | LineTerminator ) | EscapeSequence )* DQUOTE
+                    // JS.g:931:4: DQUOTE (~ ( DQUOTE | BSLASH | LineTerminator ) | EscapeSequence )* DQUOTE
                     {
                     mDQUOTE(); 
-                    // JS.g:922:11: (~ ( DQUOTE | BSLASH | LineTerminator ) | EscapeSequence )*
+                    // JS.g:931:11: (~ ( DQUOTE | BSLASH | LineTerminator ) | EscapeSequence )*
                     loop26:
                     do {
                         int alt26=3;
@@ -4375,7 +4383,7 @@
 
                         switch (alt26) {
                     	case 1 :
-                    	    // JS.g:922:13: ~ ( DQUOTE | BSLASH | LineTerminator )
+                    	    // JS.g:931:13: ~ ( DQUOTE | BSLASH | LineTerminator )
                     	    {
                     	    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();
@@ -4391,7 +4399,7 @@
                     	    }
                     	    break;
                     	case 2 :
-                    	    // JS.g:922:53: EscapeSequence
+                    	    // JS.g:931:53: EscapeSequence
                     	    {
                     	    mEscapeSequence(); 
 
@@ -4419,8 +4427,8 @@
     // $ANTLR start BackslashSequence
     public final void mBackslashSequence() throws RecognitionException {
         try {
-            // JS.g:931:2: ( BSLASH ~ ( LineTerminator ) )
-            // JS.g:931:4: BSLASH ~ ( LineTerminator )
+            // JS.g:940:2: ( BSLASH ~ ( LineTerminator ) )
+            // JS.g:940:4: BSLASH ~ ( LineTerminator )
             {
             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') ) {
@@ -4445,7 +4453,7 @@
     // $ANTLR start RegularExpressionFirstChar
     public final void mRegularExpressionFirstChar() throws RecognitionException {
         try {
-            // JS.g:935:2: (~ ( LineTerminator | MUL | BSLASH | DIV ) | BackslashSequence )
+            // JS.g:944:2: (~ ( LineTerminator | MUL | BSLASH | DIV ) | BackslashSequence )
             int alt28=2;
             int LA28_0 = input.LA(1);
 
@@ -4457,13 +4465,13 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("934:10: fragment RegularExpressionFirstChar : (~ ( LineTerminator | MUL | BSLASH | DIV ) | BackslashSequence );", 28, 0, input);
+                    new NoViableAltException("943:10: fragment RegularExpressionFirstChar : (~ ( LineTerminator | MUL | BSLASH | DIV ) | BackslashSequence );", 28, 0, input);
 
                 throw nvae;
             }
             switch (alt28) {
                 case 1 :
-                    // JS.g:935:4: ~ ( LineTerminator | MUL | BSLASH | DIV )
+                    // JS.g:944:4: ~ ( LineTerminator | 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();
@@ -4479,7 +4487,7 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:936:4: BackslashSequence
+                    // JS.g:945:4: BackslashSequence
                     {
                     mBackslashSequence(); 
 
@@ -4496,7 +4504,7 @@
     // $ANTLR start RegularExpressionChar
     public final void mRegularExpressionChar() throws RecognitionException {
         try {
-            // JS.g:940:2: (~ ( LineTerminator | BSLASH | DIV ) | BackslashSequence )
+            // JS.g:949:2: (~ ( LineTerminator | BSLASH | DIV ) | BackslashSequence )
             int alt29=2;
             int LA29_0 = input.LA(1);
 
@@ -4508,13 +4516,13 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("939:10: fragment RegularExpressionChar : (~ ( LineTerminator | BSLASH | DIV ) | BackslashSequence );", 29, 0, input);
+                    new NoViableAltException("948:10: fragment RegularExpressionChar : (~ ( LineTerminator | BSLASH | DIV ) | BackslashSequence );", 29, 0, input);
 
                 throw nvae;
             }
             switch (alt29) {
                 case 1 :
-                    // JS.g:940:4: ~ ( LineTerminator | BSLASH | DIV )
+                    // JS.g:949:4: ~ ( LineTerminator | 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();
@@ -4530,7 +4538,7 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:941:4: BackslashSequence
+                    // JS.g:950:4: BackslashSequence
                     {
                     mBackslashSequence(); 
 
@@ -4548,15 +4556,15 @@
     public final void mRegularExpressionLiteral() throws RecognitionException {
         try {
             int _type = RegularExpressionLiteral;
-            // JS.g:945:2: ({...}? => DIV RegularExpressionFirstChar ( RegularExpressionChar )* DIV ( IdentifierPart )* )
-            // JS.g:945:4: {...}? => DIV RegularExpressionFirstChar ( RegularExpressionChar )* DIV ( IdentifierPart )*
+            // JS.g:954:2: ({...}? => DIV RegularExpressionFirstChar ( RegularExpressionChar )* DIV ( IdentifierPart )* )
+            // JS.g:954:4: {...}? => DIV RegularExpressionFirstChar ( RegularExpressionChar )* DIV ( IdentifierPart )*
             {
             if ( !( areRegularExpressionsEnabled() ) ) {
                 throw new FailedPredicateException(input, "RegularExpressionLiteral", " areRegularExpressionsEnabled() ");
             }
             mDIV(); 
             mRegularExpressionFirstChar(); 
-            // JS.g:945:73: ( RegularExpressionChar )*
+            // JS.g:954:73: ( RegularExpressionChar )*
             loop30:
             do {
                 int alt30=2;
@@ -4569,7 +4577,7 @@
 
                 switch (alt30) {
             	case 1 :
-            	    // JS.g:945:73: RegularExpressionChar
+            	    // JS.g:954:73: RegularExpressionChar
             	    {
             	    mRegularExpressionChar(); 
 
@@ -4582,7 +4590,7 @@
             } while (true);
 
             mDIV(); 
-            // JS.g:945:100: ( IdentifierPart )*
+            // JS.g:954:100: ( IdentifierPart )*
             loop31:
             do {
                 int alt31=2;
@@ -4598,7 +4606,7 @@
 
                 switch (alt31) {
             	case 1 :
-            	    // JS.g:945:100: IdentifierPart
+            	    // JS.g:954:100: IdentifierPart
             	    {
             	    mIdentifierPart(); 
 
@@ -8518,7 +8526,7 @@
             this.transition = DFA19_transition;
         }
         public String getDescription() {
-            return "856:1: DecimalLiteral : ( DecimalIntegerLiteral '.' ( DecimalDigit )* ( ExponentPart )? | '.' ( DecimalDigit )+ ( ExponentPart )? | DecimalIntegerLiteral ( ExponentPart )? );";
+            return "865: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 f3cf5a6..1ff620f 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-08-31 22:50:17
+// $ANTLR 3.0.1 JS.g 2009-09-02 10:05:08
 
 package org.eclipse.dltk.javascript.parser;
 
@@ -11,19 +11,15 @@
 
 import org.antlr.runtime.tree.*;
 
-/**
- * @since 2.0
- *
- */
 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", "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", "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=154;
-    public static final int RegularExpressionChar=192;
+    public static final int VT=158;
+    public static final int RegularExpressionChar=196;
     public static final int CDATA=36;
     public static final int XRCLOSE=121;
     public static final int LOCALNAME=134;
@@ -32,7 +28,7 @@
     public static final int CONST=44;
     public static final int XHOPEN=123;
     public static final int DO=13;
-    public static final int DQUOTE=151;
+    public static final int DQUOTE=155;
     public static final int NOT=99;
     public static final int EOF=-1;
     public static final int CEXPR=136;
@@ -43,15 +39,15 @@
     public static final int FINAL=50;
     public static final int FORSTEP=139;
     public static final int IMPORT=54;
-    public static final int EOL=165;
+    public static final int EOL=169;
     public static final int XLCLOSE=120;
-    public static final int PropertyIdentifierSymbols=176;
-    public static final int OctalDigit=178;
+    public static final int PropertyIdentifierSymbols=180;
+    public static final int OctalDigit=182;
     public static final int RETURN=23;
     public static final int THIS=25;
     public static final int ARGS=128;
     public static final int GET=33;
-    public static final int WhiteSpace=159;
+    public static final int WhiteSpace=163;
     public static final int EXPORT=48;
     public static final int EQ=83;
     public static final int GOTO=52;
@@ -64,24 +60,25 @@
     public static final int ELSE=14;
     public static final int NATIVE=58;
     public static final int INT=55;
-    public static final int FF=155;
-    public static final int OctalEscapeSequence=186;
-    public static final int RegularExpressionFirstChar=191;
+    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 TYPEOF=28;
     public static final int GT=80;
     public static final int CALL=135;
-    public static final int CharacterEscapeSequence=184;
+    public static final int CharacterEscapeSequence=188;
     public static final int LAND=101;
-    public static final int XML=149;
-    public static final int PINC=147;
+    public static final int XML=153;
+    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 SUB=88;
-    public static final int RegularExpressionLiteral=177;
+    public static final int RegularExpressionLiteral=181;
     public static final int FLOAT=51;
-    public static final int DecimalIntegerLiteral=180;
-    public static final int HexDigit=170;
+    public static final int DecimalIntegerLiteral=184;
+    public static final int HexDigit=174;
     public static final int LPAREN=72;
     public static final int AT=125;
     public static final int IMPLEMENTS=53;
@@ -89,55 +86,55 @@
     public static final int YIELD=35;
     public static final int XCCLOSE=119;
     public static final int SHRASS=111;
-    public static final int PS=163;
-    public static final int MultiLineComment=166;
+    public static final int PS=167;
+    public static final int MultiLineComment=170;
     public static final int ADD=87;
-    public static final int ZeroToThree=185;
-    public static final int ITEM=140;
-    public static final int XMLLiteral=193;
-    public static final int UnicodeEscapeSequence=188;
+    public static final int ZeroToThree=189;
+    public static final int ITEM=144;
+    public static final int XMLLiteral=197;
+    public static final int UnicodeEscapeSequence=192;
     public static final int SHUASS=112;
     public static final int SHORT=63;
     public static final int SET=34;
     public static final int INSTANCEOF=21;
-    public static final int SQUOTE=152;
+    public static final int SQUOTE=156;
     public static final int SAME=85;
     public static final int XHCLOSE=124;
     public static final int COLON=104;
-    public static final int StringLiteral=168;
-    public static final int PAREXPR=145;
+    public static final int StringLiteral=172;
+    public static final int PAREXPR=149;
     public static final int ENUM=47;
-    public static final int NBSP=157;
-    public static final int HexIntegerLiteral=183;
-    public static final int SP=156;
+    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=164;
+    public static final int LineTerminator=168;
     public static final int INTERFACE=56;
     public static final int DIV=116;
     public static final int LONG=57;
-    public static final int CR=161;
+    public static final int CR=165;
     public static final int PUBLIC=62;
     public static final int LOR=102;
     public static final int LT=79;
     public static final int WHILE=31;
-    public static final int BackslashSequence=190;
-    public static final int LS=162;
+    public static final int BackslashSequence=194;
+    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=172;
+    public static final int DecimalDigit=176;
     public static final int BYFIELD=131;
     public static final int BREAK=7;
-    public static final int Identifier=175;
+    public static final int Identifier=179;
     public static final int WXML=37;
-    public static final int POS=148;
+    public static final int POS=152;
     public static final int DOUBLE=46;
-    public static final int ExponentPart=179;
+    public static final int ExponentPart=183;
     public static final int VAR=29;
     public static final int VOID=30;
     public static final int SUPER=65;
     public static final int EACH=17;
-    public static final int LABELLED=141;
+    public static final int LABELLED=145;
     public static final int ADDASS=106;
     public static final int ARRAY=129;
     public static final int PRIVATE=60;
@@ -147,31 +144,33 @@
     public static final int DELETE=12;
     public static final int XCOPEN=118;
     public static final int MUL=89;
-    public static final int IdentifierStartASCII=171;
+    public static final int IdentifierStartASCII=175;
     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=158;
+    public static final int USP=162;
     public static final int ANDASS=113;
-    public static final int IdentifierNameASCIIStart=174;
+    public static final int IdentifierNameASCIIStart=178;
     public static final int QUE=103;
     public static final int OR=97;
+    public static final int SETTER=142;
     public static final int DEBUGGER=45;
-    public static final int PDEC=146;
+    public static final int FOREACH=140;
+    public static final int PDEC=150;
     public static final int CATCH=9;
     public static final int FALSE=6;
-    public static final int EscapeSequence=189;
+    public static final int EscapeSequence=193;
     public static final int THROW=26;
     public static final int MULASS=108;
-    public static final int XmlAttribute=169;
+    public static final int XmlAttribute=173;
     public static final int DEC=92;
-    public static final int OctalIntegerLiteral=182;
+    public static final int OctalIntegerLiteral=186;
     public static final int CLASS=43;
+    public static final int HexEscapeSequence=191;
     public static final int ORASS=114;
-    public static final int HexEscapeSequence=187;
-    public static final int NAMEDVALUE=142;
-    public static final int SingleLineComment=167;
+    public static final int NAMEDVALUE=146;
+    public static final int SingleLineComment=171;
     public static final int GTE=82;
     public static final int FOR=16;
     public static final int DOTDOT=126;
@@ -185,31 +184,32 @@
     public static final int EXPR=137;
     public static final int IN=20;
     public static final int CONTINUE=10;
-    public static final int OBJECT=144;
+    public static final int OBJECT=148;
     public static final int COMMA=78;
     public static final int TRANSIENT=68;
     public static final int FORITER=138;
     public static final int MODASS=109;
     public static final int DOT=76;
-    public static final int IdentifierPart=173;
+    public static final int IdentifierPart=177;
     public static final int WITH=32;
     public static final int BYTE=41;
     public static final int XOR=98;
     public static final int VOLATILE=69;
+    public static final int GETTER=141;
     public static final int NSAME=86;
     public static final int DEFAULT=11;
     public static final int ALLCHILDREN=133;
-    public static final int TAB=153;
-    public static final int DecimalLiteral=181;
+    public static final int TAB=157;
+    public static final int DecimalLiteral=185;
     public static final int TRUE=5;
     public static final int NEQ=84;
     public static final int FINALLY=15;
-    public static final int NEG=143;
+    public static final int NEG=147;
     public static final int ASSIGN=105;
     public static final int SEMIC=77;
     public static final int EXTENDS=49;
-    public static final int BSLASH=150;
-    public static final int LF=160;
+    public static final int BSLASH=154;
+    public static final int LF=164;
 
         public JSParser(TokenStream input) {
             super(input);
@@ -368,7 +368,7 @@
     };
 
     // $ANTLR start token
-    // JS.g:602:1: token : ( reservedWord | identifier | punctuator | numericLiteral | StringLiteral | XmlAttribute );
+    // JS.g:610: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 +390,7 @@
         Object XmlAttribute6_tree=null;
 
         try {
-            // JS.g:603:2: ( reservedWord | identifier | punctuator | numericLiteral | StringLiteral | XmlAttribute )
+            // JS.g:611:2: ( reservedWord | identifier | punctuator | numericLiteral | StringLiteral | XmlAttribute )
             int alt1=6;
             switch ( input.LA(1) ) {
             case NULL:
@@ -541,18 +541,18 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("602:1: token : ( reservedWord | identifier | punctuator | numericLiteral | StringLiteral | XmlAttribute );", 1, 0, input);
+                    new NoViableAltException("610:1: token : ( reservedWord | identifier | punctuator | numericLiteral | StringLiteral | XmlAttribute );", 1, 0, input);
 
                 throw nvae;
             }
 
             switch (alt1) {
                 case 1 :
-                    // JS.g:603:4: reservedWord
+                    // JS.g:611:4: reservedWord
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_reservedWord_in_token1949);
+                    pushFollow(FOLLOW_reservedWord_in_token1969);
                     reservedWord1=reservedWord();
                     _fsp--;
 
@@ -561,11 +561,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:604:4: identifier
+                    // JS.g:612:4: identifier
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_identifier_in_token1954);
+                    pushFollow(FOLLOW_identifier_in_token1974);
                     identifier2=identifier();
                     _fsp--;
 
@@ -574,11 +574,11 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:605:4: punctuator
+                    // JS.g:613:4: punctuator
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_punctuator_in_token1959);
+                    pushFollow(FOLLOW_punctuator_in_token1979);
                     punctuator3=punctuator();
                     _fsp--;
 
@@ -587,11 +587,11 @@
                     }
                     break;
                 case 4 :
-                    // JS.g:606:4: numericLiteral
+                    // JS.g:614:4: numericLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_numericLiteral_in_token1964);
+                    pushFollow(FOLLOW_numericLiteral_in_token1984);
                     numericLiteral4=numericLiteral();
                     _fsp--;
 
@@ -600,12 +600,12 @@
                     }
                     break;
                 case 5 :
-                    // JS.g:607:4: StringLiteral
+                    // JS.g:615:4: StringLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
                     StringLiteral5=(Token)input.LT(1);
-                    match(input,StringLiteral,FOLLOW_StringLiteral_in_token1969); 
+                    match(input,StringLiteral,FOLLOW_StringLiteral_in_token1989); 
                     StringLiteral5_tree = (Object)adaptor.create(StringLiteral5);
                     adaptor.addChild(root_0, StringLiteral5_tree);
 
@@ -613,12 +613,12 @@
                     }
                     break;
                 case 6 :
-                    // JS.g:608:4: XmlAttribute
+                    // JS.g:616:4: XmlAttribute
                     {
                     root_0 = (Object)adaptor.nil();
 
                     XmlAttribute6=(Token)input.LT(1);
-                    match(input,XmlAttribute,FOLLOW_XmlAttribute_in_token1974); 
+                    match(input,XmlAttribute,FOLLOW_XmlAttribute_in_token1994); 
                     XmlAttribute6_tree = (Object)adaptor.create(XmlAttribute6);
                     adaptor.addChild(root_0, XmlAttribute6_tree);
 
@@ -649,7 +649,7 @@
     };
 
     // $ANTLR start reservedWord
-    // JS.g:614:1: reservedWord : ( keyword | futureReservedWord | NULL | booleanLiteral );
+    // JS.g:622: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 +667,7 @@
         Object NULL9_tree=null;
 
         try {
-            // JS.g:615:2: ( keyword | futureReservedWord | NULL | booleanLiteral )
+            // JS.g:623:2: ( keyword | futureReservedWord | NULL | booleanLiteral )
             int alt2=4;
             switch ( input.LA(1) ) {
             case BREAK:
@@ -753,18 +753,18 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("614:1: reservedWord : ( keyword | futureReservedWord | NULL | booleanLiteral );", 2, 0, input);
+                    new NoViableAltException("622:1: reservedWord : ( keyword | futureReservedWord | NULL | booleanLiteral );", 2, 0, input);
 
                 throw nvae;
             }
 
             switch (alt2) {
                 case 1 :
-                    // JS.g:615:4: keyword
+                    // JS.g:623:4: keyword
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_keyword_in_reservedWord1989);
+                    pushFollow(FOLLOW_keyword_in_reservedWord2009);
                     keyword7=keyword();
                     _fsp--;
 
@@ -773,11 +773,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:616:4: futureReservedWord
+                    // JS.g:624:4: futureReservedWord
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_futureReservedWord_in_reservedWord1994);
+                    pushFollow(FOLLOW_futureReservedWord_in_reservedWord2014);
                     futureReservedWord8=futureReservedWord();
                     _fsp--;
 
@@ -786,12 +786,12 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:617:4: NULL
+                    // JS.g:625:4: NULL
                     {
                     root_0 = (Object)adaptor.nil();
 
                     NULL9=(Token)input.LT(1);
-                    match(input,NULL,FOLLOW_NULL_in_reservedWord1999); 
+                    match(input,NULL,FOLLOW_NULL_in_reservedWord2019); 
                     NULL9_tree = (Object)adaptor.create(NULL9);
                     adaptor.addChild(root_0, NULL9_tree);
 
@@ -799,11 +799,11 @@
                     }
                     break;
                 case 4 :
-                    // JS.g:618:4: booleanLiteral
+                    // JS.g:626:4: booleanLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_booleanLiteral_in_reservedWord2004);
+                    pushFollow(FOLLOW_booleanLiteral_in_reservedWord2024);
                     booleanLiteral10=booleanLiteral();
                     _fsp--;
 
@@ -835,7 +835,7 @@
     };
 
     // $ANTLR start keyword
-    // JS.g:625: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: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 );
     public final keyword_return keyword() throws RecognitionException {
         keyword_return retval = new keyword_return();
         retval.start = input.LT(1);
@@ -847,7 +847,7 @@
         Object set11_tree=null;
 
         try {
-            // JS.g:626: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: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:
             {
             root_0 = (Object)adaptor.nil();
@@ -889,7 +889,7 @@
     };
 
     // $ANTLR start futureReservedWord
-    // JS.g:663: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: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 );
     public final futureReservedWord_return futureReservedWord() throws RecognitionException {
         futureReservedWord_return retval = new futureReservedWord_return();
         retval.start = input.LT(1);
@@ -901,7 +901,7 @@
         Object set12_tree=null;
 
         try {
-            // JS.g:664: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: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:
             {
             root_0 = (Object)adaptor.nil();
@@ -943,7 +943,7 @@
     };
 
     // $ANTLR start identifier
-    // JS.g:737:1: identifier : ( WXML | GET | SET | EACH | Identifier );
+    // JS.g:745: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,13 +955,13 @@
         Object set13_tree=null;
 
         try {
-            // JS.g:738:3: ( WXML | GET | SET | EACH | Identifier )
+            // JS.g:746:3: ( WXML | GET | SET | EACH | NAMESPACE | Identifier )
             // JS.g:
             {
             root_0 = (Object)adaptor.nil();
 
             set13=(Token)input.LT(1);
-            if ( input.LA(1)==EACH||(input.LA(1)>=GET && input.LA(1)<=SET)||input.LA(1)==WXML||input.LA(1)==Identifier ) {
+            if ( input.LA(1)==EACH||(input.LA(1)>=GET && input.LA(1)<=SET)||(input.LA(1)>=WXML && input.LA(1)<=NAMESPACE)||input.LA(1)==Identifier ) {
                 input.consume();
                 adaptor.addChild(root_0, adaptor.create(set13));
                 errorRecovery=false;
@@ -997,7 +997,7 @@
     };
 
     // $ANTLR start punctuator
-    // JS.g:757: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: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 );
     public final punctuator_return punctuator() throws RecognitionException {
         punctuator_return retval = new punctuator_return();
         retval.start = input.LT(1);
@@ -1009,7 +1009,7 @@
         Object set14_tree=null;
 
         try {
-            // JS.g:758: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: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:
             {
             root_0 = (Object)adaptor.nil();
@@ -1051,7 +1051,7 @@
     };
 
     // $ANTLR start literal
-    // JS.g:815:1: literal : ( NULL | booleanLiteral | numericLiteral | StringLiteral | RegularExpressionLiteral );
+    // JS.g:824: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 +1071,7 @@
         Object RegularExpressionLiteral19_tree=null;
 
         try {
-            // JS.g:816:2: ( NULL | booleanLiteral | numericLiteral | StringLiteral | RegularExpressionLiteral )
+            // JS.g:825:2: ( NULL | booleanLiteral | numericLiteral | StringLiteral | RegularExpressionLiteral )
             int alt3=5;
             switch ( input.LA(1) ) {
             case NULL:
@@ -1104,19 +1104,19 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("815:1: literal : ( NULL | booleanLiteral | numericLiteral | StringLiteral | RegularExpressionLiteral );", 3, 0, input);
+                    new NoViableAltException("824:1: literal : ( NULL | booleanLiteral | numericLiteral | StringLiteral | RegularExpressionLiteral );", 3, 0, input);
 
                 throw nvae;
             }
 
             switch (alt3) {
                 case 1 :
-                    // JS.g:816:4: NULL
+                    // JS.g:825:4: NULL
                     {
                     root_0 = (Object)adaptor.nil();
 
                     NULL15=(Token)input.LT(1);
-                    match(input,NULL,FOLLOW_NULL_in_literal2793); 
+                    match(input,NULL,FOLLOW_NULL_in_literal2819); 
                     NULL15_tree = (Object)adaptor.create(NULL15);
                     adaptor.addChild(root_0, NULL15_tree);
 
@@ -1124,11 +1124,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:817:4: booleanLiteral
+                    // JS.g:826:4: booleanLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_booleanLiteral_in_literal2798);
+                    pushFollow(FOLLOW_booleanLiteral_in_literal2824);
                     booleanLiteral16=booleanLiteral();
                     _fsp--;
 
@@ -1137,11 +1137,11 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:818:4: numericLiteral
+                    // JS.g:827:4: numericLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_numericLiteral_in_literal2803);
+                    pushFollow(FOLLOW_numericLiteral_in_literal2829);
                     numericLiteral17=numericLiteral();
                     _fsp--;
 
@@ -1150,12 +1150,12 @@
                     }
                     break;
                 case 4 :
-                    // JS.g:819:4: StringLiteral
+                    // JS.g:828:4: StringLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
                     StringLiteral18=(Token)input.LT(1);
-                    match(input,StringLiteral,FOLLOW_StringLiteral_in_literal2808); 
+                    match(input,StringLiteral,FOLLOW_StringLiteral_in_literal2834); 
                     StringLiteral18_tree = (Object)adaptor.create(StringLiteral18);
                     adaptor.addChild(root_0, StringLiteral18_tree);
 
@@ -1163,12 +1163,12 @@
                     }
                     break;
                 case 5 :
-                    // JS.g:820:4: RegularExpressionLiteral
+                    // JS.g:829:4: RegularExpressionLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
                     RegularExpressionLiteral19=(Token)input.LT(1);
-                    match(input,RegularExpressionLiteral,FOLLOW_RegularExpressionLiteral_in_literal2813); 
+                    match(input,RegularExpressionLiteral,FOLLOW_RegularExpressionLiteral_in_literal2839); 
                     RegularExpressionLiteral19_tree = (Object)adaptor.create(RegularExpressionLiteral19);
                     adaptor.addChild(root_0, RegularExpressionLiteral19_tree);
 
@@ -1199,7 +1199,7 @@
     };
 
     // $ANTLR start booleanLiteral
-    // JS.g:823:1: booleanLiteral : ( TRUE | FALSE );
+    // JS.g:832:1: booleanLiteral : ( TRUE | FALSE );
     public final booleanLiteral_return booleanLiteral() throws RecognitionException {
         booleanLiteral_return retval = new booleanLiteral_return();
         retval.start = input.LT(1);
@@ -1211,7 +1211,7 @@
         Object set20_tree=null;
 
         try {
-            // JS.g:824:2: ( TRUE | FALSE )
+            // JS.g:833:2: ( TRUE | FALSE )
             // JS.g:
             {
             root_0 = (Object)adaptor.nil();
@@ -1253,7 +1253,7 @@
     };
 
     // $ANTLR start numericLiteral
-    // JS.g:870:1: numericLiteral : ( DecimalLiteral | OctalIntegerLiteral | HexIntegerLiteral );
+    // JS.g:879: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 +1265,7 @@
         Object set21_tree=null;
 
         try {
-            // JS.g:871:2: ( DecimalLiteral | OctalIntegerLiteral | HexIntegerLiteral )
+            // JS.g:880:2: ( DecimalLiteral | OctalIntegerLiteral | HexIntegerLiteral )
             // JS.g:
             {
             root_0 = (Object)adaptor.nil();
@@ -1307,7 +1307,7 @@
     };
 
     // $ANTLR start primaryExpression
-    // JS.g:966:1: primaryExpression : ( THIS | identifier | XmlAttribute | literal | arrayLiteral | objectLiteral | parenExpression );
+    // JS.g:975: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 +1331,7 @@
         Object XmlAttribute24_tree=null;
 
         try {
-            // JS.g:967:2: ( THIS | identifier | XmlAttribute | literal | arrayLiteral | objectLiteral | parenExpression )
+            // JS.g:976:2: ( THIS | identifier | XmlAttribute | literal | arrayLiteral | objectLiteral | parenExpression )
             int alt4=7;
             switch ( input.LA(1) ) {
             case THIS:
@@ -1343,6 +1343,7 @@
             case GET:
             case SET:
             case WXML:
+            case NAMESPACE:
             case Identifier:
                 {
                 alt4=2;
@@ -1382,19 +1383,19 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("966:1: primaryExpression : ( THIS | identifier | XmlAttribute | literal | arrayLiteral | objectLiteral | parenExpression );", 4, 0, input);
+                    new NoViableAltException("975:1: primaryExpression : ( THIS | identifier | XmlAttribute | literal | arrayLiteral | objectLiteral | parenExpression );", 4, 0, input);
 
                 throw nvae;
             }
 
             switch (alt4) {
                 case 1 :
-                    // JS.g:967:4: THIS
+                    // JS.g:976:4: THIS
                     {
                     root_0 = (Object)adaptor.nil();
 
                     THIS22=(Token)input.LT(1);
-                    match(input,THIS,FOLLOW_THIS_in_primaryExpression3442); 
+                    match(input,THIS,FOLLOW_THIS_in_primaryExpression3468); 
                     THIS22_tree = (Object)adaptor.create(THIS22);
                     adaptor.addChild(root_0, THIS22_tree);
 
@@ -1402,11 +1403,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:968:4: identifier
+                    // JS.g:977:4: identifier
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_identifier_in_primaryExpression3447);
+                    pushFollow(FOLLOW_identifier_in_primaryExpression3473);
                     identifier23=identifier();
                     _fsp--;
 
@@ -1415,12 +1416,12 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:969:4: XmlAttribute
+                    // JS.g:978:4: XmlAttribute
                     {
                     root_0 = (Object)adaptor.nil();
 
                     XmlAttribute24=(Token)input.LT(1);
-                    match(input,XmlAttribute,FOLLOW_XmlAttribute_in_primaryExpression3452); 
+                    match(input,XmlAttribute,FOLLOW_XmlAttribute_in_primaryExpression3478); 
                     XmlAttribute24_tree = (Object)adaptor.create(XmlAttribute24);
                     adaptor.addChild(root_0, XmlAttribute24_tree);
 
@@ -1428,11 +1429,11 @@
                     }
                     break;
                 case 4 :
-                    // JS.g:970:4: literal
+                    // JS.g:979:4: literal
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_literal_in_primaryExpression3457);
+                    pushFollow(FOLLOW_literal_in_primaryExpression3483);
                     literal25=literal();
                     _fsp--;
 
@@ -1441,11 +1442,11 @@
                     }
                     break;
                 case 5 :
-                    // JS.g:971:4: arrayLiteral
+                    // JS.g:980:4: arrayLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_arrayLiteral_in_primaryExpression3462);
+                    pushFollow(FOLLOW_arrayLiteral_in_primaryExpression3488);
                     arrayLiteral26=arrayLiteral();
                     _fsp--;
 
@@ -1454,11 +1455,11 @@
                     }
                     break;
                 case 6 :
-                    // JS.g:972:4: objectLiteral
+                    // JS.g:981:4: objectLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_objectLiteral_in_primaryExpression3467);
+                    pushFollow(FOLLOW_objectLiteral_in_primaryExpression3493);
                     objectLiteral27=objectLiteral();
                     _fsp--;
 
@@ -1467,11 +1468,11 @@
                     }
                     break;
                 case 7 :
-                    // JS.g:973:4: parenExpression
+                    // JS.g:982:4: parenExpression
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_parenExpression_in_primaryExpression3472);
+                    pushFollow(FOLLOW_parenExpression_in_primaryExpression3498);
                     parenExpression28=parenExpression();
                     _fsp--;
 
@@ -1503,7 +1504,7 @@
     };
 
     // $ANTLR start parenExpression
-    // JS.g:976:1: parenExpression : lpar= LPAREN expression RPAREN -> ^( PAREXPR[$lpar, \"PAREXPR\"] expression ) ;
+    // JS.g:985: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);
@@ -1521,20 +1522,20 @@
         RewriteRuleTokenStream stream_LPAREN=new RewriteRuleTokenStream(adaptor,"token LPAREN");
         RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
         try {
-            // JS.g:977:3: (lpar= LPAREN expression RPAREN -> ^( PAREXPR[$lpar, \"PAREXPR\"] expression ) )
-            // JS.g:977:5: lpar= LPAREN expression RPAREN
+            // JS.g:986:3: (lpar= LPAREN expression RPAREN -> ^( PAREXPR[$lpar, \"PAREXPR\"] expression ) )
+            // JS.g:986:5: lpar= LPAREN expression RPAREN
             {
             lpar=(Token)input.LT(1);
-            match(input,LPAREN,FOLLOW_LPAREN_in_parenExpression3488); 
+            match(input,LPAREN,FOLLOW_LPAREN_in_parenExpression3514); 
             stream_LPAREN.add(lpar);
 
-            pushFollow(FOLLOW_expression_in_parenExpression3490);
+            pushFollow(FOLLOW_expression_in_parenExpression3516);
             expression29=expression();
             _fsp--;
 
             stream_expression.add(expression29.getTree());
             RPAREN30=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_parenExpression3492); 
+            match(input,RPAREN,FOLLOW_RPAREN_in_parenExpression3518); 
             stream_RPAREN.add(RPAREN30);
 
 
@@ -1548,9 +1549,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 977:37: -> ^( PAREXPR[$lpar, \"PAREXPR\"] expression )
+            // 986:37: -> ^( PAREXPR[$lpar, \"PAREXPR\"] expression )
             {
-                // JS.g:977:40: ^( PAREXPR[$lpar, \"PAREXPR\"] expression )
+                // JS.g:986:40: ^( PAREXPR[$lpar, \"PAREXPR\"] expression )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(PAREXPR, lpar,  "PAREXPR"), root_1);
@@ -1588,7 +1589,7 @@
     };
 
     // $ANTLR start arrayLiteral
-    // JS.g:980:1: arrayLiteral : lb= LBRACK ( arrayItem ( COMMA arrayItem )* )? RBRACK -> ^( ARRAY[$lb, \"ARRAY\"] ( arrayItem )* ) ;
+    // JS.g:989: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);
@@ -1611,18 +1612,18 @@
         RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
         RewriteRuleSubtreeStream stream_arrayItem=new RewriteRuleSubtreeStream(adaptor,"rule arrayItem");
         try {
-            // JS.g:981:2: (lb= LBRACK ( arrayItem ( COMMA arrayItem )* )? RBRACK -> ^( ARRAY[$lb, \"ARRAY\"] ( arrayItem )* ) )
-            // JS.g:981:4: lb= LBRACK ( arrayItem ( COMMA arrayItem )* )? RBRACK
+            // JS.g:990:2: (lb= LBRACK ( arrayItem ( COMMA arrayItem )* )? RBRACK -> ^( ARRAY[$lb, \"ARRAY\"] ( arrayItem )* ) )
+            // JS.g:990:4: lb= LBRACK ( arrayItem ( COMMA arrayItem )* )? RBRACK
             {
             lb=(Token)input.LT(1);
-            match(input,LBRACK,FOLLOW_LBRACK_in_arrayLiteral3517); 
+            match(input,LBRACK,FOLLOW_LBRACK_in_arrayLiteral3543); 
             stream_LBRACK.add(lb);
 
-            // JS.g:981:14: ( arrayItem ( COMMA arrayItem )* )?
+            // JS.g:990:14: ( arrayItem ( COMMA arrayItem )* )?
             int alt6=2;
             int LA6_0 = input.LA(1);
 
-            if ( ((LA6_0>=NULL && LA6_0<=FALSE)||LA6_0==DELETE||(LA6_0>=EACH && LA6_0<=FUNCTION)||LA6_0==NEW||LA6_0==THIS||LA6_0==TYPEOF||LA6_0==VOID||(LA6_0>=GET && LA6_0<=YIELD)||LA6_0==WXML||LA6_0==LBRACE||LA6_0==LPAREN||LA6_0==LBRACK||LA6_0==COMMA||(LA6_0>=ADD && LA6_0<=SUB)||(LA6_0>=INC && LA6_0<=DEC)||(LA6_0>=NOT && LA6_0<=INV)||(LA6_0>=StringLiteral && LA6_0<=XmlAttribute)||LA6_0==Identifier||LA6_0==RegularExpressionLiteral||(LA6_0>=DecimalLiteral && LA6_0<=HexIntegerLiteral)||LA6_0==XMLLiteral) ) {
+            if ( ((LA6_0>=NULL && LA6_0<=FALSE)||LA6_0==DELETE||(LA6_0>=EACH && LA6_0<=FUNCTION)||LA6_0==NEW||LA6_0==THIS||LA6_0==TYPEOF||LA6_0==VOID||(LA6_0>=GET && LA6_0<=YIELD)||(LA6_0>=WXML && LA6_0<=NAMESPACE)||LA6_0==LBRACE||LA6_0==LPAREN||LA6_0==LBRACK||LA6_0==COMMA||(LA6_0>=ADD && LA6_0<=SUB)||(LA6_0>=INC && LA6_0<=DEC)||(LA6_0>=NOT && LA6_0<=INV)||(LA6_0>=StringLiteral && LA6_0<=XmlAttribute)||LA6_0==Identifier||LA6_0==RegularExpressionLiteral||(LA6_0>=DecimalLiteral && LA6_0<=HexIntegerLiteral)||LA6_0==XMLLiteral) ) {
                 alt6=1;
             }
             else if ( (LA6_0==RBRACK) ) {
@@ -1634,14 +1635,14 @@
             }
             switch (alt6) {
                 case 1 :
-                    // JS.g:981:16: arrayItem ( COMMA arrayItem )*
+                    // JS.g:990:16: arrayItem ( COMMA arrayItem )*
                     {
-                    pushFollow(FOLLOW_arrayItem_in_arrayLiteral3521);
+                    pushFollow(FOLLOW_arrayItem_in_arrayLiteral3547);
                     arrayItem31=arrayItem();
                     _fsp--;
 
                     stream_arrayItem.add(arrayItem31.getTree());
-                    // JS.g:981:26: ( COMMA arrayItem )*
+                    // JS.g:990:26: ( COMMA arrayItem )*
                     loop5:
                     do {
                         int alt5=2;
@@ -1654,13 +1655,13 @@
 
                         switch (alt5) {
                     	case 1 :
-                    	    // JS.g:981:28: COMMA arrayItem
+                    	    // JS.g:990:28: COMMA arrayItem
                     	    {
                     	    COMMA32=(Token)input.LT(1);
-                    	    match(input,COMMA,FOLLOW_COMMA_in_arrayLiteral3525); 
+                    	    match(input,COMMA,FOLLOW_COMMA_in_arrayLiteral3551); 
                     	    stream_COMMA.add(COMMA32);
 
-                    	    pushFollow(FOLLOW_arrayItem_in_arrayLiteral3527);
+                    	    pushFollow(FOLLOW_arrayItem_in_arrayLiteral3553);
                     	    arrayItem33=arrayItem();
                     	    _fsp--;
 
@@ -1681,7 +1682,7 @@
             }
 
             RBRACK34=(Token)input.LT(1);
-            match(input,RBRACK,FOLLOW_RBRACK_in_arrayLiteral3535); 
+            match(input,RBRACK,FOLLOW_RBRACK_in_arrayLiteral3561); 
             stream_RBRACK.add(RBRACK34);
 
 
@@ -1695,14 +1696,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 982:2: -> ^( ARRAY[$lb, \"ARRAY\"] ( arrayItem )* )
+            // 991:2: -> ^( ARRAY[$lb, \"ARRAY\"] ( arrayItem )* )
             {
-                // JS.g:982:5: ^( ARRAY[$lb, \"ARRAY\"] ( arrayItem )* )
+                // JS.g:991: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:982:28: ( arrayItem )*
+                // JS.g:991:28: ( arrayItem )*
                 while ( stream_arrayItem.hasNext() ) {
                     adaptor.addChild(root_1, stream_arrayItem.next());
 
@@ -1740,7 +1741,7 @@
     };
 
     // $ANTLR start arrayItem
-    // JS.g:985:1: arrayItem : (expr= assignmentExpression | {...}?) -> ^( ITEM ( $expr)? ) ;
+    // JS.g:994:1: arrayItem : (expr= assignmentExpression | {...}?) -> ^( ITEM ( $expr)? ) ;
     public final arrayItem_return arrayItem() throws RecognitionException {
         arrayItem_return retval = new arrayItem_return();
         retval.start = input.LT(1);
@@ -1752,14 +1753,14 @@
 
         RewriteRuleSubtreeStream stream_assignmentExpression=new RewriteRuleSubtreeStream(adaptor,"rule assignmentExpression");
         try {
-            // JS.g:986:2: ( (expr= assignmentExpression | {...}?) -> ^( ITEM ( $expr)? ) )
-            // JS.g:986:4: (expr= assignmentExpression | {...}?)
+            // JS.g:995:2: ( (expr= assignmentExpression | {...}?) -> ^( ITEM ( $expr)? ) )
+            // JS.g:995:4: (expr= assignmentExpression | {...}?)
             {
-            // JS.g:986:4: (expr= assignmentExpression | {...}?)
+            // JS.g:995:4: (expr= assignmentExpression | {...}?)
             int alt7=2;
             int LA7_0 = input.LA(1);
 
-            if ( ((LA7_0>=NULL && LA7_0<=FALSE)||LA7_0==DELETE||(LA7_0>=EACH && LA7_0<=FUNCTION)||LA7_0==NEW||LA7_0==THIS||LA7_0==TYPEOF||LA7_0==VOID||(LA7_0>=GET && LA7_0<=YIELD)||LA7_0==WXML||LA7_0==LBRACE||LA7_0==LPAREN||LA7_0==LBRACK||(LA7_0>=ADD && LA7_0<=SUB)||(LA7_0>=INC && LA7_0<=DEC)||(LA7_0>=NOT && LA7_0<=INV)||(LA7_0>=StringLiteral && LA7_0<=XmlAttribute)||LA7_0==Identifier||LA7_0==RegularExpressionLiteral||(LA7_0>=DecimalLiteral && LA7_0<=HexIntegerLiteral)||LA7_0==XMLLiteral) ) {
+            if ( ((LA7_0>=NULL && LA7_0<=FALSE)||LA7_0==DELETE||(LA7_0>=EACH && LA7_0<=FUNCTION)||LA7_0==NEW||LA7_0==THIS||LA7_0==TYPEOF||LA7_0==VOID||(LA7_0>=GET && LA7_0<=YIELD)||(LA7_0>=WXML && LA7_0<=NAMESPACE)||LA7_0==LBRACE||LA7_0==LPAREN||LA7_0==LBRACK||(LA7_0>=ADD && LA7_0<=SUB)||(LA7_0>=INC && LA7_0<=DEC)||(LA7_0>=NOT && LA7_0<=INV)||(LA7_0>=StringLiteral && LA7_0<=XmlAttribute)||LA7_0==Identifier||LA7_0==RegularExpressionLiteral||(LA7_0>=DecimalLiteral && LA7_0<=HexIntegerLiteral)||LA7_0==XMLLiteral) ) {
                 alt7=1;
             }
             else if ( (LA7_0==RBRACK||LA7_0==COMMA) ) {
@@ -1767,15 +1768,15 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("986:4: (expr= assignmentExpression | {...}?)", 7, 0, input);
+                    new NoViableAltException("995:4: (expr= assignmentExpression | {...}?)", 7, 0, input);
 
                 throw nvae;
             }
             switch (alt7) {
                 case 1 :
-                    // JS.g:986:6: expr= assignmentExpression
+                    // JS.g:995:6: expr= assignmentExpression
                     {
-                    pushFollow(FOLLOW_assignmentExpression_in_arrayItem3563);
+                    pushFollow(FOLLOW_assignmentExpression_in_arrayItem3589);
                     expr=assignmentExpression();
                     _fsp--;
 
@@ -1784,7 +1785,7 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:986:34: {...}?
+                    // JS.g:995:34: {...}?
                     {
                     if ( !( input.LA(1) == COMMA ) ) {
                         throw new FailedPredicateException(input, "arrayItem", " input.LA(1) == COMMA ");
@@ -1807,14 +1808,14 @@
             RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"token expr",expr!=null?expr.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 987:2: -> ^( ITEM ( $expr)? )
+            // 996:2: -> ^( ITEM ( $expr)? )
             {
-                // JS.g:987:5: ^( ITEM ( $expr)? )
+                // JS.g:996:5: ^( ITEM ( $expr)? )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(ITEM, "ITEM"), root_1);
 
-                // JS.g:987:13: ( $expr)?
+                // JS.g:996:13: ( $expr)?
                 if ( stream_expr.hasNext() ) {
                     adaptor.addChild(root_1, stream_expr.next());
 
@@ -1852,7 +1853,7 @@
     };
 
     // $ANTLR start objectLiteral
-    // JS.g:990:1: objectLiteral : lb= LBRACE ( objectPropertyInitializer ( COMMA objectPropertyInitializer )* )? RBRACE -> ^( OBJECT[$lb, \"OBJECT\"] ( objectPropertyInitializer )* ) ;
+    // JS.g:999: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);
@@ -1875,30 +1876,30 @@
         RewriteRuleTokenStream stream_LBRACE=new RewriteRuleTokenStream(adaptor,"token LBRACE");
         RewriteRuleSubtreeStream stream_objectPropertyInitializer=new RewriteRuleSubtreeStream(adaptor,"rule objectPropertyInitializer");
         try {
-            // JS.g:991:2: (lb= LBRACE ( objectPropertyInitializer ( COMMA objectPropertyInitializer )* )? RBRACE -> ^( OBJECT[$lb, \"OBJECT\"] ( objectPropertyInitializer )* ) )
-            // JS.g:991:4: lb= LBRACE ( objectPropertyInitializer ( COMMA objectPropertyInitializer )* )? RBRACE
+            // JS.g:1000:2: (lb= LBRACE ( objectPropertyInitializer ( COMMA objectPropertyInitializer )* )? RBRACE -> ^( OBJECT[$lb, \"OBJECT\"] ( objectPropertyInitializer )* ) )
+            // JS.g:1000:4: lb= LBRACE ( objectPropertyInitializer ( COMMA objectPropertyInitializer )* )? RBRACE
             {
             lb=(Token)input.LT(1);
-            match(input,LBRACE,FOLLOW_LBRACE_in_objectLiteral3595); 
+            match(input,LBRACE,FOLLOW_LBRACE_in_objectLiteral3621); 
             stream_LBRACE.add(lb);
 
-            // JS.g:991:14: ( objectPropertyInitializer ( COMMA objectPropertyInitializer )* )?
+            // JS.g:1000:14: ( objectPropertyInitializer ( COMMA objectPropertyInitializer )* )?
             int alt9=2;
             int LA9_0 = input.LA(1);
 
-            if ( (LA9_0==EACH||(LA9_0>=GET && LA9_0<=SET)||LA9_0==WXML||(LA9_0>=StringLiteral && LA9_0<=XmlAttribute)||LA9_0==Identifier||(LA9_0>=DecimalLiteral && LA9_0<=HexIntegerLiteral)) ) {
+            if ( (LA9_0==EACH||(LA9_0>=GET && LA9_0<=SET)||(LA9_0>=WXML && LA9_0<=NAMESPACE)||(LA9_0>=StringLiteral && LA9_0<=XmlAttribute)||LA9_0==Identifier||(LA9_0>=DecimalLiteral && LA9_0<=HexIntegerLiteral)) ) {
                 alt9=1;
             }
             switch (alt9) {
                 case 1 :
-                    // JS.g:991:16: objectPropertyInitializer ( COMMA objectPropertyInitializer )*
+                    // JS.g:1000:16: objectPropertyInitializer ( COMMA objectPropertyInitializer )*
                     {
-                    pushFollow(FOLLOW_objectPropertyInitializer_in_objectLiteral3599);
+                    pushFollow(FOLLOW_objectPropertyInitializer_in_objectLiteral3625);
                     objectPropertyInitializer35=objectPropertyInitializer();
                     _fsp--;
 
                     stream_objectPropertyInitializer.add(objectPropertyInitializer35.getTree());
-                    // JS.g:991:42: ( COMMA objectPropertyInitializer )*
+                    // JS.g:1000:42: ( COMMA objectPropertyInitializer )*
                     loop8:
                     do {
                         int alt8=2;
@@ -1911,13 +1912,13 @@
 
                         switch (alt8) {
                     	case 1 :
-                    	    // JS.g:991:44: COMMA objectPropertyInitializer
+                    	    // JS.g:1000:44: COMMA objectPropertyInitializer
                     	    {
                     	    COMMA36=(Token)input.LT(1);
-                    	    match(input,COMMA,FOLLOW_COMMA_in_objectLiteral3603); 
+                    	    match(input,COMMA,FOLLOW_COMMA_in_objectLiteral3629); 
                     	    stream_COMMA.add(COMMA36);
 
-                    	    pushFollow(FOLLOW_objectPropertyInitializer_in_objectLiteral3605);
+                    	    pushFollow(FOLLOW_objectPropertyInitializer_in_objectLiteral3631);
                     	    objectPropertyInitializer37=objectPropertyInitializer();
                     	    _fsp--;
 
@@ -1938,7 +1939,7 @@
             }
 
             RBRACE38=(Token)input.LT(1);
-            match(input,RBRACE,FOLLOW_RBRACE_in_objectLiteral3613); 
+            match(input,RBRACE,FOLLOW_RBRACE_in_objectLiteral3639); 
             stream_RBRACE.add(RBRACE38);
 
 
@@ -1952,14 +1953,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 992:2: -> ^( OBJECT[$lb, \"OBJECT\"] ( objectPropertyInitializer )* )
+            // 1001:2: -> ^( OBJECT[$lb, \"OBJECT\"] ( objectPropertyInitializer )* )
             {
-                // JS.g:992:5: ^( OBJECT[$lb, \"OBJECT\"] ( objectPropertyInitializer )* )
+                // JS.g:1001: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:992:30: ( objectPropertyInitializer )*
+                // JS.g:1001:30: ( objectPropertyInitializer )*
                 while ( stream_objectPropertyInitializer.hasNext() ) {
                     adaptor.addChild(root_1, stream_objectPropertyInitializer.next());
 
@@ -1997,7 +1998,7 @@
     };
 
     // $ANTLR start objectPropertyInitializer
-    // JS.g:995:1: objectPropertyInitializer : ( nameValuePair | getMethodDeclaration | setMethodDeclaration );
+    // JS.g:1004:1: objectPropertyInitializer : ( nameValuePair | getMethodDeclaration | setMethodDeclaration );
     public final objectPropertyInitializer_return objectPropertyInitializer() throws RecognitionException {
         objectPropertyInitializer_return retval = new objectPropertyInitializer_return();
         retval.start = input.LT(1);
@@ -2013,7 +2014,7 @@
 
 
         try {
-            // JS.g:996:3: ( nameValuePair | getMethodDeclaration | setMethodDeclaration )
+            // JS.g:1005:3: ( nameValuePair | getMethodDeclaration | setMethodDeclaration )
             int alt10=3;
             switch ( input.LA(1) ) {
             case GET:
@@ -2023,12 +2024,12 @@
                 if ( (LA10_1==COLON) ) {
                     alt10=1;
                 }
-                else if ( (LA10_1==EACH||(LA10_1>=GET && LA10_1<=SET)||LA10_1==WXML||LA10_1==Identifier) ) {
+                else if ( (LA10_1==EACH||(LA10_1>=GET && LA10_1<=SET)||(LA10_1>=WXML && LA10_1<=NAMESPACE)||LA10_1==Identifier) ) {
                     alt10=2;
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("995:1: objectPropertyInitializer : ( nameValuePair | getMethodDeclaration | setMethodDeclaration );", 10, 1, input);
+                        new NoViableAltException("1004:1: objectPropertyInitializer : ( nameValuePair | getMethodDeclaration | setMethodDeclaration );", 10, 1, input);
 
                     throw nvae;
                 }
@@ -2036,6 +2037,7 @@
                 break;
             case EACH:
             case WXML:
+            case NAMESPACE:
             case StringLiteral:
             case XmlAttribute:
             case Identifier:
@@ -2053,12 +2055,12 @@
                 if ( (LA10_3==COLON) ) {
                     alt10=1;
                 }
-                else if ( (LA10_3==EACH||(LA10_3>=GET && LA10_3<=SET)||LA10_3==WXML||LA10_3==Identifier) ) {
+                else if ( (LA10_3==EACH||(LA10_3>=GET && LA10_3<=SET)||(LA10_3>=WXML && LA10_3<=NAMESPACE)||LA10_3==Identifier) ) {
                     alt10=3;
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("995:1: objectPropertyInitializer : ( nameValuePair | getMethodDeclaration | setMethodDeclaration );", 10, 3, input);
+                        new NoViableAltException("1004:1: objectPropertyInitializer : ( nameValuePair | getMethodDeclaration | setMethodDeclaration );", 10, 3, input);
 
                     throw nvae;
                 }
@@ -2066,18 +2068,18 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("995:1: objectPropertyInitializer : ( nameValuePair | getMethodDeclaration | setMethodDeclaration );", 10, 0, input);
+                    new NoViableAltException("1004:1: objectPropertyInitializer : ( nameValuePair | getMethodDeclaration | setMethodDeclaration );", 10, 0, input);
 
                 throw nvae;
             }
 
             switch (alt10) {
                 case 1 :
-                    // JS.g:996:5: nameValuePair
+                    // JS.g:1005:5: nameValuePair
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_nameValuePair_in_objectPropertyInitializer3638);
+                    pushFollow(FOLLOW_nameValuePair_in_objectPropertyInitializer3664);
                     nameValuePair39=nameValuePair();
                     _fsp--;
 
@@ -2086,11 +2088,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:997:5: getMethodDeclaration
+                    // JS.g:1006:5: getMethodDeclaration
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_getMethodDeclaration_in_objectPropertyInitializer3645);
+                    pushFollow(FOLLOW_getMethodDeclaration_in_objectPropertyInitializer3671);
                     getMethodDeclaration40=getMethodDeclaration();
                     _fsp--;
 
@@ -2099,11 +2101,11 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:998:5: setMethodDeclaration
+                    // JS.g:1007:5: setMethodDeclaration
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_setMethodDeclaration_in_objectPropertyInitializer3651);
+                    pushFollow(FOLLOW_setMethodDeclaration_in_objectPropertyInitializer3677);
                     setMethodDeclaration41=setMethodDeclaration();
                     _fsp--;
 
@@ -2135,7 +2137,7 @@
     };
 
     // $ANTLR start nameValuePair
-    // JS.g:1001:1: nameValuePair : propertyName COLON assignmentExpression -> ^( NAMEDVALUE propertyName assignmentExpression ) ;
+    // JS.g:1010: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);
@@ -2153,19 +2155,19 @@
         RewriteRuleSubtreeStream stream_propertyName=new RewriteRuleSubtreeStream(adaptor,"rule propertyName");
         RewriteRuleSubtreeStream stream_assignmentExpression=new RewriteRuleSubtreeStream(adaptor,"rule assignmentExpression");
         try {
-            // JS.g:1002:2: ( propertyName COLON assignmentExpression -> ^( NAMEDVALUE propertyName assignmentExpression ) )
-            // JS.g:1002:4: propertyName COLON assignmentExpression
+            // JS.g:1011:2: ( propertyName COLON assignmentExpression -> ^( NAMEDVALUE propertyName assignmentExpression ) )
+            // JS.g:1011:4: propertyName COLON assignmentExpression
             {
-            pushFollow(FOLLOW_propertyName_in_nameValuePair3664);
+            pushFollow(FOLLOW_propertyName_in_nameValuePair3690);
             propertyName42=propertyName();
             _fsp--;
 
             stream_propertyName.add(propertyName42.getTree());
             COLON43=(Token)input.LT(1);
-            match(input,COLON,FOLLOW_COLON_in_nameValuePair3666); 
+            match(input,COLON,FOLLOW_COLON_in_nameValuePair3692); 
             stream_COLON.add(COLON43);
 
-            pushFollow(FOLLOW_assignmentExpression_in_nameValuePair3668);
+            pushFollow(FOLLOW_assignmentExpression_in_nameValuePair3694);
             assignmentExpression44=assignmentExpression();
             _fsp--;
 
@@ -2181,9 +2183,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1003:2: -> ^( NAMEDVALUE propertyName assignmentExpression )
+            // 1012:2: -> ^( NAMEDVALUE propertyName assignmentExpression )
             {
-                // JS.g:1003:5: ^( NAMEDVALUE propertyName assignmentExpression )
+                // JS.g:1012:5: ^( NAMEDVALUE propertyName assignmentExpression )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(NAMEDVALUE, "NAMEDVALUE"), root_1);
@@ -2222,7 +2224,7 @@
     };
 
     // $ANTLR start propertyName
-    // JS.g:1006:1: propertyName : ( identifier | StringLiteral | numericLiteral | XmlAttribute );
+    // JS.g:1015:1: propertyName : ( identifier | StringLiteral | numericLiteral | XmlAttribute );
     public final propertyName_return propertyName() throws RecognitionException {
         propertyName_return retval = new propertyName_return();
         retval.start = input.LT(1);
@@ -2240,13 +2242,14 @@
         Object XmlAttribute48_tree=null;
 
         try {
-            // JS.g:1007:2: ( identifier | StringLiteral | numericLiteral | XmlAttribute )
+            // JS.g:1016:2: ( identifier | StringLiteral | numericLiteral | XmlAttribute )
             int alt11=4;
             switch ( input.LA(1) ) {
             case EACH:
             case GET:
             case SET:
             case WXML:
+            case NAMESPACE:
             case Identifier:
                 {
                 alt11=1;
@@ -2271,18 +2274,18 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("1006:1: propertyName : ( identifier | StringLiteral | numericLiteral | XmlAttribute );", 11, 0, input);
+                    new NoViableAltException("1015:1: propertyName : ( identifier | StringLiteral | numericLiteral | XmlAttribute );", 11, 0, input);
 
                 throw nvae;
             }
 
             switch (alt11) {
                 case 1 :
-                    // JS.g:1007:4: identifier
+                    // JS.g:1016:4: identifier
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_identifier_in_propertyName3692);
+                    pushFollow(FOLLOW_identifier_in_propertyName3718);
                     identifier45=identifier();
                     _fsp--;
 
@@ -2291,12 +2294,12 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1008:4: StringLiteral
+                    // JS.g:1017:4: StringLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
                     StringLiteral46=(Token)input.LT(1);
-                    match(input,StringLiteral,FOLLOW_StringLiteral_in_propertyName3697); 
+                    match(input,StringLiteral,FOLLOW_StringLiteral_in_propertyName3723); 
                     StringLiteral46_tree = (Object)adaptor.create(StringLiteral46);
                     adaptor.addChild(root_0, StringLiteral46_tree);
 
@@ -2304,11 +2307,11 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:1009:4: numericLiteral
+                    // JS.g:1018:4: numericLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_numericLiteral_in_propertyName3702);
+                    pushFollow(FOLLOW_numericLiteral_in_propertyName3728);
                     numericLiteral47=numericLiteral();
                     _fsp--;
 
@@ -2317,12 +2320,12 @@
                     }
                     break;
                 case 4 :
-                    // JS.g:1010:4: XmlAttribute
+                    // JS.g:1019:4: XmlAttribute
                     {
                     root_0 = (Object)adaptor.nil();
 
                     XmlAttribute48=(Token)input.LT(1);
-                    match(input,XmlAttribute,FOLLOW_XmlAttribute_in_propertyName3707); 
+                    match(input,XmlAttribute,FOLLOW_XmlAttribute_in_propertyName3733); 
                     XmlAttribute48_tree = (Object)adaptor.create(XmlAttribute48);
                     adaptor.addChild(root_0, XmlAttribute48_tree);
 
@@ -2353,7 +2356,7 @@
     };
 
     // $ANTLR start memberExpression
-    // JS.g:1022:1: memberExpression : ( primaryExpression | functionExpression | newExpression );
+    // JS.g:1031:1: memberExpression : ( primaryExpression | functionExpression | newExpression );
     public final memberExpression_return memberExpression() throws RecognitionException {
         memberExpression_return retval = new memberExpression_return();
         retval.start = input.LT(1);
@@ -2369,7 +2372,7 @@
 
 
         try {
-            // JS.g:1023:2: ( primaryExpression | functionExpression | newExpression )
+            // JS.g:1032:2: ( primaryExpression | functionExpression | newExpression )
             int alt12=3;
             switch ( input.LA(1) ) {
             case NULL:
@@ -2380,6 +2383,7 @@
             case GET:
             case SET:
             case WXML:
+            case NAMESPACE:
             case LBRACE:
             case LPAREN:
             case LBRACK:
@@ -2406,18 +2410,18 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("1022:1: memberExpression : ( primaryExpression | functionExpression | newExpression );", 12, 0, input);
+                    new NoViableAltException("1031:1: memberExpression : ( primaryExpression | functionExpression | newExpression );", 12, 0, input);
 
                 throw nvae;
             }
 
             switch (alt12) {
                 case 1 :
-                    // JS.g:1023:4: primaryExpression
+                    // JS.g:1032:4: primaryExpression
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_primaryExpression_in_memberExpression3725);
+                    pushFollow(FOLLOW_primaryExpression_in_memberExpression3751);
                     primaryExpression49=primaryExpression();
                     _fsp--;
 
@@ -2426,11 +2430,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1024:4: functionExpression
+                    // JS.g:1033:4: functionExpression
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_functionExpression_in_memberExpression3730);
+                    pushFollow(FOLLOW_functionExpression_in_memberExpression3756);
                     functionExpression50=functionExpression();
                     _fsp--;
 
@@ -2439,11 +2443,11 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:1025:4: newExpression
+                    // JS.g:1034:4: newExpression
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_newExpression_in_memberExpression3735);
+                    pushFollow(FOLLOW_newExpression_in_memberExpression3761);
                     newExpression51=newExpression();
                     _fsp--;
 
@@ -2475,7 +2479,7 @@
     };
 
     // $ANTLR start newExpression
-    // JS.g:1028:1: newExpression : NEW memberExpression ;
+    // JS.g:1037:1: newExpression : NEW memberExpression ;
     public final newExpression_return newExpression() throws RecognitionException {
         newExpression_return retval = new newExpression_return();
         retval.start = input.LT(1);
@@ -2489,17 +2493,17 @@
         Object NEW52_tree=null;
 
         try {
-            // JS.g:1029:2: ( NEW memberExpression )
-            // JS.g:1029:4: NEW memberExpression
+            // JS.g:1038:2: ( NEW memberExpression )
+            // JS.g:1038:4: NEW memberExpression
             {
             root_0 = (Object)adaptor.nil();
 
             NEW52=(Token)input.LT(1);
-            match(input,NEW,FOLLOW_NEW_in_newExpression3746); 
+            match(input,NEW,FOLLOW_NEW_in_newExpression3772); 
             NEW52_tree = (Object)adaptor.create(NEW52);
             root_0 = (Object)adaptor.becomeRoot(NEW52_tree, root_0);
 
-            pushFollow(FOLLOW_memberExpression_in_newExpression3749);
+            pushFollow(FOLLOW_memberExpression_in_newExpression3775);
             memberExpression53=memberExpression();
             _fsp--;
 
@@ -2529,7 +2533,7 @@
     };
 
     // $ANTLR start arguments
-    // JS.g:1033:1: arguments : LPAREN ( assignmentExpression ( COMMA assignmentExpression )* )? RPAREN -> ^( ARGS ( assignmentExpression )* ) ;
+    // JS.g:1042: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);
@@ -2552,30 +2556,30 @@
         RewriteRuleTokenStream stream_LPAREN=new RewriteRuleTokenStream(adaptor,"token LPAREN");
         RewriteRuleSubtreeStream stream_assignmentExpression=new RewriteRuleSubtreeStream(adaptor,"rule assignmentExpression");
         try {
-            // JS.g:1034:2: ( LPAREN ( assignmentExpression ( COMMA assignmentExpression )* )? RPAREN -> ^( ARGS ( assignmentExpression )* ) )
-            // JS.g:1034:4: LPAREN ( assignmentExpression ( COMMA assignmentExpression )* )? RPAREN
+            // JS.g:1043:2: ( LPAREN ( assignmentExpression ( COMMA assignmentExpression )* )? RPAREN -> ^( ARGS ( assignmentExpression )* ) )
+            // JS.g:1043:4: LPAREN ( assignmentExpression ( COMMA assignmentExpression )* )? RPAREN
             {
             LPAREN54=(Token)input.LT(1);
-            match(input,LPAREN,FOLLOW_LPAREN_in_arguments3762); 
+            match(input,LPAREN,FOLLOW_LPAREN_in_arguments3788); 
             stream_LPAREN.add(LPAREN54);
 
-            // JS.g:1034:11: ( assignmentExpression ( COMMA assignmentExpression )* )?
+            // JS.g:1043:11: ( assignmentExpression ( COMMA assignmentExpression )* )?
             int alt14=2;
             int LA14_0 = input.LA(1);
 
-            if ( ((LA14_0>=NULL && LA14_0<=FALSE)||LA14_0==DELETE||(LA14_0>=EACH && LA14_0<=FUNCTION)||LA14_0==NEW||LA14_0==THIS||LA14_0==TYPEOF||LA14_0==VOID||(LA14_0>=GET && LA14_0<=YIELD)||LA14_0==WXML||LA14_0==LBRACE||LA14_0==LPAREN||LA14_0==LBRACK||(LA14_0>=ADD && LA14_0<=SUB)||(LA14_0>=INC && LA14_0<=DEC)||(LA14_0>=NOT && LA14_0<=INV)||(LA14_0>=StringLiteral && LA14_0<=XmlAttribute)||LA14_0==Identifier||LA14_0==RegularExpressionLiteral||(LA14_0>=DecimalLiteral && LA14_0<=HexIntegerLiteral)||LA14_0==XMLLiteral) ) {
+            if ( ((LA14_0>=NULL && LA14_0<=FALSE)||LA14_0==DELETE||(LA14_0>=EACH && LA14_0<=FUNCTION)||LA14_0==NEW||LA14_0==THIS||LA14_0==TYPEOF||LA14_0==VOID||(LA14_0>=GET && LA14_0<=YIELD)||(LA14_0>=WXML && LA14_0<=NAMESPACE)||LA14_0==LBRACE||LA14_0==LPAREN||LA14_0==LBRACK||(LA14_0>=ADD && LA14_0<=SUB)||(LA14_0>=INC && LA14_0<=DEC)||(LA14_0>=NOT && LA14_0<=INV)||(LA14_0>=StringLiteral && LA14_0<=XmlAttribute)||LA14_0==Identifier||LA14_0==RegularExpressionLiteral||(LA14_0>=DecimalLiteral && LA14_0<=HexIntegerLiteral)||LA14_0==XMLLiteral) ) {
                 alt14=1;
             }
             switch (alt14) {
                 case 1 :
-                    // JS.g:1034:13: assignmentExpression ( COMMA assignmentExpression )*
+                    // JS.g:1043:13: assignmentExpression ( COMMA assignmentExpression )*
                     {
-                    pushFollow(FOLLOW_assignmentExpression_in_arguments3766);
+                    pushFollow(FOLLOW_assignmentExpression_in_arguments3792);
                     assignmentExpression55=assignmentExpression();
                     _fsp--;
 
                     stream_assignmentExpression.add(assignmentExpression55.getTree());
-                    // JS.g:1034:34: ( COMMA assignmentExpression )*
+                    // JS.g:1043:34: ( COMMA assignmentExpression )*
                     loop13:
                     do {
                         int alt13=2;
@@ -2588,13 +2592,13 @@
 
                         switch (alt13) {
                     	case 1 :
-                    	    // JS.g:1034:36: COMMA assignmentExpression
+                    	    // JS.g:1043:36: COMMA assignmentExpression
                     	    {
                     	    COMMA56=(Token)input.LT(1);
-                    	    match(input,COMMA,FOLLOW_COMMA_in_arguments3770); 
+                    	    match(input,COMMA,FOLLOW_COMMA_in_arguments3796); 
                     	    stream_COMMA.add(COMMA56);
 
-                    	    pushFollow(FOLLOW_assignmentExpression_in_arguments3772);
+                    	    pushFollow(FOLLOW_assignmentExpression_in_arguments3798);
                     	    assignmentExpression57=assignmentExpression();
                     	    _fsp--;
 
@@ -2615,7 +2619,7 @@
             }
 
             RPAREN58=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_arguments3780); 
+            match(input,RPAREN,FOLLOW_RPAREN_in_arguments3806); 
             stream_RPAREN.add(RPAREN58);
 
 
@@ -2629,14 +2633,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1035:2: -> ^( ARGS ( assignmentExpression )* )
+            // 1044:2: -> ^( ARGS ( assignmentExpression )* )
             {
-                // JS.g:1035:5: ^( ARGS ( assignmentExpression )* )
+                // JS.g:1044:5: ^( ARGS ( assignmentExpression )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(ARGS, "ARGS"), root_1);
 
-                // JS.g:1035:13: ( assignmentExpression )*
+                // JS.g:1044:13: ( assignmentExpression )*
                 while ( stream_assignmentExpression.hasNext() ) {
                     adaptor.addChild(root_1, stream_assignmentExpression.next());
 
@@ -2674,7 +2678,7 @@
     };
 
     // $ANTLR start leftHandSideExpression
-    // JS.g:1038: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: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 ) )* ;
     public final leftHandSideExpression_return leftHandSideExpression() throws RecognitionException {
         leftHandSideExpression_return retval = new leftHandSideExpression_return();
         retval.start = input.LT(1);
@@ -2714,13 +2718,13 @@
         RewriteRuleSubtreeStream stream_arguments=new RewriteRuleSubtreeStream(adaptor,"rule arguments");
         RewriteRuleSubtreeStream stream_rightHandSideExpression=new RewriteRuleSubtreeStream(adaptor,"rule rightHandSideExpression");
         try {
-            // JS.g:1039: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:1040: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: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:1040:3: ( memberExpression -> memberExpression )
-            // JS.g:1041:5: memberExpression
+            // JS.g:1049:3: ( memberExpression -> memberExpression )
+            // JS.g:1050:5: memberExpression
             {
-            pushFollow(FOLLOW_memberExpression_in_leftHandSideExpression3813);
+            pushFollow(FOLLOW_memberExpression_in_leftHandSideExpression3839);
             memberExpression59=memberExpression();
             _fsp--;
 
@@ -2736,7 +2740,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1041:25: -> memberExpression
+            // 1050:25: -> memberExpression
             {
                 adaptor.addChild(root_0, stream_memberExpression.next());
 
@@ -2746,7 +2750,7 @@
 
             }
 
-            // JS.g:1043: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: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 ) )*
             loop15:
             do {
                 int alt15=6;
@@ -2781,9 +2785,9 @@
 
                 switch (alt15) {
             	case 1 :
-            	    // JS.g:1044:5: arguments
+            	    // JS.g:1053:5: arguments
             	    {
-            	    pushFollow(FOLLOW_arguments_in_leftHandSideExpression3834);
+            	    pushFollow(FOLLOW_arguments_in_leftHandSideExpression3860);
             	    arguments60=arguments();
             	    _fsp--;
 
@@ -2799,9 +2803,9 @@
             	    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             	    root_0 = (Object)adaptor.nil();
-            	    // 1044:19: -> ^( CALL $leftHandSideExpression arguments )
+            	    // 1053:19: -> ^( CALL $leftHandSideExpression arguments )
             	    {
-            	        // JS.g:1044:22: ^( CALL $leftHandSideExpression arguments )
+            	        // JS.g:1053:22: ^( CALL $leftHandSideExpression arguments )
             	        {
             	        Object root_1 = (Object)adaptor.nil();
             	        root_1 = (Object)adaptor.becomeRoot(adaptor.create(CALL, "CALL"), root_1);
@@ -2819,19 +2823,19 @@
             	    }
             	    break;
             	case 2 :
-            	    // JS.g:1045:7: LBRACK expression RBRACK
+            	    // JS.g:1054:7: LBRACK expression RBRACK
             	    {
             	    LBRACK61=(Token)input.LT(1);
-            	    match(input,LBRACK,FOLLOW_LBRACK_in_leftHandSideExpression3859); 
+            	    match(input,LBRACK,FOLLOW_LBRACK_in_leftHandSideExpression3885); 
             	    stream_LBRACK.add(LBRACK61);
 
-            	    pushFollow(FOLLOW_expression_in_leftHandSideExpression3861);
+            	    pushFollow(FOLLOW_expression_in_leftHandSideExpression3887);
             	    expression62=expression();
             	    _fsp--;
 
             	    stream_expression.add(expression62.getTree());
             	    RBRACK63=(Token)input.LT(1);
-            	    match(input,RBRACK,FOLLOW_RBRACK_in_leftHandSideExpression3863); 
+            	    match(input,RBRACK,FOLLOW_RBRACK_in_leftHandSideExpression3889); 
             	    stream_RBRACK.add(RBRACK63);
 
 
@@ -2845,9 +2849,9 @@
             	    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             	    root_0 = (Object)adaptor.nil();
-            	    // 1045:33: -> ^( BYINDEX $leftHandSideExpression expression )
+            	    // 1054:33: -> ^( BYINDEX $leftHandSideExpression expression )
             	    {
-            	        // JS.g:1045:36: ^( BYINDEX $leftHandSideExpression expression )
+            	        // JS.g:1054:36: ^( BYINDEX $leftHandSideExpression expression )
             	        {
             	        Object root_1 = (Object)adaptor.nil();
             	        root_1 = (Object)adaptor.becomeRoot(adaptor.create(BYINDEX, "BYINDEX"), root_1);
@@ -2865,13 +2869,13 @@
             	    }
             	    break;
             	case 3 :
-            	    // JS.g:1046:7: DOT rightHandSideExpression
+            	    // JS.g:1055:7: DOT rightHandSideExpression
             	    {
             	    DOT64=(Token)input.LT(1);
-            	    match(input,DOT,FOLLOW_DOT_in_leftHandSideExpression3885); 
+            	    match(input,DOT,FOLLOW_DOT_in_leftHandSideExpression3911); 
             	    stream_DOT.add(DOT64);
 
-            	    pushFollow(FOLLOW_rightHandSideExpression_in_leftHandSideExpression3887);
+            	    pushFollow(FOLLOW_rightHandSideExpression_in_leftHandSideExpression3913);
             	    rightHandSideExpression65=rightHandSideExpression();
             	    _fsp--;
 
@@ -2887,9 +2891,9 @@
             	    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             	    root_0 = (Object)adaptor.nil();
-            	    // 1046:35: -> ^( BYFIELD $leftHandSideExpression rightHandSideExpression )
+            	    // 1055:35: -> ^( BYFIELD $leftHandSideExpression rightHandSideExpression )
             	    {
-            	        // JS.g:1046:38: ^( BYFIELD $leftHandSideExpression rightHandSideExpression )
+            	        // JS.g:1055:38: ^( BYFIELD $leftHandSideExpression rightHandSideExpression )
             	        {
             	        Object root_1 = (Object)adaptor.nil();
             	        root_1 = (Object)adaptor.becomeRoot(adaptor.create(BYFIELD, "BYFIELD"), root_1);
@@ -2907,20 +2911,20 @@
             	    }
             	    break;
             	case 4 :
-            	    // JS.g:1047:7: DOTDOT expression
+            	    // JS.g:1056:7: DOTDOT expression
             	    {
             	    DOTDOT66=(Token)input.LT(1);
-            	    match(input,DOTDOT,FOLLOW_DOTDOT_in_leftHandSideExpression3908); 
+            	    match(input,DOTDOT,FOLLOW_DOTDOT_in_leftHandSideExpression3934); 
             	    stream_DOTDOT.add(DOTDOT66);
 
-            	    pushFollow(FOLLOW_expression_in_leftHandSideExpression3910);
+            	    pushFollow(FOLLOW_expression_in_leftHandSideExpression3936);
             	    expression67=expression();
             	    _fsp--;
 
             	    stream_expression.add(expression67.getTree());
 
             	    // AST REWRITE
-            	    // elements: expression, leftHandSideExpression
+            	    // elements: leftHandSideExpression, expression
             	    // token labels: 
             	    // rule labels: retval
             	    // token list labels: 
@@ -2929,9 +2933,9 @@
             	    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             	    root_0 = (Object)adaptor.nil();
-            	    // 1047:25: -> ^( ALLCHILDREN $leftHandSideExpression expression )
+            	    // 1056:25: -> ^( ALLCHILDREN $leftHandSideExpression expression )
             	    {
-            	        // JS.g:1047:28: ^( ALLCHILDREN $leftHandSideExpression expression )
+            	        // JS.g:1056:28: ^( ALLCHILDREN $leftHandSideExpression expression )
             	        {
             	        Object root_1 = (Object)adaptor.nil();
             	        root_1 = (Object)adaptor.becomeRoot(adaptor.create(ALLCHILDREN, "ALLCHILDREN"), root_1);
@@ -2949,20 +2953,20 @@
             	    }
             	    break;
             	case 5 :
-            	    // JS.g:1048:7: COLONCOLON expression
+            	    // JS.g:1057:7: COLONCOLON expression
             	    {
             	    COLONCOLON68=(Token)input.LT(1);
-            	    match(input,COLONCOLON,FOLLOW_COLONCOLON_in_leftHandSideExpression3929); 
+            	    match(input,COLONCOLON,FOLLOW_COLONCOLON_in_leftHandSideExpression3955); 
             	    stream_COLONCOLON.add(COLONCOLON68);
 
-            	    pushFollow(FOLLOW_expression_in_leftHandSideExpression3931);
+            	    pushFollow(FOLLOW_expression_in_leftHandSideExpression3957);
             	    expression69=expression();
             	    _fsp--;
 
             	    stream_expression.add(expression69.getTree());
 
             	    // AST REWRITE
-            	    // elements: expression, leftHandSideExpression
+            	    // elements: leftHandSideExpression, expression
             	    // token labels: 
             	    // rule labels: retval
             	    // token list labels: 
@@ -2971,9 +2975,9 @@
             	    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             	    root_0 = (Object)adaptor.nil();
-            	    // 1048:29: -> ^( LOCALNAME $leftHandSideExpression expression )
+            	    // 1057:29: -> ^( LOCALNAME $leftHandSideExpression expression )
             	    {
-            	        // JS.g:1048:32: ^( LOCALNAME $leftHandSideExpression expression )
+            	        // JS.g:1057:32: ^( LOCALNAME $leftHandSideExpression expression )
             	        {
             	        Object root_1 = (Object)adaptor.nil();
             	        root_1 = (Object)adaptor.becomeRoot(adaptor.create(LOCALNAME, "LOCALNAME"), root_1);
@@ -3021,7 +3025,7 @@
     };
 
     // $ANTLR start rightHandSideExpression
-    // JS.g:1052:1: rightHandSideExpression : ( parenExpression | identifier | XmlAttribute | MUL );
+    // JS.g:1061:1: rightHandSideExpression : ( parenExpression | identifier | XmlAttribute | MUL );
     public final rightHandSideExpression_return rightHandSideExpression() throws RecognitionException {
         rightHandSideExpression_return retval = new rightHandSideExpression_return();
         retval.start = input.LT(1);
@@ -3039,7 +3043,7 @@
         Object MUL73_tree=null;
 
         try {
-            // JS.g:1053:3: ( parenExpression | identifier | XmlAttribute | MUL )
+            // JS.g:1062:3: ( parenExpression | identifier | XmlAttribute | MUL )
             int alt16=4;
             switch ( input.LA(1) ) {
             case LPAREN:
@@ -3051,6 +3055,7 @@
             case GET:
             case SET:
             case WXML:
+            case NAMESPACE:
             case Identifier:
                 {
                 alt16=2;
@@ -3068,18 +3073,18 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("1052:1: rightHandSideExpression : ( parenExpression | identifier | XmlAttribute | MUL );", 16, 0, input);
+                    new NoViableAltException("1061:1: rightHandSideExpression : ( parenExpression | identifier | XmlAttribute | MUL );", 16, 0, input);
 
                 throw nvae;
             }
 
             switch (alt16) {
                 case 1 :
-                    // JS.g:1053:5: parenExpression
+                    // JS.g:1062:5: parenExpression
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_parenExpression_in_rightHandSideExpression3960);
+                    pushFollow(FOLLOW_parenExpression_in_rightHandSideExpression3986);
                     parenExpression70=parenExpression();
                     _fsp--;
 
@@ -3088,11 +3093,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1054:5: identifier
+                    // JS.g:1063:5: identifier
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_identifier_in_rightHandSideExpression3967);
+                    pushFollow(FOLLOW_identifier_in_rightHandSideExpression3993);
                     identifier71=identifier();
                     _fsp--;
 
@@ -3101,12 +3106,12 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:1055:5: XmlAttribute
+                    // JS.g:1064:5: XmlAttribute
                     {
                     root_0 = (Object)adaptor.nil();
 
                     XmlAttribute72=(Token)input.LT(1);
-                    match(input,XmlAttribute,FOLLOW_XmlAttribute_in_rightHandSideExpression3973); 
+                    match(input,XmlAttribute,FOLLOW_XmlAttribute_in_rightHandSideExpression3999); 
                     XmlAttribute72_tree = (Object)adaptor.create(XmlAttribute72);
                     adaptor.addChild(root_0, XmlAttribute72_tree);
 
@@ -3114,12 +3119,12 @@
                     }
                     break;
                 case 4 :
-                    // JS.g:1056:5: MUL
+                    // JS.g:1065:5: MUL
                     {
                     root_0 = (Object)adaptor.nil();
 
                     MUL73=(Token)input.LT(1);
-                    match(input,MUL,FOLLOW_MUL_in_rightHandSideExpression3979); 
+                    match(input,MUL,FOLLOW_MUL_in_rightHandSideExpression4005); 
                     MUL73_tree = (Object)adaptor.create(MUL73);
                     adaptor.addChild(root_0, MUL73_tree);
 
@@ -3150,7 +3155,7 @@
     };
 
     // $ANTLR start postfixExpression
-    // JS.g:1089:1: postfixExpression : leftHandSideExpression ( postfixOperator )? ;
+    // JS.g:1098:1: postfixExpression : leftHandSideExpression ( postfixOperator )? ;
     public final postfixExpression_return postfixExpression() throws RecognitionException {
         postfixExpression_return retval = new postfixExpression_return();
         retval.start = input.LT(1);
@@ -3164,18 +3169,18 @@
 
 
         try {
-            // JS.g:1090:2: ( leftHandSideExpression ( postfixOperator )? )
-            // JS.g:1090:4: leftHandSideExpression ( postfixOperator )?
+            // JS.g:1099:2: ( leftHandSideExpression ( postfixOperator )? )
+            // JS.g:1099:4: leftHandSideExpression ( postfixOperator )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_leftHandSideExpression_in_postfixExpression4017);
+            pushFollow(FOLLOW_leftHandSideExpression_in_postfixExpression4043);
             leftHandSideExpression74=leftHandSideExpression();
             _fsp--;
 
             adaptor.addChild(root_0, leftHandSideExpression74.getTree());
              if (input.LA(1) == INC || input.LA(1) == DEC) promoteEOL(null); 
-            // JS.g:1090:95: ( postfixOperator )?
+            // JS.g:1099:95: ( postfixOperator )?
             int alt17=2;
             int LA17_0 = input.LA(1);
 
@@ -3187,9 +3192,9 @@
             }
             switch (alt17) {
                 case 1 :
-                    // JS.g:1090:97: postfixOperator
+                    // JS.g:1099:97: postfixOperator
                     {
-                    pushFollow(FOLLOW_postfixOperator_in_postfixExpression4023);
+                    pushFollow(FOLLOW_postfixOperator_in_postfixExpression4049);
                     postfixOperator75=postfixOperator();
                     _fsp--;
 
@@ -3225,7 +3230,7 @@
     };
 
     // $ANTLR start postfixOperator
-    // JS.g:1093:1: postfixOperator : (op= INC | op= DEC );
+    // JS.g:1102:1: postfixOperator : (op= INC | op= DEC );
     public final postfixOperator_return postfixOperator() throws RecognitionException {
         postfixOperator_return retval = new postfixOperator_return();
         retval.start = input.LT(1);
@@ -3237,7 +3242,7 @@
         Object op_tree=null;
 
         try {
-            // JS.g:1094:2: (op= INC | op= DEC )
+            // JS.g:1103:2: (op= INC | op= DEC )
             int alt18=2;
             int LA18_0 = input.LA(1);
 
@@ -3249,18 +3254,18 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("1093:1: postfixOperator : (op= INC | op= DEC );", 18, 0, input);
+                    new NoViableAltException("1102:1: postfixOperator : (op= INC | op= DEC );", 18, 0, input);
 
                 throw nvae;
             }
             switch (alt18) {
                 case 1 :
-                    // JS.g:1094:4: op= INC
+                    // JS.g:1103:4: op= INC
                     {
                     root_0 = (Object)adaptor.nil();
 
                     op=(Token)input.LT(1);
-                    match(input,INC,FOLLOW_INC_in_postfixOperator4041); 
+                    match(input,INC,FOLLOW_INC_in_postfixOperator4067); 
                     op_tree = (Object)adaptor.create(op);
                     adaptor.addChild(root_0, op_tree);
 
@@ -3269,12 +3274,12 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1095:4: op= DEC
+                    // JS.g:1104:4: op= DEC
                     {
                     root_0 = (Object)adaptor.nil();
 
                     op=(Token)input.LT(1);
-                    match(input,DEC,FOLLOW_DEC_in_postfixOperator4050); 
+                    match(input,DEC,FOLLOW_DEC_in_postfixOperator4076); 
                     op_tree = (Object)adaptor.create(op);
                     adaptor.addChild(root_0, op_tree);
 
@@ -3306,7 +3311,7 @@
     };
 
     // $ANTLR start unaryExpression
-    // JS.g:1102:1: unaryExpression : ( postfixExpression | unaryOperator unaryExpression | XMLLiteral );
+    // JS.g:1111:1: unaryExpression : ( postfixExpression | unaryOperator unaryExpression | XMLLiteral );
     public final unaryExpression_return unaryExpression() throws RecognitionException {
         unaryExpression_return retval = new unaryExpression_return();
         retval.start = input.LT(1);
@@ -3324,7 +3329,7 @@
         Object XMLLiteral79_tree=null;
 
         try {
-            // JS.g:1103:2: ( postfixExpression | unaryOperator unaryExpression | XMLLiteral )
+            // JS.g:1112:2: ( postfixExpression | unaryOperator unaryExpression | XMLLiteral )
             int alt19=3;
             switch ( input.LA(1) ) {
             case NULL:
@@ -3337,6 +3342,7 @@
             case GET:
             case SET:
             case WXML:
+            case NAMESPACE:
             case LBRACE:
             case LPAREN:
             case LBRACK:
@@ -3372,18 +3378,18 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("1102:1: unaryExpression : ( postfixExpression | unaryOperator unaryExpression | XMLLiteral );", 19, 0, input);
+                    new NoViableAltException("1111:1: unaryExpression : ( postfixExpression | unaryOperator unaryExpression | XMLLiteral );", 19, 0, input);
 
                 throw nvae;
             }
 
             switch (alt19) {
                 case 1 :
-                    // JS.g:1103:4: postfixExpression
+                    // JS.g:1112:4: postfixExpression
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_postfixExpression_in_unaryExpression4067);
+                    pushFollow(FOLLOW_postfixExpression_in_unaryExpression4093);
                     postfixExpression76=postfixExpression();
                     _fsp--;
 
@@ -3392,16 +3398,16 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1104:4: unaryOperator unaryExpression
+                    // JS.g:1113:4: unaryOperator unaryExpression
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_unaryOperator_in_unaryExpression4072);
+                    pushFollow(FOLLOW_unaryOperator_in_unaryExpression4098);
                     unaryOperator77=unaryOperator();
                     _fsp--;
 
                     root_0 = (Object)adaptor.becomeRoot(unaryOperator77.getTree(), root_0);
-                    pushFollow(FOLLOW_unaryExpression_in_unaryExpression4075);
+                    pushFollow(FOLLOW_unaryExpression_in_unaryExpression4101);
                     unaryExpression78=unaryExpression();
                     _fsp--;
 
@@ -3410,12 +3416,12 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:1105:5: XMLLiteral
+                    // JS.g:1114:5: XMLLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
                     XMLLiteral79=(Token)input.LT(1);
-                    match(input,XMLLiteral,FOLLOW_XMLLiteral_in_unaryExpression4081); 
+                    match(input,XMLLiteral,FOLLOW_XMLLiteral_in_unaryExpression4107); 
                     XMLLiteral79_tree = (Object)adaptor.create(XMLLiteral79);
                     adaptor.addChild(root_0, XMLLiteral79_tree);
 
@@ -3446,7 +3452,7 @@
     };
 
     // $ANTLR start unaryOperator
-    // JS.g:1108:1: unaryOperator : ( DELETE | VOID | TYPEOF | INC | DEC | op= ADD | op= SUB | INV | NOT | YIELD );
+    // JS.g:1117: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);
@@ -3474,7 +3480,7 @@
         Object YIELD87_tree=null;
 
         try {
-            // JS.g:1109:2: ( DELETE | VOID | TYPEOF | INC | DEC | op= ADD | op= SUB | INV | NOT | YIELD )
+            // JS.g:1118:2: ( DELETE | VOID | TYPEOF | INC | DEC | op= ADD | op= SUB | INV | NOT | YIELD )
             int alt20=10;
             switch ( input.LA(1) ) {
             case DELETE:
@@ -3529,19 +3535,19 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("1108:1: unaryOperator : ( DELETE | VOID | TYPEOF | INC | DEC | op= ADD | op= SUB | INV | NOT | YIELD );", 20, 0, input);
+                    new NoViableAltException("1117: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:1109:4: DELETE
+                    // JS.g:1118:4: DELETE
                     {
                     root_0 = (Object)adaptor.nil();
 
                     DELETE80=(Token)input.LT(1);
-                    match(input,DELETE,FOLLOW_DELETE_in_unaryOperator4093); 
+                    match(input,DELETE,FOLLOW_DELETE_in_unaryOperator4119); 
                     DELETE80_tree = (Object)adaptor.create(DELETE80);
                     adaptor.addChild(root_0, DELETE80_tree);
 
@@ -3549,12 +3555,12 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1110:4: VOID
+                    // JS.g:1119:4: VOID
                     {
                     root_0 = (Object)adaptor.nil();
 
                     VOID81=(Token)input.LT(1);
-                    match(input,VOID,FOLLOW_VOID_in_unaryOperator4098); 
+                    match(input,VOID,FOLLOW_VOID_in_unaryOperator4124); 
                     VOID81_tree = (Object)adaptor.create(VOID81);
                     adaptor.addChild(root_0, VOID81_tree);
 
@@ -3562,12 +3568,12 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:1111:4: TYPEOF
+                    // JS.g:1120:4: TYPEOF
                     {
                     root_0 = (Object)adaptor.nil();
 
                     TYPEOF82=(Token)input.LT(1);
-                    match(input,TYPEOF,FOLLOW_TYPEOF_in_unaryOperator4103); 
+                    match(input,TYPEOF,FOLLOW_TYPEOF_in_unaryOperator4129); 
                     TYPEOF82_tree = (Object)adaptor.create(TYPEOF82);
                     adaptor.addChild(root_0, TYPEOF82_tree);
 
@@ -3575,12 +3581,12 @@
                     }
                     break;
                 case 4 :
-                    // JS.g:1112:4: INC
+                    // JS.g:1121:4: INC
                     {
                     root_0 = (Object)adaptor.nil();
 
                     INC83=(Token)input.LT(1);
-                    match(input,INC,FOLLOW_INC_in_unaryOperator4108); 
+                    match(input,INC,FOLLOW_INC_in_unaryOperator4134); 
                     INC83_tree = (Object)adaptor.create(INC83);
                     adaptor.addChild(root_0, INC83_tree);
 
@@ -3588,12 +3594,12 @@
                     }
                     break;
                 case 5 :
-                    // JS.g:1113:4: DEC
+                    // JS.g:1122:4: DEC
                     {
                     root_0 = (Object)adaptor.nil();
 
                     DEC84=(Token)input.LT(1);
-                    match(input,DEC,FOLLOW_DEC_in_unaryOperator4113); 
+                    match(input,DEC,FOLLOW_DEC_in_unaryOperator4139); 
                     DEC84_tree = (Object)adaptor.create(DEC84);
                     adaptor.addChild(root_0, DEC84_tree);
 
@@ -3601,12 +3607,12 @@
                     }
                     break;
                 case 6 :
-                    // JS.g:1114:4: op= ADD
+                    // JS.g:1123:4: op= ADD
                     {
                     root_0 = (Object)adaptor.nil();
 
                     op=(Token)input.LT(1);
-                    match(input,ADD,FOLLOW_ADD_in_unaryOperator4120); 
+                    match(input,ADD,FOLLOW_ADD_in_unaryOperator4146); 
                     op_tree = (Object)adaptor.create(op);
                     adaptor.addChild(root_0, op_tree);
 
@@ -3615,12 +3621,12 @@
                     }
                     break;
                 case 7 :
-                    // JS.g:1115:4: op= SUB
+                    // JS.g:1124:4: op= SUB
                     {
                     root_0 = (Object)adaptor.nil();
 
                     op=(Token)input.LT(1);
-                    match(input,SUB,FOLLOW_SUB_in_unaryOperator4129); 
+                    match(input,SUB,FOLLOW_SUB_in_unaryOperator4155); 
                     op_tree = (Object)adaptor.create(op);
                     adaptor.addChild(root_0, op_tree);
 
@@ -3629,12 +3635,12 @@
                     }
                     break;
                 case 8 :
-                    // JS.g:1116:4: INV
+                    // JS.g:1125:4: INV
                     {
                     root_0 = (Object)adaptor.nil();
 
                     INV85=(Token)input.LT(1);
-                    match(input,INV,FOLLOW_INV_in_unaryOperator4136); 
+                    match(input,INV,FOLLOW_INV_in_unaryOperator4162); 
                     INV85_tree = (Object)adaptor.create(INV85);
                     adaptor.addChild(root_0, INV85_tree);
 
@@ -3642,12 +3648,12 @@
                     }
                     break;
                 case 9 :
-                    // JS.g:1117:4: NOT
+                    // JS.g:1126:4: NOT
                     {
                     root_0 = (Object)adaptor.nil();
 
                     NOT86=(Token)input.LT(1);
-                    match(input,NOT,FOLLOW_NOT_in_unaryOperator4141); 
+                    match(input,NOT,FOLLOW_NOT_in_unaryOperator4167); 
                     NOT86_tree = (Object)adaptor.create(NOT86);
                     adaptor.addChild(root_0, NOT86_tree);
 
@@ -3655,12 +3661,12 @@
                     }
                     break;
                 case 10 :
-                    // JS.g:1118:4: YIELD
+                    // JS.g:1127:4: YIELD
                     {
                     root_0 = (Object)adaptor.nil();
 
                     YIELD87=(Token)input.LT(1);
-                    match(input,YIELD,FOLLOW_YIELD_in_unaryOperator4146); 
+                    match(input,YIELD,FOLLOW_YIELD_in_unaryOperator4172); 
                     YIELD87_tree = (Object)adaptor.create(YIELD87);
                     adaptor.addChild(root_0, YIELD87_tree);
 
@@ -3691,7 +3697,7 @@
     };
 
     // $ANTLR start namespaceStatement
-    // JS.g:1145:1: namespaceStatement : DEFAULT WXML NAMESPACE ASSIGN StringLiteral semic ;
+    // JS.g:1154: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);
@@ -3711,42 +3717,70 @@
         Object NAMESPACE90_tree=null;
         Object ASSIGN91_tree=null;
         Object StringLiteral92_tree=null;
-
+        RewriteRuleTokenStream stream_StringLiteral=new RewriteRuleTokenStream(adaptor,"token StringLiteral");
+        RewriteRuleTokenStream stream_WXML=new RewriteRuleTokenStream(adaptor,"token WXML");
+        RewriteRuleTokenStream stream_NAMESPACE=new RewriteRuleTokenStream(adaptor,"token NAMESPACE");
+        RewriteRuleTokenStream stream_DEFAULT=new RewriteRuleTokenStream(adaptor,"token DEFAULT");
+        RewriteRuleTokenStream stream_ASSIGN=new RewriteRuleTokenStream(adaptor,"token ASSIGN");
+        RewriteRuleSubtreeStream stream_semic=new RewriteRuleSubtreeStream(adaptor,"rule semic");
         try {
-            // JS.g:1146:3: ( DEFAULT WXML NAMESPACE ASSIGN StringLiteral semic )
-            // JS.g:1146:5: DEFAULT WXML NAMESPACE ASSIGN StringLiteral semic
+            // 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
             {
-            root_0 = (Object)adaptor.nil();
-
             DEFAULT88=(Token)input.LT(1);
-            match(input,DEFAULT,FOLLOW_DEFAULT_in_namespaceStatement4182); 
-            DEFAULT88_tree = (Object)adaptor.create(DEFAULT88);
-            adaptor.addChild(root_0, DEFAULT88_tree);
+            match(input,DEFAULT,FOLLOW_DEFAULT_in_namespaceStatement4208); 
+            stream_DEFAULT.add(DEFAULT88);
 
             WXML89=(Token)input.LT(1);
-            match(input,WXML,FOLLOW_WXML_in_namespaceStatement4184); 
-            WXML89_tree = (Object)adaptor.create(WXML89);
-            adaptor.addChild(root_0, WXML89_tree);
+            match(input,WXML,FOLLOW_WXML_in_namespaceStatement4210); 
+            stream_WXML.add(WXML89);
 
             NAMESPACE90=(Token)input.LT(1);
-            match(input,NAMESPACE,FOLLOW_NAMESPACE_in_namespaceStatement4186); 
-            NAMESPACE90_tree = (Object)adaptor.create(NAMESPACE90);
-            root_0 = (Object)adaptor.becomeRoot(NAMESPACE90_tree, root_0);
+            match(input,NAMESPACE,FOLLOW_NAMESPACE_in_namespaceStatement4212); 
+            stream_NAMESPACE.add(NAMESPACE90);
 
             ASSIGN91=(Token)input.LT(1);
-            match(input,ASSIGN,FOLLOW_ASSIGN_in_namespaceStatement4189); 
-            ASSIGN91_tree = (Object)adaptor.create(ASSIGN91);
-            adaptor.addChild(root_0, ASSIGN91_tree);
+            match(input,ASSIGN,FOLLOW_ASSIGN_in_namespaceStatement4214); 
+            stream_ASSIGN.add(ASSIGN91);
 
             StringLiteral92=(Token)input.LT(1);
-            match(input,StringLiteral,FOLLOW_StringLiteral_in_namespaceStatement4191); 
-            StringLiteral92_tree = (Object)adaptor.create(StringLiteral92);
-            adaptor.addChild(root_0, StringLiteral92_tree);
+            match(input,StringLiteral,FOLLOW_StringLiteral_in_namespaceStatement4216); 
+            stream_StringLiteral.add(StringLiteral92);
 
-            pushFollow(FOLLOW_semic_in_namespaceStatement4193);
+            pushFollow(FOLLOW_semic_in_namespaceStatement4218);
             semic93=semic();
             _fsp--;
 
+            stream_semic.add(semic93.getTree());
+
+            // AST REWRITE
+            // elements: StringLiteral, DEFAULT, ASSIGN, WXML
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            retval.tree = root_0;
+            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 )
+            {
+                // JS.g:1156: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);
+
+                adaptor.addChild(root_1, stream_DEFAULT.next());
+                adaptor.addChild(root_1, stream_WXML.next());
+                adaptor.addChild(root_1, stream_ASSIGN.next());
+                adaptor.addChild(root_1, stream_StringLiteral.next());
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+
 
             }
 
@@ -3772,7 +3806,7 @@
     };
 
     // $ANTLR start multiplicativeExpression
-    // JS.g:1151:1: multiplicativeExpression : unaryExpression ( ( MUL | DIV | MOD ) unaryExpression )* ;
+    // JS.g:1161: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);
@@ -3788,17 +3822,17 @@
         Object set95_tree=null;
 
         try {
-            // JS.g:1152:2: ( unaryExpression ( ( MUL | DIV | MOD ) unaryExpression )* )
-            // JS.g:1152:4: unaryExpression ( ( MUL | DIV | MOD ) unaryExpression )*
+            // JS.g:1162:2: ( unaryExpression ( ( MUL | DIV | MOD ) unaryExpression )* )
+            // JS.g:1162:4: unaryExpression ( ( MUL | DIV | MOD ) unaryExpression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_unaryExpression_in_multiplicativeExpression4208);
+            pushFollow(FOLLOW_unaryExpression_in_multiplicativeExpression4250);
             unaryExpression94=unaryExpression();
             _fsp--;
 
             adaptor.addChild(root_0, unaryExpression94.getTree());
-            // JS.g:1152:20: ( ( MUL | DIV | MOD ) unaryExpression )*
+            // JS.g:1162:20: ( ( MUL | DIV | MOD ) unaryExpression )*
             loop21:
             do {
                 int alt21=2;
@@ -3811,7 +3845,7 @@
 
                 switch (alt21) {
             	case 1 :
-            	    // JS.g:1152:22: ( MUL | DIV | MOD ) unaryExpression
+            	    // JS.g:1162:22: ( MUL | DIV | MOD ) unaryExpression
             	    {
             	    set95=(Token)input.LT(1);
             	    if ( (input.LA(1)>=MUL && input.LA(1)<=MOD)||input.LA(1)==DIV ) {
@@ -3822,10 +3856,10 @@
             	    else {
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_multiplicativeExpression4212);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_multiplicativeExpression4254);    throw mse;
             	    }
 
-            	    pushFollow(FOLLOW_unaryExpression_in_multiplicativeExpression4227);
+            	    pushFollow(FOLLOW_unaryExpression_in_multiplicativeExpression4269);
             	    unaryExpression96=unaryExpression();
             	    _fsp--;
 
@@ -3864,7 +3898,7 @@
     };
 
     // $ANTLR start additiveExpression
-    // JS.g:1159:1: additiveExpression : multiplicativeExpression ( ( ADD | SUB ) multiplicativeExpression )* ;
+    // JS.g:1169:1: additiveExpression : multiplicativeExpression ( ( ADD | SUB ) multiplicativeExpression )* ;
     public final additiveExpression_return additiveExpression() throws RecognitionException {
         additiveExpression_return retval = new additiveExpression_return();
         retval.start = input.LT(1);
@@ -3880,17 +3914,17 @@
         Object set98_tree=null;
 
         try {
-            // JS.g:1160:2: ( multiplicativeExpression ( ( ADD | SUB ) multiplicativeExpression )* )
-            // JS.g:1160:4: multiplicativeExpression ( ( ADD | SUB ) multiplicativeExpression )*
+            // JS.g:1170:2: ( multiplicativeExpression ( ( ADD | SUB ) multiplicativeExpression )* )
+            // JS.g:1170:4: multiplicativeExpression ( ( ADD | SUB ) multiplicativeExpression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_multiplicativeExpression_in_additiveExpression4245);
+            pushFollow(FOLLOW_multiplicativeExpression_in_additiveExpression4287);
             multiplicativeExpression97=multiplicativeExpression();
             _fsp--;
 
             adaptor.addChild(root_0, multiplicativeExpression97.getTree());
-            // JS.g:1160:29: ( ( ADD | SUB ) multiplicativeExpression )*
+            // JS.g:1170:29: ( ( ADD | SUB ) multiplicativeExpression )*
             loop22:
             do {
                 int alt22=2;
@@ -3903,7 +3937,7 @@
 
                 switch (alt22) {
             	case 1 :
-            	    // JS.g:1160:31: ( ADD | SUB ) multiplicativeExpression
+            	    // JS.g:1170:31: ( ADD | SUB ) multiplicativeExpression
             	    {
             	    set98=(Token)input.LT(1);
             	    if ( (input.LA(1)>=ADD && input.LA(1)<=SUB) ) {
@@ -3914,10 +3948,10 @@
             	    else {
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_additiveExpression4249);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_additiveExpression4291);    throw mse;
             	    }
 
-            	    pushFollow(FOLLOW_multiplicativeExpression_in_additiveExpression4260);
+            	    pushFollow(FOLLOW_multiplicativeExpression_in_additiveExpression4302);
             	    multiplicativeExpression99=multiplicativeExpression();
             	    _fsp--;
 
@@ -3956,7 +3990,7 @@
     };
 
     // $ANTLR start shiftExpression
-    // JS.g:1167:1: shiftExpression : additiveExpression ( ( SHL | SHR | SHU ) additiveExpression )* ;
+    // JS.g:1177: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);
@@ -3972,17 +4006,17 @@
         Object set101_tree=null;
 
         try {
-            // JS.g:1168:2: ( additiveExpression ( ( SHL | SHR | SHU ) additiveExpression )* )
-            // JS.g:1168:4: additiveExpression ( ( SHL | SHR | SHU ) additiveExpression )*
+            // JS.g:1178:2: ( additiveExpression ( ( SHL | SHR | SHU ) additiveExpression )* )
+            // JS.g:1178:4: additiveExpression ( ( SHL | SHR | SHU ) additiveExpression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_additiveExpression_in_shiftExpression4279);
+            pushFollow(FOLLOW_additiveExpression_in_shiftExpression4321);
             additiveExpression100=additiveExpression();
             _fsp--;
 
             adaptor.addChild(root_0, additiveExpression100.getTree());
-            // JS.g:1168:23: ( ( SHL | SHR | SHU ) additiveExpression )*
+            // JS.g:1178:23: ( ( SHL | SHR | SHU ) additiveExpression )*
             loop23:
             do {
                 int alt23=2;
@@ -3995,7 +4029,7 @@
 
                 switch (alt23) {
             	case 1 :
-            	    // JS.g:1168:25: ( SHL | SHR | SHU ) additiveExpression
+            	    // JS.g:1178:25: ( SHL | SHR | SHU ) additiveExpression
             	    {
             	    set101=(Token)input.LT(1);
             	    if ( (input.LA(1)>=SHL && input.LA(1)<=SHU) ) {
@@ -4006,10 +4040,10 @@
             	    else {
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_shiftExpression4283);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_shiftExpression4325);    throw mse;
             	    }
 
-            	    pushFollow(FOLLOW_additiveExpression_in_shiftExpression4298);
+            	    pushFollow(FOLLOW_additiveExpression_in_shiftExpression4340);
             	    additiveExpression102=additiveExpression();
             	    _fsp--;
 
@@ -4048,7 +4082,7 @@
     };
 
     // $ANTLR start relationalExpression
-    // JS.g:1175:1: relationalExpression : shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF | IN ) shiftExpression )* ;
+    // JS.g:1185: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);
@@ -4064,17 +4098,17 @@
         Object set104_tree=null;
 
         try {
-            // JS.g:1176:2: ( shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF | IN ) shiftExpression )* )
-            // JS.g:1176:4: shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF | IN ) shiftExpression )*
+            // JS.g:1186:2: ( shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF | IN ) shiftExpression )* )
+            // JS.g:1186:4: shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF | IN ) shiftExpression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_shiftExpression_in_relationalExpression4317);
+            pushFollow(FOLLOW_shiftExpression_in_relationalExpression4359);
             shiftExpression103=shiftExpression();
             _fsp--;
 
             adaptor.addChild(root_0, shiftExpression103.getTree());
-            // JS.g:1176:20: ( ( LT | GT | LTE | GTE | INSTANCEOF | IN ) shiftExpression )*
+            // JS.g:1186:20: ( ( LT | GT | LTE | GTE | INSTANCEOF | IN ) shiftExpression )*
             loop24:
             do {
                 int alt24=2;
@@ -4090,7 +4124,7 @@
 
                 switch (alt24) {
             	case 1 :
-            	    // JS.g:1176:22: ( LT | GT | LTE | GTE | INSTANCEOF | IN ) shiftExpression
+            	    // JS.g:1186: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) ) {
@@ -4101,10 +4135,10 @@
             	    else {
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_relationalExpression4321);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_relationalExpression4363);    throw mse;
             	    }
 
-            	    pushFollow(FOLLOW_shiftExpression_in_relationalExpression4348);
+            	    pushFollow(FOLLOW_shiftExpression_in_relationalExpression4390);
             	    shiftExpression105=shiftExpression();
             	    _fsp--;
 
@@ -4143,7 +4177,7 @@
     };
 
     // $ANTLR start relationalExpressionNoIn
-    // JS.g:1179:1: relationalExpressionNoIn : shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF ) shiftExpression )* ;
+    // JS.g:1189: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);
@@ -4159,17 +4193,17 @@
         Object set107_tree=null;
 
         try {
-            // JS.g:1180:2: ( shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF ) shiftExpression )* )
-            // JS.g:1180:4: shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF ) shiftExpression )*
+            // JS.g:1190:2: ( shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF ) shiftExpression )* )
+            // JS.g:1190:4: shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF ) shiftExpression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_shiftExpression_in_relationalExpressionNoIn4362);
+            pushFollow(FOLLOW_shiftExpression_in_relationalExpressionNoIn4404);
             shiftExpression106=shiftExpression();
             _fsp--;
 
             adaptor.addChild(root_0, shiftExpression106.getTree());
-            // JS.g:1180:20: ( ( LT | GT | LTE | GTE | INSTANCEOF ) shiftExpression )*
+            // JS.g:1190:20: ( ( LT | GT | LTE | GTE | INSTANCEOF ) shiftExpression )*
             loop25:
             do {
                 int alt25=2;
@@ -4182,7 +4216,7 @@
 
                 switch (alt25) {
             	case 1 :
-            	    // JS.g:1180:22: ( LT | GT | LTE | GTE | INSTANCEOF ) shiftExpression
+            	    // JS.g:1190: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) ) {
@@ -4193,10 +4227,10 @@
             	    else {
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_relationalExpressionNoIn4366);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_relationalExpressionNoIn4408);    throw mse;
             	    }
 
-            	    pushFollow(FOLLOW_shiftExpression_in_relationalExpressionNoIn4389);
+            	    pushFollow(FOLLOW_shiftExpression_in_relationalExpressionNoIn4431);
             	    shiftExpression108=shiftExpression();
             	    _fsp--;
 
@@ -4235,7 +4269,7 @@
     };
 
     // $ANTLR start equalityExpression
-    // JS.g:1187:1: equalityExpression : relationalExpression ( ( EQ | NEQ | SAME | NSAME ) relationalExpression )* ;
+    // JS.g:1197: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);
@@ -4251,17 +4285,17 @@
         Object set110_tree=null;
 
         try {
-            // JS.g:1188:2: ( relationalExpression ( ( EQ | NEQ | SAME | NSAME ) relationalExpression )* )
-            // JS.g:1188:4: relationalExpression ( ( EQ | NEQ | SAME | NSAME ) relationalExpression )*
+            // JS.g:1198:2: ( relationalExpression ( ( EQ | NEQ | SAME | NSAME ) relationalExpression )* )
+            // JS.g:1198:4: relationalExpression ( ( EQ | NEQ | SAME | NSAME ) relationalExpression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_relationalExpression_in_equalityExpression4408);
+            pushFollow(FOLLOW_relationalExpression_in_equalityExpression4450);
             relationalExpression109=relationalExpression();
             _fsp--;
 
             adaptor.addChild(root_0, relationalExpression109.getTree());
-            // JS.g:1188:25: ( ( EQ | NEQ | SAME | NSAME ) relationalExpression )*
+            // JS.g:1198:25: ( ( EQ | NEQ | SAME | NSAME ) relationalExpression )*
             loop26:
             do {
                 int alt26=2;
@@ -4274,7 +4308,7 @@
 
                 switch (alt26) {
             	case 1 :
-            	    // JS.g:1188:27: ( EQ | NEQ | SAME | NSAME ) relationalExpression
+            	    // JS.g:1198:27: ( EQ | NEQ | SAME | NSAME ) relationalExpression
             	    {
             	    set110=(Token)input.LT(1);
             	    if ( (input.LA(1)>=EQ && input.LA(1)<=NSAME) ) {
@@ -4285,10 +4319,10 @@
             	    else {
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_equalityExpression4412);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_equalityExpression4454);    throw mse;
             	    }
 
-            	    pushFollow(FOLLOW_relationalExpression_in_equalityExpression4431);
+            	    pushFollow(FOLLOW_relationalExpression_in_equalityExpression4473);
             	    relationalExpression111=relationalExpression();
             	    _fsp--;
 
@@ -4327,7 +4361,7 @@
     };
 
     // $ANTLR start equalityExpressionNoIn
-    // JS.g:1191:1: equalityExpressionNoIn : relationalExpressionNoIn ( ( EQ | NEQ | SAME | NSAME ) relationalExpressionNoIn )* ;
+    // JS.g:1201: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);
@@ -4343,17 +4377,17 @@
         Object set113_tree=null;
 
         try {
-            // JS.g:1192:2: ( relationalExpressionNoIn ( ( EQ | NEQ | SAME | NSAME ) relationalExpressionNoIn )* )
-            // JS.g:1192:4: relationalExpressionNoIn ( ( EQ | NEQ | SAME | NSAME ) relationalExpressionNoIn )*
+            // JS.g:1202:2: ( relationalExpressionNoIn ( ( EQ | NEQ | SAME | NSAME ) relationalExpressionNoIn )* )
+            // JS.g:1202:4: relationalExpressionNoIn ( ( EQ | NEQ | SAME | NSAME ) relationalExpressionNoIn )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_relationalExpressionNoIn_in_equalityExpressionNoIn4445);
+            pushFollow(FOLLOW_relationalExpressionNoIn_in_equalityExpressionNoIn4487);
             relationalExpressionNoIn112=relationalExpressionNoIn();
             _fsp--;
 
             adaptor.addChild(root_0, relationalExpressionNoIn112.getTree());
-            // JS.g:1192:29: ( ( EQ | NEQ | SAME | NSAME ) relationalExpressionNoIn )*
+            // JS.g:1202:29: ( ( EQ | NEQ | SAME | NSAME ) relationalExpressionNoIn )*
             loop27:
             do {
                 int alt27=2;
@@ -4366,7 +4400,7 @@
 
                 switch (alt27) {
             	case 1 :
-            	    // JS.g:1192:31: ( EQ | NEQ | SAME | NSAME ) relationalExpressionNoIn
+            	    // JS.g:1202:31: ( EQ | NEQ | SAME | NSAME ) relationalExpressionNoIn
             	    {
             	    set113=(Token)input.LT(1);
             	    if ( (input.LA(1)>=EQ && input.LA(1)<=NSAME) ) {
@@ -4377,10 +4411,10 @@
             	    else {
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_equalityExpressionNoIn4449);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_equalityExpressionNoIn4491);    throw mse;
             	    }
 
-            	    pushFollow(FOLLOW_relationalExpressionNoIn_in_equalityExpressionNoIn4468);
+            	    pushFollow(FOLLOW_relationalExpressionNoIn_in_equalityExpressionNoIn4510);
             	    relationalExpressionNoIn114=relationalExpressionNoIn();
             	    _fsp--;
 
@@ -4419,7 +4453,7 @@
     };
 
     // $ANTLR start bitwiseANDExpression
-    // JS.g:1199:1: bitwiseANDExpression : equalityExpression ( AND equalityExpression )* ;
+    // JS.g:1209:1: bitwiseANDExpression : equalityExpression ( AND equalityExpression )* ;
     public final bitwiseANDExpression_return bitwiseANDExpression() throws RecognitionException {
         bitwiseANDExpression_return retval = new bitwiseANDExpression_return();
         retval.start = input.LT(1);
@@ -4435,17 +4469,17 @@
         Object AND116_tree=null;
 
         try {
-            // JS.g:1200:2: ( equalityExpression ( AND equalityExpression )* )
-            // JS.g:1200:4: equalityExpression ( AND equalityExpression )*
+            // JS.g:1210:2: ( equalityExpression ( AND equalityExpression )* )
+            // JS.g:1210:4: equalityExpression ( AND equalityExpression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_equalityExpression_in_bitwiseANDExpression4488);
+            pushFollow(FOLLOW_equalityExpression_in_bitwiseANDExpression4530);
             equalityExpression115=equalityExpression();
             _fsp--;
 
             adaptor.addChild(root_0, equalityExpression115.getTree());
-            // JS.g:1200:23: ( AND equalityExpression )*
+            // JS.g:1210:23: ( AND equalityExpression )*
             loop28:
             do {
                 int alt28=2;
@@ -4458,14 +4492,14 @@
 
                 switch (alt28) {
             	case 1 :
-            	    // JS.g:1200:25: AND equalityExpression
+            	    // JS.g:1210:25: AND equalityExpression
             	    {
             	    AND116=(Token)input.LT(1);
-            	    match(input,AND,FOLLOW_AND_in_bitwiseANDExpression4492); 
+            	    match(input,AND,FOLLOW_AND_in_bitwiseANDExpression4534); 
             	    AND116_tree = (Object)adaptor.create(AND116);
             	    root_0 = (Object)adaptor.becomeRoot(AND116_tree, root_0);
 
-            	    pushFollow(FOLLOW_equalityExpression_in_bitwiseANDExpression4495);
+            	    pushFollow(FOLLOW_equalityExpression_in_bitwiseANDExpression4537);
             	    equalityExpression117=equalityExpression();
             	    _fsp--;
 
@@ -4504,7 +4538,7 @@
     };
 
     // $ANTLR start bitwiseANDExpressionNoIn
-    // JS.g:1203:1: bitwiseANDExpressionNoIn : equalityExpressionNoIn ( AND equalityExpressionNoIn )* ;
+    // JS.g:1213:1: bitwiseANDExpressionNoIn : equalityExpressionNoIn ( AND equalityExpressionNoIn )* ;
     public final bitwiseANDExpressionNoIn_return bitwiseANDExpressionNoIn() throws RecognitionException {
         bitwiseANDExpressionNoIn_return retval = new bitwiseANDExpressionNoIn_return();
         retval.start = input.LT(1);
@@ -4520,17 +4554,17 @@
         Object AND119_tree=null;
 
         try {
-            // JS.g:1204:2: ( equalityExpressionNoIn ( AND equalityExpressionNoIn )* )
-            // JS.g:1204:4: equalityExpressionNoIn ( AND equalityExpressionNoIn )*
+            // JS.g:1214:2: ( equalityExpressionNoIn ( AND equalityExpressionNoIn )* )
+            // JS.g:1214:4: equalityExpressionNoIn ( AND equalityExpressionNoIn )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_equalityExpressionNoIn_in_bitwiseANDExpressionNoIn4509);
+            pushFollow(FOLLOW_equalityExpressionNoIn_in_bitwiseANDExpressionNoIn4551);
             equalityExpressionNoIn118=equalityExpressionNoIn();
             _fsp--;
 
             adaptor.addChild(root_0, equalityExpressionNoIn118.getTree());
-            // JS.g:1204:27: ( AND equalityExpressionNoIn )*
+            // JS.g:1214:27: ( AND equalityExpressionNoIn )*
             loop29:
             do {
                 int alt29=2;
@@ -4543,14 +4577,14 @@
 
                 switch (alt29) {
             	case 1 :
-            	    // JS.g:1204:29: AND equalityExpressionNoIn
+            	    // JS.g:1214:29: AND equalityExpressionNoIn
             	    {
             	    AND119=(Token)input.LT(1);
-            	    match(input,AND,FOLLOW_AND_in_bitwiseANDExpressionNoIn4513); 
+            	    match(input,AND,FOLLOW_AND_in_bitwiseANDExpressionNoIn4555); 
             	    AND119_tree = (Object)adaptor.create(AND119);
             	    root_0 = (Object)adaptor.becomeRoot(AND119_tree, root_0);
 
-            	    pushFollow(FOLLOW_equalityExpressionNoIn_in_bitwiseANDExpressionNoIn4516);
+            	    pushFollow(FOLLOW_equalityExpressionNoIn_in_bitwiseANDExpressionNoIn4558);
             	    equalityExpressionNoIn120=equalityExpressionNoIn();
             	    _fsp--;
 
@@ -4589,7 +4623,7 @@
     };
 
     // $ANTLR start bitwiseXORExpression
-    // JS.g:1207:1: bitwiseXORExpression : bitwiseANDExpression ( XOR bitwiseANDExpression )* ;
+    // JS.g:1217:1: bitwiseXORExpression : bitwiseANDExpression ( XOR bitwiseANDExpression )* ;
     public final bitwiseXORExpression_return bitwiseXORExpression() throws RecognitionException {
         bitwiseXORExpression_return retval = new bitwiseXORExpression_return();
         retval.start = input.LT(1);
@@ -4605,17 +4639,17 @@
         Object XOR122_tree=null;
 
         try {
-            // JS.g:1208:2: ( bitwiseANDExpression ( XOR bitwiseANDExpression )* )
-            // JS.g:1208:4: bitwiseANDExpression ( XOR bitwiseANDExpression )*
+            // JS.g:1218:2: ( bitwiseANDExpression ( XOR bitwiseANDExpression )* )
+            // JS.g:1218:4: bitwiseANDExpression ( XOR bitwiseANDExpression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_bitwiseANDExpression_in_bitwiseXORExpression4532);
+            pushFollow(FOLLOW_bitwiseANDExpression_in_bitwiseXORExpression4574);
             bitwiseANDExpression121=bitwiseANDExpression();
             _fsp--;
 
             adaptor.addChild(root_0, bitwiseANDExpression121.getTree());
-            // JS.g:1208:25: ( XOR bitwiseANDExpression )*
+            // JS.g:1218:25: ( XOR bitwiseANDExpression )*
             loop30:
             do {
                 int alt30=2;
@@ -4628,14 +4662,14 @@
 
                 switch (alt30) {
             	case 1 :
-            	    // JS.g:1208:27: XOR bitwiseANDExpression
+            	    // JS.g:1218:27: XOR bitwiseANDExpression
             	    {
             	    XOR122=(Token)input.LT(1);
-            	    match(input,XOR,FOLLOW_XOR_in_bitwiseXORExpression4536); 
+            	    match(input,XOR,FOLLOW_XOR_in_bitwiseXORExpression4578); 
             	    XOR122_tree = (Object)adaptor.create(XOR122);
             	    root_0 = (Object)adaptor.becomeRoot(XOR122_tree, root_0);
 
-            	    pushFollow(FOLLOW_bitwiseANDExpression_in_bitwiseXORExpression4539);
+            	    pushFollow(FOLLOW_bitwiseANDExpression_in_bitwiseXORExpression4581);
             	    bitwiseANDExpression123=bitwiseANDExpression();
             	    _fsp--;
 
@@ -4674,7 +4708,7 @@
     };
 
     // $ANTLR start bitwiseXORExpressionNoIn
-    // JS.g:1211:1: bitwiseXORExpressionNoIn : bitwiseANDExpressionNoIn ( XOR bitwiseANDExpressionNoIn )* ;
+    // JS.g:1221:1: bitwiseXORExpressionNoIn : bitwiseANDExpressionNoIn ( XOR bitwiseANDExpressionNoIn )* ;
     public final bitwiseXORExpressionNoIn_return bitwiseXORExpressionNoIn() throws RecognitionException {
         bitwiseXORExpressionNoIn_return retval = new bitwiseXORExpressionNoIn_return();
         retval.start = input.LT(1);
@@ -4690,17 +4724,17 @@
         Object XOR125_tree=null;
 
         try {
-            // JS.g:1212:2: ( bitwiseANDExpressionNoIn ( XOR bitwiseANDExpressionNoIn )* )
-            // JS.g:1212:4: bitwiseANDExpressionNoIn ( XOR bitwiseANDExpressionNoIn )*
+            // JS.g:1222:2: ( bitwiseANDExpressionNoIn ( XOR bitwiseANDExpressionNoIn )* )
+            // JS.g:1222:4: bitwiseANDExpressionNoIn ( XOR bitwiseANDExpressionNoIn )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_bitwiseANDExpressionNoIn_in_bitwiseXORExpressionNoIn4555);
+            pushFollow(FOLLOW_bitwiseANDExpressionNoIn_in_bitwiseXORExpressionNoIn4597);
             bitwiseANDExpressionNoIn124=bitwiseANDExpressionNoIn();
             _fsp--;
 
             adaptor.addChild(root_0, bitwiseANDExpressionNoIn124.getTree());
-            // JS.g:1212:29: ( XOR bitwiseANDExpressionNoIn )*
+            // JS.g:1222:29: ( XOR bitwiseANDExpressionNoIn )*
             loop31:
             do {
                 int alt31=2;
@@ -4713,14 +4747,14 @@
 
                 switch (alt31) {
             	case 1 :
-            	    // JS.g:1212:31: XOR bitwiseANDExpressionNoIn
+            	    // JS.g:1222:31: XOR bitwiseANDExpressionNoIn
             	    {
             	    XOR125=(Token)input.LT(1);
-            	    match(input,XOR,FOLLOW_XOR_in_bitwiseXORExpressionNoIn4559); 
+            	    match(input,XOR,FOLLOW_XOR_in_bitwiseXORExpressionNoIn4601); 
             	    XOR125_tree = (Object)adaptor.create(XOR125);
             	    root_0 = (Object)adaptor.becomeRoot(XOR125_tree, root_0);
 
-            	    pushFollow(FOLLOW_bitwiseANDExpressionNoIn_in_bitwiseXORExpressionNoIn4562);
+            	    pushFollow(FOLLOW_bitwiseANDExpressionNoIn_in_bitwiseXORExpressionNoIn4604);
             	    bitwiseANDExpressionNoIn126=bitwiseANDExpressionNoIn();
             	    _fsp--;
 
@@ -4759,7 +4793,7 @@
     };
 
     // $ANTLR start bitwiseORExpression
-    // JS.g:1215:1: bitwiseORExpression : bitwiseXORExpression ( OR bitwiseXORExpression )* ;
+    // JS.g:1225:1: bitwiseORExpression : bitwiseXORExpression ( OR bitwiseXORExpression )* ;
     public final bitwiseORExpression_return bitwiseORExpression() throws RecognitionException {
         bitwiseORExpression_return retval = new bitwiseORExpression_return();
         retval.start = input.LT(1);
@@ -4775,17 +4809,17 @@
         Object OR128_tree=null;
 
         try {
-            // JS.g:1216:2: ( bitwiseXORExpression ( OR bitwiseXORExpression )* )
-            // JS.g:1216:4: bitwiseXORExpression ( OR bitwiseXORExpression )*
+            // JS.g:1226:2: ( bitwiseXORExpression ( OR bitwiseXORExpression )* )
+            // JS.g:1226:4: bitwiseXORExpression ( OR bitwiseXORExpression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_bitwiseXORExpression_in_bitwiseORExpression4577);
+            pushFollow(FOLLOW_bitwiseXORExpression_in_bitwiseORExpression4619);
             bitwiseXORExpression127=bitwiseXORExpression();
             _fsp--;
 
             adaptor.addChild(root_0, bitwiseXORExpression127.getTree());
-            // JS.g:1216:25: ( OR bitwiseXORExpression )*
+            // JS.g:1226:25: ( OR bitwiseXORExpression )*
             loop32:
             do {
                 int alt32=2;
@@ -4798,14 +4832,14 @@
 
                 switch (alt32) {
             	case 1 :
-            	    // JS.g:1216:27: OR bitwiseXORExpression
+            	    // JS.g:1226:27: OR bitwiseXORExpression
             	    {
             	    OR128=(Token)input.LT(1);
-            	    match(input,OR,FOLLOW_OR_in_bitwiseORExpression4581); 
+            	    match(input,OR,FOLLOW_OR_in_bitwiseORExpression4623); 
             	    OR128_tree = (Object)adaptor.create(OR128);
             	    root_0 = (Object)adaptor.becomeRoot(OR128_tree, root_0);
 
-            	    pushFollow(FOLLOW_bitwiseXORExpression_in_bitwiseORExpression4584);
+            	    pushFollow(FOLLOW_bitwiseXORExpression_in_bitwiseORExpression4626);
             	    bitwiseXORExpression129=bitwiseXORExpression();
             	    _fsp--;
 
@@ -4844,7 +4878,7 @@
     };
 
     // $ANTLR start bitwiseORExpressionNoIn
-    // JS.g:1219:1: bitwiseORExpressionNoIn : bitwiseXORExpressionNoIn ( OR bitwiseXORExpressionNoIn )* ;
+    // JS.g:1229:1: bitwiseORExpressionNoIn : bitwiseXORExpressionNoIn ( OR bitwiseXORExpressionNoIn )* ;
     public final bitwiseORExpressionNoIn_return bitwiseORExpressionNoIn() throws RecognitionException {
         bitwiseORExpressionNoIn_return retval = new bitwiseORExpressionNoIn_return();
         retval.start = input.LT(1);
@@ -4860,17 +4894,17 @@
         Object OR131_tree=null;
 
         try {
-            // JS.g:1220:2: ( bitwiseXORExpressionNoIn ( OR bitwiseXORExpressionNoIn )* )
-            // JS.g:1220:4: bitwiseXORExpressionNoIn ( OR bitwiseXORExpressionNoIn )*
+            // JS.g:1230:2: ( bitwiseXORExpressionNoIn ( OR bitwiseXORExpressionNoIn )* )
+            // JS.g:1230:4: bitwiseXORExpressionNoIn ( OR bitwiseXORExpressionNoIn )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_bitwiseXORExpressionNoIn_in_bitwiseORExpressionNoIn4599);
+            pushFollow(FOLLOW_bitwiseXORExpressionNoIn_in_bitwiseORExpressionNoIn4641);
             bitwiseXORExpressionNoIn130=bitwiseXORExpressionNoIn();
             _fsp--;
 
             adaptor.addChild(root_0, bitwiseXORExpressionNoIn130.getTree());
-            // JS.g:1220:29: ( OR bitwiseXORExpressionNoIn )*
+            // JS.g:1230:29: ( OR bitwiseXORExpressionNoIn )*
             loop33:
             do {
                 int alt33=2;
@@ -4883,14 +4917,14 @@
 
                 switch (alt33) {
             	case 1 :
-            	    // JS.g:1220:31: OR bitwiseXORExpressionNoIn
+            	    // JS.g:1230:31: OR bitwiseXORExpressionNoIn
             	    {
             	    OR131=(Token)input.LT(1);
-            	    match(input,OR,FOLLOW_OR_in_bitwiseORExpressionNoIn4603); 
+            	    match(input,OR,FOLLOW_OR_in_bitwiseORExpressionNoIn4645); 
             	    OR131_tree = (Object)adaptor.create(OR131);
             	    root_0 = (Object)adaptor.becomeRoot(OR131_tree, root_0);
 
-            	    pushFollow(FOLLOW_bitwiseXORExpressionNoIn_in_bitwiseORExpressionNoIn4606);
+            	    pushFollow(FOLLOW_bitwiseXORExpressionNoIn_in_bitwiseORExpressionNoIn4648);
             	    bitwiseXORExpressionNoIn132=bitwiseXORExpressionNoIn();
             	    _fsp--;
 
@@ -4929,7 +4963,7 @@
     };
 
     // $ANTLR start logicalANDExpression
-    // JS.g:1227:1: logicalANDExpression : bitwiseORExpression ( LAND bitwiseORExpression )* ;
+    // JS.g:1237:1: logicalANDExpression : bitwiseORExpression ( LAND bitwiseORExpression )* ;
     public final logicalANDExpression_return logicalANDExpression() throws RecognitionException {
         logicalANDExpression_return retval = new logicalANDExpression_return();
         retval.start = input.LT(1);
@@ -4945,17 +4979,17 @@
         Object LAND134_tree=null;
 
         try {
-            // JS.g:1228:2: ( bitwiseORExpression ( LAND bitwiseORExpression )* )
-            // JS.g:1228:4: bitwiseORExpression ( LAND bitwiseORExpression )*
+            // JS.g:1238:2: ( bitwiseORExpression ( LAND bitwiseORExpression )* )
+            // JS.g:1238:4: bitwiseORExpression ( LAND bitwiseORExpression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_bitwiseORExpression_in_logicalANDExpression4625);
+            pushFollow(FOLLOW_bitwiseORExpression_in_logicalANDExpression4667);
             bitwiseORExpression133=bitwiseORExpression();
             _fsp--;
 
             adaptor.addChild(root_0, bitwiseORExpression133.getTree());
-            // JS.g:1228:24: ( LAND bitwiseORExpression )*
+            // JS.g:1238:24: ( LAND bitwiseORExpression )*
             loop34:
             do {
                 int alt34=2;
@@ -4968,14 +5002,14 @@
 
                 switch (alt34) {
             	case 1 :
-            	    // JS.g:1228:26: LAND bitwiseORExpression
+            	    // JS.g:1238:26: LAND bitwiseORExpression
             	    {
             	    LAND134=(Token)input.LT(1);
-            	    match(input,LAND,FOLLOW_LAND_in_logicalANDExpression4629); 
+            	    match(input,LAND,FOLLOW_LAND_in_logicalANDExpression4671); 
             	    LAND134_tree = (Object)adaptor.create(LAND134);
             	    root_0 = (Object)adaptor.becomeRoot(LAND134_tree, root_0);
 
-            	    pushFollow(FOLLOW_bitwiseORExpression_in_logicalANDExpression4632);
+            	    pushFollow(FOLLOW_bitwiseORExpression_in_logicalANDExpression4674);
             	    bitwiseORExpression135=bitwiseORExpression();
             	    _fsp--;
 
@@ -5014,7 +5048,7 @@
     };
 
     // $ANTLR start logicalANDExpressionNoIn
-    // JS.g:1231:1: logicalANDExpressionNoIn : bitwiseORExpressionNoIn ( LAND bitwiseORExpressionNoIn )* ;
+    // JS.g:1241:1: logicalANDExpressionNoIn : bitwiseORExpressionNoIn ( LAND bitwiseORExpressionNoIn )* ;
     public final logicalANDExpressionNoIn_return logicalANDExpressionNoIn() throws RecognitionException {
         logicalANDExpressionNoIn_return retval = new logicalANDExpressionNoIn_return();
         retval.start = input.LT(1);
@@ -5030,17 +5064,17 @@
         Object LAND137_tree=null;
 
         try {
-            // JS.g:1232:2: ( bitwiseORExpressionNoIn ( LAND bitwiseORExpressionNoIn )* )
-            // JS.g:1232:4: bitwiseORExpressionNoIn ( LAND bitwiseORExpressionNoIn )*
+            // JS.g:1242:2: ( bitwiseORExpressionNoIn ( LAND bitwiseORExpressionNoIn )* )
+            // JS.g:1242:4: bitwiseORExpressionNoIn ( LAND bitwiseORExpressionNoIn )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_bitwiseORExpressionNoIn_in_logicalANDExpressionNoIn4646);
+            pushFollow(FOLLOW_bitwiseORExpressionNoIn_in_logicalANDExpressionNoIn4688);
             bitwiseORExpressionNoIn136=bitwiseORExpressionNoIn();
             _fsp--;
 
             adaptor.addChild(root_0, bitwiseORExpressionNoIn136.getTree());
-            // JS.g:1232:28: ( LAND bitwiseORExpressionNoIn )*
+            // JS.g:1242:28: ( LAND bitwiseORExpressionNoIn )*
             loop35:
             do {
                 int alt35=2;
@@ -5053,14 +5087,14 @@
 
                 switch (alt35) {
             	case 1 :
-            	    // JS.g:1232:30: LAND bitwiseORExpressionNoIn
+            	    // JS.g:1242:30: LAND bitwiseORExpressionNoIn
             	    {
             	    LAND137=(Token)input.LT(1);
-            	    match(input,LAND,FOLLOW_LAND_in_logicalANDExpressionNoIn4650); 
+            	    match(input,LAND,FOLLOW_LAND_in_logicalANDExpressionNoIn4692); 
             	    LAND137_tree = (Object)adaptor.create(LAND137);
             	    root_0 = (Object)adaptor.becomeRoot(LAND137_tree, root_0);
 
-            	    pushFollow(FOLLOW_bitwiseORExpressionNoIn_in_logicalANDExpressionNoIn4653);
+            	    pushFollow(FOLLOW_bitwiseORExpressionNoIn_in_logicalANDExpressionNoIn4695);
             	    bitwiseORExpressionNoIn138=bitwiseORExpressionNoIn();
             	    _fsp--;
 
@@ -5099,7 +5133,7 @@
     };
 
     // $ANTLR start logicalORExpression
-    // JS.g:1235:1: logicalORExpression : logicalANDExpression ( LOR logicalANDExpression )* ;
+    // JS.g:1245:1: logicalORExpression : logicalANDExpression ( LOR logicalANDExpression )* ;
     public final logicalORExpression_return logicalORExpression() throws RecognitionException {
         logicalORExpression_return retval = new logicalORExpression_return();
         retval.start = input.LT(1);
@@ -5115,17 +5149,17 @@
         Object LOR140_tree=null;
 
         try {
-            // JS.g:1236:2: ( logicalANDExpression ( LOR logicalANDExpression )* )
-            // JS.g:1236:4: logicalANDExpression ( LOR logicalANDExpression )*
+            // JS.g:1246:2: ( logicalANDExpression ( LOR logicalANDExpression )* )
+            // JS.g:1246:4: logicalANDExpression ( LOR logicalANDExpression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_logicalANDExpression_in_logicalORExpression4668);
+            pushFollow(FOLLOW_logicalANDExpression_in_logicalORExpression4710);
             logicalANDExpression139=logicalANDExpression();
             _fsp--;
 
             adaptor.addChild(root_0, logicalANDExpression139.getTree());
-            // JS.g:1236:25: ( LOR logicalANDExpression )*
+            // JS.g:1246:25: ( LOR logicalANDExpression )*
             loop36:
             do {
                 int alt36=2;
@@ -5138,14 +5172,14 @@
 
                 switch (alt36) {
             	case 1 :
-            	    // JS.g:1236:27: LOR logicalANDExpression
+            	    // JS.g:1246:27: LOR logicalANDExpression
             	    {
             	    LOR140=(Token)input.LT(1);
-            	    match(input,LOR,FOLLOW_LOR_in_logicalORExpression4672); 
+            	    match(input,LOR,FOLLOW_LOR_in_logicalORExpression4714); 
             	    LOR140_tree = (Object)adaptor.create(LOR140);
             	    root_0 = (Object)adaptor.becomeRoot(LOR140_tree, root_0);
 
-            	    pushFollow(FOLLOW_logicalANDExpression_in_logicalORExpression4675);
+            	    pushFollow(FOLLOW_logicalANDExpression_in_logicalORExpression4717);
             	    logicalANDExpression141=logicalANDExpression();
             	    _fsp--;
 
@@ -5184,7 +5218,7 @@
     };
 
     // $ANTLR start logicalORExpressionNoIn
-    // JS.g:1239:1: logicalORExpressionNoIn : logicalANDExpressionNoIn ( LOR logicalANDExpressionNoIn )* ;
+    // JS.g:1249:1: logicalORExpressionNoIn : logicalANDExpressionNoIn ( LOR logicalANDExpressionNoIn )* ;
     public final logicalORExpressionNoIn_return logicalORExpressionNoIn() throws RecognitionException {
         logicalORExpressionNoIn_return retval = new logicalORExpressionNoIn_return();
         retval.start = input.LT(1);
@@ -5200,17 +5234,17 @@
         Object LOR143_tree=null;
 
         try {
-            // JS.g:1240:2: ( logicalANDExpressionNoIn ( LOR logicalANDExpressionNoIn )* )
-            // JS.g:1240:4: logicalANDExpressionNoIn ( LOR logicalANDExpressionNoIn )*
+            // JS.g:1250:2: ( logicalANDExpressionNoIn ( LOR logicalANDExpressionNoIn )* )
+            // JS.g:1250:4: logicalANDExpressionNoIn ( LOR logicalANDExpressionNoIn )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_logicalANDExpressionNoIn_in_logicalORExpressionNoIn4690);
+            pushFollow(FOLLOW_logicalANDExpressionNoIn_in_logicalORExpressionNoIn4732);
             logicalANDExpressionNoIn142=logicalANDExpressionNoIn();
             _fsp--;
 
             adaptor.addChild(root_0, logicalANDExpressionNoIn142.getTree());
-            // JS.g:1240:29: ( LOR logicalANDExpressionNoIn )*
+            // JS.g:1250:29: ( LOR logicalANDExpressionNoIn )*
             loop37:
             do {
                 int alt37=2;
@@ -5223,14 +5257,14 @@
 
                 switch (alt37) {
             	case 1 :
-            	    // JS.g:1240:31: LOR logicalANDExpressionNoIn
+            	    // JS.g:1250:31: LOR logicalANDExpressionNoIn
             	    {
             	    LOR143=(Token)input.LT(1);
-            	    match(input,LOR,FOLLOW_LOR_in_logicalORExpressionNoIn4694); 
+            	    match(input,LOR,FOLLOW_LOR_in_logicalORExpressionNoIn4736); 
             	    LOR143_tree = (Object)adaptor.create(LOR143);
             	    root_0 = (Object)adaptor.becomeRoot(LOR143_tree, root_0);
 
-            	    pushFollow(FOLLOW_logicalANDExpressionNoIn_in_logicalORExpressionNoIn4697);
+            	    pushFollow(FOLLOW_logicalANDExpressionNoIn_in_logicalORExpressionNoIn4739);
             	    logicalANDExpressionNoIn144=logicalANDExpressionNoIn();
             	    _fsp--;
 
@@ -5269,7 +5303,7 @@
     };
 
     // $ANTLR start conditionalExpression
-    // JS.g:1247:1: conditionalExpression : logicalORExpression ( QUE assignmentExpression COLON assignmentExpression )? ;
+    // JS.g:1257: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);
@@ -5289,17 +5323,17 @@
         Object COLON148_tree=null;
 
         try {
-            // JS.g:1248:2: ( logicalORExpression ( QUE assignmentExpression COLON assignmentExpression )? )
-            // JS.g:1248:4: logicalORExpression ( QUE assignmentExpression COLON assignmentExpression )?
+            // JS.g:1258:2: ( logicalORExpression ( QUE assignmentExpression COLON assignmentExpression )? )
+            // JS.g:1258:4: logicalORExpression ( QUE assignmentExpression COLON assignmentExpression )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_logicalORExpression_in_conditionalExpression4716);
+            pushFollow(FOLLOW_logicalORExpression_in_conditionalExpression4758);
             logicalORExpression145=logicalORExpression();
             _fsp--;
 
             adaptor.addChild(root_0, logicalORExpression145.getTree());
-            // JS.g:1248:24: ( QUE assignmentExpression COLON assignmentExpression )?
+            // JS.g:1258:24: ( QUE assignmentExpression COLON assignmentExpression )?
             int alt38=2;
             int LA38_0 = input.LA(1);
 
@@ -5308,21 +5342,21 @@
             }
             switch (alt38) {
                 case 1 :
-                    // JS.g:1248:26: QUE assignmentExpression COLON assignmentExpression
+                    // JS.g:1258:26: QUE assignmentExpression COLON assignmentExpression
                     {
                     QUE146=(Token)input.LT(1);
-                    match(input,QUE,FOLLOW_QUE_in_conditionalExpression4720); 
+                    match(input,QUE,FOLLOW_QUE_in_conditionalExpression4762); 
                     QUE146_tree = (Object)adaptor.create(QUE146);
                     root_0 = (Object)adaptor.becomeRoot(QUE146_tree, root_0);
 
-                    pushFollow(FOLLOW_assignmentExpression_in_conditionalExpression4723);
+                    pushFollow(FOLLOW_assignmentExpression_in_conditionalExpression4765);
                     assignmentExpression147=assignmentExpression();
                     _fsp--;
 
                     adaptor.addChild(root_0, assignmentExpression147.getTree());
                     COLON148=(Token)input.LT(1);
-                    match(input,COLON,FOLLOW_COLON_in_conditionalExpression4725); 
-                    pushFollow(FOLLOW_assignmentExpression_in_conditionalExpression4728);
+                    match(input,COLON,FOLLOW_COLON_in_conditionalExpression4767); 
+                    pushFollow(FOLLOW_assignmentExpression_in_conditionalExpression4770);
                     assignmentExpression149=assignmentExpression();
                     _fsp--;
 
@@ -5358,7 +5392,7 @@
     };
 
     // $ANTLR start conditionalExpressionNoIn
-    // JS.g:1251:1: conditionalExpressionNoIn : logicalORExpressionNoIn ( QUE assignmentExpressionNoIn COLON assignmentExpressionNoIn )? ;
+    // JS.g:1261: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);
@@ -5378,17 +5412,17 @@
         Object COLON153_tree=null;
 
         try {
-            // JS.g:1252:2: ( logicalORExpressionNoIn ( QUE assignmentExpressionNoIn COLON assignmentExpressionNoIn )? )
-            // JS.g:1252:4: logicalORExpressionNoIn ( QUE assignmentExpressionNoIn COLON assignmentExpressionNoIn )?
+            // JS.g:1262:2: ( logicalORExpressionNoIn ( QUE assignmentExpressionNoIn COLON assignmentExpressionNoIn )? )
+            // JS.g:1262:4: logicalORExpressionNoIn ( QUE assignmentExpressionNoIn COLON assignmentExpressionNoIn )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_logicalORExpressionNoIn_in_conditionalExpressionNoIn4742);
+            pushFollow(FOLLOW_logicalORExpressionNoIn_in_conditionalExpressionNoIn4784);
             logicalORExpressionNoIn150=logicalORExpressionNoIn();
             _fsp--;
 
             adaptor.addChild(root_0, logicalORExpressionNoIn150.getTree());
-            // JS.g:1252:28: ( QUE assignmentExpressionNoIn COLON assignmentExpressionNoIn )?
+            // JS.g:1262:28: ( QUE assignmentExpressionNoIn COLON assignmentExpressionNoIn )?
             int alt39=2;
             int LA39_0 = input.LA(1);
 
@@ -5397,21 +5431,21 @@
             }
             switch (alt39) {
                 case 1 :
-                    // JS.g:1252:30: QUE assignmentExpressionNoIn COLON assignmentExpressionNoIn
+                    // JS.g:1262:30: QUE assignmentExpressionNoIn COLON assignmentExpressionNoIn
                     {
                     QUE151=(Token)input.LT(1);
-                    match(input,QUE,FOLLOW_QUE_in_conditionalExpressionNoIn4746); 
+                    match(input,QUE,FOLLOW_QUE_in_conditionalExpressionNoIn4788); 
                     QUE151_tree = (Object)adaptor.create(QUE151);
                     root_0 = (Object)adaptor.becomeRoot(QUE151_tree, root_0);
 
-                    pushFollow(FOLLOW_assignmentExpressionNoIn_in_conditionalExpressionNoIn4749);
+                    pushFollow(FOLLOW_assignmentExpressionNoIn_in_conditionalExpressionNoIn4791);
                     assignmentExpressionNoIn152=assignmentExpressionNoIn();
                     _fsp--;
 
                     adaptor.addChild(root_0, assignmentExpressionNoIn152.getTree());
                     COLON153=(Token)input.LT(1);
-                    match(input,COLON,FOLLOW_COLON_in_conditionalExpressionNoIn4751); 
-                    pushFollow(FOLLOW_assignmentExpressionNoIn_in_conditionalExpressionNoIn4754);
+                    match(input,COLON,FOLLOW_COLON_in_conditionalExpressionNoIn4793); 
+                    pushFollow(FOLLOW_assignmentExpressionNoIn_in_conditionalExpressionNoIn4796);
                     assignmentExpressionNoIn154=assignmentExpressionNoIn();
                     _fsp--;
 
@@ -5447,7 +5481,7 @@
     };
 
     // $ANTLR start assignmentExpression
-    // JS.g:1281:1: assignmentExpression : lhs= conditionalExpression ({...}? assignmentOperator assignmentExpression )? ;
+    // JS.g:1291:1: assignmentExpression : lhs= conditionalExpression ({...}? assignmentOperator assignmentExpression )? ;
     public final assignmentExpression_return assignmentExpression() throws RecognitionException {
         assignmentExpression_return retval = new assignmentExpression_return();
         retval.start = input.LT(1);
@@ -5466,17 +5500,17 @@
         	Object[] isLhs = new Object[1];
 
         try {
-            // JS.g:1286:2: (lhs= conditionalExpression ({...}? assignmentOperator assignmentExpression )? )
-            // JS.g:1286:4: lhs= conditionalExpression ({...}? assignmentOperator assignmentExpression )?
+            // JS.g:1296:2: (lhs= conditionalExpression ({...}? assignmentOperator assignmentExpression )? )
+            // JS.g:1296:4: lhs= conditionalExpression ({...}? assignmentOperator assignmentExpression )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_conditionalExpression_in_assignmentExpression4782);
+            pushFollow(FOLLOW_conditionalExpression_in_assignmentExpression4824);
             lhs=conditionalExpression();
             _fsp--;
 
             adaptor.addChild(root_0, lhs.getTree());
-            // JS.g:1287:2: ({...}? assignmentOperator assignmentExpression )?
+            // JS.g:1297:2: ({...}? assignmentOperator assignmentExpression )?
             int alt40=2;
             int LA40_0 = input.LA(1);
 
@@ -5489,17 +5523,17 @@
             }
             switch (alt40) {
                 case 1 :
-                    // JS.g:1287:4: {...}? assignmentOperator assignmentExpression
+                    // JS.g:1297:4: {...}? assignmentOperator assignmentExpression
                     {
                     if ( !( isLeftHandSideAssign(lhs, isLhs) ) ) {
                         throw new FailedPredicateException(input, "assignmentExpression", " isLeftHandSideAssign(lhs, isLhs) ");
                     }
-                    pushFollow(FOLLOW_assignmentOperator_in_assignmentExpression4789);
+                    pushFollow(FOLLOW_assignmentOperator_in_assignmentExpression4831);
                     assignmentOperator155=assignmentOperator();
                     _fsp--;
 
                     root_0 = (Object)adaptor.becomeRoot(assignmentOperator155.getTree(), root_0);
-                    pushFollow(FOLLOW_assignmentExpression_in_assignmentExpression4792);
+                    pushFollow(FOLLOW_assignmentExpression_in_assignmentExpression4834);
                     assignmentExpression156=assignmentExpression();
                     _fsp--;
 
@@ -5535,7 +5569,7 @@
     };
 
     // $ANTLR start assignmentOperator
-    // JS.g:1290:1: assignmentOperator : ( ASSIGN | MULASS | DIVASS | MODASS | ADDASS | SUBASS | SHLASS | SHRASS | SHUASS | ANDASS | XORASS | ORASS );
+    // JS.g:1300: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);
@@ -5547,7 +5581,7 @@
         Object set157_tree=null;
 
         try {
-            // JS.g:1291:3: ( ASSIGN | MULASS | DIVASS | MODASS | ADDASS | SUBASS | SHLASS | SHRASS | SHUASS | ANDASS | XORASS | ORASS )
+            // JS.g:1301:3: ( ASSIGN | MULASS | DIVASS | MODASS | ADDASS | SUBASS | SHLASS | SHRASS | SHUASS | ANDASS | XORASS | ORASS )
             // JS.g:
             {
             root_0 = (Object)adaptor.nil();
@@ -5589,7 +5623,7 @@
     };
 
     // $ANTLR start assignmentExpressionNoIn
-    // JS.g:1294:1: assignmentExpressionNoIn : lhs= conditionalExpressionNoIn ({...}? assignmentOperator assignmentExpressionNoIn )? ;
+    // JS.g:1304:1: assignmentExpressionNoIn : lhs= conditionalExpressionNoIn ({...}? assignmentOperator assignmentExpressionNoIn )? ;
     public final assignmentExpressionNoIn_return assignmentExpressionNoIn() throws RecognitionException {
         assignmentExpressionNoIn_return retval = new assignmentExpressionNoIn_return();
         retval.start = input.LT(1);
@@ -5608,17 +5642,17 @@
         	Object[] isLhs = new Object[1];
 
         try {
-            // JS.g:1299:2: (lhs= conditionalExpressionNoIn ({...}? assignmentOperator assignmentExpressionNoIn )? )
-            // JS.g:1299:4: lhs= conditionalExpressionNoIn ({...}? assignmentOperator assignmentExpressionNoIn )?
+            // JS.g:1309:2: (lhs= conditionalExpressionNoIn ({...}? assignmentOperator assignmentExpressionNoIn )? )
+            // JS.g:1309:4: lhs= conditionalExpressionNoIn ({...}? assignmentOperator assignmentExpressionNoIn )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_conditionalExpressionNoIn_in_assignmentExpressionNoIn4870);
+            pushFollow(FOLLOW_conditionalExpressionNoIn_in_assignmentExpressionNoIn4912);
             lhs=conditionalExpressionNoIn();
             _fsp--;
 
             adaptor.addChild(root_0, lhs.getTree());
-            // JS.g:1300:2: ({...}? assignmentOperator assignmentExpressionNoIn )?
+            // JS.g:1310:2: ({...}? assignmentOperator assignmentExpressionNoIn )?
             int alt41=2;
             int LA41_0 = input.LA(1);
 
@@ -5631,17 +5665,17 @@
             }
             switch (alt41) {
                 case 1 :
-                    // JS.g:1300:4: {...}? assignmentOperator assignmentExpressionNoIn
+                    // JS.g:1310:4: {...}? assignmentOperator assignmentExpressionNoIn
                     {
                     if ( !( isLeftHandSideAssign(lhs, isLhs) ) ) {
                         throw new FailedPredicateException(input, "assignmentExpressionNoIn", " isLeftHandSideAssign(lhs, isLhs) ");
                     }
-                    pushFollow(FOLLOW_assignmentOperator_in_assignmentExpressionNoIn4877);
+                    pushFollow(FOLLOW_assignmentOperator_in_assignmentExpressionNoIn4919);
                     assignmentOperator158=assignmentOperator();
                     _fsp--;
 
                     root_0 = (Object)adaptor.becomeRoot(assignmentOperator158.getTree(), root_0);
-                    pushFollow(FOLLOW_assignmentExpressionNoIn_in_assignmentExpressionNoIn4880);
+                    pushFollow(FOLLOW_assignmentExpressionNoIn_in_assignmentExpressionNoIn4922);
                     assignmentExpressionNoIn159=assignmentExpressionNoIn();
                     _fsp--;
 
@@ -5677,7 +5711,7 @@
     };
 
     // $ANTLR start expression
-    // JS.g:1307:1: expression : exprs+= assignmentExpression ( COMMA exprs+= assignmentExpression )* -> { $exprs.size() > 1 }? ^( CEXPR ( $exprs)+ ) -> $exprs;
+    // JS.g:1317: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);
@@ -5691,10 +5725,10 @@
         RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
         RewriteRuleSubtreeStream stream_assignmentExpression=new RewriteRuleSubtreeStream(adaptor,"rule assignmentExpression");
         try {
-            // JS.g:1308:2: (exprs+= assignmentExpression ( COMMA exprs+= assignmentExpression )* -> { $exprs.size() > 1 }? ^( CEXPR ( $exprs)+ ) -> $exprs)
-            // JS.g:1308:4: exprs+= assignmentExpression ( COMMA exprs+= assignmentExpression )*
+            // JS.g:1318:2: (exprs+= assignmentExpression ( COMMA exprs+= assignmentExpression )* -> { $exprs.size() > 1 }? ^( CEXPR ( $exprs)+ ) -> $exprs)
+            // JS.g:1318:4: exprs+= assignmentExpression ( COMMA exprs+= assignmentExpression )*
             {
-            pushFollow(FOLLOW_assignmentExpression_in_expression4902);
+            pushFollow(FOLLOW_assignmentExpression_in_expression4944);
             exprs=assignmentExpression();
             _fsp--;
 
@@ -5702,7 +5736,7 @@
             if (list_exprs==null) list_exprs=new ArrayList();
             list_exprs.add(exprs);
 
-            // JS.g:1308:32: ( COMMA exprs+= assignmentExpression )*
+            // JS.g:1318:32: ( COMMA exprs+= assignmentExpression )*
             loop42:
             do {
                 int alt42=2;
@@ -5715,13 +5749,13 @@
 
                 switch (alt42) {
             	case 1 :
-            	    // JS.g:1308:34: COMMA exprs+= assignmentExpression
+            	    // JS.g:1318:34: COMMA exprs+= assignmentExpression
             	    {
             	    COMMA160=(Token)input.LT(1);
-            	    match(input,COMMA,FOLLOW_COMMA_in_expression4906); 
+            	    match(input,COMMA,FOLLOW_COMMA_in_expression4948); 
             	    stream_COMMA.add(COMMA160);
 
-            	    pushFollow(FOLLOW_assignmentExpression_in_expression4910);
+            	    pushFollow(FOLLOW_assignmentExpression_in_expression4952);
             	    exprs=assignmentExpression();
             	    _fsp--;
 
@@ -5749,9 +5783,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();
-            // 1309:2: -> { $exprs.size() > 1 }? ^( CEXPR ( $exprs)+ )
+            // 1319:2: -> { $exprs.size() > 1 }? ^( CEXPR ( $exprs)+ )
             if ( list_exprs.size() > 1 ) {
-                // JS.g:1309:28: ^( CEXPR ( $exprs)+ )
+                // JS.g:1319:28: ^( CEXPR ( $exprs)+ )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(CEXPR, "CEXPR"), root_1);
@@ -5769,7 +5803,7 @@
                 }
 
             }
-            else // 1310:2: -> $exprs
+            else // 1320:2: -> $exprs
             {
                 adaptor.addChild(root_0, ((ParserRuleReturnScope)stream_exprs.next()).getTree());
 
@@ -5801,7 +5835,7 @@
     };
 
     // $ANTLR start expressionNoIn
-    // JS.g:1313:1: expressionNoIn : exprs+= assignmentExpressionNoIn ( COMMA exprs+= assignmentExpressionNoIn )* -> { $exprs.size() > 1 }? ^( CEXPR ( $exprs)+ ) -> $exprs;
+    // JS.g:1323: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);
@@ -5815,10 +5849,10 @@
         RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
         RewriteRuleSubtreeStream stream_assignmentExpressionNoIn=new RewriteRuleSubtreeStream(adaptor,"rule assignmentExpressionNoIn");
         try {
-            // JS.g:1314:2: (exprs+= assignmentExpressionNoIn ( COMMA exprs+= assignmentExpressionNoIn )* -> { $exprs.size() > 1 }? ^( CEXPR ( $exprs)+ ) -> $exprs)
-            // JS.g:1314:4: exprs+= assignmentExpressionNoIn ( COMMA exprs+= assignmentExpressionNoIn )*
+            // JS.g:1324:2: (exprs+= assignmentExpressionNoIn ( COMMA exprs+= assignmentExpressionNoIn )* -> { $exprs.size() > 1 }? ^( CEXPR ( $exprs)+ ) -> $exprs)
+            // JS.g:1324:4: exprs+= assignmentExpressionNoIn ( COMMA exprs+= assignmentExpressionNoIn )*
             {
-            pushFollow(FOLLOW_assignmentExpressionNoIn_in_expressionNoIn4947);
+            pushFollow(FOLLOW_assignmentExpressionNoIn_in_expressionNoIn4989);
             exprs=assignmentExpressionNoIn();
             _fsp--;
 
@@ -5826,7 +5860,7 @@
             if (list_exprs==null) list_exprs=new ArrayList();
             list_exprs.add(exprs);
 
-            // JS.g:1314:36: ( COMMA exprs+= assignmentExpressionNoIn )*
+            // JS.g:1324:36: ( COMMA exprs+= assignmentExpressionNoIn )*
             loop43:
             do {
                 int alt43=2;
@@ -5839,13 +5873,13 @@
 
                 switch (alt43) {
             	case 1 :
-            	    // JS.g:1314:38: COMMA exprs+= assignmentExpressionNoIn
+            	    // JS.g:1324:38: COMMA exprs+= assignmentExpressionNoIn
             	    {
             	    COMMA161=(Token)input.LT(1);
-            	    match(input,COMMA,FOLLOW_COMMA_in_expressionNoIn4951); 
+            	    match(input,COMMA,FOLLOW_COMMA_in_expressionNoIn4993); 
             	    stream_COMMA.add(COMMA161);
 
-            	    pushFollow(FOLLOW_assignmentExpressionNoIn_in_expressionNoIn4955);
+            	    pushFollow(FOLLOW_assignmentExpressionNoIn_in_expressionNoIn4997);
             	    exprs=assignmentExpressionNoIn();
             	    _fsp--;
 
@@ -5873,9 +5907,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();
-            // 1315:2: -> { $exprs.size() > 1 }? ^( CEXPR ( $exprs)+ )
+            // 1325:2: -> { $exprs.size() > 1 }? ^( CEXPR ( $exprs)+ )
             if ( list_exprs.size() > 1 ) {
-                // JS.g:1315:28: ^( CEXPR ( $exprs)+ )
+                // JS.g:1325:28: ^( CEXPR ( $exprs)+ )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(CEXPR, "CEXPR"), root_1);
@@ -5893,7 +5927,7 @@
                 }
 
             }
-            else // 1316:2: -> $exprs
+            else // 1326:2: -> $exprs
             {
                 adaptor.addChild(root_0, ((ParserRuleReturnScope)stream_exprs.next()).getTree());
 
@@ -5925,7 +5959,7 @@
     };
 
     // $ANTLR start semic
-    // JS.g:1341:1: semic : ( SEMIC | EOF | RBRACE | EOL | MultiLineComment );
+    // JS.g:1351: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);
@@ -5951,7 +5985,7 @@
         	promoteEOL(retval);
 
         try {
-            // JS.g:1349:2: ( SEMIC | EOF | RBRACE | EOL | MultiLineComment )
+            // JS.g:1359:2: ( SEMIC | EOF | RBRACE | EOL | MultiLineComment )
             int alt44=5;
             switch ( input.LA(1) ) {
             case SEMIC:
@@ -5981,19 +6015,19 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("1341:1: semic : ( SEMIC | EOF | RBRACE | EOL | MultiLineComment );", 44, 0, input);
+                    new NoViableAltException("1351:1: semic : ( SEMIC | EOF | RBRACE | EOL | MultiLineComment );", 44, 0, input);
 
                 throw nvae;
             }
 
             switch (alt44) {
                 case 1 :
-                    // JS.g:1349:4: SEMIC
+                    // JS.g:1359:4: SEMIC
                     {
                     root_0 = (Object)adaptor.nil();
 
                     SEMIC162=(Token)input.LT(1);
-                    match(input,SEMIC,FOLLOW_SEMIC_in_semic5006); 
+                    match(input,SEMIC,FOLLOW_SEMIC_in_semic5048); 
                     SEMIC162_tree = (Object)adaptor.create(SEMIC162);
                     adaptor.addChild(root_0, SEMIC162_tree);
 
@@ -6001,12 +6035,12 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1350:4: EOF
+                    // JS.g:1360:4: EOF
                     {
                     root_0 = (Object)adaptor.nil();
 
                     EOF163=(Token)input.LT(1);
-                    match(input,EOF,FOLLOW_EOF_in_semic5011); 
+                    match(input,EOF,FOLLOW_EOF_in_semic5053); 
                     EOF163_tree = (Object)adaptor.create(EOF163);
                     adaptor.addChild(root_0, EOF163_tree);
 
@@ -6014,12 +6048,12 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:1351:4: RBRACE
+                    // JS.g:1361:4: RBRACE
                     {
                     root_0 = (Object)adaptor.nil();
 
                     RBRACE164=(Token)input.LT(1);
-                    match(input,RBRACE,FOLLOW_RBRACE_in_semic5016); 
+                    match(input,RBRACE,FOLLOW_RBRACE_in_semic5058); 
                     RBRACE164_tree = (Object)adaptor.create(RBRACE164);
                     adaptor.addChild(root_0, RBRACE164_tree);
 
@@ -6028,12 +6062,12 @@
                     }
                     break;
                 case 4 :
-                    // JS.g:1352:4: EOL
+                    // JS.g:1362:4: EOL
                     {
                     root_0 = (Object)adaptor.nil();
 
                     EOL165=(Token)input.LT(1);
-                    match(input,EOL,FOLLOW_EOL_in_semic5023); 
+                    match(input,EOL,FOLLOW_EOL_in_semic5065); 
                     EOL165_tree = (Object)adaptor.create(EOL165);
                     adaptor.addChild(root_0, EOL165_tree);
 
@@ -6041,12 +6075,12 @@
                     }
                     break;
                 case 5 :
-                    // JS.g:1352:10: MultiLineComment
+                    // JS.g:1362:10: MultiLineComment
                     {
                     root_0 = (Object)adaptor.nil();
 
                     MultiLineComment166=(Token)input.LT(1);
-                    match(input,MultiLineComment,FOLLOW_MultiLineComment_in_semic5027); 
+                    match(input,MultiLineComment,FOLLOW_MultiLineComment_in_semic5069); 
                     MultiLineComment166_tree = (Object)adaptor.create(MultiLineComment166);
                     adaptor.addChild(root_0, MultiLineComment166_tree);
 
@@ -6077,7 +6111,7 @@
     };
 
     // $ANTLR start statement
-    // JS.g:1360:1: statement options {k=1; } : ({...}? block | statementTail );
+    // JS.g:1370: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);
@@ -6091,7 +6125,7 @@
 
 
         try {
-            // JS.g:1365:2: ({...}? block | statementTail )
+            // JS.g:1375:2: ({...}? block | statementTail )
             int alt45=2;
             int LA45_0 = input.LA(1);
 
@@ -6106,30 +6140,30 @@
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("1360:1: statement options {k=1; } : ({...}? block | statementTail );", 45, 1, input);
+                        new NoViableAltException("1370:1: statement options {k=1; } : ({...}? block | statementTail );", 45, 1, input);
 
                     throw nvae;
                 }
             }
-            else if ( ((LA45_0>=NULL && LA45_0<=BREAK)||(LA45_0>=CONTINUE && LA45_0<=DO)||(LA45_0>=FOR && LA45_0<=IF)||(LA45_0>=NEW && LA45_0<=YIELD)||LA45_0==WXML||LA45_0==CONST||LA45_0==LPAREN||LA45_0==LBRACK||LA45_0==SEMIC||(LA45_0>=ADD && LA45_0<=SUB)||(LA45_0>=INC && LA45_0<=DEC)||(LA45_0>=NOT && LA45_0<=INV)||(LA45_0>=StringLiteral && LA45_0<=XmlAttribute)||LA45_0==Identifier||LA45_0==RegularExpressionLiteral||(LA45_0>=DecimalLiteral && LA45_0<=HexIntegerLiteral)||LA45_0==XMLLiteral) ) {
+            else if ( ((LA45_0>=NULL && LA45_0<=BREAK)||(LA45_0>=CONTINUE && LA45_0<=DO)||(LA45_0>=FOR && LA45_0<=IF)||(LA45_0>=NEW && LA45_0<=YIELD)||(LA45_0>=WXML && LA45_0<=NAMESPACE)||LA45_0==CONST||LA45_0==LPAREN||LA45_0==LBRACK||LA45_0==SEMIC||(LA45_0>=ADD && LA45_0<=SUB)||(LA45_0>=INC && LA45_0<=DEC)||(LA45_0>=NOT && LA45_0<=INV)||(LA45_0>=StringLiteral && LA45_0<=XmlAttribute)||LA45_0==Identifier||LA45_0==RegularExpressionLiteral||(LA45_0>=DecimalLiteral && LA45_0<=HexIntegerLiteral)||LA45_0==XMLLiteral) ) {
                 alt45=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("1360:1: statement options {k=1; } : ({...}? block | statementTail );", 45, 0, input);
+                    new NoViableAltException("1370:1: statement options {k=1; } : ({...}? block | statementTail );", 45, 0, input);
 
                 throw nvae;
             }
             switch (alt45) {
                 case 1 :
-                    // JS.g:1365:4: {...}? block
+                    // JS.g:1375: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_statement5056);
+                    pushFollow(FOLLOW_block_in_statement5098);
                     block167=block();
                     _fsp--;
 
@@ -6138,11 +6172,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1366:4: statementTail
+                    // JS.g:1376:4: statementTail
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_statementTail_in_statement5061);
+                    pushFollow(FOLLOW_statementTail_in_statement5103);
                     statementTail168=statementTail();
                     _fsp--;
 
@@ -6174,7 +6208,7 @@
     };
 
     // $ANTLR start statementTail
-    // JS.g:1369:1: statementTail : ( variableStatement | emptyStatement | expressionStatement | ifStatement | iterationStatement | continueStatement | breakStatement | returnStatement | withStatement | labelledStatement | switchStatement | throwStatement | tryStatement | constStatement | namespaceStatement );
+    // JS.g:1379: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);
@@ -6214,7 +6248,7 @@
 
 
         try {
-            // JS.g:1370:2: ( variableStatement | emptyStatement | expressionStatement | ifStatement | iterationStatement | continueStatement | breakStatement | returnStatement | withStatement | labelledStatement | switchStatement | throwStatement | tryStatement | constStatement | namespaceStatement )
+            // JS.g:1380: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:
@@ -6261,6 +6295,7 @@
             case GET:
             case SET:
             case WXML:
+            case NAMESPACE:
             case Identifier:
                 {
                 int LA46_4 = input.LA(2);
@@ -6273,7 +6308,7 @@
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("1369:1: statementTail : ( variableStatement | emptyStatement | expressionStatement | ifStatement | iterationStatement | continueStatement | breakStatement | returnStatement | withStatement | labelledStatement | switchStatement | throwStatement | tryStatement | constStatement | namespaceStatement );", 46, 4, input);
+                        new NoViableAltException("1379:1: statementTail : ( variableStatement | emptyStatement | expressionStatement | ifStatement | iterationStatement | continueStatement | breakStatement | returnStatement | withStatement | labelledStatement | switchStatement | throwStatement | tryStatement | constStatement | namespaceStatement );", 46, 4, input);
 
                     throw nvae;
                 }
@@ -6338,18 +6373,18 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("1369:1: statementTail : ( variableStatement | emptyStatement | expressionStatement | ifStatement | iterationStatement | continueStatement | breakStatement | returnStatement | withStatement | labelledStatement | switchStatement | throwStatement | tryStatement | constStatement | namespaceStatement );", 46, 0, input);
+                    new NoViableAltException("1379: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:1370:4: variableStatement
+                    // JS.g:1380:4: variableStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_variableStatement_in_statementTail5073);
+                    pushFollow(FOLLOW_variableStatement_in_statementTail5115);
                     variableStatement169=variableStatement();
                     _fsp--;
 
@@ -6358,11 +6393,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1371:4: emptyStatement
+                    // JS.g:1381:4: emptyStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_emptyStatement_in_statementTail5078);
+                    pushFollow(FOLLOW_emptyStatement_in_statementTail5120);
                     emptyStatement170=emptyStatement();
                     _fsp--;
 
@@ -6371,11 +6406,11 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:1372:4: expressionStatement
+                    // JS.g:1382:4: expressionStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_expressionStatement_in_statementTail5083);
+                    pushFollow(FOLLOW_expressionStatement_in_statementTail5125);
                     expressionStatement171=expressionStatement();
                     _fsp--;
 
@@ -6384,11 +6419,11 @@
                     }
                     break;
                 case 4 :
-                    // JS.g:1373:4: ifStatement
+                    // JS.g:1383:4: ifStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_ifStatement_in_statementTail5088);
+                    pushFollow(FOLLOW_ifStatement_in_statementTail5130);
                     ifStatement172=ifStatement();
                     _fsp--;
 
@@ -6397,11 +6432,11 @@
                     }
                     break;
                 case 5 :
-                    // JS.g:1374:4: iterationStatement
+                    // JS.g:1384:4: iterationStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_iterationStatement_in_statementTail5093);
+                    pushFollow(FOLLOW_iterationStatement_in_statementTail5135);
                     iterationStatement173=iterationStatement();
                     _fsp--;
 
@@ -6410,11 +6445,11 @@
                     }
                     break;
                 case 6 :
-                    // JS.g:1375:4: continueStatement
+                    // JS.g:1385:4: continueStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_continueStatement_in_statementTail5098);
+                    pushFollow(FOLLOW_continueStatement_in_statementTail5140);
                     continueStatement174=continueStatement();
                     _fsp--;
 
@@ -6423,11 +6458,11 @@
                     }
                     break;
                 case 7 :
-                    // JS.g:1376:4: breakStatement
+                    // JS.g:1386:4: breakStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_breakStatement_in_statementTail5103);
+                    pushFollow(FOLLOW_breakStatement_in_statementTail5145);
                     breakStatement175=breakStatement();
                     _fsp--;
 
@@ -6436,11 +6471,11 @@
                     }
                     break;
                 case 8 :
-                    // JS.g:1377:4: returnStatement
+                    // JS.g:1387:4: returnStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_returnStatement_in_statementTail5108);
+                    pushFollow(FOLLOW_returnStatement_in_statementTail5150);
                     returnStatement176=returnStatement();
                     _fsp--;
 
@@ -6449,11 +6484,11 @@
                     }
                     break;
                 case 9 :
-                    // JS.g:1378:4: withStatement
+                    // JS.g:1388:4: withStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_withStatement_in_statementTail5113);
+                    pushFollow(FOLLOW_withStatement_in_statementTail5155);
                     withStatement177=withStatement();
                     _fsp--;
 
@@ -6462,11 +6497,11 @@
                     }
                     break;
                 case 10 :
-                    // JS.g:1379:4: labelledStatement
+                    // JS.g:1389:4: labelledStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_labelledStatement_in_statementTail5118);
+                    pushFollow(FOLLOW_labelledStatement_in_statementTail5160);
                     labelledStatement178=labelledStatement();
                     _fsp--;
 
@@ -6475,11 +6510,11 @@
                     }
                     break;
                 case 11 :
-                    // JS.g:1380:4: switchStatement
+                    // JS.g:1390:4: switchStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_switchStatement_in_statementTail5123);
+                    pushFollow(FOLLOW_switchStatement_in_statementTail5165);
                     switchStatement179=switchStatement();
                     _fsp--;
 
@@ -6488,11 +6523,11 @@
                     }
                     break;
                 case 12 :
-                    // JS.g:1381:4: throwStatement
+                    // JS.g:1391:4: throwStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_throwStatement_in_statementTail5128);
+                    pushFollow(FOLLOW_throwStatement_in_statementTail5170);
                     throwStatement180=throwStatement();
                     _fsp--;
 
@@ -6501,11 +6536,11 @@
                     }
                     break;
                 case 13 :
-                    // JS.g:1382:4: tryStatement
+                    // JS.g:1392:4: tryStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_tryStatement_in_statementTail5133);
+                    pushFollow(FOLLOW_tryStatement_in_statementTail5175);
                     tryStatement181=tryStatement();
                     _fsp--;
 
@@ -6514,11 +6549,11 @@
                     }
                     break;
                 case 14 :
-                    // JS.g:1383:4: constStatement
+                    // JS.g:1393:4: constStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_constStatement_in_statementTail5138);
+                    pushFollow(FOLLOW_constStatement_in_statementTail5180);
                     constStatement182=constStatement();
                     _fsp--;
 
@@ -6527,11 +6562,11 @@
                     }
                     break;
                 case 15 :
-                    // JS.g:1384:4: namespaceStatement
+                    // JS.g:1394:4: namespaceStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_namespaceStatement_in_statementTail5143);
+                    pushFollow(FOLLOW_namespaceStatement_in_statementTail5185);
                     namespaceStatement183=namespaceStatement();
                     _fsp--;
 
@@ -6563,7 +6598,7 @@
     };
 
     // $ANTLR start block
-    // JS.g:1389:1: block : lb= LBRACE ( statement )* RBRACE -> ^( BLOCK[$lb, \"BLOCK\"] ( statement )* ) ;
+    // JS.g:1399: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);
@@ -6581,29 +6616,29 @@
         RewriteRuleTokenStream stream_LBRACE=new RewriteRuleTokenStream(adaptor,"token LBRACE");
         RewriteRuleSubtreeStream stream_statement=new RewriteRuleSubtreeStream(adaptor,"rule statement");
         try {
-            // JS.g:1390:2: (lb= LBRACE ( statement )* RBRACE -> ^( BLOCK[$lb, \"BLOCK\"] ( statement )* ) )
-            // JS.g:1390:4: lb= LBRACE ( statement )* RBRACE
+            // JS.g:1400:2: (lb= LBRACE ( statement )* RBRACE -> ^( BLOCK[$lb, \"BLOCK\"] ( statement )* ) )
+            // JS.g:1400:4: lb= LBRACE ( statement )* RBRACE
             {
             lb=(Token)input.LT(1);
-            match(input,LBRACE,FOLLOW_LBRACE_in_block5158); 
+            match(input,LBRACE,FOLLOW_LBRACE_in_block5200); 
             stream_LBRACE.add(lb);
 
-            // JS.g:1390:14: ( statement )*
+            // JS.g:1400:14: ( statement )*
             loop47:
             do {
                 int alt47=2;
                 int LA47_0 = input.LA(1);
 
-                if ( ((LA47_0>=NULL && LA47_0<=BREAK)||(LA47_0>=CONTINUE && LA47_0<=DO)||(LA47_0>=FOR && LA47_0<=IF)||(LA47_0>=NEW && LA47_0<=YIELD)||LA47_0==WXML||LA47_0==CONST||LA47_0==LBRACE||LA47_0==LPAREN||LA47_0==LBRACK||LA47_0==SEMIC||(LA47_0>=ADD && LA47_0<=SUB)||(LA47_0>=INC && LA47_0<=DEC)||(LA47_0>=NOT && LA47_0<=INV)||(LA47_0>=StringLiteral && LA47_0<=XmlAttribute)||LA47_0==Identifier||LA47_0==RegularExpressionLiteral||(LA47_0>=DecimalLiteral && LA47_0<=HexIntegerLiteral)||LA47_0==XMLLiteral) ) {
+                if ( ((LA47_0>=NULL && LA47_0<=BREAK)||(LA47_0>=CONTINUE && LA47_0<=DO)||(LA47_0>=FOR && LA47_0<=IF)||(LA47_0>=NEW && LA47_0<=YIELD)||(LA47_0>=WXML && LA47_0<=NAMESPACE)||LA47_0==CONST||LA47_0==LBRACE||LA47_0==LPAREN||LA47_0==LBRACK||LA47_0==SEMIC||(LA47_0>=ADD && LA47_0<=SUB)||(LA47_0>=INC && LA47_0<=DEC)||(LA47_0>=NOT && LA47_0<=INV)||(LA47_0>=StringLiteral && LA47_0<=XmlAttribute)||LA47_0==Identifier||LA47_0==RegularExpressionLiteral||(LA47_0>=DecimalLiteral && LA47_0<=HexIntegerLiteral)||LA47_0==XMLLiteral) ) {
                     alt47=1;
                 }
 
 
                 switch (alt47) {
             	case 1 :
-            	    // JS.g:1390:14: statement
+            	    // JS.g:1400:14: statement
             	    {
-            	    pushFollow(FOLLOW_statement_in_block5160);
+            	    pushFollow(FOLLOW_statement_in_block5202);
             	    statement184=statement();
             	    _fsp--;
 
@@ -6618,7 +6653,7 @@
             } while (true);
 
             RBRACE185=(Token)input.LT(1);
-            match(input,RBRACE,FOLLOW_RBRACE_in_block5163); 
+            match(input,RBRACE,FOLLOW_RBRACE_in_block5205); 
             stream_RBRACE.add(RBRACE185);
 
 
@@ -6632,14 +6667,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1391:2: -> ^( BLOCK[$lb, \"BLOCK\"] ( statement )* )
+            // 1401:2: -> ^( BLOCK[$lb, \"BLOCK\"] ( statement )* )
             {
-                // JS.g:1391:5: ^( BLOCK[$lb, \"BLOCK\"] ( statement )* )
+                // JS.g:1401: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:1391:28: ( statement )*
+                // JS.g:1401:28: ( statement )*
                 while ( stream_statement.hasNext() ) {
                     adaptor.addChild(root_1, stream_statement.next());
 
@@ -6677,7 +6712,7 @@
     };
 
     // $ANTLR start variableStatement
-    // JS.g:1398:1: variableStatement : VAR variableDeclaration ( COMMA variableDeclaration )* semic -> ^( VAR ( variableDeclaration )+ ) ;
+    // JS.g:1408: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);
@@ -6700,19 +6735,19 @@
         RewriteRuleSubtreeStream stream_variableDeclaration=new RewriteRuleSubtreeStream(adaptor,"rule variableDeclaration");
         RewriteRuleSubtreeStream stream_semic=new RewriteRuleSubtreeStream(adaptor,"rule semic");
         try {
-            // JS.g:1399:2: ( VAR variableDeclaration ( COMMA variableDeclaration )* semic -> ^( VAR ( variableDeclaration )+ ) )
-            // JS.g:1399:4: VAR variableDeclaration ( COMMA variableDeclaration )* semic
+            // JS.g:1409:2: ( VAR variableDeclaration ( COMMA variableDeclaration )* semic -> ^( VAR ( variableDeclaration )+ ) )
+            // JS.g:1409:4: VAR variableDeclaration ( COMMA variableDeclaration )* semic
             {
             VAR186=(Token)input.LT(1);
-            match(input,VAR,FOLLOW_VAR_in_variableStatement5192); 
+            match(input,VAR,FOLLOW_VAR_in_variableStatement5234); 
             stream_VAR.add(VAR186);
 
-            pushFollow(FOLLOW_variableDeclaration_in_variableStatement5194);
+            pushFollow(FOLLOW_variableDeclaration_in_variableStatement5236);
             variableDeclaration187=variableDeclaration();
             _fsp--;
 
             stream_variableDeclaration.add(variableDeclaration187.getTree());
-            // JS.g:1399:28: ( COMMA variableDeclaration )*
+            // JS.g:1409:28: ( COMMA variableDeclaration )*
             loop48:
             do {
                 int alt48=2;
@@ -6725,13 +6760,13 @@
 
                 switch (alt48) {
             	case 1 :
-            	    // JS.g:1399:30: COMMA variableDeclaration
+            	    // JS.g:1409:30: COMMA variableDeclaration
             	    {
             	    COMMA188=(Token)input.LT(1);
-            	    match(input,COMMA,FOLLOW_COMMA_in_variableStatement5198); 
+            	    match(input,COMMA,FOLLOW_COMMA_in_variableStatement5240); 
             	    stream_COMMA.add(COMMA188);
 
-            	    pushFollow(FOLLOW_variableDeclaration_in_variableStatement5200);
+            	    pushFollow(FOLLOW_variableDeclaration_in_variableStatement5242);
             	    variableDeclaration189=variableDeclaration();
             	    _fsp--;
 
@@ -6745,7 +6780,7 @@
                 }
             } while (true);
 
-            pushFollow(FOLLOW_semic_in_variableStatement5205);
+            pushFollow(FOLLOW_semic_in_variableStatement5247);
             semic190=semic();
             _fsp--;
 
@@ -6761,9 +6796,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1400:2: -> ^( VAR ( variableDeclaration )+ )
+            // 1410:2: -> ^( VAR ( variableDeclaration )+ )
             {
-                // JS.g:1400:5: ^( VAR ( variableDeclaration )+ )
+                // JS.g:1410:5: ^( VAR ( variableDeclaration )+ )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_VAR.next(), root_1);
@@ -6808,7 +6843,7 @@
     };
 
     // $ANTLR start variableDeclaration
-    // JS.g:1403:1: variableDeclaration : identifier ( ASSIGN assignmentExpression )? ;
+    // JS.g:1413:1: variableDeclaration : identifier ( ASSIGN assignmentExpression )? ;
     public final variableDeclaration_return variableDeclaration() throws RecognitionException {
         variableDeclaration_return retval = new variableDeclaration_return();
         retval.start = input.LT(1);
@@ -6824,17 +6859,17 @@
         Object ASSIGN192_tree=null;
 
         try {
-            // JS.g:1404:2: ( identifier ( ASSIGN assignmentExpression )? )
-            // JS.g:1404:4: identifier ( ASSIGN assignmentExpression )?
+            // JS.g:1414:2: ( identifier ( ASSIGN assignmentExpression )? )
+            // JS.g:1414:4: identifier ( ASSIGN assignmentExpression )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_identifier_in_variableDeclaration5228);
+            pushFollow(FOLLOW_identifier_in_variableDeclaration5270);
             identifier191=identifier();
             _fsp--;
 
             adaptor.addChild(root_0, identifier191.getTree());
-            // JS.g:1404:15: ( ASSIGN assignmentExpression )?
+            // JS.g:1414:15: ( ASSIGN assignmentExpression )?
             int alt49=2;
             int LA49_0 = input.LA(1);
 
@@ -6843,14 +6878,14 @@
             }
             switch (alt49) {
                 case 1 :
-                    // JS.g:1404:17: ASSIGN assignmentExpression
+                    // JS.g:1414:17: ASSIGN assignmentExpression
                     {
                     ASSIGN192=(Token)input.LT(1);
-                    match(input,ASSIGN,FOLLOW_ASSIGN_in_variableDeclaration5232); 
+                    match(input,ASSIGN,FOLLOW_ASSIGN_in_variableDeclaration5274); 
                     ASSIGN192_tree = (Object)adaptor.create(ASSIGN192);
                     root_0 = (Object)adaptor.becomeRoot(ASSIGN192_tree, root_0);
 
-                    pushFollow(FOLLOW_assignmentExpression_in_variableDeclaration5235);
+                    pushFollow(FOLLOW_assignmentExpression_in_variableDeclaration5277);
                     assignmentExpression193=assignmentExpression();
                     _fsp--;
 
@@ -6886,7 +6921,7 @@
     };
 
     // $ANTLR start variableDeclarationNoIn
-    // JS.g:1407:1: variableDeclarationNoIn : identifier ( ASSIGN assignmentExpressionNoIn )? ;
+    // JS.g:1417:1: variableDeclarationNoIn : identifier ( ASSIGN assignmentExpressionNoIn )? ;
     public final variableDeclarationNoIn_return variableDeclarationNoIn() throws RecognitionException {
         variableDeclarationNoIn_return retval = new variableDeclarationNoIn_return();
         retval.start = input.LT(1);
@@ -6902,17 +6937,17 @@
         Object ASSIGN195_tree=null;
 
         try {
-            // JS.g:1408:2: ( identifier ( ASSIGN assignmentExpressionNoIn )? )
-            // JS.g:1408:4: identifier ( ASSIGN assignmentExpressionNoIn )?
+            // JS.g:1418:2: ( identifier ( ASSIGN assignmentExpressionNoIn )? )
+            // JS.g:1418:4: identifier ( ASSIGN assignmentExpressionNoIn )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_identifier_in_variableDeclarationNoIn5250);
+            pushFollow(FOLLOW_identifier_in_variableDeclarationNoIn5292);
             identifier194=identifier();
             _fsp--;
 
             adaptor.addChild(root_0, identifier194.getTree());
-            // JS.g:1408:15: ( ASSIGN assignmentExpressionNoIn )?
+            // JS.g:1418:15: ( ASSIGN assignmentExpressionNoIn )?
             int alt50=2;
             int LA50_0 = input.LA(1);
 
@@ -6921,14 +6956,14 @@
             }
             switch (alt50) {
                 case 1 :
-                    // JS.g:1408:17: ASSIGN assignmentExpressionNoIn
+                    // JS.g:1418:17: ASSIGN assignmentExpressionNoIn
                     {
                     ASSIGN195=(Token)input.LT(1);
-                    match(input,ASSIGN,FOLLOW_ASSIGN_in_variableDeclarationNoIn5254); 
+                    match(input,ASSIGN,FOLLOW_ASSIGN_in_variableDeclarationNoIn5296); 
                     ASSIGN195_tree = (Object)adaptor.create(ASSIGN195);
                     root_0 = (Object)adaptor.becomeRoot(ASSIGN195_tree, root_0);
 
-                    pushFollow(FOLLOW_assignmentExpressionNoIn_in_variableDeclarationNoIn5257);
+                    pushFollow(FOLLOW_assignmentExpressionNoIn_in_variableDeclarationNoIn5299);
                     assignmentExpressionNoIn196=assignmentExpressionNoIn();
                     _fsp--;
 
@@ -6964,7 +6999,7 @@
     };
 
     // $ANTLR start constStatement
-    // JS.g:1411:1: constStatement : CONST variableDeclaration ( COMMA variableDeclaration )* semic -> ^( CONST ( variableDeclaration )+ ) ;
+    // JS.g:1421: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);
@@ -6987,19 +7022,19 @@
         RewriteRuleSubtreeStream stream_variableDeclaration=new RewriteRuleSubtreeStream(adaptor,"rule variableDeclaration");
         RewriteRuleSubtreeStream stream_semic=new RewriteRuleSubtreeStream(adaptor,"rule semic");
         try {
-            // JS.g:1412:3: ( CONST variableDeclaration ( COMMA variableDeclaration )* semic -> ^( CONST ( variableDeclaration )+ ) )
-            // JS.g:1412:5: CONST variableDeclaration ( COMMA variableDeclaration )* semic
+            // JS.g:1422:3: ( CONST variableDeclaration ( COMMA variableDeclaration )* semic -> ^( CONST ( variableDeclaration )+ ) )
+            // JS.g:1422:5: CONST variableDeclaration ( COMMA variableDeclaration )* semic
             {
             CONST197=(Token)input.LT(1);
-            match(input,CONST,FOLLOW_CONST_in_constStatement5272); 
+            match(input,CONST,FOLLOW_CONST_in_constStatement5314); 
             stream_CONST.add(CONST197);
 
-            pushFollow(FOLLOW_variableDeclaration_in_constStatement5274);
+            pushFollow(FOLLOW_variableDeclaration_in_constStatement5316);
             variableDeclaration198=variableDeclaration();
             _fsp--;
 
             stream_variableDeclaration.add(variableDeclaration198.getTree());
-            // JS.g:1412:31: ( COMMA variableDeclaration )*
+            // JS.g:1422:31: ( COMMA variableDeclaration )*
             loop51:
             do {
                 int alt51=2;
@@ -7012,13 +7047,13 @@
 
                 switch (alt51) {
             	case 1 :
-            	    // JS.g:1412:33: COMMA variableDeclaration
+            	    // JS.g:1422:33: COMMA variableDeclaration
             	    {
             	    COMMA199=(Token)input.LT(1);
-            	    match(input,COMMA,FOLLOW_COMMA_in_constStatement5278); 
+            	    match(input,COMMA,FOLLOW_COMMA_in_constStatement5320); 
             	    stream_COMMA.add(COMMA199);
 
-            	    pushFollow(FOLLOW_variableDeclaration_in_constStatement5280);
+            	    pushFollow(FOLLOW_variableDeclaration_in_constStatement5322);
             	    variableDeclaration200=variableDeclaration();
             	    _fsp--;
 
@@ -7032,7 +7067,7 @@
                 }
             } while (true);
 
-            pushFollow(FOLLOW_semic_in_constStatement5285);
+            pushFollow(FOLLOW_semic_in_constStatement5327);
             semic201=semic();
             _fsp--;
 
@@ -7048,9 +7083,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1413:3: -> ^( CONST ( variableDeclaration )+ )
+            // 1423:3: -> ^( CONST ( variableDeclaration )+ )
             {
-                // JS.g:1413:6: ^( CONST ( variableDeclaration )+ )
+                // JS.g:1423:6: ^( CONST ( variableDeclaration )+ )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_CONST.next(), root_1);
@@ -7095,7 +7130,7 @@
     };
 
     // $ANTLR start emptyStatement
-    // JS.g:1420:1: emptyStatement : SEMIC ;
+    // JS.g:1430:1: emptyStatement : SEMIC ;
     public final emptyStatement_return emptyStatement() throws RecognitionException {
         emptyStatement_return retval = new emptyStatement_return();
         retval.start = input.LT(1);
@@ -7107,13 +7142,13 @@
         Object SEMIC202_tree=null;
 
         try {
-            // JS.g:1421:2: ( SEMIC )
-            // JS.g:1421:4: SEMIC
+            // JS.g:1431:2: ( SEMIC )
+            // JS.g:1431:4: SEMIC
             {
             root_0 = (Object)adaptor.nil();
 
             SEMIC202=(Token)input.LT(1);
-            match(input,SEMIC,FOLLOW_SEMIC_in_emptyStatement5315); 
+            match(input,SEMIC,FOLLOW_SEMIC_in_emptyStatement5357); 
 
             }
 
@@ -7139,7 +7174,7 @@
     };
 
     // $ANTLR start expressionStatement
-    // JS.g:1434:1: expressionStatement : expression semic ;
+    // JS.g:1444:1: expressionStatement : expression semic ;
     public final expressionStatement_return expressionStatement() throws RecognitionException {
         expressionStatement_return retval = new expressionStatement_return();
         retval.start = input.LT(1);
@@ -7153,17 +7188,17 @@
 
 
         try {
-            // JS.g:1435:2: ( expression semic )
-            // JS.g:1435:4: expression semic
+            // JS.g:1445:2: ( expression semic )
+            // JS.g:1445:4: expression semic
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_expression_in_expressionStatement5334);
+            pushFollow(FOLLOW_expression_in_expressionStatement5376);
             expression203=expression();
             _fsp--;
 
             adaptor.addChild(root_0, expression203.getTree());
-            pushFollow(FOLLOW_semic_in_expressionStatement5336);
+            pushFollow(FOLLOW_semic_in_expressionStatement5378);
             semic204=semic();
             _fsp--;
 
@@ -7192,7 +7227,7 @@
     };
 
     // $ANTLR start ifStatement
-    // JS.g:1442:1: ifStatement : IF LPAREN expression RPAREN statement ({...}? ELSE statement )? -> ^( IF expression ( statement )+ ) ;
+    // JS.g:1452: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);
@@ -7221,32 +7256,32 @@
         RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
         RewriteRuleSubtreeStream stream_statement=new RewriteRuleSubtreeStream(adaptor,"rule statement");
         try {
-            // JS.g:1444:2: ( IF LPAREN expression RPAREN statement ({...}? ELSE statement )? -> ^( IF expression ( statement )+ ) )
-            // JS.g:1444:4: IF LPAREN expression RPAREN statement ({...}? ELSE statement )?
+            // 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 )?
             {
             IF205=(Token)input.LT(1);
-            match(input,IF,FOLLOW_IF_in_ifStatement5354); 
+            match(input,IF,FOLLOW_IF_in_ifStatement5396); 
             stream_IF.add(IF205);
 
             LPAREN206=(Token)input.LT(1);
-            match(input,LPAREN,FOLLOW_LPAREN_in_ifStatement5356); 
+            match(input,LPAREN,FOLLOW_LPAREN_in_ifStatement5398); 
             stream_LPAREN.add(LPAREN206);
 
-            pushFollow(FOLLOW_expression_in_ifStatement5358);
+            pushFollow(FOLLOW_expression_in_ifStatement5400);
             expression207=expression();
             _fsp--;
 
             stream_expression.add(expression207.getTree());
             RPAREN208=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_ifStatement5360); 
+            match(input,RPAREN,FOLLOW_RPAREN_in_ifStatement5402); 
             stream_RPAREN.add(RPAREN208);
 
-            pushFollow(FOLLOW_statement_in_ifStatement5362);
+            pushFollow(FOLLOW_statement_in_ifStatement5404);
             statement209=statement();
             _fsp--;
 
             stream_statement.add(statement209.getTree());
-            // JS.g:1444:42: ({...}? ELSE statement )?
+            // JS.g:1454:42: ({...}? ELSE statement )?
             int alt52=2;
             int LA52_0 = input.LA(1);
 
@@ -7259,16 +7294,16 @@
             }
             switch (alt52) {
                 case 1 :
-                    // JS.g:1444:44: {...}? ELSE statement
+                    // JS.g:1454: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_ifStatement5368); 
+                    match(input,ELSE,FOLLOW_ELSE_in_ifStatement5410); 
                     stream_ELSE.add(ELSE210);
 
-                    pushFollow(FOLLOW_statement_in_ifStatement5370);
+                    pushFollow(FOLLOW_statement_in_ifStatement5412);
                     statement211=statement();
                     _fsp--;
 
@@ -7281,7 +7316,7 @@
 
 
             // AST REWRITE
-            // elements: expression, statement, IF
+            // elements: statement, IF, expression
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -7290,9 +7325,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1445:2: -> ^( IF expression ( statement )+ )
+            // 1455:2: -> ^( IF expression ( statement )+ )
             {
-                // JS.g:1445:5: ^( IF expression ( statement )+ )
+                // JS.g:1455:5: ^( IF expression ( statement )+ )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_IF.next(), root_1);
@@ -7338,7 +7373,7 @@
     };
 
     // $ANTLR start iterationStatement
-    // JS.g:1452:1: iterationStatement : ( doStatement | whileStatement | forEachStatement | forStatement );
+    // JS.g:1462:1: iterationStatement : ( doStatement | whileStatement | forEachStatement | forStatement );
     public final iterationStatement_return iterationStatement() throws RecognitionException {
         iterationStatement_return retval = new iterationStatement_return();
         retval.start = input.LT(1);
@@ -7356,7 +7391,7 @@
 
 
         try {
-            // JS.g:1453:2: ( doStatement | whileStatement | forEachStatement | forStatement )
+            // JS.g:1463:2: ( doStatement | whileStatement | forEachStatement | forStatement )
             int alt53=4;
             switch ( input.LA(1) ) {
             case DO:
@@ -7381,7 +7416,7 @@
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("1452:1: iterationStatement : ( doStatement | whileStatement | forEachStatement | forStatement );", 53, 3, input);
+                        new NoViableAltException("1462:1: iterationStatement : ( doStatement | whileStatement | forEachStatement | forStatement );", 53, 3, input);
 
                     throw nvae;
                 }
@@ -7389,18 +7424,18 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("1452:1: iterationStatement : ( doStatement | whileStatement | forEachStatement | forStatement );", 53, 0, input);
+                    new NoViableAltException("1462:1: iterationStatement : ( doStatement | whileStatement | forEachStatement | forStatement );", 53, 0, input);
 
                 throw nvae;
             }
 
             switch (alt53) {
                 case 1 :
-                    // JS.g:1453:4: doStatement
+                    // JS.g:1463:4: doStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_doStatement_in_iterationStatement5403);
+                    pushFollow(FOLLOW_doStatement_in_iterationStatement5445);
                     doStatement212=doStatement();
                     _fsp--;
 
@@ -7409,11 +7444,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1454:4: whileStatement
+                    // JS.g:1464:4: whileStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_whileStatement_in_iterationStatement5408);
+                    pushFollow(FOLLOW_whileStatement_in_iterationStatement5450);
                     whileStatement213=whileStatement();
                     _fsp--;
 
@@ -7422,11 +7457,11 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:1455:4: forEachStatement
+                    // JS.g:1465:4: forEachStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_forEachStatement_in_iterationStatement5413);
+                    pushFollow(FOLLOW_forEachStatement_in_iterationStatement5455);
                     forEachStatement214=forEachStatement();
                     _fsp--;
 
@@ -7435,11 +7470,11 @@
                     }
                     break;
                 case 4 :
-                    // JS.g:1456:4: forStatement
+                    // JS.g:1466:4: forStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_forStatement_in_iterationStatement5418);
+                    pushFollow(FOLLOW_forStatement_in_iterationStatement5460);
                     forStatement215=forStatement();
                     _fsp--;
 
@@ -7471,7 +7506,7 @@
     };
 
     // $ANTLR start doStatement
-    // JS.g:1459:1: doStatement : DO statement WHILE LPAREN expression RPAREN semic -> ^( DO statement expression ) ;
+    // JS.g:1469: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);
@@ -7501,36 +7536,36 @@
         RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
         RewriteRuleSubtreeStream stream_semic=new RewriteRuleSubtreeStream(adaptor,"rule semic");
         try {
-            // JS.g:1460:2: ( DO statement WHILE LPAREN expression RPAREN semic -> ^( DO statement expression ) )
-            // JS.g:1460:4: DO statement WHILE LPAREN expression RPAREN semic
+            // 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
             {
             DO216=(Token)input.LT(1);
-            match(input,DO,FOLLOW_DO_in_doStatement5430); 
+            match(input,DO,FOLLOW_DO_in_doStatement5472); 
             stream_DO.add(DO216);
 
-            pushFollow(FOLLOW_statement_in_doStatement5432);
+            pushFollow(FOLLOW_statement_in_doStatement5474);
             statement217=statement();
             _fsp--;
 
             stream_statement.add(statement217.getTree());
             WHILE218=(Token)input.LT(1);
-            match(input,WHILE,FOLLOW_WHILE_in_doStatement5434); 
+            match(input,WHILE,FOLLOW_WHILE_in_doStatement5476); 
             stream_WHILE.add(WHILE218);
 
             LPAREN219=(Token)input.LT(1);
-            match(input,LPAREN,FOLLOW_LPAREN_in_doStatement5436); 
+            match(input,LPAREN,FOLLOW_LPAREN_in_doStatement5478); 
             stream_LPAREN.add(LPAREN219);
 
-            pushFollow(FOLLOW_expression_in_doStatement5438);
+            pushFollow(FOLLOW_expression_in_doStatement5480);
             expression220=expression();
             _fsp--;
 
             stream_expression.add(expression220.getTree());
             RPAREN221=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_doStatement5440); 
+            match(input,RPAREN,FOLLOW_RPAREN_in_doStatement5482); 
             stream_RPAREN.add(RPAREN221);
 
-            pushFollow(FOLLOW_semic_in_doStatement5442);
+            pushFollow(FOLLOW_semic_in_doStatement5484);
             semic222=semic();
             _fsp--;
 
@@ -7546,9 +7581,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1461:2: -> ^( DO statement expression )
+            // 1471:2: -> ^( DO statement expression )
             {
-                // JS.g:1461:5: ^( DO statement expression )
+                // JS.g:1471:5: ^( DO statement expression )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_DO.next(), root_1);
@@ -7587,7 +7622,7 @@
     };
 
     // $ANTLR start whileStatement
-    // JS.g:1464:1: whileStatement : WHILE LPAREN expression RPAREN statement ;
+    // JS.g:1474: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);
@@ -7607,26 +7642,26 @@
         Object RPAREN226_tree=null;
 
         try {
-            // JS.g:1465:2: ( WHILE LPAREN expression RPAREN statement )
-            // JS.g:1465:4: WHILE LPAREN expression RPAREN statement
+            // JS.g:1475:2: ( WHILE LPAREN expression RPAREN statement )
+            // JS.g:1475:4: WHILE LPAREN expression RPAREN statement
             {
             root_0 = (Object)adaptor.nil();
 
             WHILE223=(Token)input.LT(1);
-            match(input,WHILE,FOLLOW_WHILE_in_whileStatement5467); 
+            match(input,WHILE,FOLLOW_WHILE_in_whileStatement5509); 
             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_whileStatement5470); 
-            pushFollow(FOLLOW_expression_in_whileStatement5473);
+            match(input,LPAREN,FOLLOW_LPAREN_in_whileStatement5512); 
+            pushFollow(FOLLOW_expression_in_whileStatement5515);
             expression225=expression();
             _fsp--;
 
             adaptor.addChild(root_0, expression225.getTree());
             RPAREN226=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_whileStatement5475); 
-            pushFollow(FOLLOW_statement_in_whileStatement5478);
+            match(input,RPAREN,FOLLOW_RPAREN_in_whileStatement5517); 
+            pushFollow(FOLLOW_statement_in_whileStatement5520);
             statement227=statement();
             _fsp--;
 
@@ -7656,7 +7691,7 @@
     };
 
     // $ANTLR start forEachStatement
-    // JS.g:1510:1: forEachStatement : FOR EACH LPAREN forEachControl RPAREN statement ;
+    // JS.g:1520: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);
@@ -7676,34 +7711,69 @@
         Object EACH229_tree=null;
         Object LPAREN230_tree=null;
         Object RPAREN232_tree=null;
-
+        RewriteRuleTokenStream stream_FOR=new RewriteRuleTokenStream(adaptor,"token FOR");
+        RewriteRuleTokenStream stream_RPAREN=new RewriteRuleTokenStream(adaptor,"token RPAREN");
+        RewriteRuleTokenStream stream_EACH=new RewriteRuleTokenStream(adaptor,"token EACH");
+        RewriteRuleTokenStream stream_LPAREN=new RewriteRuleTokenStream(adaptor,"token LPAREN");
+        RewriteRuleSubtreeStream stream_statement=new RewriteRuleSubtreeStream(adaptor,"rule statement");
+        RewriteRuleSubtreeStream stream_forEachControl=new RewriteRuleSubtreeStream(adaptor,"rule forEachControl");
         try {
-            // JS.g:1511:3: ( FOR EACH LPAREN forEachControl RPAREN statement )
-            // JS.g:1511:5: FOR EACH LPAREN forEachControl RPAREN statement
+            // JS.g:1521:3: ( FOR EACH LPAREN forEachControl RPAREN statement -> ^( FOREACH forEachControl statement ) )
+            // JS.g:1521:5: FOR EACH LPAREN forEachControl RPAREN statement
             {
-            root_0 = (Object)adaptor.nil();
-
             FOR228=(Token)input.LT(1);
-            match(input,FOR,FOLLOW_FOR_in_forEachStatement5493); 
+            match(input,FOR,FOLLOW_FOR_in_forEachStatement5535); 
+            stream_FOR.add(FOR228);
+
             EACH229=(Token)input.LT(1);
-            match(input,EACH,FOLLOW_EACH_in_forEachStatement5496); 
-            EACH229_tree = (Object)adaptor.create(EACH229);
-            root_0 = (Object)adaptor.becomeRoot(EACH229_tree, root_0);
+            match(input,EACH,FOLLOW_EACH_in_forEachStatement5537); 
+            stream_EACH.add(EACH229);
 
             LPAREN230=(Token)input.LT(1);
-            match(input,LPAREN,FOLLOW_LPAREN_in_forEachStatement5499); 
-            pushFollow(FOLLOW_forEachControl_in_forEachStatement5502);
+            match(input,LPAREN,FOLLOW_LPAREN_in_forEachStatement5539); 
+            stream_LPAREN.add(LPAREN230);
+
+            pushFollow(FOLLOW_forEachControl_in_forEachStatement5541);
             forEachControl231=forEachControl();
             _fsp--;
 
-            adaptor.addChild(root_0, forEachControl231.getTree());
+            stream_forEachControl.add(forEachControl231.getTree());
             RPAREN232=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_forEachStatement5504); 
-            pushFollow(FOLLOW_statement_in_forEachStatement5507);
+            match(input,RPAREN,FOLLOW_RPAREN_in_forEachStatement5543); 
+            stream_RPAREN.add(RPAREN232);
+
+            pushFollow(FOLLOW_statement_in_forEachStatement5545);
             statement233=statement();
             _fsp--;
 
-            adaptor.addChild(root_0, statement233.getTree());
+            stream_statement.add(statement233.getTree());
+
+            // AST REWRITE
+            // elements: statement, forEachControl
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1522:4: -> ^( FOREACH forEachControl statement )
+            {
+                // JS.g:1522:7: ^( FOREACH forEachControl statement )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(adaptor.create(FOREACH, "FOREACH"), root_1);
+
+                adaptor.addChild(root_1, stream_forEachControl.next());
+                adaptor.addChild(root_1, stream_statement.next());
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+
 
             }
 
@@ -7729,7 +7799,7 @@
     };
 
     // $ANTLR start forEachControl
-    // JS.g:1514:1: forEachControl : ( forControlVar | forControlExpression );
+    // JS.g:1525:1: forEachControl : ( forControlVar | forControlExpression );
     public final forEachControl_return forEachControl() throws RecognitionException {
         forEachControl_return retval = new forEachControl_return();
         retval.start = input.LT(1);
@@ -7743,29 +7813,29 @@
 
 
         try {
-            // JS.g:1515:3: ( forControlVar | forControlExpression )
+            // JS.g:1526:3: ( forControlVar | forControlExpression )
             int alt54=2;
             int LA54_0 = input.LA(1);
 
             if ( (LA54_0==VAR) ) {
                 alt54=1;
             }
-            else if ( ((LA54_0>=NULL && LA54_0<=FALSE)||LA54_0==DELETE||(LA54_0>=EACH && LA54_0<=FUNCTION)||LA54_0==NEW||LA54_0==THIS||LA54_0==TYPEOF||LA54_0==VOID||(LA54_0>=GET && LA54_0<=YIELD)||LA54_0==WXML||LA54_0==LBRACE||LA54_0==LPAREN||LA54_0==LBRACK||(LA54_0>=ADD && LA54_0<=SUB)||(LA54_0>=INC && LA54_0<=DEC)||(LA54_0>=NOT && LA54_0<=INV)||(LA54_0>=StringLiteral && LA54_0<=XmlAttribute)||LA54_0==Identifier||LA54_0==RegularExpressionLiteral||(LA54_0>=DecimalLiteral && LA54_0<=HexIntegerLiteral)||LA54_0==XMLLiteral) ) {
+            else if ( ((LA54_0>=NULL && LA54_0<=FALSE)||LA54_0==DELETE||(LA54_0>=EACH && LA54_0<=FUNCTION)||LA54_0==NEW||LA54_0==THIS||LA54_0==TYPEOF||LA54_0==VOID||(LA54_0>=GET && LA54_0<=YIELD)||(LA54_0>=WXML && LA54_0<=NAMESPACE)||LA54_0==LBRACE||LA54_0==LPAREN||LA54_0==LBRACK||(LA54_0>=ADD && LA54_0<=SUB)||(LA54_0>=INC && LA54_0<=DEC)||(LA54_0>=NOT && LA54_0<=INV)||(LA54_0>=StringLiteral && LA54_0<=XmlAttribute)||LA54_0==Identifier||LA54_0==RegularExpressionLiteral||(LA54_0>=DecimalLiteral && LA54_0<=HexIntegerLiteral)||LA54_0==XMLLiteral) ) {
                 alt54=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("1514:1: forEachControl : ( forControlVar | forControlExpression );", 54, 0, input);
+                    new NoViableAltException("1525:1: forEachControl : ( forControlVar | forControlExpression );", 54, 0, input);
 
                 throw nvae;
             }
             switch (alt54) {
                 case 1 :
-                    // JS.g:1515:5: forControlVar
+                    // JS.g:1526:5: forControlVar
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_forControlVar_in_forEachControl5520);
+                    pushFollow(FOLLOW_forControlVar_in_forEachControl5572);
                     forControlVar234=forControlVar();
                     _fsp--;
 
@@ -7774,11 +7844,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1516:5: forControlExpression
+                    // JS.g:1527:5: forControlExpression
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_forControlExpression_in_forEachControl5526);
+                    pushFollow(FOLLOW_forControlExpression_in_forEachControl5578);
                     forControlExpression235=forControlExpression();
                     _fsp--;
 
@@ -7810,7 +7880,7 @@
     };
 
     // $ANTLR start forStatement
-    // JS.g:1519:1: forStatement : FOR LPAREN forControl RPAREN statement ;
+    // JS.g:1530: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);
@@ -7830,26 +7900,26 @@
         Object RPAREN239_tree=null;
 
         try {
-            // JS.g:1520:2: ( FOR LPAREN forControl RPAREN statement )
-            // JS.g:1520:4: FOR LPAREN forControl RPAREN statement
+            // JS.g:1531:2: ( FOR LPAREN forControl RPAREN statement )
+            // JS.g:1531:4: FOR LPAREN forControl RPAREN statement
             {
             root_0 = (Object)adaptor.nil();
 
             FOR236=(Token)input.LT(1);
-            match(input,FOR,FOLLOW_FOR_in_forStatement5538); 
+            match(input,FOR,FOLLOW_FOR_in_forStatement5590); 
             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_forStatement5541); 
-            pushFollow(FOLLOW_forControl_in_forStatement5544);
+            match(input,LPAREN,FOLLOW_LPAREN_in_forStatement5593); 
+            pushFollow(FOLLOW_forControl_in_forStatement5596);
             forControl238=forControl();
             _fsp--;
 
             adaptor.addChild(root_0, forControl238.getTree());
             RPAREN239=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_forStatement5546); 
-            pushFollow(FOLLOW_statement_in_forStatement5549);
+            match(input,RPAREN,FOLLOW_RPAREN_in_forStatement5598); 
+            pushFollow(FOLLOW_statement_in_forStatement5601);
             statement240=statement();
             _fsp--;
 
@@ -7879,7 +7949,7 @@
     };
 
     // $ANTLR start forControl
-    // JS.g:1523:1: forControl : ( forControlVar | forControlExpression | forControlSemic );
+    // JS.g:1534:1: forControl : ( forControlVar | forControlExpression | forControlSemic );
     public final forControl_return forControl() throws RecognitionException {
         forControl_return retval = new forControl_return();
         retval.start = input.LT(1);
@@ -7895,7 +7965,7 @@
 
 
         try {
-            // JS.g:1524:2: ( forControlVar | forControlExpression | forControlSemic )
+            // JS.g:1535:2: ( forControlVar | forControlExpression | forControlSemic )
             int alt55=3;
             switch ( input.LA(1) ) {
             case VAR:
@@ -7917,6 +7987,7 @@
             case SET:
             case YIELD:
             case WXML:
+            case NAMESPACE:
             case LBRACE:
             case LPAREN:
             case LBRACK:
@@ -7945,18 +8016,18 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("1523:1: forControl : ( forControlVar | forControlExpression | forControlSemic );", 55, 0, input);
+                    new NoViableAltException("1534:1: forControl : ( forControlVar | forControlExpression | forControlSemic );", 55, 0, input);
 
                 throw nvae;
             }
 
             switch (alt55) {
                 case 1 :
-                    // JS.g:1524:4: forControlVar
+                    // JS.g:1535:4: forControlVar
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_forControlVar_in_forControl5560);
+                    pushFollow(FOLLOW_forControlVar_in_forControl5612);
                     forControlVar241=forControlVar();
                     _fsp--;
 
@@ -7965,11 +8036,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1525:4: forControlExpression
+                    // JS.g:1536:4: forControlExpression
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_forControlExpression_in_forControl5565);
+                    pushFollow(FOLLOW_forControlExpression_in_forControl5617);
                     forControlExpression242=forControlExpression();
                     _fsp--;
 
@@ -7978,11 +8049,11 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:1526:4: forControlSemic
+                    // JS.g:1537:4: forControlSemic
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_forControlSemic_in_forControl5570);
+                    pushFollow(FOLLOW_forControlSemic_in_forControl5622);
                     forControlSemic243=forControlSemic();
                     _fsp--;
 
@@ -8014,7 +8085,7 @@
     };
 
     // $ANTLR start forControlVar
-    // JS.g:1529: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: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)? ) ) ) ) ;
     public final forControlVar_return forControlVar() throws RecognitionException {
         forControlVar_return retval = new forControlVar_return();
         retval.start = input.LT(1);
@@ -8049,19 +8120,19 @@
         RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
         RewriteRuleSubtreeStream stream_variableDeclarationNoIn=new RewriteRuleSubtreeStream(adaptor,"rule variableDeclarationNoIn");
         try {
-            // JS.g:1530: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:1530: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: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)? ) ) ) )
             {
             VAR244=(Token)input.LT(1);
-            match(input,VAR,FOLLOW_VAR_in_forControlVar5581); 
+            match(input,VAR,FOLLOW_VAR_in_forControlVar5633); 
             stream_VAR.add(VAR244);
 
-            pushFollow(FOLLOW_variableDeclarationNoIn_in_forControlVar5583);
+            pushFollow(FOLLOW_variableDeclarationNoIn_in_forControlVar5635);
             variableDeclarationNoIn245=variableDeclarationNoIn();
             _fsp--;
 
             stream_variableDeclarationNoIn.add(variableDeclarationNoIn245.getTree());
-            // JS.g:1531: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:1542: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);
 
@@ -8073,29 +8144,29 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("1531: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("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);
 
                 throw nvae;
             }
             switch (alt59) {
                 case 1 :
-                    // JS.g:1532:3: ( IN expression -> ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) ) )
+                    // JS.g:1543:3: ( IN expression -> ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) ) )
                     {
-                    // JS.g:1532:3: ( IN expression -> ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) ) )
-                    // JS.g:1533:4: IN expression
+                    // JS.g:1543:3: ( IN expression -> ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) ) )
+                    // JS.g:1544:4: IN expression
                     {
                     IN246=(Token)input.LT(1);
-                    match(input,IN,FOLLOW_IN_in_forControlVar5595); 
+                    match(input,IN,FOLLOW_IN_in_forControlVar5647); 
                     stream_IN.add(IN246);
 
-                    pushFollow(FOLLOW_expression_in_forControlVar5597);
+                    pushFollow(FOLLOW_expression_in_forControlVar5649);
                     expression247=expression();
                     _fsp--;
 
                     stream_expression.add(expression247.getTree());
 
                     // AST REWRITE
-                    // elements: variableDeclarationNoIn, VAR, expression
+                    // elements: expression, VAR, variableDeclarationNoIn
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
@@ -8104,14 +8175,14 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1534:4: -> ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) )
+                    // 1545:4: -> ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) )
                     {
-                        // JS.g:1534:7: ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) )
+                        // JS.g:1545: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:1534:18: ^( VAR variableDeclarationNoIn )
+                        // JS.g:1545:18: ^( VAR variableDeclarationNoIn )
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot(stream_VAR.next(), root_2);
@@ -8120,7 +8191,7 @@
 
                         adaptor.addChild(root_1, root_2);
                         }
-                        // JS.g:1534:51: ^( EXPR expression )
+                        // JS.g:1545:51: ^( EXPR expression )
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot(adaptor.create(EXPR, "EXPR"), root_2);
@@ -8143,12 +8214,12 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1537: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:1537:3: ( ( COMMA variableDeclarationNoIn )* SEMIC (ex1= expression )? SEMIC (ex2= expression )? -> ^( FORSTEP ^( VAR ( variableDeclarationNoIn )+ ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) ) )
-                    // JS.g:1538:4: ( COMMA variableDeclarationNoIn )* SEMIC (ex1= expression )? SEMIC (ex2= expression )?
+                    // 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:1538:4: ( COMMA variableDeclarationNoIn )*
+                    // JS.g:1549:4: ( COMMA variableDeclarationNoIn )*
                     loop56:
                     do {
                         int alt56=2;
@@ -8161,13 +8232,13 @@
 
                         switch (alt56) {
                     	case 1 :
-                    	    // JS.g:1538:6: COMMA variableDeclarationNoIn
+                    	    // JS.g:1549:6: COMMA variableDeclarationNoIn
                     	    {
                     	    COMMA248=(Token)input.LT(1);
-                    	    match(input,COMMA,FOLLOW_COMMA_in_forControlVar5643); 
+                    	    match(input,COMMA,FOLLOW_COMMA_in_forControlVar5695); 
                     	    stream_COMMA.add(COMMA248);
 
-                    	    pushFollow(FOLLOW_variableDeclarationNoIn_in_forControlVar5645);
+                    	    pushFollow(FOLLOW_variableDeclarationNoIn_in_forControlVar5697);
                     	    variableDeclarationNoIn249=variableDeclarationNoIn();
                     	    _fsp--;
 
@@ -8182,21 +8253,21 @@
                     } while (true);
 
                     SEMIC250=(Token)input.LT(1);
-                    match(input,SEMIC,FOLLOW_SEMIC_in_forControlVar5650); 
+                    match(input,SEMIC,FOLLOW_SEMIC_in_forControlVar5702); 
                     stream_SEMIC.add(SEMIC250);
 
-                    // JS.g:1538:48: (ex1= expression )?
+                    // JS.g:1549:48: (ex1= expression )?
                     int alt57=2;
                     int LA57_0 = input.LA(1);
 
-                    if ( ((LA57_0>=NULL && LA57_0<=FALSE)||LA57_0==DELETE||(LA57_0>=EACH && LA57_0<=FUNCTION)||LA57_0==NEW||LA57_0==THIS||LA57_0==TYPEOF||LA57_0==VOID||(LA57_0>=GET && LA57_0<=YIELD)||LA57_0==WXML||LA57_0==LBRACE||LA57_0==LPAREN||LA57_0==LBRACK||(LA57_0>=ADD && LA57_0<=SUB)||(LA57_0>=INC && LA57_0<=DEC)||(LA57_0>=NOT && LA57_0<=INV)||(LA57_0>=StringLiteral && LA57_0<=XmlAttribute)||LA57_0==Identifier||LA57_0==RegularExpressionLiteral||(LA57_0>=DecimalLiteral && LA57_0<=HexIntegerLiteral)||LA57_0==XMLLiteral) ) {
+                    if ( ((LA57_0>=NULL && LA57_0<=FALSE)||LA57_0==DELETE||(LA57_0>=EACH && LA57_0<=FUNCTION)||LA57_0==NEW||LA57_0==THIS||LA57_0==TYPEOF||LA57_0==VOID||(LA57_0>=GET && LA57_0<=YIELD)||(LA57_0>=WXML && LA57_0<=NAMESPACE)||LA57_0==LBRACE||LA57_0==LPAREN||LA57_0==LBRACK||(LA57_0>=ADD && LA57_0<=SUB)||(LA57_0>=INC && LA57_0<=DEC)||(LA57_0>=NOT && LA57_0<=INV)||(LA57_0>=StringLiteral && LA57_0<=XmlAttribute)||LA57_0==Identifier||LA57_0==RegularExpressionLiteral||(LA57_0>=DecimalLiteral && LA57_0<=HexIntegerLiteral)||LA57_0==XMLLiteral) ) {
                         alt57=1;
                     }
                     switch (alt57) {
                         case 1 :
-                            // JS.g:1538:48: ex1= expression
+                            // JS.g:1549:48: ex1= expression
                             {
-                            pushFollow(FOLLOW_expression_in_forControlVar5654);
+                            pushFollow(FOLLOW_expression_in_forControlVar5706);
                             ex1=expression();
                             _fsp--;
 
@@ -8208,21 +8279,21 @@
                     }
 
                     SEMIC251=(Token)input.LT(1);
-                    match(input,SEMIC,FOLLOW_SEMIC_in_forControlVar5657); 
+                    match(input,SEMIC,FOLLOW_SEMIC_in_forControlVar5709); 
                     stream_SEMIC.add(SEMIC251);
 
-                    // JS.g:1538:70: (ex2= expression )?
+                    // JS.g:1549:70: (ex2= expression )?
                     int alt58=2;
                     int LA58_0 = input.LA(1);
 
-                    if ( ((LA58_0>=NULL && LA58_0<=FALSE)||LA58_0==DELETE||(LA58_0>=EACH && LA58_0<=FUNCTION)||LA58_0==NEW||LA58_0==THIS||LA58_0==TYPEOF||LA58_0==VOID||(LA58_0>=GET && LA58_0<=YIELD)||LA58_0==WXML||LA58_0==LBRACE||LA58_0==LPAREN||LA58_0==LBRACK||(LA58_0>=ADD && LA58_0<=SUB)||(LA58_0>=INC && LA58_0<=DEC)||(LA58_0>=NOT && LA58_0<=INV)||(LA58_0>=StringLiteral && LA58_0<=XmlAttribute)||LA58_0==Identifier||LA58_0==RegularExpressionLiteral||(LA58_0>=DecimalLiteral && LA58_0<=HexIntegerLiteral)||LA58_0==XMLLiteral) ) {
+                    if ( ((LA58_0>=NULL && LA58_0<=FALSE)||LA58_0==DELETE||(LA58_0>=EACH && LA58_0<=FUNCTION)||LA58_0==NEW||LA58_0==THIS||LA58_0==TYPEOF||LA58_0==VOID||(LA58_0>=GET && LA58_0<=YIELD)||(LA58_0>=WXML && LA58_0<=NAMESPACE)||LA58_0==LBRACE||LA58_0==LPAREN||LA58_0==LBRACK||(LA58_0>=ADD && LA58_0<=SUB)||(LA58_0>=INC && LA58_0<=DEC)||(LA58_0>=NOT && LA58_0<=INV)||(LA58_0>=StringLiteral && LA58_0<=XmlAttribute)||LA58_0==Identifier||LA58_0==RegularExpressionLiteral||(LA58_0>=DecimalLiteral && LA58_0<=HexIntegerLiteral)||LA58_0==XMLLiteral) ) {
                         alt58=1;
                     }
                     switch (alt58) {
                         case 1 :
-                            // JS.g:1538:70: ex2= expression
+                            // JS.g:1549:70: ex2= expression
                             {
-                            pushFollow(FOLLOW_expression_in_forControlVar5661);
+                            pushFollow(FOLLOW_expression_in_forControlVar5713);
                             ex2=expression();
                             _fsp--;
 
@@ -8246,14 +8317,14 @@
                     RewriteRuleSubtreeStream stream_ex1=new RewriteRuleSubtreeStream(adaptor,"token ex1",ex1!=null?ex1.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1539:4: -> ^( FORSTEP ^( VAR ( variableDeclarationNoIn )+ ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) )
+                    // 1550:4: -> ^( FORSTEP ^( VAR ( variableDeclarationNoIn )+ ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) )
                     {
-                        // JS.g:1539:7: ^( FORSTEP ^( VAR ( variableDeclarationNoIn )+ ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) )
+                        // JS.g:1550: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:1539:18: ^( VAR ( variableDeclarationNoIn )+ )
+                        // JS.g:1550:18: ^( VAR ( variableDeclarationNoIn )+ )
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot(stream_VAR.next(), root_2);
@@ -8269,12 +8340,12 @@
 
                         adaptor.addChild(root_1, root_2);
                         }
-                        // JS.g:1539:52: ^( EXPR ( $ex1)? )
+                        // JS.g:1550:52: ^( EXPR ( $ex1)? )
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot(adaptor.create(EXPR, "EXPR"), root_2);
 
-                        // JS.g:1539:60: ( $ex1)?
+                        // JS.g:1550:60: ( $ex1)?
                         if ( stream_ex1.hasNext() ) {
                             adaptor.addChild(root_2, stream_ex1.next());
 
@@ -8283,12 +8354,12 @@
 
                         adaptor.addChild(root_1, root_2);
                         }
-                        // JS.g:1539:68: ^( EXPR ( $ex2)? )
+                        // JS.g:1550:68: ^( EXPR ( $ex2)? )
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot(adaptor.create(EXPR, "EXPR"), root_2);
 
-                        // JS.g:1539:76: ( $ex2)?
+                        // JS.g:1550:76: ( $ex2)?
                         if ( stream_ex2.hasNext() ) {
                             adaptor.addChild(root_2, stream_ex2.next());
 
@@ -8338,7 +8409,7 @@
     };
 
     // $ANTLR start forControlExpression
-    // JS.g:1544: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: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)? ) ) ) ) ;
     public final forControlExpression_return forControlExpression() throws RecognitionException {
         forControlExpression_return retval = new forControlExpression_return();
         retval.start = input.LT(1);
@@ -8366,15 +8437,15 @@
         	Object[] isLhs = new Object[1];
 
         try {
-            // JS.g:1549: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:1549: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: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)? ) ) ) )
             {
-            pushFollow(FOLLOW_expressionNoIn_in_forControlExpression5727);
+            pushFollow(FOLLOW_expressionNoIn_in_forControlExpression5779);
             ex1=expressionNoIn();
             _fsp--;
 
             stream_expressionNoIn.add(ex1.getTree());
-            // JS.g:1550:2: ({...}? ( IN ex2= expression -> ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) ) ) | ( SEMIC (ex2= expression )? SEMIC (ex3= expression )? -> ^( FORSTEP ^( EXPR $ex1) ^( EXPR ( $ex2)? ) ^( EXPR ( $ex3)? ) ) ) )
+            // 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)? ) ) ) )
             int alt62=2;
             int LA62_0 = input.LA(1);
 
@@ -8386,32 +8457,32 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("1550: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("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);
 
                 throw nvae;
             }
             switch (alt62) {
                 case 1 :
-                    // JS.g:1551:3: {...}? ( IN ex2= expression -> ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) ) )
+                    // JS.g:1562:3: {...}? ( IN ex2= expression -> ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) ) )
                     {
                     if ( !( isLeftHandSideIn(ex1, isLhs) ) ) {
                         throw new FailedPredicateException(input, "forControlExpression", " isLeftHandSideIn(ex1, isLhs) ");
                     }
-                    // JS.g:1551:37: ( IN ex2= expression -> ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) ) )
-                    // JS.g:1552:4: IN ex2= expression
+                    // JS.g:1562:37: ( IN ex2= expression -> ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) ) )
+                    // JS.g:1563:4: IN ex2= expression
                     {
                     IN252=(Token)input.LT(1);
-                    match(input,IN,FOLLOW_IN_in_forControlExpression5742); 
+                    match(input,IN,FOLLOW_IN_in_forControlExpression5794); 
                     stream_IN.add(IN252);
 
-                    pushFollow(FOLLOW_expression_in_forControlExpression5746);
+                    pushFollow(FOLLOW_expression_in_forControlExpression5798);
                     ex2=expression();
                     _fsp--;
 
                     stream_expression.add(ex2.getTree());
 
                     // AST REWRITE
-                    // elements: ex1, ex2
+                    // elements: ex2, ex1
                     // token labels: 
                     // rule labels: retval, ex2, ex1
                     // token list labels: 
@@ -8422,14 +8493,14 @@
                     RewriteRuleSubtreeStream stream_ex1=new RewriteRuleSubtreeStream(adaptor,"token ex1",ex1!=null?ex1.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1553:4: -> ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) )
+                    // 1564:4: -> ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) )
                     {
-                        // JS.g:1553:7: ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) )
+                        // JS.g:1564: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:1553:18: ^( EXPR $ex1)
+                        // JS.g:1564:18: ^( EXPR $ex1)
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot(adaptor.create(EXPR, "EXPR"), root_2);
@@ -8438,7 +8509,7 @@
 
                         adaptor.addChild(root_1, root_2);
                         }
-                        // JS.g:1553:33: ^( EXPR $ex2)
+                        // JS.g:1564:33: ^( EXPR $ex2)
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot(adaptor.create(EXPR, "EXPR"), root_2);
@@ -8461,27 +8532,27 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1556: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:1556:3: ( SEMIC (ex2= expression )? SEMIC (ex3= expression )? -> ^( FORSTEP ^( EXPR $ex1) ^( EXPR ( $ex2)? ) ^( EXPR ( $ex3)? ) ) )
-                    // JS.g:1557:4: SEMIC (ex2= expression )? SEMIC (ex3= expression )?
+                    // 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 )?
                     {
                     SEMIC253=(Token)input.LT(1);
-                    match(input,SEMIC,FOLLOW_SEMIC_in_forControlExpression5792); 
+                    match(input,SEMIC,FOLLOW_SEMIC_in_forControlExpression5844); 
                     stream_SEMIC.add(SEMIC253);
 
-                    // JS.g:1557:13: (ex2= expression )?
+                    // JS.g:1568:13: (ex2= expression )?
                     int alt60=2;
                     int LA60_0 = input.LA(1);
 
-                    if ( ((LA60_0>=NULL && LA60_0<=FALSE)||LA60_0==DELETE||(LA60_0>=EACH && LA60_0<=FUNCTION)||LA60_0==NEW||LA60_0==THIS||LA60_0==TYPEOF||LA60_0==VOID||(LA60_0>=GET && LA60_0<=YIELD)||LA60_0==WXML||LA60_0==LBRACE||LA60_0==LPAREN||LA60_0==LBRACK||(LA60_0>=ADD && LA60_0<=SUB)||(LA60_0>=INC && LA60_0<=DEC)||(LA60_0>=NOT && LA60_0<=INV)||(LA60_0>=StringLiteral && LA60_0<=XmlAttribute)||LA60_0==Identifier||LA60_0==RegularExpressionLiteral||(LA60_0>=DecimalLiteral && LA60_0<=HexIntegerLiteral)||LA60_0==XMLLiteral) ) {
+                    if ( ((LA60_0>=NULL && LA60_0<=FALSE)||LA60_0==DELETE||(LA60_0>=EACH && LA60_0<=FUNCTION)||LA60_0==NEW||LA60_0==THIS||LA60_0==TYPEOF||LA60_0==VOID||(LA60_0>=GET && LA60_0<=YIELD)||(LA60_0>=WXML && LA60_0<=NAMESPACE)||LA60_0==LBRACE||LA60_0==LPAREN||LA60_0==LBRACK||(LA60_0>=ADD && LA60_0<=SUB)||(LA60_0>=INC && LA60_0<=DEC)||(LA60_0>=NOT && LA60_0<=INV)||(LA60_0>=StringLiteral && LA60_0<=XmlAttribute)||LA60_0==Identifier||LA60_0==RegularExpressionLiteral||(LA60_0>=DecimalLiteral && LA60_0<=HexIntegerLiteral)||LA60_0==XMLLiteral) ) {
                         alt60=1;
                     }
                     switch (alt60) {
                         case 1 :
-                            // JS.g:1557:13: ex2= expression
+                            // JS.g:1568:13: ex2= expression
                             {
-                            pushFollow(FOLLOW_expression_in_forControlExpression5796);
+                            pushFollow(FOLLOW_expression_in_forControlExpression5848);
                             ex2=expression();
                             _fsp--;
 
@@ -8493,21 +8564,21 @@
                     }
 
                     SEMIC254=(Token)input.LT(1);
-                    match(input,SEMIC,FOLLOW_SEMIC_in_forControlExpression5799); 
+                    match(input,SEMIC,FOLLOW_SEMIC_in_forControlExpression5851); 
                     stream_SEMIC.add(SEMIC254);
 
-                    // JS.g:1557:35: (ex3= expression )?
+                    // JS.g:1568:35: (ex3= expression )?
                     int alt61=2;
                     int LA61_0 = input.LA(1);
 
-                    if ( ((LA61_0>=NULL && LA61_0<=FALSE)||LA61_0==DELETE||(LA61_0>=EACH && LA61_0<=FUNCTION)||LA61_0==NEW||LA61_0==THIS||LA61_0==TYPEOF||LA61_0==VOID||(LA61_0>=GET && LA61_0<=YIELD)||LA61_0==WXML||LA61_0==LBRACE||LA61_0==LPAREN||LA61_0==LBRACK||(LA61_0>=ADD && LA61_0<=SUB)||(LA61_0>=INC && LA61_0<=DEC)||(LA61_0>=NOT && LA61_0<=INV)||(LA61_0>=StringLiteral && LA61_0<=XmlAttribute)||LA61_0==Identifier||LA61_0==RegularExpressionLiteral||(LA61_0>=DecimalLiteral && LA61_0<=HexIntegerLiteral)||LA61_0==XMLLiteral) ) {
+                    if ( ((LA61_0>=NULL && LA61_0<=FALSE)||LA61_0==DELETE||(LA61_0>=EACH && LA61_0<=FUNCTION)||LA61_0==NEW||LA61_0==THIS||LA61_0==TYPEOF||LA61_0==VOID||(LA61_0>=GET && LA61_0<=YIELD)||(LA61_0>=WXML && LA61_0<=NAMESPACE)||LA61_0==LBRACE||LA61_0==LPAREN||LA61_0==LBRACK||(LA61_0>=ADD && LA61_0<=SUB)||(LA61_0>=INC && LA61_0<=DEC)||(LA61_0>=NOT && LA61_0<=INV)||(LA61_0>=StringLiteral && LA61_0<=XmlAttribute)||LA61_0==Identifier||LA61_0==RegularExpressionLiteral||(LA61_0>=DecimalLiteral && LA61_0<=HexIntegerLiteral)||LA61_0==XMLLiteral) ) {
                         alt61=1;
                     }
                     switch (alt61) {
                         case 1 :
-                            // JS.g:1557:35: ex3= expression
+                            // JS.g:1568:35: ex3= expression
                             {
-                            pushFollow(FOLLOW_expression_in_forControlExpression5803);
+                            pushFollow(FOLLOW_expression_in_forControlExpression5855);
                             ex3=expression();
                             _fsp--;
 
@@ -8520,7 +8591,7 @@
 
 
                     // AST REWRITE
-                    // elements: ex1, ex2, ex3
+                    // elements: ex3, ex2, ex1
                     // token labels: 
                     // rule labels: retval, ex3, ex2, ex1
                     // token list labels: 
@@ -8532,14 +8603,14 @@
                     RewriteRuleSubtreeStream stream_ex1=new RewriteRuleSubtreeStream(adaptor,"token ex1",ex1!=null?ex1.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1558:4: -> ^( FORSTEP ^( EXPR $ex1) ^( EXPR ( $ex2)? ) ^( EXPR ( $ex3)? ) )
+                    // 1569:4: -> ^( FORSTEP ^( EXPR $ex1) ^( EXPR ( $ex2)? ) ^( EXPR ( $ex3)? ) )
                     {
-                        // JS.g:1558:7: ^( FORSTEP ^( EXPR $ex1) ^( EXPR ( $ex2)? ) ^( EXPR ( $ex3)? ) )
+                        // JS.g:1569: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:1558:18: ^( EXPR $ex1)
+                        // JS.g:1569:18: ^( EXPR $ex1)
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot(adaptor.create(EXPR, "EXPR"), root_2);
@@ -8548,12 +8619,12 @@
 
                         adaptor.addChild(root_1, root_2);
                         }
-                        // JS.g:1558:33: ^( EXPR ( $ex2)? )
+                        // JS.g:1569:33: ^( EXPR ( $ex2)? )
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot(adaptor.create(EXPR, "EXPR"), root_2);
 
-                        // JS.g:1558:41: ( $ex2)?
+                        // JS.g:1569:41: ( $ex2)?
                         if ( stream_ex2.hasNext() ) {
                             adaptor.addChild(root_2, stream_ex2.next());
 
@@ -8562,12 +8633,12 @@
 
                         adaptor.addChild(root_1, root_2);
                         }
-                        // JS.g:1558:49: ^( EXPR ( $ex3)? )
+                        // JS.g:1569:49: ^( EXPR ( $ex3)? )
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot(adaptor.create(EXPR, "EXPR"), root_2);
 
-                        // JS.g:1558:57: ( $ex3)?
+                        // JS.g:1569:57: ( $ex3)?
                         if ( stream_ex3.hasNext() ) {
                             adaptor.addChild(root_2, stream_ex3.next());
 
@@ -8617,7 +8688,7 @@
     };
 
     // $ANTLR start forControlSemic
-    // JS.g:1563:1: forControlSemic : SEMIC (ex1= expression )? SEMIC (ex2= expression )? -> ^( FORSTEP ^( EXPR ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) ) ;
+    // JS.g:1574: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);
@@ -8636,25 +8707,25 @@
         RewriteRuleTokenStream stream_SEMIC=new RewriteRuleTokenStream(adaptor,"token SEMIC");
         RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
         try {
-            // JS.g:1564:2: ( SEMIC (ex1= expression )? SEMIC (ex2= expression )? -> ^( FORSTEP ^( EXPR ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) ) )
-            // JS.g:1564:4: SEMIC (ex1= expression )? SEMIC (ex2= expression )?
+            // 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 )?
             {
             SEMIC255=(Token)input.LT(1);
-            match(input,SEMIC,FOLLOW_SEMIC_in_forControlSemic5862); 
+            match(input,SEMIC,FOLLOW_SEMIC_in_forControlSemic5914); 
             stream_SEMIC.add(SEMIC255);
 
-            // JS.g:1564:13: (ex1= expression )?
+            // JS.g:1575:13: (ex1= expression )?
             int alt63=2;
             int LA63_0 = input.LA(1);
 
-            if ( ((LA63_0>=NULL && LA63_0<=FALSE)||LA63_0==DELETE||(LA63_0>=EACH && LA63_0<=FUNCTION)||LA63_0==NEW||LA63_0==THIS||LA63_0==TYPEOF||LA63_0==VOID||(LA63_0>=GET && LA63_0<=YIELD)||LA63_0==WXML||LA63_0==LBRACE||LA63_0==LPAREN||LA63_0==LBRACK||(LA63_0>=ADD && LA63_0<=SUB)||(LA63_0>=INC && LA63_0<=DEC)||(LA63_0>=NOT && LA63_0<=INV)||(LA63_0>=StringLiteral && LA63_0<=XmlAttribute)||LA63_0==Identifier||LA63_0==RegularExpressionLiteral||(LA63_0>=DecimalLiteral && LA63_0<=HexIntegerLiteral)||LA63_0==XMLLiteral) ) {
+            if ( ((LA63_0>=NULL && LA63_0<=FALSE)||LA63_0==DELETE||(LA63_0>=EACH && LA63_0<=FUNCTION)||LA63_0==NEW||LA63_0==THIS||LA63_0==TYPEOF||LA63_0==VOID||(LA63_0>=GET && LA63_0<=YIELD)||(LA63_0>=WXML && LA63_0<=NAMESPACE)||LA63_0==LBRACE||LA63_0==LPAREN||LA63_0==LBRACK||(LA63_0>=ADD && LA63_0<=SUB)||(LA63_0>=INC && LA63_0<=DEC)||(LA63_0>=NOT && LA63_0<=INV)||(LA63_0>=StringLiteral && LA63_0<=XmlAttribute)||LA63_0==Identifier||LA63_0==RegularExpressionLiteral||(LA63_0>=DecimalLiteral && LA63_0<=HexIntegerLiteral)||LA63_0==XMLLiteral) ) {
                 alt63=1;
             }
             switch (alt63) {
                 case 1 :
-                    // JS.g:1564:13: ex1= expression
+                    // JS.g:1575:13: ex1= expression
                     {
-                    pushFollow(FOLLOW_expression_in_forControlSemic5866);
+                    pushFollow(FOLLOW_expression_in_forControlSemic5918);
                     ex1=expression();
                     _fsp--;
 
@@ -8666,21 +8737,21 @@
             }
 
             SEMIC256=(Token)input.LT(1);
-            match(input,SEMIC,FOLLOW_SEMIC_in_forControlSemic5869); 
+            match(input,SEMIC,FOLLOW_SEMIC_in_forControlSemic5921); 
             stream_SEMIC.add(SEMIC256);
 
-            // JS.g:1564:35: (ex2= expression )?
+            // JS.g:1575:35: (ex2= expression )?
             int alt64=2;
             int LA64_0 = input.LA(1);
 
-            if ( ((LA64_0>=NULL && LA64_0<=FALSE)||LA64_0==DELETE||(LA64_0>=EACH && LA64_0<=FUNCTION)||LA64_0==NEW||LA64_0==THIS||LA64_0==TYPEOF||LA64_0==VOID||(LA64_0>=GET && LA64_0<=YIELD)||LA64_0==WXML||LA64_0==LBRACE||LA64_0==LPAREN||LA64_0==LBRACK||(LA64_0>=ADD && LA64_0<=SUB)||(LA64_0>=INC && LA64_0<=DEC)||(LA64_0>=NOT && LA64_0<=INV)||(LA64_0>=StringLiteral && LA64_0<=XmlAttribute)||LA64_0==Identifier||LA64_0==RegularExpressionLiteral||(LA64_0>=DecimalLiteral && LA64_0<=HexIntegerLiteral)||LA64_0==XMLLiteral) ) {
+            if ( ((LA64_0>=NULL && LA64_0<=FALSE)||LA64_0==DELETE||(LA64_0>=EACH && LA64_0<=FUNCTION)||LA64_0==NEW||LA64_0==THIS||LA64_0==TYPEOF||LA64_0==VOID||(LA64_0>=GET && LA64_0<=YIELD)||(LA64_0>=WXML && LA64_0<=NAMESPACE)||LA64_0==LBRACE||LA64_0==LPAREN||LA64_0==LBRACK||(LA64_0>=ADD && LA64_0<=SUB)||(LA64_0>=INC && LA64_0<=DEC)||(LA64_0>=NOT && LA64_0<=INV)||(LA64_0>=StringLiteral && LA64_0<=XmlAttribute)||LA64_0==Identifier||LA64_0==RegularExpressionLiteral||(LA64_0>=DecimalLiteral && LA64_0<=HexIntegerLiteral)||LA64_0==XMLLiteral) ) {
                 alt64=1;
             }
             switch (alt64) {
                 case 1 :
-                    // JS.g:1564:35: ex2= expression
+                    // JS.g:1575:35: ex2= expression
                     {
-                    pushFollow(FOLLOW_expression_in_forControlSemic5873);
+                    pushFollow(FOLLOW_expression_in_forControlSemic5925);
                     ex2=expression();
                     _fsp--;
 
@@ -8693,7 +8764,7 @@
 
 
             // AST REWRITE
-            // elements: ex1, ex2
+            // elements: ex2, ex1
             // token labels: 
             // rule labels: retval, ex2, ex1
             // token list labels: 
@@ -8704,26 +8775,26 @@
             RewriteRuleSubtreeStream stream_ex1=new RewriteRuleSubtreeStream(adaptor,"token ex1",ex1!=null?ex1.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1565:2: -> ^( FORSTEP ^( EXPR ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) )
+            // 1576:2: -> ^( FORSTEP ^( EXPR ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) )
             {
-                // JS.g:1565:5: ^( FORSTEP ^( EXPR ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) )
+                // JS.g:1576: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:1565:16: ^( EXPR )
+                // JS.g:1576: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:1565:26: ^( EXPR ( $ex1)? )
+                // JS.g:1576:26: ^( EXPR ( $ex1)? )
                 {
                 Object root_2 = (Object)adaptor.nil();
                 root_2 = (Object)adaptor.becomeRoot(adaptor.create(EXPR, "EXPR"), root_2);
 
-                // JS.g:1565:34: ( $ex1)?
+                // JS.g:1576:34: ( $ex1)?
                 if ( stream_ex1.hasNext() ) {
                     adaptor.addChild(root_2, stream_ex1.next());
 
@@ -8732,12 +8803,12 @@
 
                 adaptor.addChild(root_1, root_2);
                 }
-                // JS.g:1565:42: ^( EXPR ( $ex2)? )
+                // JS.g:1576:42: ^( EXPR ( $ex2)? )
                 {
                 Object root_2 = (Object)adaptor.nil();
                 root_2 = (Object)adaptor.becomeRoot(adaptor.create(EXPR, "EXPR"), root_2);
 
-                // JS.g:1565:50: ( $ex2)?
+                // JS.g:1576:50: ( $ex2)?
                 if ( stream_ex2.hasNext() ) {
                     adaptor.addChild(root_2, stream_ex2.next());
 
@@ -8778,7 +8849,7 @@
     };
 
     // $ANTLR start continueStatement
-    // JS.g:1577:1: continueStatement : CONTINUE ( Identifier )? semic ;
+    // JS.g:1588:1: continueStatement : CONTINUE ( Identifier )? semic ;
     public final continueStatement_return continueStatement() throws RecognitionException {
         continueStatement_return retval = new continueStatement_return();
         retval.start = input.LT(1);
@@ -8794,18 +8865,18 @@
         Object Identifier258_tree=null;
 
         try {
-            // JS.g:1578:2: ( CONTINUE ( Identifier )? semic )
-            // JS.g:1578:4: CONTINUE ( Identifier )? semic
+            // JS.g:1589:2: ( CONTINUE ( Identifier )? semic )
+            // JS.g:1589:4: CONTINUE ( Identifier )? semic
             {
             root_0 = (Object)adaptor.nil();
 
             CONTINUE257=(Token)input.LT(1);
-            match(input,CONTINUE,FOLLOW_CONTINUE_in_continueStatement5927); 
+            match(input,CONTINUE,FOLLOW_CONTINUE_in_continueStatement5979); 
             CONTINUE257_tree = (Object)adaptor.create(CONTINUE257);
             root_0 = (Object)adaptor.becomeRoot(CONTINUE257_tree, root_0);
 
              if (input.LA(1) == Identifier) promoteEOL(null); 
-            // JS.g:1578:67: ( Identifier )?
+            // JS.g:1589:67: ( Identifier )?
             int alt65=2;
             int LA65_0 = input.LA(1);
 
@@ -8814,10 +8885,10 @@
             }
             switch (alt65) {
                 case 1 :
-                    // JS.g:1578:67: Identifier
+                    // JS.g:1589:67: Identifier
                     {
                     Identifier258=(Token)input.LT(1);
-                    match(input,Identifier,FOLLOW_Identifier_in_continueStatement5932); 
+                    match(input,Identifier,FOLLOW_Identifier_in_continueStatement5984); 
                     Identifier258_tree = (Object)adaptor.create(Identifier258);
                     adaptor.addChild(root_0, Identifier258_tree);
 
@@ -8827,7 +8898,7 @@
 
             }
 
-            pushFollow(FOLLOW_semic_in_continueStatement5935);
+            pushFollow(FOLLOW_semic_in_continueStatement5987);
             semic259=semic();
             _fsp--;
 
@@ -8856,7 +8927,7 @@
     };
 
     // $ANTLR start breakStatement
-    // JS.g:1590:1: breakStatement : BREAK ( Identifier )? semic ;
+    // JS.g:1601:1: breakStatement : BREAK ( Identifier )? semic ;
     public final breakStatement_return breakStatement() throws RecognitionException {
         breakStatement_return retval = new breakStatement_return();
         retval.start = input.LT(1);
@@ -8872,18 +8943,18 @@
         Object Identifier261_tree=null;
 
         try {
-            // JS.g:1591:2: ( BREAK ( Identifier )? semic )
-            // JS.g:1591:4: BREAK ( Identifier )? semic
+            // JS.g:1602:2: ( BREAK ( Identifier )? semic )
+            // JS.g:1602:4: BREAK ( Identifier )? semic
             {
             root_0 = (Object)adaptor.nil();
 
             BREAK260=(Token)input.LT(1);
-            match(input,BREAK,FOLLOW_BREAK_in_breakStatement5954); 
+            match(input,BREAK,FOLLOW_BREAK_in_breakStatement6006); 
             BREAK260_tree = (Object)adaptor.create(BREAK260);
             root_0 = (Object)adaptor.becomeRoot(BREAK260_tree, root_0);
 
              if (input.LA(1) == Identifier) promoteEOL(null); 
-            // JS.g:1591:64: ( Identifier )?
+            // JS.g:1602:64: ( Identifier )?
             int alt66=2;
             int LA66_0 = input.LA(1);
 
@@ -8892,10 +8963,10 @@
             }
             switch (alt66) {
                 case 1 :
-                    // JS.g:1591:64: Identifier
+                    // JS.g:1602:64: Identifier
                     {
                     Identifier261=(Token)input.LT(1);
-                    match(input,Identifier,FOLLOW_Identifier_in_breakStatement5959); 
+                    match(input,Identifier,FOLLOW_Identifier_in_breakStatement6011); 
                     Identifier261_tree = (Object)adaptor.create(Identifier261);
                     adaptor.addChild(root_0, Identifier261_tree);
 
@@ -8905,7 +8976,7 @@
 
             }
 
-            pushFollow(FOLLOW_semic_in_breakStatement5962);
+            pushFollow(FOLLOW_semic_in_breakStatement6014);
             semic262=semic();
             _fsp--;
 
@@ -8934,7 +9005,7 @@
     };
 
     // $ANTLR start returnStatement
-    // JS.g:1611:1: returnStatement : RETURN ( expression )? semic ;
+    // JS.g:1622:1: returnStatement : RETURN ( expression )? semic ;
     public final returnStatement_return returnStatement() throws RecognitionException {
         returnStatement_return retval = new returnStatement_return();
         retval.start = input.LT(1);
@@ -8950,29 +9021,29 @@
         Object RETURN263_tree=null;
 
         try {
-            // JS.g:1612:2: ( RETURN ( expression )? semic )
-            // JS.g:1612:4: RETURN ( expression )? semic
+            // JS.g:1623:2: ( RETURN ( expression )? semic )
+            // JS.g:1623:4: RETURN ( expression )? semic
             {
             root_0 = (Object)adaptor.nil();
 
             RETURN263=(Token)input.LT(1);
-            match(input,RETURN,FOLLOW_RETURN_in_returnStatement5981); 
+            match(input,RETURN,FOLLOW_RETURN_in_returnStatement6033); 
             RETURN263_tree = (Object)adaptor.create(RETURN263);
             root_0 = (Object)adaptor.becomeRoot(RETURN263_tree, root_0);
 
              promoteEOL(null); 
-            // JS.g:1612:34: ( expression )?
+            // JS.g:1623:34: ( expression )?
             int alt67=2;
             int LA67_0 = input.LA(1);
 
-            if ( ((LA67_0>=NULL && LA67_0<=FALSE)||LA67_0==DELETE||(LA67_0>=EACH && LA67_0<=FUNCTION)||LA67_0==NEW||LA67_0==THIS||LA67_0==TYPEOF||LA67_0==VOID||(LA67_0>=GET && LA67_0<=YIELD)||LA67_0==WXML||LA67_0==LBRACE||LA67_0==LPAREN||LA67_0==LBRACK||(LA67_0>=ADD && LA67_0<=SUB)||(LA67_0>=INC && LA67_0<=DEC)||(LA67_0>=NOT && LA67_0<=INV)||(LA67_0>=StringLiteral && LA67_0<=XmlAttribute)||LA67_0==Identifier||LA67_0==RegularExpressionLiteral||(LA67_0>=DecimalLiteral && LA67_0<=HexIntegerLiteral)||LA67_0==XMLLiteral) ) {
+            if ( ((LA67_0>=NULL && LA67_0<=FALSE)||LA67_0==DELETE||(LA67_0>=EACH && LA67_0<=FUNCTION)||LA67_0==NEW||LA67_0==THIS||LA67_0==TYPEOF||LA67_0==VOID||(LA67_0>=GET && LA67_0<=YIELD)||(LA67_0>=WXML && LA67_0<=NAMESPACE)||LA67_0==LBRACE||LA67_0==LPAREN||LA67_0==LBRACK||(LA67_0>=ADD && LA67_0<=SUB)||(LA67_0>=INC && LA67_0<=DEC)||(LA67_0>=NOT && LA67_0<=INV)||(LA67_0>=StringLiteral && LA67_0<=XmlAttribute)||LA67_0==Identifier||LA67_0==RegularExpressionLiteral||(LA67_0>=DecimalLiteral && LA67_0<=HexIntegerLiteral)||LA67_0==XMLLiteral) ) {
                 alt67=1;
             }
             switch (alt67) {
                 case 1 :
-                    // JS.g:1612:34: expression
+                    // JS.g:1623:34: expression
                     {
-                    pushFollow(FOLLOW_expression_in_returnStatement5986);
+                    pushFollow(FOLLOW_expression_in_returnStatement6038);
                     expression264=expression();
                     _fsp--;
 
@@ -8983,7 +9054,7 @@
 
             }
 
-            pushFollow(FOLLOW_semic_in_returnStatement5989);
+            pushFollow(FOLLOW_semic_in_returnStatement6041);
             semic265=semic();
             _fsp--;
 
@@ -9012,7 +9083,7 @@
     };
 
     // $ANTLR start withStatement
-    // JS.g:1619:1: withStatement : WITH LPAREN expression RPAREN statement ;
+    // JS.g:1630: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);
@@ -9032,26 +9103,26 @@
         Object RPAREN269_tree=null;
 
         try {
-            // JS.g:1620:2: ( WITH LPAREN expression RPAREN statement )
-            // JS.g:1620:4: WITH LPAREN expression RPAREN statement
+            // JS.g:1631:2: ( WITH LPAREN expression RPAREN statement )
+            // JS.g:1631:4: WITH LPAREN expression RPAREN statement
             {
             root_0 = (Object)adaptor.nil();
 
             WITH266=(Token)input.LT(1);
-            match(input,WITH,FOLLOW_WITH_in_withStatement6006); 
+            match(input,WITH,FOLLOW_WITH_in_withStatement6058); 
             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_withStatement6009); 
-            pushFollow(FOLLOW_expression_in_withStatement6012);
+            match(input,LPAREN,FOLLOW_LPAREN_in_withStatement6061); 
+            pushFollow(FOLLOW_expression_in_withStatement6064);
             expression268=expression();
             _fsp--;
 
             adaptor.addChild(root_0, expression268.getTree());
             RPAREN269=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_withStatement6014); 
-            pushFollow(FOLLOW_statement_in_withStatement6017);
+            match(input,RPAREN,FOLLOW_RPAREN_in_withStatement6066); 
+            pushFollow(FOLLOW_statement_in_withStatement6069);
             statement270=statement();
             _fsp--;
 
@@ -9081,7 +9152,7 @@
     };
 
     // $ANTLR start switchStatement
-    // JS.g:1627:1: switchStatement : SWITCH LPAREN expression RPAREN LBRACE ({...}? => defaultClause | caseClause )* RBRACE -> ^( SWITCH expression ( defaultClause )? ( caseClause )* ) ;
+    // JS.g:1638: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);
@@ -9117,31 +9188,31 @@
         	int defaultClauseCount = 0;
 
         try {
-            // JS.g:1632:2: ( SWITCH LPAREN expression RPAREN LBRACE ({...}? => defaultClause | caseClause )* RBRACE -> ^( SWITCH expression ( defaultClause )? ( caseClause )* ) )
-            // JS.g:1632:4: SWITCH LPAREN expression RPAREN LBRACE ({...}? => defaultClause | caseClause )* RBRACE
+            // 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
             {
             SWITCH271=(Token)input.LT(1);
-            match(input,SWITCH,FOLLOW_SWITCH_in_switchStatement6038); 
+            match(input,SWITCH,FOLLOW_SWITCH_in_switchStatement6090); 
             stream_SWITCH.add(SWITCH271);
 
             LPAREN272=(Token)input.LT(1);
-            match(input,LPAREN,FOLLOW_LPAREN_in_switchStatement6040); 
+            match(input,LPAREN,FOLLOW_LPAREN_in_switchStatement6092); 
             stream_LPAREN.add(LPAREN272);
 
-            pushFollow(FOLLOW_expression_in_switchStatement6042);
+            pushFollow(FOLLOW_expression_in_switchStatement6094);
             expression273=expression();
             _fsp--;
 
             stream_expression.add(expression273.getTree());
             RPAREN274=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_switchStatement6044); 
+            match(input,RPAREN,FOLLOW_RPAREN_in_switchStatement6096); 
             stream_RPAREN.add(RPAREN274);
 
             LBRACE275=(Token)input.LT(1);
-            match(input,LBRACE,FOLLOW_LBRACE_in_switchStatement6046); 
+            match(input,LBRACE,FOLLOW_LBRACE_in_switchStatement6098); 
             stream_LBRACE.add(LBRACE275);
 
-            // JS.g:1632:43: ({...}? => defaultClause | caseClause )*
+            // JS.g:1643:43: ({...}? => defaultClause | caseClause )*
             loop68:
             do {
                 int alt68=3;
@@ -9157,12 +9228,12 @@
 
                 switch (alt68) {
             	case 1 :
-            	    // JS.g:1632:45: {...}? => defaultClause
+            	    // JS.g:1643:45: {...}? => defaultClause
             	    {
             	    if ( !( defaultClauseCount == 0 ) ) {
             	        throw new FailedPredicateException(input, "switchStatement", " defaultClauseCount == 0 ");
             	    }
-            	    pushFollow(FOLLOW_defaultClause_in_switchStatement6053);
+            	    pushFollow(FOLLOW_defaultClause_in_switchStatement6105);
             	    defaultClause276=defaultClause();
             	    _fsp--;
 
@@ -9172,9 +9243,9 @@
             	    }
             	    break;
             	case 2 :
-            	    // JS.g:1632:118: caseClause
+            	    // JS.g:1643:118: caseClause
             	    {
-            	    pushFollow(FOLLOW_caseClause_in_switchStatement6059);
+            	    pushFollow(FOLLOW_caseClause_in_switchStatement6111);
             	    caseClause277=caseClause();
             	    _fsp--;
 
@@ -9189,12 +9260,12 @@
             } while (true);
 
             RBRACE278=(Token)input.LT(1);
-            match(input,RBRACE,FOLLOW_RBRACE_in_switchStatement6064); 
+            match(input,RBRACE,FOLLOW_RBRACE_in_switchStatement6116); 
             stream_RBRACE.add(RBRACE278);
 
 
             // AST REWRITE
-            // elements: SWITCH, expression, caseClause, defaultClause
+            // elements: defaultClause, expression, SWITCH, caseClause
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -9203,21 +9274,21 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1633:2: -> ^( SWITCH expression ( defaultClause )? ( caseClause )* )
+            // 1644:2: -> ^( SWITCH expression ( defaultClause )? ( caseClause )* )
             {
-                // JS.g:1633:5: ^( SWITCH expression ( defaultClause )? ( caseClause )* )
+                // JS.g:1644: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:1633:26: ( defaultClause )?
+                // JS.g:1644:26: ( defaultClause )?
                 if ( stream_defaultClause.hasNext() ) {
                     adaptor.addChild(root_1, stream_defaultClause.next());
 
                 }
                 stream_defaultClause.reset();
-                // JS.g:1633:41: ( caseClause )*
+                // JS.g:1644:41: ( caseClause )*
                 while ( stream_caseClause.hasNext() ) {
                     adaptor.addChild(root_1, stream_caseClause.next());
 
@@ -9255,7 +9326,7 @@
     };
 
     // $ANTLR start caseClause
-    // JS.g:1636:1: caseClause : CASE expression COLON ( statement )* ;
+    // JS.g:1647:1: caseClause : CASE expression COLON ( statement )* ;
     public final caseClause_return caseClause() throws RecognitionException {
         caseClause_return retval = new caseClause_return();
         retval.start = input.LT(1);
@@ -9273,24 +9344,24 @@
         Object COLON281_tree=null;
 
         try {
-            // JS.g:1637:2: ( CASE expression COLON ( statement )* )
-            // JS.g:1637:4: CASE expression COLON ( statement )*
+            // JS.g:1648:2: ( CASE expression COLON ( statement )* )
+            // JS.g:1648:4: CASE expression COLON ( statement )*
             {
             root_0 = (Object)adaptor.nil();
 
             CASE279=(Token)input.LT(1);
-            match(input,CASE,FOLLOW_CASE_in_caseClause6092); 
+            match(input,CASE,FOLLOW_CASE_in_caseClause6144); 
             CASE279_tree = (Object)adaptor.create(CASE279);
             root_0 = (Object)adaptor.becomeRoot(CASE279_tree, root_0);
 
-            pushFollow(FOLLOW_expression_in_caseClause6095);
+            pushFollow(FOLLOW_expression_in_caseClause6147);
             expression280=expression();
             _fsp--;
 
             adaptor.addChild(root_0, expression280.getTree());
             COLON281=(Token)input.LT(1);
-            match(input,COLON,FOLLOW_COLON_in_caseClause6097); 
-            // JS.g:1637:28: ( statement )*
+            match(input,COLON,FOLLOW_COLON_in_caseClause6149); 
+            // JS.g:1648:28: ( statement )*
             loop69:
             do {
                 int alt69=2;
@@ -9305,16 +9376,16 @@
 
 
                 }
-                else if ( ((LA69_0>=NULL && LA69_0<=BREAK)||LA69_0==CONTINUE||(LA69_0>=DELETE && LA69_0<=DO)||(LA69_0>=FOR && LA69_0<=IF)||(LA69_0>=NEW && LA69_0<=YIELD)||LA69_0==WXML||LA69_0==CONST||LA69_0==LBRACE||LA69_0==LPAREN||LA69_0==LBRACK||LA69_0==SEMIC||(LA69_0>=ADD && LA69_0<=SUB)||(LA69_0>=INC && LA69_0<=DEC)||(LA69_0>=NOT && LA69_0<=INV)||(LA69_0>=StringLiteral && LA69_0<=XmlAttribute)||LA69_0==Identifier||LA69_0==RegularExpressionLiteral||(LA69_0>=DecimalLiteral && LA69_0<=HexIntegerLiteral)||LA69_0==XMLLiteral) ) {
+                else if ( ((LA69_0>=NULL && LA69_0<=BREAK)||LA69_0==CONTINUE||(LA69_0>=DELETE && LA69_0<=DO)||(LA69_0>=FOR && LA69_0<=IF)||(LA69_0>=NEW && LA69_0<=YIELD)||(LA69_0>=WXML && LA69_0<=NAMESPACE)||LA69_0==CONST||LA69_0==LBRACE||LA69_0==LPAREN||LA69_0==LBRACK||LA69_0==SEMIC||(LA69_0>=ADD && LA69_0<=SUB)||(LA69_0>=INC && LA69_0<=DEC)||(LA69_0>=NOT && LA69_0<=INV)||(LA69_0>=StringLiteral && LA69_0<=XmlAttribute)||LA69_0==Identifier||LA69_0==RegularExpressionLiteral||(LA69_0>=DecimalLiteral && LA69_0<=HexIntegerLiteral)||LA69_0==XMLLiteral) ) {
                     alt69=1;
                 }
 
 
                 switch (alt69) {
             	case 1 :
-            	    // JS.g:1637:28: statement
+            	    // JS.g:1648:28: statement
             	    {
-            	    pushFollow(FOLLOW_statement_in_caseClause6100);
+            	    pushFollow(FOLLOW_statement_in_caseClause6152);
             	    statement282=statement();
             	    _fsp--;
 
@@ -9353,7 +9424,7 @@
     };
 
     // $ANTLR start defaultClause
-    // JS.g:1640:1: defaultClause : DEFAULT COLON ( statement )* ;
+    // JS.g:1651:1: defaultClause : DEFAULT COLON ( statement )* ;
     public final defaultClause_return defaultClause() throws RecognitionException {
         defaultClause_return retval = new defaultClause_return();
         retval.start = input.LT(1);
@@ -9369,19 +9440,19 @@
         Object COLON284_tree=null;
 
         try {
-            // JS.g:1641:2: ( DEFAULT COLON ( statement )* )
-            // JS.g:1641:4: DEFAULT COLON ( statement )*
+            // JS.g:1652:2: ( DEFAULT COLON ( statement )* )
+            // JS.g:1652:4: DEFAULT COLON ( statement )*
             {
             root_0 = (Object)adaptor.nil();
 
             DEFAULT283=(Token)input.LT(1);
-            match(input,DEFAULT,FOLLOW_DEFAULT_in_defaultClause6113); 
+            match(input,DEFAULT,FOLLOW_DEFAULT_in_defaultClause6165); 
             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_defaultClause6116); 
-            // JS.g:1641:20: ( statement )*
+            match(input,COLON,FOLLOW_COLON_in_defaultClause6168); 
+            // JS.g:1652:20: ( statement )*
             loop70:
             do {
                 int alt70=2;
@@ -9396,16 +9467,16 @@
 
 
                 }
-                else if ( ((LA70_0>=NULL && LA70_0<=BREAK)||LA70_0==CONTINUE||(LA70_0>=DELETE && LA70_0<=DO)||(LA70_0>=FOR && LA70_0<=IF)||(LA70_0>=NEW && LA70_0<=YIELD)||LA70_0==WXML||LA70_0==CONST||LA70_0==LBRACE||LA70_0==LPAREN||LA70_0==LBRACK||LA70_0==SEMIC||(LA70_0>=ADD && LA70_0<=SUB)||(LA70_0>=INC && LA70_0<=DEC)||(LA70_0>=NOT && LA70_0<=INV)||(LA70_0>=StringLiteral && LA70_0<=XmlAttribute)||LA70_0==Identifier||LA70_0==RegularExpressionLiteral||(LA70_0>=DecimalLiteral && LA70_0<=HexIntegerLiteral)||LA70_0==XMLLiteral) ) {
+                else if ( ((LA70_0>=NULL && LA70_0<=BREAK)||LA70_0==CONTINUE||(LA70_0>=DELETE && LA70_0<=DO)||(LA70_0>=FOR && LA70_0<=IF)||(LA70_0>=NEW && LA70_0<=YIELD)||(LA70_0>=WXML && LA70_0<=NAMESPACE)||LA70_0==CONST||LA70_0==LBRACE||LA70_0==LPAREN||LA70_0==LBRACK||LA70_0==SEMIC||(LA70_0>=ADD && LA70_0<=SUB)||(LA70_0>=INC && LA70_0<=DEC)||(LA70_0>=NOT && LA70_0<=INV)||(LA70_0>=StringLiteral && LA70_0<=XmlAttribute)||LA70_0==Identifier||LA70_0==RegularExpressionLiteral||(LA70_0>=DecimalLiteral && LA70_0<=HexIntegerLiteral)||LA70_0==XMLLiteral) ) {
                     alt70=1;
                 }
 
 
                 switch (alt70) {
             	case 1 :
-            	    // JS.g:1641:20: statement
+            	    // JS.g:1652:20: statement
             	    {
-            	    pushFollow(FOLLOW_statement_in_defaultClause6119);
+            	    pushFollow(FOLLOW_statement_in_defaultClause6171);
             	    statement285=statement();
             	    _fsp--;
 
@@ -9444,7 +9515,7 @@
     };
 
     // $ANTLR start labelledStatement
-    // JS.g:1648:1: labelledStatement : identifier COLON statement -> ^( LABELLED identifier statement ) ;
+    // JS.g:1659: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);
@@ -9462,26 +9533,26 @@
         RewriteRuleSubtreeStream stream_statement=new RewriteRuleSubtreeStream(adaptor,"rule statement");
         RewriteRuleSubtreeStream stream_identifier=new RewriteRuleSubtreeStream(adaptor,"rule identifier");
         try {
-            // JS.g:1649:2: ( identifier COLON statement -> ^( LABELLED identifier statement ) )
-            // JS.g:1649:4: identifier COLON statement
+            // JS.g:1660:2: ( identifier COLON statement -> ^( LABELLED identifier statement ) )
+            // JS.g:1660:4: identifier COLON statement
             {
-            pushFollow(FOLLOW_identifier_in_labelledStatement6136);
+            pushFollow(FOLLOW_identifier_in_labelledStatement6188);
             identifier286=identifier();
             _fsp--;
 
             stream_identifier.add(identifier286.getTree());
             COLON287=(Token)input.LT(1);
-            match(input,COLON,FOLLOW_COLON_in_labelledStatement6138); 
+            match(input,COLON,FOLLOW_COLON_in_labelledStatement6190); 
             stream_COLON.add(COLON287);
 
-            pushFollow(FOLLOW_statement_in_labelledStatement6140);
+            pushFollow(FOLLOW_statement_in_labelledStatement6192);
             statement288=statement();
             _fsp--;
 
             stream_statement.add(statement288.getTree());
 
             // AST REWRITE
-            // elements: identifier, statement
+            // elements: statement, identifier
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -9490,9 +9561,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1650:2: -> ^( LABELLED identifier statement )
+            // 1661:2: -> ^( LABELLED identifier statement )
             {
-                // JS.g:1650:5: ^( LABELLED identifier statement )
+                // JS.g:1661:5: ^( LABELLED identifier statement )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(LABELLED, "LABELLED"), root_1);
@@ -9531,7 +9602,7 @@
     };
 
     // $ANTLR start throwStatement
-    // JS.g:1672:1: throwStatement : THROW expression semic ;
+    // JS.g:1683:1: throwStatement : THROW expression semic ;
     public final throwStatement_return throwStatement() throws RecognitionException {
         throwStatement_return retval = new throwStatement_return();
         retval.start = input.LT(1);
@@ -9547,23 +9618,23 @@
         Object THROW289_tree=null;
 
         try {
-            // JS.g:1673:2: ( THROW expression semic )
-            // JS.g:1673:4: THROW expression semic
+            // JS.g:1684:2: ( THROW expression semic )
+            // JS.g:1684:4: THROW expression semic
             {
             root_0 = (Object)adaptor.nil();
 
             THROW289=(Token)input.LT(1);
-            match(input,THROW,FOLLOW_THROW_in_throwStatement6171); 
+            match(input,THROW,FOLLOW_THROW_in_throwStatement6223); 
             THROW289_tree = (Object)adaptor.create(THROW289);
             root_0 = (Object)adaptor.becomeRoot(THROW289_tree, root_0);
 
              promoteEOL(null); 
-            pushFollow(FOLLOW_expression_in_throwStatement6176);
+            pushFollow(FOLLOW_expression_in_throwStatement6228);
             expression290=expression();
             _fsp--;
 
             adaptor.addChild(root_0, expression290.getTree());
-            pushFollow(FOLLOW_semic_in_throwStatement6178);
+            pushFollow(FOLLOW_semic_in_throwStatement6230);
             semic291=semic();
             _fsp--;
 
@@ -9592,7 +9663,7 @@
     };
 
     // $ANTLR start tryStatement
-    // JS.g:1680:1: tryStatement : TRY block ( ( catchClause )+ ( finallyClause )? | finallyClause ) ;
+    // JS.g:1691: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);
@@ -9612,22 +9683,22 @@
         Object TRY292_tree=null;
 
         try {
-            // JS.g:1681:2: ( TRY block ( ( catchClause )+ ( finallyClause )? | finallyClause ) )
-            // JS.g:1681:4: TRY block ( ( catchClause )+ ( finallyClause )? | finallyClause )
+            // JS.g:1692:2: ( TRY block ( ( catchClause )+ ( finallyClause )? | finallyClause ) )
+            // JS.g:1692:4: TRY block ( ( catchClause )+ ( finallyClause )? | finallyClause )
             {
             root_0 = (Object)adaptor.nil();
 
             TRY292=(Token)input.LT(1);
-            match(input,TRY,FOLLOW_TRY_in_tryStatement6195); 
+            match(input,TRY,FOLLOW_TRY_in_tryStatement6247); 
             TRY292_tree = (Object)adaptor.create(TRY292);
             root_0 = (Object)adaptor.becomeRoot(TRY292_tree, root_0);
 
-            pushFollow(FOLLOW_block_in_tryStatement6198);
+            pushFollow(FOLLOW_block_in_tryStatement6250);
             block293=block();
             _fsp--;
 
             adaptor.addChild(root_0, block293.getTree());
-            // JS.g:1681:15: ( ( catchClause )+ ( finallyClause )? | finallyClause )
+            // JS.g:1692:15: ( ( catchClause )+ ( finallyClause )? | finallyClause )
             int alt73=2;
             int LA73_0 = input.LA(1);
 
@@ -9639,15 +9710,15 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("1681:15: ( ( catchClause )+ ( finallyClause )? | finallyClause )", 73, 0, input);
+                    new NoViableAltException("1692:15: ( ( catchClause )+ ( finallyClause )? | finallyClause )", 73, 0, input);
 
                 throw nvae;
             }
             switch (alt73) {
                 case 1 :
-                    // JS.g:1681:17: ( catchClause )+ ( finallyClause )?
+                    // JS.g:1692:17: ( catchClause )+ ( finallyClause )?
                     {
-                    // JS.g:1681:17: ( catchClause )+
+                    // JS.g:1692:17: ( catchClause )+
                     int cnt71=0;
                     loop71:
                     do {
@@ -9661,9 +9732,9 @@
 
                         switch (alt71) {
                     	case 1 :
-                    	    // JS.g:1681:17: catchClause
+                    	    // JS.g:1692:17: catchClause
                     	    {
-                    	    pushFollow(FOLLOW_catchClause_in_tryStatement6202);
+                    	    pushFollow(FOLLOW_catchClause_in_tryStatement6254);
                     	    catchClause294=catchClause();
                     	    _fsp--;
 
@@ -9681,7 +9752,7 @@
                         cnt71++;
                     } while (true);
 
-                    // JS.g:1681:30: ( finallyClause )?
+                    // JS.g:1692:30: ( finallyClause )?
                     int alt72=2;
                     int LA72_0 = input.LA(1);
 
@@ -9690,9 +9761,9 @@
                     }
                     switch (alt72) {
                         case 1 :
-                            // JS.g:1681:30: finallyClause
+                            // JS.g:1692:30: finallyClause
                             {
-                            pushFollow(FOLLOW_finallyClause_in_tryStatement6205);
+                            pushFollow(FOLLOW_finallyClause_in_tryStatement6257);
                             finallyClause295=finallyClause();
                             _fsp--;
 
@@ -9707,9 +9778,9 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1681:47: finallyClause
+                    // JS.g:1692:47: finallyClause
                     {
-                    pushFollow(FOLLOW_finallyClause_in_tryStatement6210);
+                    pushFollow(FOLLOW_finallyClause_in_tryStatement6262);
                     finallyClause296=finallyClause();
                     _fsp--;
 
@@ -9745,7 +9816,7 @@
     };
 
     // $ANTLR start catchClause
-    // JS.g:1684:1: catchClause : CATCH LPAREN identifier ( catchFilter )? RPAREN block ;
+    // JS.g:1695: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);
@@ -9767,24 +9838,24 @@
         Object RPAREN301_tree=null;
 
         try {
-            // JS.g:1685:2: ( CATCH LPAREN identifier ( catchFilter )? RPAREN block )
-            // JS.g:1685:4: CATCH LPAREN identifier ( catchFilter )? RPAREN block
+            // JS.g:1696:2: ( CATCH LPAREN identifier ( catchFilter )? RPAREN block )
+            // JS.g:1696:4: CATCH LPAREN identifier ( catchFilter )? RPAREN block
             {
             root_0 = (Object)adaptor.nil();
 
             CATCH297=(Token)input.LT(1);
-            match(input,CATCH,FOLLOW_CATCH_in_catchClause6224); 
+            match(input,CATCH,FOLLOW_CATCH_in_catchClause6276); 
             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_catchClause6227); 
-            pushFollow(FOLLOW_identifier_in_catchClause6230);
+            match(input,LPAREN,FOLLOW_LPAREN_in_catchClause6279); 
+            pushFollow(FOLLOW_identifier_in_catchClause6282);
             identifier299=identifier();
             _fsp--;
 
             adaptor.addChild(root_0, identifier299.getTree());
-            // JS.g:1685:30: ( catchFilter )?
+            // JS.g:1696:30: ( catchFilter )?
             int alt74=2;
             int LA74_0 = input.LA(1);
 
@@ -9793,9 +9864,9 @@
             }
             switch (alt74) {
                 case 1 :
-                    // JS.g:1685:30: catchFilter
+                    // JS.g:1696:30: catchFilter
                     {
-                    pushFollow(FOLLOW_catchFilter_in_catchClause6232);
+                    pushFollow(FOLLOW_catchFilter_in_catchClause6284);
                     catchFilter300=catchFilter();
                     _fsp--;
 
@@ -9807,8 +9878,8 @@
             }
 
             RPAREN301=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_catchClause6235); 
-            pushFollow(FOLLOW_block_in_catchClause6238);
+            match(input,RPAREN,FOLLOW_RPAREN_in_catchClause6287); 
+            pushFollow(FOLLOW_block_in_catchClause6290);
             block302=block();
             _fsp--;
 
@@ -9838,7 +9909,7 @@
     };
 
     // $ANTLR start catchFilter
-    // JS.g:1688:1: catchFilter : IF instanceofExpression ;
+    // JS.g:1699:1: catchFilter : IF instanceofExpression ;
     public final catchFilter_return catchFilter() throws RecognitionException {
         catchFilter_return retval = new catchFilter_return();
         retval.start = input.LT(1);
@@ -9852,17 +9923,17 @@
         Object IF303_tree=null;
 
         try {
-            // JS.g:1689:3: ( IF instanceofExpression )
-            // JS.g:1689:5: IF instanceofExpression
+            // JS.g:1700:3: ( IF instanceofExpression )
+            // JS.g:1700:5: IF instanceofExpression
             {
             root_0 = (Object)adaptor.nil();
 
             IF303=(Token)input.LT(1);
-            match(input,IF,FOLLOW_IF_in_catchFilter6251); 
+            match(input,IF,FOLLOW_IF_in_catchFilter6303); 
             IF303_tree = (Object)adaptor.create(IF303);
             root_0 = (Object)adaptor.becomeRoot(IF303_tree, root_0);
 
-            pushFollow(FOLLOW_instanceofExpression_in_catchFilter6254);
+            pushFollow(FOLLOW_instanceofExpression_in_catchFilter6306);
             instanceofExpression304=instanceofExpression();
             _fsp--;
 
@@ -9892,7 +9963,7 @@
     };
 
     // $ANTLR start instanceofExpression
-    // JS.g:1692:1: instanceofExpression : identifier INSTANCEOF identifier ;
+    // JS.g:1703:1: instanceofExpression : identifier INSTANCEOF identifier ;
     public final instanceofExpression_return instanceofExpression() throws RecognitionException {
         instanceofExpression_return retval = new instanceofExpression_return();
         retval.start = input.LT(1);
@@ -9908,22 +9979,22 @@
         Object INSTANCEOF306_tree=null;
 
         try {
-            // JS.g:1693:3: ( identifier INSTANCEOF identifier )
-            // JS.g:1693:5: identifier INSTANCEOF identifier
+            // JS.g:1704:3: ( identifier INSTANCEOF identifier )
+            // JS.g:1704:5: identifier INSTANCEOF identifier
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_identifier_in_instanceofExpression6269);
+            pushFollow(FOLLOW_identifier_in_instanceofExpression6321);
             identifier305=identifier();
             _fsp--;
 
             adaptor.addChild(root_0, identifier305.getTree());
             INSTANCEOF306=(Token)input.LT(1);
-            match(input,INSTANCEOF,FOLLOW_INSTANCEOF_in_instanceofExpression6271); 
+            match(input,INSTANCEOF,FOLLOW_INSTANCEOF_in_instanceofExpression6323); 
             INSTANCEOF306_tree = (Object)adaptor.create(INSTANCEOF306);
             root_0 = (Object)adaptor.becomeRoot(INSTANCEOF306_tree, root_0);
 
-            pushFollow(FOLLOW_identifier_in_instanceofExpression6274);
+            pushFollow(FOLLOW_identifier_in_instanceofExpression6326);
             identifier307=identifier();
             _fsp--;
 
@@ -9953,7 +10024,7 @@
     };
 
     // $ANTLR start finallyClause
-    // JS.g:1696:1: finallyClause : FINALLY block ;
+    // JS.g:1707:1: finallyClause : FINALLY block ;
     public final finallyClause_return finallyClause() throws RecognitionException {
         finallyClause_return retval = new finallyClause_return();
         retval.start = input.LT(1);
@@ -9967,17 +10038,17 @@
         Object FINALLY308_tree=null;
 
         try {
-            // JS.g:1697:2: ( FINALLY block )
-            // JS.g:1697:4: FINALLY block
+            // JS.g:1708:2: ( FINALLY block )
+            // JS.g:1708:4: FINALLY block
             {
             root_0 = (Object)adaptor.nil();
 
             FINALLY308=(Token)input.LT(1);
-            match(input,FINALLY,FOLLOW_FINALLY_in_finallyClause6287); 
+            match(input,FINALLY,FOLLOW_FINALLY_in_finallyClause6339); 
             FINALLY308_tree = (Object)adaptor.create(FINALLY308);
             root_0 = (Object)adaptor.becomeRoot(FINALLY308_tree, root_0);
 
-            pushFollow(FOLLOW_block_in_finallyClause6290);
+            pushFollow(FOLLOW_block_in_finallyClause6342);
             block309=block();
             _fsp--;
 
@@ -10007,7 +10078,7 @@
     };
 
     // $ANTLR start functionDeclaration
-    // JS.g:1710:1: functionDeclaration : FUNCTION name= identifier formalParameterList functionBody -> ^( FUNCTION $name formalParameterList functionBody ) ;
+    // JS.g:1721: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);
@@ -10028,24 +10099,24 @@
         RewriteRuleSubtreeStream stream_identifier=new RewriteRuleSubtreeStream(adaptor,"rule identifier");
         RewriteRuleSubtreeStream stream_formalParameterList=new RewriteRuleSubtreeStream(adaptor,"rule formalParameterList");
         try {
-            // JS.g:1711:2: ( FUNCTION name= identifier formalParameterList functionBody -> ^( FUNCTION $name formalParameterList functionBody ) )
-            // JS.g:1711:4: FUNCTION name= identifier formalParameterList functionBody
+            // JS.g:1722:2: ( FUNCTION name= identifier formalParameterList functionBody -> ^( FUNCTION $name formalParameterList functionBody ) )
+            // JS.g:1722:4: FUNCTION name= identifier formalParameterList functionBody
             {
             FUNCTION310=(Token)input.LT(1);
-            match(input,FUNCTION,FOLLOW_FUNCTION_in_functionDeclaration6311); 
+            match(input,FUNCTION,FOLLOW_FUNCTION_in_functionDeclaration6363); 
             stream_FUNCTION.add(FUNCTION310);
 
-            pushFollow(FOLLOW_identifier_in_functionDeclaration6315);
+            pushFollow(FOLLOW_identifier_in_functionDeclaration6367);
             name=identifier();
             _fsp--;
 
             stream_identifier.add(name.getTree());
-            pushFollow(FOLLOW_formalParameterList_in_functionDeclaration6317);
+            pushFollow(FOLLOW_formalParameterList_in_functionDeclaration6369);
             formalParameterList311=formalParameterList();
             _fsp--;
 
             stream_formalParameterList.add(formalParameterList311.getTree());
-            pushFollow(FOLLOW_functionBody_in_functionDeclaration6319);
+            pushFollow(FOLLOW_functionBody_in_functionDeclaration6371);
             functionBody312=functionBody();
             _fsp--;
 
@@ -10062,9 +10133,9 @@
             RewriteRuleSubtreeStream stream_name=new RewriteRuleSubtreeStream(adaptor,"token name",name!=null?name.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1712:2: -> ^( FUNCTION $name formalParameterList functionBody )
+            // 1723:2: -> ^( FUNCTION $name formalParameterList functionBody )
             {
-                // JS.g:1712:5: ^( FUNCTION $name formalParameterList functionBody )
+                // JS.g:1723:5: ^( FUNCTION $name formalParameterList functionBody )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_FUNCTION.next(), root_1);
@@ -10104,7 +10175,7 @@
     };
 
     // $ANTLR start functionExpression
-    // JS.g:1715:1: functionExpression : FUNCTION (name= identifier )? formalParameterList functionBody -> ^( FUNCTION ( $name)? formalParameterList functionBody ) ;
+    // JS.g:1726: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);
@@ -10125,25 +10196,25 @@
         RewriteRuleSubtreeStream stream_identifier=new RewriteRuleSubtreeStream(adaptor,"rule identifier");
         RewriteRuleSubtreeStream stream_formalParameterList=new RewriteRuleSubtreeStream(adaptor,"rule formalParameterList");
         try {
-            // JS.g:1716:2: ( FUNCTION (name= identifier )? formalParameterList functionBody -> ^( FUNCTION ( $name)? formalParameterList functionBody ) )
-            // JS.g:1716:4: FUNCTION (name= identifier )? formalParameterList functionBody
+            // JS.g:1727:2: ( FUNCTION (name= identifier )? formalParameterList functionBody -> ^( FUNCTION ( $name)? formalParameterList functionBody ) )
+            // JS.g:1727:4: FUNCTION (name= identifier )? formalParameterList functionBody
             {
             FUNCTION313=(Token)input.LT(1);
-            match(input,FUNCTION,FOLLOW_FUNCTION_in_functionExpression6346); 
+            match(input,FUNCTION,FOLLOW_FUNCTION_in_functionExpression6398); 
             stream_FUNCTION.add(FUNCTION313);
 
-            // JS.g:1716:17: (name= identifier )?
+            // JS.g:1727:17: (name= identifier )?
             int alt75=2;
             int LA75_0 = input.LA(1);
 
-            if ( (LA75_0==EACH||(LA75_0>=GET && LA75_0<=SET)||LA75_0==WXML||LA75_0==Identifier) ) {
+            if ( (LA75_0==EACH||(LA75_0>=GET && LA75_0<=SET)||(LA75_0>=WXML && LA75_0<=NAMESPACE)||LA75_0==Identifier) ) {
                 alt75=1;
             }
             switch (alt75) {
                 case 1 :
-                    // JS.g:1716:17: name= identifier
+                    // JS.g:1727:17: name= identifier
                     {
-                    pushFollow(FOLLOW_identifier_in_functionExpression6350);
+                    pushFollow(FOLLOW_identifier_in_functionExpression6402);
                     name=identifier();
                     _fsp--;
 
@@ -10154,19 +10225,19 @@
 
             }
 
-            pushFollow(FOLLOW_formalParameterList_in_functionExpression6353);
+            pushFollow(FOLLOW_formalParameterList_in_functionExpression6405);
             formalParameterList314=formalParameterList();
             _fsp--;
 
             stream_formalParameterList.add(formalParameterList314.getTree());
-            pushFollow(FOLLOW_functionBody_in_functionExpression6355);
+            pushFollow(FOLLOW_functionBody_in_functionExpression6407);
             functionBody315=functionBody();
             _fsp--;
 
             stream_functionBody.add(functionBody315.getTree());
 
             // AST REWRITE
-            // elements: functionBody, name, formalParameterList, FUNCTION
+            // elements: formalParameterList, name, FUNCTION, functionBody
             // token labels: 
             // rule labels: retval, name
             // token list labels: 
@@ -10176,14 +10247,14 @@
             RewriteRuleSubtreeStream stream_name=new RewriteRuleSubtreeStream(adaptor,"token name",name!=null?name.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1717:2: -> ^( FUNCTION ( $name)? formalParameterList functionBody )
+            // 1728:2: -> ^( FUNCTION ( $name)? formalParameterList functionBody )
             {
-                // JS.g:1717:5: ^( FUNCTION ( $name)? formalParameterList functionBody )
+                // JS.g:1728:5: ^( FUNCTION ( $name)? formalParameterList functionBody )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_FUNCTION.next(), root_1);
 
-                // JS.g:1717:17: ( $name)?
+                // JS.g:1728:17: ( $name)?
                 if ( stream_name.hasNext() ) {
                     adaptor.addChild(root_1, stream_name.next());
 
@@ -10223,7 +10294,7 @@
     };
 
     // $ANTLR start formalParameterList
-    // JS.g:1720:1: formalParameterList : LPAREN (args+= identifier ( COMMA args+= identifier )* )? RPAREN -> ^( ARGS ( $args)* ) ;
+    // JS.g:1731: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);
@@ -10243,25 +10314,25 @@
         RewriteRuleTokenStream stream_LPAREN=new RewriteRuleTokenStream(adaptor,"token LPAREN");
         RewriteRuleSubtreeStream stream_identifier=new RewriteRuleSubtreeStream(adaptor,"rule identifier");
         try {
-            // JS.g:1721:2: ( LPAREN (args+= identifier ( COMMA args+= identifier )* )? RPAREN -> ^( ARGS ( $args)* ) )
-            // JS.g:1721:4: LPAREN (args+= identifier ( COMMA args+= identifier )* )? RPAREN
+            // JS.g:1732:2: ( LPAREN (args+= identifier ( COMMA args+= identifier )* )? RPAREN -> ^( ARGS ( $args)* ) )
+            // JS.g:1732:4: LPAREN (args+= identifier ( COMMA args+= identifier )* )? RPAREN
             {
             LPAREN316=(Token)input.LT(1);
-            match(input,LPAREN,FOLLOW_LPAREN_in_formalParameterList6383); 
+            match(input,LPAREN,FOLLOW_LPAREN_in_formalParameterList6435); 
             stream_LPAREN.add(LPAREN316);
 
-            // JS.g:1721:11: (args+= identifier ( COMMA args+= identifier )* )?
+            // JS.g:1732:11: (args+= identifier ( COMMA args+= identifier )* )?
             int alt77=2;
             int LA77_0 = input.LA(1);
 
-            if ( (LA77_0==EACH||(LA77_0>=GET && LA77_0<=SET)||LA77_0==WXML||LA77_0==Identifier) ) {
+            if ( (LA77_0==EACH||(LA77_0>=GET && LA77_0<=SET)||(LA77_0>=WXML && LA77_0<=NAMESPACE)||LA77_0==Identifier) ) {
                 alt77=1;
             }
             switch (alt77) {
                 case 1 :
-                    // JS.g:1721:13: args+= identifier ( COMMA args+= identifier )*
+                    // JS.g:1732:13: args+= identifier ( COMMA args+= identifier )*
                     {
-                    pushFollow(FOLLOW_identifier_in_formalParameterList6389);
+                    pushFollow(FOLLOW_identifier_in_formalParameterList6441);
                     args=identifier();
                     _fsp--;
 
@@ -10269,7 +10340,7 @@
                     if (list_args==null) list_args=new ArrayList();
                     list_args.add(args);
 
-                    // JS.g:1721:30: ( COMMA args+= identifier )*
+                    // JS.g:1732:30: ( COMMA args+= identifier )*
                     loop76:
                     do {
                         int alt76=2;
@@ -10282,13 +10353,13 @@
 
                         switch (alt76) {
                     	case 1 :
-                    	    // JS.g:1721:32: COMMA args+= identifier
+                    	    // JS.g:1732:32: COMMA args+= identifier
                     	    {
                     	    COMMA317=(Token)input.LT(1);
-                    	    match(input,COMMA,FOLLOW_COMMA_in_formalParameterList6393); 
+                    	    match(input,COMMA,FOLLOW_COMMA_in_formalParameterList6445); 
                     	    stream_COMMA.add(COMMA317);
 
-                    	    pushFollow(FOLLOW_identifier_in_formalParameterList6397);
+                    	    pushFollow(FOLLOW_identifier_in_formalParameterList6449);
                     	    args=identifier();
                     	    _fsp--;
 
@@ -10312,7 +10383,7 @@
             }
 
             RPAREN318=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_formalParameterList6405); 
+            match(input,RPAREN,FOLLOW_RPAREN_in_formalParameterList6457); 
             stream_RPAREN.add(RPAREN318);
 
 
@@ -10326,14 +10397,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();
-            // 1722:2: -> ^( ARGS ( $args)* )
+            // 1733:2: -> ^( ARGS ( $args)* )
             {
-                // JS.g:1722:5: ^( ARGS ( $args)* )
+                // JS.g:1733:5: ^( ARGS ( $args)* )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(ARGS, "ARGS"), root_1);
 
-                // JS.g:1722:13: ( $args)*
+                // JS.g:1733:13: ( $args)*
                 while ( stream_args.hasNext() ) {
                     adaptor.addChild(root_1, ((ParserRuleReturnScope)stream_args.next()).getTree());
 
@@ -10371,7 +10442,7 @@
     };
 
     // $ANTLR start functionBody
-    // JS.g:1725:1: functionBody : lb= LBRACE ( sourceElement )* RBRACE -> ^( BLOCK[$lb, \"BLOCK\"] ( sourceElement )* ) ;
+    // JS.g:1736: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);
@@ -10389,29 +10460,29 @@
         RewriteRuleTokenStream stream_LBRACE=new RewriteRuleTokenStream(adaptor,"token LBRACE");
         RewriteRuleSubtreeStream stream_sourceElement=new RewriteRuleSubtreeStream(adaptor,"rule sourceElement");
         try {
-            // JS.g:1726:2: (lb= LBRACE ( sourceElement )* RBRACE -> ^( BLOCK[$lb, \"BLOCK\"] ( sourceElement )* ) )
-            // JS.g:1726:4: lb= LBRACE ( sourceElement )* RBRACE
+            // JS.g:1737:2: (lb= LBRACE ( sourceElement )* RBRACE -> ^( BLOCK[$lb, \"BLOCK\"] ( sourceElement )* ) )
+            // JS.g:1737:4: lb= LBRACE ( sourceElement )* RBRACE
             {
             lb=(Token)input.LT(1);
-            match(input,LBRACE,FOLLOW_LBRACE_in_functionBody6431); 
+            match(input,LBRACE,FOLLOW_LBRACE_in_functionBody6483); 
             stream_LBRACE.add(lb);
 
-            // JS.g:1726:14: ( sourceElement )*
+            // JS.g:1737:14: ( sourceElement )*
             loop78:
             do {
                 int alt78=2;
                 int LA78_0 = input.LA(1);
 
-                if ( ((LA78_0>=NULL && LA78_0<=BREAK)||(LA78_0>=CONTINUE && LA78_0<=DO)||(LA78_0>=FOR && LA78_0<=IF)||(LA78_0>=NEW && LA78_0<=YIELD)||LA78_0==WXML||LA78_0==CONST||LA78_0==LBRACE||LA78_0==LPAREN||LA78_0==LBRACK||LA78_0==SEMIC||(LA78_0>=ADD && LA78_0<=SUB)||(LA78_0>=INC && LA78_0<=DEC)||(LA78_0>=NOT && LA78_0<=INV)||(LA78_0>=StringLiteral && LA78_0<=XmlAttribute)||LA78_0==Identifier||LA78_0==RegularExpressionLiteral||(LA78_0>=DecimalLiteral && LA78_0<=HexIntegerLiteral)||LA78_0==XMLLiteral) ) {
+                if ( ((LA78_0>=NULL && LA78_0<=BREAK)||(LA78_0>=CONTINUE && LA78_0<=DO)||(LA78_0>=FOR && LA78_0<=IF)||(LA78_0>=NEW && LA78_0<=YIELD)||(LA78_0>=WXML && LA78_0<=NAMESPACE)||LA78_0==CONST||LA78_0==LBRACE||LA78_0==LPAREN||LA78_0==LBRACK||LA78_0==SEMIC||(LA78_0>=ADD && LA78_0<=SUB)||(LA78_0>=INC && LA78_0<=DEC)||(LA78_0>=NOT && LA78_0<=INV)||(LA78_0>=StringLiteral && LA78_0<=XmlAttribute)||LA78_0==Identifier||LA78_0==RegularExpressionLiteral||(LA78_0>=DecimalLiteral && LA78_0<=HexIntegerLiteral)||LA78_0==XMLLiteral) ) {
                     alt78=1;
                 }
 
 
                 switch (alt78) {
             	case 1 :
-            	    // JS.g:1726:14: sourceElement
+            	    // JS.g:1737:14: sourceElement
             	    {
-            	    pushFollow(FOLLOW_sourceElement_in_functionBody6433);
+            	    pushFollow(FOLLOW_sourceElement_in_functionBody6485);
             	    sourceElement319=sourceElement();
             	    _fsp--;
 
@@ -10426,7 +10497,7 @@
             } while (true);
 
             RBRACE320=(Token)input.LT(1);
-            match(input,RBRACE,FOLLOW_RBRACE_in_functionBody6436); 
+            match(input,RBRACE,FOLLOW_RBRACE_in_functionBody6488); 
             stream_RBRACE.add(RBRACE320);
 
 
@@ -10440,14 +10511,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1727:2: -> ^( BLOCK[$lb, \"BLOCK\"] ( sourceElement )* )
+            // 1738:2: -> ^( BLOCK[$lb, \"BLOCK\"] ( sourceElement )* )
             {
-                // JS.g:1727:5: ^( BLOCK[$lb, \"BLOCK\"] ( sourceElement )* )
+                // JS.g:1738: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:1727:28: ( sourceElement )*
+                // JS.g:1738:28: ( sourceElement )*
                 while ( stream_sourceElement.hasNext() ) {
                     adaptor.addChild(root_1, stream_sourceElement.next());
 
@@ -10485,7 +10556,7 @@
     };
 
     // $ANTLR start getMethodDeclaration
-    // JS.g:1735:1: getMethodDeclaration : GET name= identifier LPAREN RPAREN functionBody ;
+    // JS.g:1746: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);
@@ -10503,32 +10574,64 @@
         Object GET321_tree=null;
         Object LPAREN322_tree=null;
         Object RPAREN323_tree=null;
-
+        RewriteRuleTokenStream stream_RPAREN=new RewriteRuleTokenStream(adaptor,"token RPAREN");
+        RewriteRuleTokenStream stream_GET=new RewriteRuleTokenStream(adaptor,"token GET");
+        RewriteRuleTokenStream stream_LPAREN=new RewriteRuleTokenStream(adaptor,"token LPAREN");
+        RewriteRuleSubtreeStream stream_functionBody=new RewriteRuleSubtreeStream(adaptor,"rule functionBody");
+        RewriteRuleSubtreeStream stream_identifier=new RewriteRuleSubtreeStream(adaptor,"rule identifier");
         try {
-            // JS.g:1736:3: ( GET name= identifier LPAREN RPAREN functionBody )
-            // JS.g:1736:5: GET name= identifier LPAREN RPAREN functionBody
+            // JS.g:1747:3: ( GET name= identifier LPAREN RPAREN functionBody -> ^( GETTER identifier functionBody ) )
+            // JS.g:1747:5: GET name= identifier LPAREN RPAREN functionBody
             {
-            root_0 = (Object)adaptor.nil();
-
             GET321=(Token)input.LT(1);
-            match(input,GET,FOLLOW_GET_in_getMethodDeclaration6466); 
-            GET321_tree = (Object)adaptor.create(GET321);
-            root_0 = (Object)adaptor.becomeRoot(GET321_tree, root_0);
+            match(input,GET,FOLLOW_GET_in_getMethodDeclaration6518); 
+            stream_GET.add(GET321);
 
-            pushFollow(FOLLOW_identifier_in_getMethodDeclaration6471);
+            pushFollow(FOLLOW_identifier_in_getMethodDeclaration6522);
             name=identifier();
             _fsp--;
 
-            adaptor.addChild(root_0, name.getTree());
+            stream_identifier.add(name.getTree());
             LPAREN322=(Token)input.LT(1);
-            match(input,LPAREN,FOLLOW_LPAREN_in_getMethodDeclaration6473); 
+            match(input,LPAREN,FOLLOW_LPAREN_in_getMethodDeclaration6524); 
+            stream_LPAREN.add(LPAREN322);
+
             RPAREN323=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_getMethodDeclaration6476); 
-            pushFollow(FOLLOW_functionBody_in_getMethodDeclaration6479);
+            match(input,RPAREN,FOLLOW_RPAREN_in_getMethodDeclaration6526); 
+            stream_RPAREN.add(RPAREN323);
+
+            pushFollow(FOLLOW_functionBody_in_getMethodDeclaration6528);
             functionBody324=functionBody();
             _fsp--;
 
-            adaptor.addChild(root_0, functionBody324.getTree());
+            stream_functionBody.add(functionBody324.getTree());
+
+            // AST REWRITE
+            // elements: functionBody, identifier
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1748:4: -> ^( GETTER identifier functionBody )
+            {
+                // JS.g:1748:7: ^( GETTER identifier functionBody )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(adaptor.create(GETTER, "GETTER"), root_1);
+
+                adaptor.addChild(root_1, stream_identifier.next());
+                adaptor.addChild(root_1, stream_functionBody.next());
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+
 
             }
 
@@ -10554,7 +10657,7 @@
     };
 
     // $ANTLR start setMethodDeclaration
-    // JS.g:1739:1: setMethodDeclaration : SET name= identifier LPAREN identifier RPAREN functionBody ;
+    // JS.g:1751: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);
@@ -10563,48 +10666,83 @@
 
         Token SET325=null;
         Token LPAREN326=null;
-        Token RPAREN328=null;
+        Token RPAREN327=null;
         identifier_return name = null;
 
-        identifier_return identifier327 = null;
+        identifier_return param = null;
 
-        functionBody_return functionBody329 = null;
+        functionBody_return functionBody328 = null;
 
 
         Object SET325_tree=null;
         Object LPAREN326_tree=null;
-        Object RPAREN328_tree=null;
-
+        Object RPAREN327_tree=null;
+        RewriteRuleTokenStream stream_RPAREN=new RewriteRuleTokenStream(adaptor,"token RPAREN");
+        RewriteRuleTokenStream stream_SET=new RewriteRuleTokenStream(adaptor,"token SET");
+        RewriteRuleTokenStream stream_LPAREN=new RewriteRuleTokenStream(adaptor,"token LPAREN");
+        RewriteRuleSubtreeStream stream_functionBody=new RewriteRuleSubtreeStream(adaptor,"rule functionBody");
+        RewriteRuleSubtreeStream stream_identifier=new RewriteRuleSubtreeStream(adaptor,"rule identifier");
         try {
-            // JS.g:1740:3: ( SET name= identifier LPAREN identifier RPAREN functionBody )
-            // JS.g:1740:5: SET name= identifier LPAREN identifier RPAREN functionBody
+            // 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
             {
-            root_0 = (Object)adaptor.nil();
-
             SET325=(Token)input.LT(1);
-            match(input,SET,FOLLOW_SET_in_setMethodDeclaration6494); 
-            SET325_tree = (Object)adaptor.create(SET325);
-            root_0 = (Object)adaptor.becomeRoot(SET325_tree, root_0);
+            match(input,SET,FOLLOW_SET_in_setMethodDeclaration6556); 
+            stream_SET.add(SET325);
 
-            pushFollow(FOLLOW_identifier_in_setMethodDeclaration6499);
+            pushFollow(FOLLOW_identifier_in_setMethodDeclaration6560);
             name=identifier();
             _fsp--;
 
-            adaptor.addChild(root_0, name.getTree());
+            stream_identifier.add(name.getTree());
             LPAREN326=(Token)input.LT(1);
-            match(input,LPAREN,FOLLOW_LPAREN_in_setMethodDeclaration6501); 
-            pushFollow(FOLLOW_identifier_in_setMethodDeclaration6504);
-            identifier327=identifier();
+            match(input,LPAREN,FOLLOW_LPAREN_in_setMethodDeclaration6562); 
+            stream_LPAREN.add(LPAREN326);
+
+            pushFollow(FOLLOW_identifier_in_setMethodDeclaration6566);
+            param=identifier();
             _fsp--;
 
-            adaptor.addChild(root_0, identifier327.getTree());
-            RPAREN328=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_setMethodDeclaration6506); 
-            pushFollow(FOLLOW_functionBody_in_setMethodDeclaration6509);
-            functionBody329=functionBody();
+            stream_identifier.add(param.getTree());
+            RPAREN327=(Token)input.LT(1);
+            match(input,RPAREN,FOLLOW_RPAREN_in_setMethodDeclaration6568); 
+            stream_RPAREN.add(RPAREN327);
+
+            pushFollow(FOLLOW_functionBody_in_setMethodDeclaration6570);
+            functionBody328=functionBody();
             _fsp--;
 
-            adaptor.addChild(root_0, functionBody329.getTree());
+            stream_functionBody.add(functionBody328.getTree());
+
+            // AST REWRITE
+            // elements: functionBody, param, name
+            // token labels: 
+            // rule labels: retval, param, name
+            // token list labels: 
+            // rule list labels: 
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+            RewriteRuleSubtreeStream stream_param=new RewriteRuleSubtreeStream(adaptor,"token param",param!=null?param.tree:null);
+            RewriteRuleSubtreeStream stream_name=new RewriteRuleSubtreeStream(adaptor,"token name",name!=null?name.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1753:5: -> ^( SETTER $name $param functionBody )
+            {
+                // JS.g:1753:8: ^( SETTER $name $param functionBody )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(adaptor.create(SETTER, "SETTER"), root_1);
+
+                adaptor.addChild(root_1, stream_name.next());
+                adaptor.addChild(root_1, stream_param.next());
+                adaptor.addChild(root_1, stream_functionBody.next());
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+
 
             }
 
@@ -10630,45 +10768,45 @@
     };
 
     // $ANTLR start program
-    // JS.g:1747:1: program : ( sourceElement )* EOF ;
+    // JS.g:1760:1: program : ( sourceElement )* EOF ;
     public final program_return program() throws RecognitionException {
         program_return retval = new program_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token EOF331=null;
-        sourceElement_return sourceElement330 = null;
+        Token EOF330=null;
+        sourceElement_return sourceElement329 = null;
 
 
-        Object EOF331_tree=null;
+        Object EOF330_tree=null;
 
         try {
-            // JS.g:1748:2: ( ( sourceElement )* EOF )
-            // JS.g:1748:4: ( sourceElement )* EOF
+            // JS.g:1761:2: ( ( sourceElement )* EOF )
+            // JS.g:1761:4: ( sourceElement )* EOF
             {
             root_0 = (Object)adaptor.nil();
 
-            // JS.g:1748:4: ( sourceElement )*
+            // JS.g:1761:4: ( sourceElement )*
             loop79:
             do {
                 int alt79=2;
                 int LA79_0 = input.LA(1);
 
-                if ( ((LA79_0>=NULL && LA79_0<=BREAK)||(LA79_0>=CONTINUE && LA79_0<=DO)||(LA79_0>=FOR && LA79_0<=IF)||(LA79_0>=NEW && LA79_0<=YIELD)||LA79_0==WXML||LA79_0==CONST||LA79_0==LBRACE||LA79_0==LPAREN||LA79_0==LBRACK||LA79_0==SEMIC||(LA79_0>=ADD && LA79_0<=SUB)||(LA79_0>=INC && LA79_0<=DEC)||(LA79_0>=NOT && LA79_0<=INV)||(LA79_0>=StringLiteral && LA79_0<=XmlAttribute)||LA79_0==Identifier||LA79_0==RegularExpressionLiteral||(LA79_0>=DecimalLiteral && LA79_0<=HexIntegerLiteral)||LA79_0==XMLLiteral) ) {
+                if ( ((LA79_0>=NULL && LA79_0<=BREAK)||(LA79_0>=CONTINUE && LA79_0<=DO)||(LA79_0>=FOR && LA79_0<=IF)||(LA79_0>=NEW && LA79_0<=YIELD)||(LA79_0>=WXML && LA79_0<=NAMESPACE)||LA79_0==CONST||LA79_0==LBRACE||LA79_0==LPAREN||LA79_0==LBRACK||LA79_0==SEMIC||(LA79_0>=ADD && LA79_0<=SUB)||(LA79_0>=INC && LA79_0<=DEC)||(LA79_0>=NOT && LA79_0<=INV)||(LA79_0>=StringLiteral && LA79_0<=XmlAttribute)||LA79_0==Identifier||LA79_0==RegularExpressionLiteral||(LA79_0>=DecimalLiteral && LA79_0<=HexIntegerLiteral)||LA79_0==XMLLiteral) ) {
                     alt79=1;
                 }
 
 
                 switch (alt79) {
             	case 1 :
-            	    // JS.g:1748:4: sourceElement
+            	    // JS.g:1761:4: sourceElement
             	    {
-            	    pushFollow(FOLLOW_sourceElement_in_program6526);
-            	    sourceElement330=sourceElement();
+            	    pushFollow(FOLLOW_sourceElement_in_program6605);
+            	    sourceElement329=sourceElement();
             	    _fsp--;
 
-            	    adaptor.addChild(root_0, sourceElement330.getTree());
+            	    adaptor.addChild(root_0, sourceElement329.getTree());
 
             	    }
             	    break;
@@ -10678,8 +10816,8 @@
                 }
             } while (true);
 
-            EOF331=(Token)input.LT(1);
-            match(input,EOF,FOLLOW_EOF_in_program6529); 
+            EOF330=(Token)input.LT(1);
+            match(input,EOF,FOLLOW_EOF_in_program6608); 
 
             }
 
@@ -10705,21 +10843,21 @@
     };
 
     // $ANTLR start sourceElement
-    // JS.g:1756:1: sourceElement options {k=1; } : ({...}? functionDeclaration | statement );
+    // JS.g:1769: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);
 
         Object root_0 = null;
 
-        functionDeclaration_return functionDeclaration332 = null;
+        functionDeclaration_return functionDeclaration331 = null;
 
-        statement_return statement333 = null;
+        statement_return statement332 = null;
 
 
 
         try {
-            // JS.g:1761:2: ({...}? functionDeclaration | statement )
+            // JS.g:1774:2: ({...}? functionDeclaration | statement )
             int alt80=2;
             int LA80_0 = input.LA(1);
 
@@ -10734,47 +10872,47 @@
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("1756:1: sourceElement options {k=1; } : ({...}? functionDeclaration | statement );", 80, 1, input);
+                        new NoViableAltException("1769:1: sourceElement options {k=1; } : ({...}? functionDeclaration | statement );", 80, 1, input);
 
                     throw nvae;
                 }
             }
-            else if ( ((LA80_0>=NULL && LA80_0<=BREAK)||(LA80_0>=CONTINUE && LA80_0<=DO)||(LA80_0>=FOR && LA80_0<=EACH)||LA80_0==IF||(LA80_0>=NEW && LA80_0<=YIELD)||LA80_0==WXML||LA80_0==CONST||LA80_0==LBRACE||LA80_0==LPAREN||LA80_0==LBRACK||LA80_0==SEMIC||(LA80_0>=ADD && LA80_0<=SUB)||(LA80_0>=INC && LA80_0<=DEC)||(LA80_0>=NOT && LA80_0<=INV)||(LA80_0>=StringLiteral && LA80_0<=XmlAttribute)||LA80_0==Identifier||LA80_0==RegularExpressionLiteral||(LA80_0>=DecimalLiteral && LA80_0<=HexIntegerLiteral)||LA80_0==XMLLiteral) ) {
+            else if ( ((LA80_0>=NULL && LA80_0<=BREAK)||(LA80_0>=CONTINUE && LA80_0<=DO)||(LA80_0>=FOR && LA80_0<=EACH)||LA80_0==IF||(LA80_0>=NEW && LA80_0<=YIELD)||(LA80_0>=WXML && LA80_0<=NAMESPACE)||LA80_0==CONST||LA80_0==LBRACE||LA80_0==LPAREN||LA80_0==LBRACK||LA80_0==SEMIC||(LA80_0>=ADD && LA80_0<=SUB)||(LA80_0>=INC && LA80_0<=DEC)||(LA80_0>=NOT && LA80_0<=INV)||(LA80_0>=StringLiteral && LA80_0<=XmlAttribute)||LA80_0==Identifier||LA80_0==RegularExpressionLiteral||(LA80_0>=DecimalLiteral && LA80_0<=HexIntegerLiteral)||LA80_0==XMLLiteral) ) {
                 alt80=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("1756:1: sourceElement options {k=1; } : ({...}? functionDeclaration | statement );", 80, 0, input);
+                    new NoViableAltException("1769:1: sourceElement options {k=1; } : ({...}? functionDeclaration | statement );", 80, 0, input);
 
                 throw nvae;
             }
             switch (alt80) {
                 case 1 :
-                    // JS.g:1761:4: {...}? functionDeclaration
+                    // JS.g:1774: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_sourceElement6558);
-                    functionDeclaration332=functionDeclaration();
+                    pushFollow(FOLLOW_functionDeclaration_in_sourceElement6637);
+                    functionDeclaration331=functionDeclaration();
                     _fsp--;
 
-                    adaptor.addChild(root_0, functionDeclaration332.getTree());
+                    adaptor.addChild(root_0, functionDeclaration331.getTree());
 
                     }
                     break;
                 case 2 :
-                    // JS.g:1762:4: statement
+                    // JS.g:1775:4: statement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_statement_in_sourceElement6563);
-                    statement333=statement();
+                    pushFollow(FOLLOW_statement_in_sourceElement6642);
+                    statement332=statement();
                     _fsp--;
 
-                    adaptor.addChild(root_0, statement333.getTree());
+                    adaptor.addChild(root_0, statement332.getTree());
 
                     }
                     break;
@@ -10799,368 +10937,368 @@
 
  
 
-    public static final BitSet FOLLOW_reservedWord_in_token1949 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_identifier_in_token1954 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_punctuator_in_token1959 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_numericLiteral_in_token1964 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_StringLiteral_in_token1969 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_XmlAttribute_in_token1974 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_keyword_in_reservedWord1989 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_futureReservedWord_in_reservedWord1994 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_NULL_in_reservedWord1999 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_booleanLiteral_in_reservedWord2004 = new BitSet(new long[]{0x0000000000000002L});
+    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_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_literal2793 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_booleanLiteral_in_literal2798 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_numericLiteral_in_literal2803 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_StringLiteral_in_literal2808 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_RegularExpressionLiteral_in_literal2813 = 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_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_primaryExpression3442 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_identifier_in_primaryExpression3447 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_XmlAttribute_in_primaryExpression3452 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_literal_in_primaryExpression3457 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_arrayLiteral_in_primaryExpression3462 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_objectLiteral_in_primaryExpression3467 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_parenExpression_in_primaryExpression3472 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LPAREN_in_parenExpression3488 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_expression_in_parenExpression3490 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_RPAREN_in_parenExpression3492 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LBRACK_in_arrayLiteral3517 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819804D40L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_arrayItem_in_arrayLiteral3521 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004800L});
-    public static final BitSet FOLLOW_COMMA_in_arrayLiteral3525 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819804D40L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_arrayItem_in_arrayLiteral3527 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004800L});
-    public static final BitSet FOLLOW_RBRACK_in_arrayLiteral3535 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_assignmentExpression_in_arrayItem3563 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LBRACE_in_objectLiteral3595 = new BitSet(new long[]{0x0000002600020000L,0x0000000000000080L,0x00E0830000000000L});
-    public static final BitSet FOLLOW_objectPropertyInitializer_in_objectLiteral3599 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004080L});
-    public static final BitSet FOLLOW_COMMA_in_objectLiteral3603 = new BitSet(new long[]{0x0000002600020000L,0x0000000000000000L,0x00E0830000000000L});
-    public static final BitSet FOLLOW_objectPropertyInitializer_in_objectLiteral3605 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004080L});
-    public static final BitSet FOLLOW_RBRACE_in_objectLiteral3613 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_nameValuePair_in_objectPropertyInitializer3638 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_getMethodDeclaration_in_objectPropertyInitializer3645 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_setMethodDeclaration_in_objectPropertyInitializer3651 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_propertyName_in_nameValuePair3664 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
-    public static final BitSet FOLLOW_COLON_in_nameValuePair3666 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_assignmentExpression_in_nameValuePair3668 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_identifier_in_propertyName3692 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_StringLiteral_in_propertyName3697 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_numericLiteral_in_propertyName3702 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_XmlAttribute_in_propertyName3707 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_primaryExpression_in_memberExpression3725 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_functionExpression_in_memberExpression3730 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_newExpression_in_memberExpression3735 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_NEW_in_newExpression3746 = new BitSet(new long[]{0x0000002602460070L,0x0000000000000540L,0x00E2830000000000L});
-    public static final BitSet FOLLOW_memberExpression_in_newExpression3749 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LPAREN_in_arguments3762 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800740L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_assignmentExpression_in_arguments3766 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004200L});
-    public static final BitSet FOLLOW_COMMA_in_arguments3770 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_assignmentExpression_in_arguments3772 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004200L});
-    public static final BitSet FOLLOW_RPAREN_in_arguments3780 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_memberExpression_in_leftHandSideExpression3813 = new BitSet(new long[]{0x0000000000000002L,0xC000000000001500L});
-    public static final BitSet FOLLOW_arguments_in_leftHandSideExpression3834 = new BitSet(new long[]{0x0000000000000002L,0xC000000000001500L});
-    public static final BitSet FOLLOW_LBRACK_in_leftHandSideExpression3859 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_expression_in_leftHandSideExpression3861 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
-    public static final BitSet FOLLOW_RBRACK_in_leftHandSideExpression3863 = new BitSet(new long[]{0x0000000000000002L,0xC000000000001500L});
-    public static final BitSet FOLLOW_DOT_in_leftHandSideExpression3885 = new BitSet(new long[]{0x0000002600020000L,0x0000000002000100L,0x0000820000000000L});
-    public static final BitSet FOLLOW_rightHandSideExpression_in_leftHandSideExpression3887 = new BitSet(new long[]{0x0000000000000002L,0xC000000000001500L});
-    public static final BitSet FOLLOW_DOTDOT_in_leftHandSideExpression3908 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_expression_in_leftHandSideExpression3910 = new BitSet(new long[]{0x0000000000000002L,0xC000000000001500L});
-    public static final BitSet FOLLOW_COLONCOLON_in_leftHandSideExpression3929 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_expression_in_leftHandSideExpression3931 = new BitSet(new long[]{0x0000000000000002L,0xC000000000001500L});
-    public static final BitSet FOLLOW_parenExpression_in_rightHandSideExpression3960 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_identifier_in_rightHandSideExpression3967 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_XmlAttribute_in_rightHandSideExpression3973 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_MUL_in_rightHandSideExpression3979 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_leftHandSideExpression_in_postfixExpression4017 = new BitSet(new long[]{0x0000000000000002L,0x0000000018000000L});
-    public static final BitSet FOLLOW_postfixOperator_in_postfixExpression4023 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_INC_in_postfixOperator4041 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DEC_in_postfixOperator4050 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_postfixExpression_in_unaryExpression4067 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_unaryOperator_in_unaryExpression4072 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_unaryExpression_in_unaryExpression4075 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_XMLLiteral_in_unaryExpression4081 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DELETE_in_unaryOperator4093 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VOID_in_unaryOperator4098 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_TYPEOF_in_unaryOperator4103 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_INC_in_unaryOperator4108 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DEC_in_unaryOperator4113 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ADD_in_unaryOperator4120 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_SUB_in_unaryOperator4129 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_INV_in_unaryOperator4136 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_NOT_in_unaryOperator4141 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_YIELD_in_unaryOperator4146 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DEFAULT_in_namespaceStatement4182 = new BitSet(new long[]{0x0000002000000000L});
-    public static final BitSet FOLLOW_WXML_in_namespaceStatement4184 = new BitSet(new long[]{0x0000004000000000L});
-    public static final BitSet FOLLOW_NAMESPACE_in_namespaceStatement4186 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_ASSIGN_in_namespaceStatement4189 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000010000000000L});
-    public static final BitSet FOLLOW_StringLiteral_in_namespaceStatement4191 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x0000006000000000L});
-    public static final BitSet FOLLOW_semic_in_namespaceStatement4193 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_unaryExpression_in_multiplicativeExpression4208 = new BitSet(new long[]{0x0000000000000002L,0x0010000006000000L});
-    public static final BitSet FOLLOW_set_in_multiplicativeExpression4212 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_unaryExpression_in_multiplicativeExpression4227 = new BitSet(new long[]{0x0000000000000002L,0x0010000006000000L});
-    public static final BitSet FOLLOW_multiplicativeExpression_in_additiveExpression4245 = new BitSet(new long[]{0x0000000000000002L,0x0000000001800000L});
-    public static final BitSet FOLLOW_set_in_additiveExpression4249 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_multiplicativeExpression_in_additiveExpression4260 = new BitSet(new long[]{0x0000000000000002L,0x0000000001800000L});
-    public static final BitSet FOLLOW_additiveExpression_in_shiftExpression4279 = new BitSet(new long[]{0x0000000000000002L,0x00000000E0000000L});
-    public static final BitSet FOLLOW_set_in_shiftExpression4283 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_additiveExpression_in_shiftExpression4298 = new BitSet(new long[]{0x0000000000000002L,0x00000000E0000000L});
-    public static final BitSet FOLLOW_shiftExpression_in_relationalExpression4317 = new BitSet(new long[]{0x0000000000300002L,0x0000000000078000L});
-    public static final BitSet FOLLOW_set_in_relationalExpression4321 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_shiftExpression_in_relationalExpression4348 = new BitSet(new long[]{0x0000000000300002L,0x0000000000078000L});
-    public static final BitSet FOLLOW_shiftExpression_in_relationalExpressionNoIn4362 = new BitSet(new long[]{0x0000000000200002L,0x0000000000078000L});
-    public static final BitSet FOLLOW_set_in_relationalExpressionNoIn4366 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_shiftExpression_in_relationalExpressionNoIn4389 = new BitSet(new long[]{0x0000000000200002L,0x0000000000078000L});
-    public static final BitSet FOLLOW_relationalExpression_in_equalityExpression4408 = new BitSet(new long[]{0x0000000000000002L,0x0000000000780000L});
-    public static final BitSet FOLLOW_set_in_equalityExpression4412 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_relationalExpression_in_equalityExpression4431 = new BitSet(new long[]{0x0000000000000002L,0x0000000000780000L});
-    public static final BitSet FOLLOW_relationalExpressionNoIn_in_equalityExpressionNoIn4445 = new BitSet(new long[]{0x0000000000000002L,0x0000000000780000L});
-    public static final BitSet FOLLOW_set_in_equalityExpressionNoIn4449 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_relationalExpressionNoIn_in_equalityExpressionNoIn4468 = new BitSet(new long[]{0x0000000000000002L,0x0000000000780000L});
-    public static final BitSet FOLLOW_equalityExpression_in_bitwiseANDExpression4488 = new BitSet(new long[]{0x0000000000000002L,0x0000000100000000L});
-    public static final BitSet FOLLOW_AND_in_bitwiseANDExpression4492 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_equalityExpression_in_bitwiseANDExpression4495 = new BitSet(new long[]{0x0000000000000002L,0x0000000100000000L});
-    public static final BitSet FOLLOW_equalityExpressionNoIn_in_bitwiseANDExpressionNoIn4509 = new BitSet(new long[]{0x0000000000000002L,0x0000000100000000L});
-    public static final BitSet FOLLOW_AND_in_bitwiseANDExpressionNoIn4513 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_equalityExpressionNoIn_in_bitwiseANDExpressionNoIn4516 = new BitSet(new long[]{0x0000000000000002L,0x0000000100000000L});
-    public static final BitSet FOLLOW_bitwiseANDExpression_in_bitwiseXORExpression4532 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
-    public static final BitSet FOLLOW_XOR_in_bitwiseXORExpression4536 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_bitwiseANDExpression_in_bitwiseXORExpression4539 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
-    public static final BitSet FOLLOW_bitwiseANDExpressionNoIn_in_bitwiseXORExpressionNoIn4555 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
-    public static final BitSet FOLLOW_XOR_in_bitwiseXORExpressionNoIn4559 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_bitwiseANDExpressionNoIn_in_bitwiseXORExpressionNoIn4562 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
-    public static final BitSet FOLLOW_bitwiseXORExpression_in_bitwiseORExpression4577 = new BitSet(new long[]{0x0000000000000002L,0x0000000200000000L});
-    public static final BitSet FOLLOW_OR_in_bitwiseORExpression4581 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_bitwiseXORExpression_in_bitwiseORExpression4584 = new BitSet(new long[]{0x0000000000000002L,0x0000000200000000L});
-    public static final BitSet FOLLOW_bitwiseXORExpressionNoIn_in_bitwiseORExpressionNoIn4599 = new BitSet(new long[]{0x0000000000000002L,0x0000000200000000L});
-    public static final BitSet FOLLOW_OR_in_bitwiseORExpressionNoIn4603 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_bitwiseXORExpressionNoIn_in_bitwiseORExpressionNoIn4606 = new BitSet(new long[]{0x0000000000000002L,0x0000000200000000L});
-    public static final BitSet FOLLOW_bitwiseORExpression_in_logicalANDExpression4625 = new BitSet(new long[]{0x0000000000000002L,0x0000002000000000L});
-    public static final BitSet FOLLOW_LAND_in_logicalANDExpression4629 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_bitwiseORExpression_in_logicalANDExpression4632 = new BitSet(new long[]{0x0000000000000002L,0x0000002000000000L});
-    public static final BitSet FOLLOW_bitwiseORExpressionNoIn_in_logicalANDExpressionNoIn4646 = new BitSet(new long[]{0x0000000000000002L,0x0000002000000000L});
-    public static final BitSet FOLLOW_LAND_in_logicalANDExpressionNoIn4650 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_bitwiseORExpressionNoIn_in_logicalANDExpressionNoIn4653 = new BitSet(new long[]{0x0000000000000002L,0x0000002000000000L});
-    public static final BitSet FOLLOW_logicalANDExpression_in_logicalORExpression4668 = new BitSet(new long[]{0x0000000000000002L,0x0000004000000000L});
-    public static final BitSet FOLLOW_LOR_in_logicalORExpression4672 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_logicalANDExpression_in_logicalORExpression4675 = new BitSet(new long[]{0x0000000000000002L,0x0000004000000000L});
-    public static final BitSet FOLLOW_logicalANDExpressionNoIn_in_logicalORExpressionNoIn4690 = new BitSet(new long[]{0x0000000000000002L,0x0000004000000000L});
-    public static final BitSet FOLLOW_LOR_in_logicalORExpressionNoIn4694 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_logicalANDExpressionNoIn_in_logicalORExpressionNoIn4697 = new BitSet(new long[]{0x0000000000000002L,0x0000004000000000L});
-    public static final BitSet FOLLOW_logicalORExpression_in_conditionalExpression4716 = new BitSet(new long[]{0x0000000000000002L,0x0000008000000000L});
-    public static final BitSet FOLLOW_QUE_in_conditionalExpression4720 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_assignmentExpression_in_conditionalExpression4723 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
-    public static final BitSet FOLLOW_COLON_in_conditionalExpression4725 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_assignmentExpression_in_conditionalExpression4728 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_logicalORExpressionNoIn_in_conditionalExpressionNoIn4742 = new BitSet(new long[]{0x0000000000000002L,0x0000008000000000L});
-    public static final BitSet FOLLOW_QUE_in_conditionalExpressionNoIn4746 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_assignmentExpressionNoIn_in_conditionalExpressionNoIn4749 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
-    public static final BitSet FOLLOW_COLON_in_conditionalExpressionNoIn4751 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_assignmentExpressionNoIn_in_conditionalExpressionNoIn4754 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_conditionalExpression_in_assignmentExpression4782 = new BitSet(new long[]{0x0000000000000002L,0x002FFE0000000000L});
-    public static final BitSet FOLLOW_assignmentOperator_in_assignmentExpression4789 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_assignmentExpression_in_assignmentExpression4792 = 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_set_in_assignmentOperator0 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_conditionalExpressionNoIn_in_assignmentExpressionNoIn4870 = new BitSet(new long[]{0x0000000000000002L,0x002FFE0000000000L});
-    public static final BitSet FOLLOW_assignmentOperator_in_assignmentExpressionNoIn4877 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_assignmentExpressionNoIn_in_assignmentExpressionNoIn4880 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_assignmentExpression_in_expression4902 = new BitSet(new long[]{0x0000000000000002L,0x0000000000004000L});
-    public static final BitSet FOLLOW_COMMA_in_expression4906 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_assignmentExpression_in_expression4910 = new BitSet(new long[]{0x0000000000000002L,0x0000000000004000L});
-    public static final BitSet FOLLOW_assignmentExpressionNoIn_in_expressionNoIn4947 = new BitSet(new long[]{0x0000000000000002L,0x0000000000004000L});
-    public static final BitSet FOLLOW_COMMA_in_expressionNoIn4951 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_assignmentExpressionNoIn_in_expressionNoIn4955 = new BitSet(new long[]{0x0000000000000002L,0x0000000000004000L});
-    public static final BitSet FOLLOW_SEMIC_in_semic5006 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_EOF_in_semic5011 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_RBRACE_in_semic5016 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_EOL_in_semic5023 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_MultiLineComment_in_semic5027 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_block_in_statement5056 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_statementTail_in_statement5061 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_variableStatement_in_statementTail5073 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_emptyStatement_in_statementTail5078 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_expressionStatement_in_statementTail5083 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ifStatement_in_statementTail5088 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_iterationStatement_in_statementTail5093 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_continueStatement_in_statementTail5098 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_breakStatement_in_statementTail5103 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_returnStatement_in_statementTail5108 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_withStatement_in_statementTail5113 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_labelledStatement_in_statementTail5118 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_switchStatement_in_statementTail5123 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_throwStatement_in_statementTail5128 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_tryStatement_in_statementTail5133 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_constStatement_in_statementTail5138 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_namespaceStatement_in_statementTail5143 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LBRACE_in_block5158 = new BitSet(new long[]{0x0000102FFFCF3CF0L,0x00000018198025C0L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_statement_in_block5160 = new BitSet(new long[]{0x0000102FFFCF3CF0L,0x00000018198025C0L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_RBRACE_in_block5163 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VAR_in_variableStatement5192 = new BitSet(new long[]{0x0000002600020000L,0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_variableDeclaration_in_variableStatement5194 = new BitSet(new long[]{0x0000000000000000L,0x0000000000006080L,0x0000006000000000L});
-    public static final BitSet FOLLOW_COMMA_in_variableStatement5198 = new BitSet(new long[]{0x0000002600020000L,0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_variableDeclaration_in_variableStatement5200 = new BitSet(new long[]{0x0000000000000000L,0x0000000000006080L,0x0000006000000000L});
-    public static final BitSet FOLLOW_semic_in_variableStatement5205 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_identifier_in_variableDeclaration5228 = new BitSet(new long[]{0x0000000000000002L,0x0000020000000000L});
-    public static final BitSet FOLLOW_ASSIGN_in_variableDeclaration5232 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_assignmentExpression_in_variableDeclaration5235 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_identifier_in_variableDeclarationNoIn5250 = new BitSet(new long[]{0x0000000000000002L,0x0000020000000000L});
-    public static final BitSet FOLLOW_ASSIGN_in_variableDeclarationNoIn5254 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_assignmentExpressionNoIn_in_variableDeclarationNoIn5257 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_CONST_in_constStatement5272 = new BitSet(new long[]{0x0000002600020000L,0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_variableDeclaration_in_constStatement5274 = new BitSet(new long[]{0x0000000000000000L,0x0000000000006080L,0x0000006000000000L});
-    public static final BitSet FOLLOW_COMMA_in_constStatement5278 = new BitSet(new long[]{0x0000002600020000L,0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_variableDeclaration_in_constStatement5280 = new BitSet(new long[]{0x0000000000000000L,0x0000000000006080L,0x0000006000000000L});
-    public static final BitSet FOLLOW_semic_in_constStatement5285 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_SEMIC_in_emptyStatement5315 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_expression_in_expressionStatement5334 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x0000006000000000L});
-    public static final BitSet FOLLOW_semic_in_expressionStatement5336 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_IF_in_ifStatement5354 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_LPAREN_in_ifStatement5356 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_expression_in_ifStatement5358 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_RPAREN_in_ifStatement5360 = new BitSet(new long[]{0x0000102FFFCF3CF0L,0x0000001819802540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_statement_in_ifStatement5362 = new BitSet(new long[]{0x0000000000004002L});
-    public static final BitSet FOLLOW_ELSE_in_ifStatement5368 = new BitSet(new long[]{0x0000102FFFCF3CF0L,0x0000001819802540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_statement_in_ifStatement5370 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_doStatement_in_iterationStatement5403 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_whileStatement_in_iterationStatement5408 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_forEachStatement_in_iterationStatement5413 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_forStatement_in_iterationStatement5418 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DO_in_doStatement5430 = new BitSet(new long[]{0x0000102FFFCF3CF0L,0x0000001819802540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_statement_in_doStatement5432 = new BitSet(new long[]{0x0000000080000000L});
-    public static final BitSet FOLLOW_WHILE_in_doStatement5434 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_LPAREN_in_doStatement5436 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_expression_in_doStatement5438 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_RPAREN_in_doStatement5440 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x0000006000000000L});
-    public static final BitSet FOLLOW_semic_in_doStatement5442 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_WHILE_in_whileStatement5467 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_LPAREN_in_whileStatement5470 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_expression_in_whileStatement5473 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_RPAREN_in_whileStatement5475 = new BitSet(new long[]{0x0000102FFFCF3CF0L,0x0000001819802540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_statement_in_whileStatement5478 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FOR_in_forEachStatement5493 = new BitSet(new long[]{0x0000000000020000L});
-    public static final BitSet FOLLOW_EACH_in_forEachStatement5496 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_LPAREN_in_forEachStatement5499 = new BitSet(new long[]{0x0000002E72461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_forEachControl_in_forEachStatement5502 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_RPAREN_in_forEachStatement5504 = new BitSet(new long[]{0x0000102FFFCF3CF0L,0x0000001819802540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_statement_in_forEachStatement5507 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_forControlVar_in_forEachControl5520 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_forControlExpression_in_forEachControl5526 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FOR_in_forStatement5538 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_LPAREN_in_forStatement5541 = new BitSet(new long[]{0x0000002E72461070L,0x0000001819802540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_forControl_in_forStatement5544 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_RPAREN_in_forStatement5546 = new BitSet(new long[]{0x0000102FFFCF3CF0L,0x0000001819802540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_statement_in_forStatement5549 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_forControlVar_in_forControl5560 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_forControlExpression_in_forControl5565 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_forControlSemic_in_forControl5570 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VAR_in_forControlVar5581 = new BitSet(new long[]{0x0000002600020000L,0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_variableDeclarationNoIn_in_forControlVar5583 = new BitSet(new long[]{0x0000000000100000L,0x0000000000006000L});
-    public static final BitSet FOLLOW_IN_in_forControlVar5595 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_expression_in_forControlVar5597 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_COMMA_in_forControlVar5643 = new BitSet(new long[]{0x0000002600020000L,0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_variableDeclarationNoIn_in_forControlVar5645 = new BitSet(new long[]{0x0000000000000000L,0x0000000000006000L});
-    public static final BitSet FOLLOW_SEMIC_in_forControlVar5650 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819802540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_expression_in_forControlVar5654 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
-    public static final BitSet FOLLOW_SEMIC_in_forControlVar5657 = new BitSet(new long[]{0x0000002E52461072L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_expression_in_forControlVar5661 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_expressionNoIn_in_forControlExpression5727 = new BitSet(new long[]{0x0000000000100000L,0x0000000000002000L});
-    public static final BitSet FOLLOW_IN_in_forControlExpression5742 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_expression_in_forControlExpression5746 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_SEMIC_in_forControlExpression5792 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819802540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_expression_in_forControlExpression5796 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
-    public static final BitSet FOLLOW_SEMIC_in_forControlExpression5799 = new BitSet(new long[]{0x0000002E52461072L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_expression_in_forControlExpression5803 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_SEMIC_in_forControlSemic5862 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819802540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_expression_in_forControlSemic5866 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
-    public static final BitSet FOLLOW_SEMIC_in_forControlSemic5869 = new BitSet(new long[]{0x0000002E52461072L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_expression_in_forControlSemic5873 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_CONTINUE_in_continueStatement5927 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x0000806000000000L});
-    public static final BitSet FOLLOW_Identifier_in_continueStatement5932 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x0000006000000000L});
-    public static final BitSet FOLLOW_semic_in_continueStatement5935 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_BREAK_in_breakStatement5954 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x0000806000000000L});
-    public static final BitSet FOLLOW_Identifier_in_breakStatement5959 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x0000006000000000L});
-    public static final BitSet FOLLOW_semic_in_breakStatement5962 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_RETURN_in_returnStatement5981 = new BitSet(new long[]{0x0000002E52461070L,0x00000018198025C0L,0x00E2836000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_expression_in_returnStatement5986 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x0000006000000000L});
-    public static final BitSet FOLLOW_semic_in_returnStatement5989 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_WITH_in_withStatement6006 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_LPAREN_in_withStatement6009 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_expression_in_withStatement6012 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_RPAREN_in_withStatement6014 = new BitSet(new long[]{0x0000102FFFCF3CF0L,0x0000001819802540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_statement_in_withStatement6017 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_SWITCH_in_switchStatement6038 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_LPAREN_in_switchStatement6040 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_expression_in_switchStatement6042 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_RPAREN_in_switchStatement6044 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
-    public static final BitSet FOLLOW_LBRACE_in_switchStatement6046 = new BitSet(new long[]{0x0000000000000900L,0x0000000000000080L});
-    public static final BitSet FOLLOW_defaultClause_in_switchStatement6053 = new BitSet(new long[]{0x0000000000000900L,0x0000000000000080L});
-    public static final BitSet FOLLOW_caseClause_in_switchStatement6059 = new BitSet(new long[]{0x0000000000000900L,0x0000000000000080L});
-    public static final BitSet FOLLOW_RBRACE_in_switchStatement6064 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_CASE_in_caseClause6092 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_expression_in_caseClause6095 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
-    public static final BitSet FOLLOW_COLON_in_caseClause6097 = new BitSet(new long[]{0x0000102FFFCF3CF2L,0x0000001819802540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_statement_in_caseClause6100 = new BitSet(new long[]{0x0000102FFFCF3CF2L,0x0000001819802540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_DEFAULT_in_defaultClause6113 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
-    public static final BitSet FOLLOW_COLON_in_defaultClause6116 = new BitSet(new long[]{0x0000102FFFCF3CF2L,0x0000001819802540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_statement_in_defaultClause6119 = new BitSet(new long[]{0x0000102FFFCF3CF2L,0x0000001819802540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_identifier_in_labelledStatement6136 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
-    public static final BitSet FOLLOW_COLON_in_labelledStatement6138 = new BitSet(new long[]{0x0000102FFFCF3CF0L,0x0000001819802540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_statement_in_labelledStatement6140 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_THROW_in_throwStatement6171 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_expression_in_throwStatement6176 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x0000006000000000L});
-    public static final BitSet FOLLOW_semic_in_throwStatement6178 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_TRY_in_tryStatement6195 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
-    public static final BitSet FOLLOW_block_in_tryStatement6198 = new BitSet(new long[]{0x0000000000008200L});
-    public static final BitSet FOLLOW_catchClause_in_tryStatement6202 = new BitSet(new long[]{0x0000000000008202L});
-    public static final BitSet FOLLOW_finallyClause_in_tryStatement6205 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_finallyClause_in_tryStatement6210 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_CATCH_in_catchClause6224 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_LPAREN_in_catchClause6227 = new BitSet(new long[]{0x0000002600020000L,0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_identifier_in_catchClause6230 = new BitSet(new long[]{0x0000000000080000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_catchFilter_in_catchClause6232 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_RPAREN_in_catchClause6235 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
-    public static final BitSet FOLLOW_block_in_catchClause6238 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_IF_in_catchFilter6251 = new BitSet(new long[]{0x0000002600020000L,0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_instanceofExpression_in_catchFilter6254 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_identifier_in_instanceofExpression6269 = new BitSet(new long[]{0x0000000000200000L});
-    public static final BitSet FOLLOW_INSTANCEOF_in_instanceofExpression6271 = new BitSet(new long[]{0x0000002600020000L,0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_identifier_in_instanceofExpression6274 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FINALLY_in_finallyClause6287 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
-    public static final BitSet FOLLOW_block_in_finallyClause6290 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FUNCTION_in_functionDeclaration6311 = new BitSet(new long[]{0x0000002600020000L,0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_identifier_in_functionDeclaration6315 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_formalParameterList_in_functionDeclaration6317 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
-    public static final BitSet FOLLOW_functionBody_in_functionDeclaration6319 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FUNCTION_in_functionExpression6346 = new BitSet(new long[]{0x0000002600020000L,0x0000000000000100L,0x0000800000000000L});
-    public static final BitSet FOLLOW_identifier_in_functionExpression6350 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_formalParameterList_in_functionExpression6353 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
-    public static final BitSet FOLLOW_functionBody_in_functionExpression6355 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LPAREN_in_formalParameterList6383 = new BitSet(new long[]{0x0000002600020000L,0x0000000000000200L,0x0000800000000000L});
-    public static final BitSet FOLLOW_identifier_in_formalParameterList6389 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004200L});
-    public static final BitSet FOLLOW_COMMA_in_formalParameterList6393 = new BitSet(new long[]{0x0000002600020000L,0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_identifier_in_formalParameterList6397 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004200L});
-    public static final BitSet FOLLOW_RPAREN_in_formalParameterList6405 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LBRACE_in_functionBody6431 = new BitSet(new long[]{0x0000102FFFCF3CF0L,0x00000018198025C0L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_sourceElement_in_functionBody6433 = new BitSet(new long[]{0x0000102FFFCF3CF0L,0x00000018198025C0L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_RBRACE_in_functionBody6436 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_GET_in_getMethodDeclaration6466 = new BitSet(new long[]{0x0000002600020000L,0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_identifier_in_getMethodDeclaration6471 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_LPAREN_in_getMethodDeclaration6473 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_RPAREN_in_getMethodDeclaration6476 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
-    public static final BitSet FOLLOW_functionBody_in_getMethodDeclaration6479 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_SET_in_setMethodDeclaration6494 = new BitSet(new long[]{0x0000002600020000L,0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_identifier_in_setMethodDeclaration6499 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_LPAREN_in_setMethodDeclaration6501 = new BitSet(new long[]{0x0000002600020000L,0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_identifier_in_setMethodDeclaration6504 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_RPAREN_in_setMethodDeclaration6506 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
-    public static final BitSet FOLLOW_functionBody_in_setMethodDeclaration6509 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_sourceElement_in_program6526 = new BitSet(new long[]{0x0000102FFFCF3CF0L,0x0000001819802540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_EOF_in_program6529 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_functionDeclaration_in_sourceElement6558 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_statement_in_sourceElement6563 = 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});
 
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.dltk.javascript.formatter/src/org/eclipse/dltk/javascript/parser/JSVisitor.java b/plugins/org.eclipse.dltk.javascript.formatter/src/org/eclipse/dltk/javascript/parser/JSVisitor.java
index 88ea254..2ab0265 100644
--- a/plugins/org.eclipse.dltk.javascript.formatter/src/org/eclipse/dltk/javascript/parser/JSVisitor.java
+++ b/plugins/org.eclipse.dltk.javascript.formatter/src/org/eclipse/dltk/javascript/parser/JSVisitor.java
@@ -53,6 +53,10 @@
 
 			case JSParser.Identifier:
 			case JSParser.WXML:
+			case JSParser.GET:
+			case JSParser.SET:
+			case JSParser.EACH:
+			case JSParser.NAMESPACE:
 				return visitIdentifier(node);
 
 			case JSParser.ARGS:
@@ -175,7 +179,7 @@
 			case JSParser.NAMEDVALUE:
 				return visitPropertyInitializer(node);
 
-			case JSParser.EACH:
+			case JSParser.FOREACH:
 				return visitForEachInStatement(node);
 
 			case JSParser.IF:
@@ -223,10 +227,10 @@
 			case JSParser.VOID:
 				return visitVoid(node);
 
-			case JSParser.GET:
+			case JSParser.GETTER:
 				return visitGet(node);
 
-			case JSParser.SET:
+			case JSParser.SETTER:
 				return visitSet(node);
 
 			case JSParser.TYPEOF:
@@ -247,7 +251,7 @@
 			case JSParser.XMLLiteral:
 				return visitXmlLiteral(node);
 
-			case JSParser.NAMESPACE:
+			case JSParser.DEFAULT_XML_NAMESPACE:
 				return visitNamespace(node);
 
 			case JSParser.XmlAttribute:
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 bd44d5f..8301bad 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
@@ -205,6 +205,10 @@
 	EXPR ;
 	FORITER ;
 	FORSTEP ;
+	FOREACH ;
+	GETTER ;
+	SETTER ;
+	DEFAULT_XML_NAMESPACE ;
 	ITEM ;
 	LABELLED ;
 	NAMEDVALUE ;
@@ -233,7 +237,11 @@
 
 final static boolean isIdentifierKeyword(int token)
 {
-	return token == WXML; 
+	return token == WXML
+		|| token == GET
+  		|| token == SET
+  		|| token == EACH
+  		|| token == NAMESPACE; 
 }
 
 private final boolean areRegularExpressionsEnabled()
@@ -739,6 +747,7 @@
   | GET
   | SET
   | EACH
+  | NAMESPACE
   | Identifier
 ;
 
@@ -1143,7 +1152,8 @@
 // $>
 
 namespaceStatement
-  : DEFAULT WXML NAMESPACE^ ASSIGN StringLiteral semic!
+  : DEFAULT WXML NAMESPACE ASSIGN StringLiteral semic
+    -> ^(DEFAULT_XML_NAMESPACE DEFAULT WXML ASSIGN StringLiteral)
   ;
 
 // $<Multiplicative operators (11.5)
@@ -1508,7 +1518,8 @@
 */
 
 forEachStatement
-  : FOR! EACH^ LPAREN! forEachControl RPAREN! statement
+  : FOR EACH LPAREN forEachControl RPAREN statement 
+  	-> ^(FOREACH forEachControl statement)
   ;
 
 forEachControl
@@ -1733,11 +1744,13 @@
 // $< get/set methods
 
 getMethodDeclaration
-  : GET^ name=identifier LPAREN! RPAREN! functionBody
+  : GET name=identifier LPAREN RPAREN functionBody
+  	-> ^(GETTER identifier functionBody)
   ;
   
 setMethodDeclaration
-  : SET^ name=identifier LPAREN! identifier RPAREN! functionBody
+  : SET name=identifier LPAREN param=identifier RPAREN functionBody
+    -> ^(SETTER $name $param functionBody)
   ;
 
 // $>	
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 5ae63ab..03344b3 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-08-31 22:50:18
+// $ANTLR 3.0.1 JS.g 2009-09-02 10:05:09
 
 package org.eclipse.dltk.javascript.parser;
 
@@ -12,8 +12,8 @@
     public static final int PACKAGE=59;
     public static final int FUNCTION=18;
     public static final int SHR=94;
-    public static final int VT=154;
-    public static final int RegularExpressionChar=192;
+    public static final int VT=158;
+    public static final int RegularExpressionChar=196;
     public static final int CDATA=36;
     public static final int LOCALNAME=134;
     public static final int XRCLOSE=121;
@@ -21,7 +21,7 @@
     public static final int MOD=90;
     public static final int XHOPEN=123;
     public static final int CONST=44;
-    public static final int DQUOTE=151;
+    public static final int DQUOTE=155;
     public static final int DO=13;
     public static final int NOT=99;
     public static final int EOF=-1;
@@ -33,15 +33,15 @@
     public static final int FINAL=50;
     public static final int FORSTEP=139;
     public static final int IMPORT=54;
-    public static final int EOL=165;
+    public static final int EOL=169;
     public static final int XLCLOSE=120;
-    public static final int PropertyIdentifierSymbols=176;
-    public static final int OctalDigit=178;
+    public static final int PropertyIdentifierSymbols=180;
+    public static final int OctalDigit=182;
     public static final int RETURN=23;
     public static final int THIS=25;
     public static final int ARGS=128;
     public static final int GET=33;
-    public static final int WhiteSpace=159;
+    public static final int WhiteSpace=163;
     public static final int EXPORT=48;
     public static final int EQ=83;
     public static final int GOTO=52;
@@ -54,24 +54,25 @@
     public static final int ELSE=14;
     public static final int NATIVE=58;
     public static final int INT=55;
-    public static final int FF=155;
-    public static final int OctalEscapeSequence=186;
-    public static final int RegularExpressionFirstChar=191;
+    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 TYPEOF=28;
     public static final int GT=80;
     public static final int CALL=135;
-    public static final int CharacterEscapeSequence=184;
-    public static final int XML=149;
+    public static final int CharacterEscapeSequence=188;
+    public static final int XML=153;
     public static final int LAND=101;
-    public static final int PINC=147;
+    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=177;
+    public static final int RegularExpressionLiteral=181;
     public static final int SUB=88;
     public static final int FLOAT=51;
-    public static final int DecimalIntegerLiteral=180;
-    public static final int HexDigit=170;
+    public static final int DecimalIntegerLiteral=184;
+    public static final int HexDigit=174;
     public static final int LPAREN=72;
     public static final int AT=125;
     public static final int IMPLEMENTS=53;
@@ -79,56 +80,56 @@
     public static final int YIELD=35;
     public static final int XCCLOSE=119;
     public static final int SHRASS=111;
-    public static final int PS=163;
-    public static final int MultiLineComment=166;
+    public static final int PS=167;
+    public static final int MultiLineComment=170;
     public static final int ADD=87;
-    public static final int ZeroToThree=185;
-    public static final int ITEM=140;
-    public static final int XMLLiteral=193;
-    public static final int UnicodeEscapeSequence=188;
+    public static final int ZeroToThree=189;
+    public static final int ITEM=144;
+    public static final int XMLLiteral=197;
+    public static final int UnicodeEscapeSequence=192;
     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=152;
-    public static final int Tokens=194;
+    public static final int SQUOTE=156;
+    public static final int Tokens=198;
     public static final int SAME=85;
     public static final int XHCLOSE=124;
-    public static final int StringLiteral=168;
+    public static final int StringLiteral=172;
     public static final int COLON=104;
-    public static final int PAREXPR=145;
+    public static final int PAREXPR=149;
     public static final int ENUM=47;
-    public static final int NBSP=157;
-    public static final int HexIntegerLiteral=183;
-    public static final int SP=156;
+    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=164;
+    public static final int LineTerminator=168;
     public static final int INTERFACE=56;
     public static final int DIV=116;
     public static final int LONG=57;
-    public static final int CR=161;
+    public static final int CR=165;
     public static final int PUBLIC=62;
     public static final int LOR=102;
     public static final int LT=79;
     public static final int WHILE=31;
-    public static final int BackslashSequence=190;
-    public static final int LS=162;
+    public static final int BackslashSequence=194;
+    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=172;
+    public static final int DecimalDigit=176;
     public static final int BYFIELD=131;
     public static final int BREAK=7;
-    public static final int Identifier=175;
+    public static final int Identifier=179;
     public static final int WXML=37;
-    public static final int POS=148;
+    public static final int POS=152;
     public static final int DOUBLE=46;
-    public static final int ExponentPart=179;
+    public static final int ExponentPart=183;
     public static final int VAR=29;
     public static final int VOID=30;
     public static final int SUPER=65;
     public static final int EACH=17;
-    public static final int LABELLED=141;
+    public static final int LABELLED=145;
     public static final int ADDASS=106;
     public static final int ARRAY=129;
     public static final int PRIVATE=60;
@@ -138,31 +139,33 @@
     public static final int DELETE=12;
     public static final int XCOPEN=118;
     public static final int MUL=89;
-    public static final int IdentifierStartASCII=171;
+    public static final int IdentifierStartASCII=175;
     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=158;
+    public static final int USP=162;
     public static final int ANDASS=113;
-    public static final int IdentifierNameASCIIStart=174;
+    public static final int IdentifierNameASCIIStart=178;
     public static final int QUE=103;
     public static final int OR=97;
+    public static final int SETTER=142;
     public static final int DEBUGGER=45;
-    public static final int PDEC=146;
+    public static final int FOREACH=140;
+    public static final int PDEC=150;
     public static final int CATCH=9;
     public static final int FALSE=6;
-    public static final int EscapeSequence=189;
+    public static final int EscapeSequence=193;
     public static final int THROW=26;
     public static final int MULASS=108;
-    public static final int XmlAttribute=169;
+    public static final int XmlAttribute=173;
     public static final int DEC=92;
-    public static final int OctalIntegerLiteral=182;
+    public static final int OctalIntegerLiteral=186;
     public static final int CLASS=43;
+    public static final int HexEscapeSequence=191;
     public static final int ORASS=114;
-    public static final int HexEscapeSequence=187;
-    public static final int NAMEDVALUE=142;
-    public static final int SingleLineComment=167;
+    public static final int NAMEDVALUE=146;
+    public static final int SingleLineComment=171;
     public static final int GTE=82;
     public static final int FOR=16;
     public static final int DOTDOT=126;
@@ -176,37 +179,42 @@
     public static final int EXPR=137;
     public static final int IN=20;
     public static final int CONTINUE=10;
-    public static final int OBJECT=144;
+    public static final int OBJECT=148;
     public static final int COMMA=78;
     public static final int TRANSIENT=68;
     public static final int FORITER=138;
     public static final int MODASS=109;
     public static final int DOT=76;
-    public static final int IdentifierPart=173;
+    public static final int IdentifierPart=177;
     public static final int WITH=32;
     public static final int BYTE=41;
     public static final int XOR=98;
     public static final int VOLATILE=69;
+    public static final int GETTER=141;
     public static final int NSAME=86;
     public static final int DEFAULT=11;
     public static final int ALLCHILDREN=133;
-    public static final int TAB=153;
-    public static final int DecimalLiteral=181;
+    public static final int TAB=157;
+    public static final int DecimalLiteral=185;
     public static final int TRUE=5;
     public static final int NEQ=84;
     public static final int FINALLY=15;
-    public static final int NEG=143;
+    public static final int NEG=147;
     public static final int ASSIGN=105;
     public static final int SEMIC=77;
     public static final int EXTENDS=49;
-    public static final int BSLASH=150;
-    public static final int LF=160;
+    public static final int BSLASH=154;
+    public static final int LF=164;
 
     private Token last;
 
     final static boolean isIdentifierKeyword(int token)
     {
-    	return token == WXML; 
+    	return token == WXML
+    		|| token == GET
+      		|| token == SET
+      		|| token == EACH
+      		|| token == NAMESPACE; 
     }
 
     private final boolean areRegularExpressionsEnabled()
@@ -339,8 +347,8 @@
     public final void mNULL() throws RecognitionException {
         try {
             int _type = NULL;
-            // JS.g:138:6: ( 'null' )
-            // JS.g:138:8: 'null'
+            // JS.g:142:6: ( 'null' )
+            // JS.g:142:8: 'null'
             {
             match("null"); 
 
@@ -358,8 +366,8 @@
     public final void mTRUE() throws RecognitionException {
         try {
             int _type = TRUE;
-            // JS.g:139:6: ( 'true' )
-            // JS.g:139:8: 'true'
+            // JS.g:143:6: ( 'true' )
+            // JS.g:143:8: 'true'
             {
             match("true"); 
 
@@ -377,8 +385,8 @@
     public final void mFALSE() throws RecognitionException {
         try {
             int _type = FALSE;
-            // JS.g:140:7: ( 'false' )
-            // JS.g:140:9: 'false'
+            // JS.g:144:7: ( 'false' )
+            // JS.g:144:9: 'false'
             {
             match("false"); 
 
@@ -396,8 +404,8 @@
     public final void mBREAK() throws RecognitionException {
         try {
             int _type = BREAK;
-            // JS.g:141:7: ( 'break' )
-            // JS.g:141:9: 'break'
+            // JS.g:145:7: ( 'break' )
+            // JS.g:145:9: 'break'
             {
             match("break"); 
 
@@ -415,8 +423,8 @@
     public final void mCASE() throws RecognitionException {
         try {
             int _type = CASE;
-            // JS.g:142:6: ( 'case' )
-            // JS.g:142:8: 'case'
+            // JS.g:146:6: ( 'case' )
+            // JS.g:146:8: 'case'
             {
             match("case"); 
 
@@ -434,8 +442,8 @@
     public final void mCATCH() throws RecognitionException {
         try {
             int _type = CATCH;
-            // JS.g:143:7: ( 'catch' )
-            // JS.g:143:9: 'catch'
+            // JS.g:147:7: ( 'catch' )
+            // JS.g:147:9: 'catch'
             {
             match("catch"); 
 
@@ -453,8 +461,8 @@
     public final void mCONTINUE() throws RecognitionException {
         try {
             int _type = CONTINUE;
-            // JS.g:144:10: ( 'continue' )
-            // JS.g:144:12: 'continue'
+            // JS.g:148:10: ( 'continue' )
+            // JS.g:148:12: 'continue'
             {
             match("continue"); 
 
@@ -472,8 +480,8 @@
     public final void mDEFAULT() throws RecognitionException {
         try {
             int _type = DEFAULT;
-            // JS.g:145:9: ( 'default' )
-            // JS.g:145:11: 'default'
+            // JS.g:149:9: ( 'default' )
+            // JS.g:149:11: 'default'
             {
             match("default"); 
 
@@ -491,8 +499,8 @@
     public final void mDELETE() throws RecognitionException {
         try {
             int _type = DELETE;
-            // JS.g:146:8: ( 'delete' )
-            // JS.g:146:10: 'delete'
+            // JS.g:150:8: ( 'delete' )
+            // JS.g:150:10: 'delete'
             {
             match("delete"); 
 
@@ -510,8 +518,8 @@
     public final void mDO() throws RecognitionException {
         try {
             int _type = DO;
-            // JS.g:147:4: ( 'do' )
-            // JS.g:147:6: 'do'
+            // JS.g:151:4: ( 'do' )
+            // JS.g:151:6: 'do'
             {
             match("do"); 
 
@@ -529,8 +537,8 @@
     public final void mELSE() throws RecognitionException {
         try {
             int _type = ELSE;
-            // JS.g:148:6: ( 'else' )
-            // JS.g:148:8: 'else'
+            // JS.g:152:6: ( 'else' )
+            // JS.g:152:8: 'else'
             {
             match("else"); 
 
@@ -548,8 +556,8 @@
     public final void mFINALLY() throws RecognitionException {
         try {
             int _type = FINALLY;
-            // JS.g:149:9: ( 'finally' )
-            // JS.g:149:11: 'finally'
+            // JS.g:153:9: ( 'finally' )
+            // JS.g:153:11: 'finally'
             {
             match("finally"); 
 
@@ -567,8 +575,8 @@
     public final void mFOR() throws RecognitionException {
         try {
             int _type = FOR;
-            // JS.g:150:5: ( 'for' )
-            // JS.g:150:7: 'for'
+            // JS.g:154:5: ( 'for' )
+            // JS.g:154:7: 'for'
             {
             match("for"); 
 
@@ -586,8 +594,8 @@
     public final void mEACH() throws RecognitionException {
         try {
             int _type = EACH;
-            // JS.g:151:6: ( 'each' )
-            // JS.g:151:8: 'each'
+            // JS.g:155:6: ( 'each' )
+            // JS.g:155:8: 'each'
             {
             match("each"); 
 
@@ -605,8 +613,8 @@
     public final void mFUNCTION() throws RecognitionException {
         try {
             int _type = FUNCTION;
-            // JS.g:152:10: ( 'function' )
-            // JS.g:152:12: 'function'
+            // JS.g:156:10: ( 'function' )
+            // JS.g:156:12: 'function'
             {
             match("function"); 
 
@@ -624,8 +632,8 @@
     public final void mIF() throws RecognitionException {
         try {
             int _type = IF;
-            // JS.g:153:4: ( 'if' )
-            // JS.g:153:6: 'if'
+            // JS.g:157:4: ( 'if' )
+            // JS.g:157:6: 'if'
             {
             match("if"); 
 
@@ -643,8 +651,8 @@
     public final void mIN() throws RecognitionException {
         try {
             int _type = IN;
-            // JS.g:154:4: ( 'in' )
-            // JS.g:154:6: 'in'
+            // JS.g:158:4: ( 'in' )
+            // JS.g:158:6: 'in'
             {
             match("in"); 
 
@@ -662,8 +670,8 @@
     public final void mINSTANCEOF() throws RecognitionException {
         try {
             int _type = INSTANCEOF;
-            // JS.g:155:12: ( 'instanceof' )
-            // JS.g:155:14: 'instanceof'
+            // JS.g:159:12: ( 'instanceof' )
+            // JS.g:159:14: 'instanceof'
             {
             match("instanceof"); 
 
@@ -681,8 +689,8 @@
     public final void mNEW() throws RecognitionException {
         try {
             int _type = NEW;
-            // JS.g:156:5: ( 'new' )
-            // JS.g:156:7: 'new'
+            // JS.g:160:5: ( 'new' )
+            // JS.g:160:7: 'new'
             {
             match("new"); 
 
@@ -700,8 +708,8 @@
     public final void mRETURN() throws RecognitionException {
         try {
             int _type = RETURN;
-            // JS.g:157:8: ( 'return' )
-            // JS.g:157:10: 'return'
+            // JS.g:161:8: ( 'return' )
+            // JS.g:161:10: 'return'
             {
             match("return"); 
 
@@ -719,8 +727,8 @@
     public final void mSWITCH() throws RecognitionException {
         try {
             int _type = SWITCH;
-            // JS.g:158:8: ( 'switch' )
-            // JS.g:158:10: 'switch'
+            // JS.g:162:8: ( 'switch' )
+            // JS.g:162:10: 'switch'
             {
             match("switch"); 
 
@@ -738,8 +746,8 @@
     public final void mTHIS() throws RecognitionException {
         try {
             int _type = THIS;
-            // JS.g:159:6: ( 'this' )
-            // JS.g:159:8: 'this'
+            // JS.g:163:6: ( 'this' )
+            // JS.g:163:8: 'this'
             {
             match("this"); 
 
@@ -757,8 +765,8 @@
     public final void mTHROW() throws RecognitionException {
         try {
             int _type = THROW;
-            // JS.g:160:7: ( 'throw' )
-            // JS.g:160:9: 'throw'
+            // JS.g:164:7: ( 'throw' )
+            // JS.g:164:9: 'throw'
             {
             match("throw"); 
 
@@ -776,8 +784,8 @@
     public final void mTRY() throws RecognitionException {
         try {
             int _type = TRY;
-            // JS.g:161:5: ( 'try' )
-            // JS.g:161:7: 'try'
+            // JS.g:165:5: ( 'try' )
+            // JS.g:165:7: 'try'
             {
             match("try"); 
 
@@ -795,8 +803,8 @@
     public final void mTYPEOF() throws RecognitionException {
         try {
             int _type = TYPEOF;
-            // JS.g:162:8: ( 'typeof' )
-            // JS.g:162:10: 'typeof'
+            // JS.g:166:8: ( 'typeof' )
+            // JS.g:166:10: 'typeof'
             {
             match("typeof"); 
 
@@ -814,8 +822,8 @@
     public final void mVAR() throws RecognitionException {
         try {
             int _type = VAR;
-            // JS.g:163:5: ( 'var' )
-            // JS.g:163:7: 'var'
+            // JS.g:167:5: ( 'var' )
+            // JS.g:167:7: 'var'
             {
             match("var"); 
 
@@ -833,8 +841,8 @@
     public final void mVOID() throws RecognitionException {
         try {
             int _type = VOID;
-            // JS.g:164:6: ( 'void' )
-            // JS.g:164:8: 'void'
+            // JS.g:168:6: ( 'void' )
+            // JS.g:168:8: 'void'
             {
             match("void"); 
 
@@ -852,8 +860,8 @@
     public final void mWHILE() throws RecognitionException {
         try {
             int _type = WHILE;
-            // JS.g:165:7: ( 'while' )
-            // JS.g:165:9: 'while'
+            // JS.g:169:7: ( 'while' )
+            // JS.g:169:9: 'while'
             {
             match("while"); 
 
@@ -871,8 +879,8 @@
     public final void mWITH() throws RecognitionException {
         try {
             int _type = WITH;
-            // JS.g:166:6: ( 'with' )
-            // JS.g:166:8: 'with'
+            // JS.g:170:6: ( 'with' )
+            // JS.g:170:8: 'with'
             {
             match("with"); 
 
@@ -890,8 +898,8 @@
     public final void mGET() throws RecognitionException {
         try {
             int _type = GET;
-            // JS.g:167:5: ( 'get' )
-            // JS.g:167:7: 'get'
+            // JS.g:171:5: ( 'get' )
+            // JS.g:171:7: 'get'
             {
             match("get"); 
 
@@ -909,8 +917,8 @@
     public final void mSET() throws RecognitionException {
         try {
             int _type = SET;
-            // JS.g:168:5: ( 'set' )
-            // JS.g:168:7: 'set'
+            // JS.g:172:5: ( 'set' )
+            // JS.g:172:7: 'set'
             {
             match("set"); 
 
@@ -928,8 +936,8 @@
     public final void mYIELD() throws RecognitionException {
         try {
             int _type = YIELD;
-            // JS.g:169:7: ( 'yield' )
-            // JS.g:169:9: 'yield'
+            // JS.g:173:7: ( 'yield' )
+            // JS.g:173:9: 'yield'
             {
             match("yield"); 
 
@@ -947,8 +955,8 @@
     public final void mCDATA() throws RecognitionException {
         try {
             int _type = CDATA;
-            // JS.g:170:7: ( 'CDATA' )
-            // JS.g:170:9: 'CDATA'
+            // JS.g:174:7: ( 'CDATA' )
+            // JS.g:174:9: 'CDATA'
             {
             match("CDATA"); 
 
@@ -966,8 +974,8 @@
     public final void mWXML() throws RecognitionException {
         try {
             int _type = WXML;
-            // JS.g:171:6: ( 'xml' )
-            // JS.g:171:8: 'xml'
+            // JS.g:175:6: ( 'xml' )
+            // JS.g:175:8: 'xml'
             {
             match("xml"); 
 
@@ -985,8 +993,8 @@
     public final void mNAMESPACE() throws RecognitionException {
         try {
             int _type = NAMESPACE;
-            // JS.g:172:11: ( 'namespace' )
-            // JS.g:172:13: 'namespace'
+            // JS.g:176:11: ( 'namespace' )
+            // JS.g:176:13: 'namespace'
             {
             match("namespace"); 
 
@@ -1004,8 +1012,8 @@
     public final void mABSTRACT() throws RecognitionException {
         try {
             int _type = ABSTRACT;
-            // JS.g:173:10: ( 'abstract' )
-            // JS.g:173:12: 'abstract'
+            // JS.g:177:10: ( 'abstract' )
+            // JS.g:177:12: 'abstract'
             {
             match("abstract"); 
 
@@ -1023,8 +1031,8 @@
     public final void mBOOLEAN() throws RecognitionException {
         try {
             int _type = BOOLEAN;
-            // JS.g:174:9: ( 'boolean' )
-            // JS.g:174:11: 'boolean'
+            // JS.g:178:9: ( 'boolean' )
+            // JS.g:178:11: 'boolean'
             {
             match("boolean"); 
 
@@ -1042,8 +1050,8 @@
     public final void mBYTE() throws RecognitionException {
         try {
             int _type = BYTE;
-            // JS.g:175:6: ( 'byte' )
-            // JS.g:175:8: 'byte'
+            // JS.g:179:6: ( 'byte' )
+            // JS.g:179:8: 'byte'
             {
             match("byte"); 
 
@@ -1061,8 +1069,8 @@
     public final void mCHAR() throws RecognitionException {
         try {
             int _type = CHAR;
-            // JS.g:176:6: ( 'char' )
-            // JS.g:176:8: 'char'
+            // JS.g:180:6: ( 'char' )
+            // JS.g:180:8: 'char'
             {
             match("char"); 
 
@@ -1080,8 +1088,8 @@
     public final void mCLASS() throws RecognitionException {
         try {
             int _type = CLASS;
-            // JS.g:177:7: ( 'class' )
-            // JS.g:177:9: 'class'
+            // JS.g:181:7: ( 'class' )
+            // JS.g:181:9: 'class'
             {
             match("class"); 
 
@@ -1099,8 +1107,8 @@
     public final void mCONST() throws RecognitionException {
         try {
             int _type = CONST;
-            // JS.g:178:7: ( 'const' )
-            // JS.g:178:9: 'const'
+            // JS.g:182:7: ( 'const' )
+            // JS.g:182:9: 'const'
             {
             match("const"); 
 
@@ -1118,8 +1126,8 @@
     public final void mDEBUGGER() throws RecognitionException {
         try {
             int _type = DEBUGGER;
-            // JS.g:179:10: ( 'debugger' )
-            // JS.g:179:12: 'debugger'
+            // JS.g:183:10: ( 'debugger' )
+            // JS.g:183:12: 'debugger'
             {
             match("debugger"); 
 
@@ -1137,8 +1145,8 @@
     public final void mDOUBLE() throws RecognitionException {
         try {
             int _type = DOUBLE;
-            // JS.g:180:8: ( 'double' )
-            // JS.g:180:10: 'double'
+            // JS.g:184:8: ( 'double' )
+            // JS.g:184:10: 'double'
             {
             match("double"); 
 
@@ -1156,8 +1164,8 @@
     public final void mENUM() throws RecognitionException {
         try {
             int _type = ENUM;
-            // JS.g:181:6: ( 'enum' )
-            // JS.g:181:8: 'enum'
+            // JS.g:185:6: ( 'enum' )
+            // JS.g:185:8: 'enum'
             {
             match("enum"); 
 
@@ -1175,8 +1183,8 @@
     public final void mEXPORT() throws RecognitionException {
         try {
             int _type = EXPORT;
-            // JS.g:182:8: ( 'export' )
-            // JS.g:182:10: 'export'
+            // JS.g:186:8: ( 'export' )
+            // JS.g:186:10: 'export'
             {
             match("export"); 
 
@@ -1194,8 +1202,8 @@
     public final void mEXTENDS() throws RecognitionException {
         try {
             int _type = EXTENDS;
-            // JS.g:183:9: ( 'extends' )
-            // JS.g:183:11: 'extends'
+            // JS.g:187:9: ( 'extends' )
+            // JS.g:187:11: 'extends'
             {
             match("extends"); 
 
@@ -1213,8 +1221,8 @@
     public final void mFINAL() throws RecognitionException {
         try {
             int _type = FINAL;
-            // JS.g:184:7: ( 'final' )
-            // JS.g:184:9: 'final'
+            // JS.g:188:7: ( 'final' )
+            // JS.g:188:9: 'final'
             {
             match("final"); 
 
@@ -1232,8 +1240,8 @@
     public final void mFLOAT() throws RecognitionException {
         try {
             int _type = FLOAT;
-            // JS.g:185:7: ( 'float' )
-            // JS.g:185:9: 'float'
+            // JS.g:189:7: ( 'float' )
+            // JS.g:189:9: 'float'
             {
             match("float"); 
 
@@ -1251,8 +1259,8 @@
     public final void mGOTO() throws RecognitionException {
         try {
             int _type = GOTO;
-            // JS.g:186:6: ( 'goto' )
-            // JS.g:186:8: 'goto'
+            // JS.g:190:6: ( 'goto' )
+            // JS.g:190:8: 'goto'
             {
             match("goto"); 
 
@@ -1270,8 +1278,8 @@
     public final void mIMPLEMENTS() throws RecognitionException {
         try {
             int _type = IMPLEMENTS;
-            // JS.g:187:12: ( 'implements' )
-            // JS.g:187:14: 'implements'
+            // JS.g:191:12: ( 'implements' )
+            // JS.g:191:14: 'implements'
             {
             match("implements"); 
 
@@ -1289,8 +1297,8 @@
     public final void mIMPORT() throws RecognitionException {
         try {
             int _type = IMPORT;
-            // JS.g:188:8: ( 'import' )
-            // JS.g:188:10: 'import'
+            // JS.g:192:8: ( 'import' )
+            // JS.g:192:10: 'import'
             {
             match("import"); 
 
@@ -1308,8 +1316,8 @@
     public final void mINT() throws RecognitionException {
         try {
             int _type = INT;
-            // JS.g:189:5: ( 'int' )
-            // JS.g:189:7: 'int'
+            // JS.g:193:5: ( 'int' )
+            // JS.g:193:7: 'int'
             {
             match("int"); 
 
@@ -1327,8 +1335,8 @@
     public final void mINTERFACE() throws RecognitionException {
         try {
             int _type = INTERFACE;
-            // JS.g:190:11: ( 'interface' )
-            // JS.g:190:13: 'interface'
+            // JS.g:194:11: ( 'interface' )
+            // JS.g:194:13: 'interface'
             {
             match("interface"); 
 
@@ -1346,8 +1354,8 @@
     public final void mLONG() throws RecognitionException {
         try {
             int _type = LONG;
-            // JS.g:191:6: ( 'long' )
-            // JS.g:191:8: 'long'
+            // JS.g:195:6: ( 'long' )
+            // JS.g:195:8: 'long'
             {
             match("long"); 
 
@@ -1365,8 +1373,8 @@
     public final void mNATIVE() throws RecognitionException {
         try {
             int _type = NATIVE;
-            // JS.g:192:8: ( 'native' )
-            // JS.g:192:10: 'native'
+            // JS.g:196:8: ( 'native' )
+            // JS.g:196:10: 'native'
             {
             match("native"); 
 
@@ -1384,8 +1392,8 @@
     public final void mPACKAGE() throws RecognitionException {
         try {
             int _type = PACKAGE;
-            // JS.g:193:9: ( 'package' )
-            // JS.g:193:11: 'package'
+            // JS.g:197:9: ( 'package' )
+            // JS.g:197:11: 'package'
             {
             match("package"); 
 
@@ -1403,8 +1411,8 @@
     public final void mPRIVATE() throws RecognitionException {
         try {
             int _type = PRIVATE;
-            // JS.g:194:9: ( 'private' )
-            // JS.g:194:11: 'private'
+            // JS.g:198:9: ( 'private' )
+            // JS.g:198:11: 'private'
             {
             match("private"); 
 
@@ -1422,8 +1430,8 @@
     public final void mPROTECTED() throws RecognitionException {
         try {
             int _type = PROTECTED;
-            // JS.g:195:11: ( 'protected' )
-            // JS.g:195:13: 'protected'
+            // JS.g:199:11: ( 'protected' )
+            // JS.g:199:13: 'protected'
             {
             match("protected"); 
 
@@ -1441,8 +1449,8 @@
     public final void mPUBLIC() throws RecognitionException {
         try {
             int _type = PUBLIC;
-            // JS.g:196:8: ( 'public' )
-            // JS.g:196:10: 'public'
+            // JS.g:200:8: ( 'public' )
+            // JS.g:200:10: 'public'
             {
             match("public"); 
 
@@ -1460,8 +1468,8 @@
     public final void mSHORT() throws RecognitionException {
         try {
             int _type = SHORT;
-            // JS.g:197:7: ( 'short' )
-            // JS.g:197:9: 'short'
+            // JS.g:201:7: ( 'short' )
+            // JS.g:201:9: 'short'
             {
             match("short"); 
 
@@ -1479,8 +1487,8 @@
     public final void mSTATIC() throws RecognitionException {
         try {
             int _type = STATIC;
-            // JS.g:198:8: ( 'static' )
-            // JS.g:198:10: 'static'
+            // JS.g:202:8: ( 'static' )
+            // JS.g:202:10: 'static'
             {
             match("static"); 
 
@@ -1498,8 +1506,8 @@
     public final void mSUPER() throws RecognitionException {
         try {
             int _type = SUPER;
-            // JS.g:199:7: ( 'super' )
-            // JS.g:199:9: 'super'
+            // JS.g:203:7: ( 'super' )
+            // JS.g:203:9: 'super'
             {
             match("super"); 
 
@@ -1517,8 +1525,8 @@
     public final void mSYNCHRONIZED() throws RecognitionException {
         try {
             int _type = SYNCHRONIZED;
-            // JS.g:200:14: ( 'synchronized' )
-            // JS.g:200:16: 'synchronized'
+            // JS.g:204:14: ( 'synchronized' )
+            // JS.g:204:16: 'synchronized'
             {
             match("synchronized"); 
 
@@ -1536,8 +1544,8 @@
     public final void mTHROWS() throws RecognitionException {
         try {
             int _type = THROWS;
-            // JS.g:201:8: ( 'throws' )
-            // JS.g:201:10: 'throws'
+            // JS.g:205:8: ( 'throws' )
+            // JS.g:205:10: 'throws'
             {
             match("throws"); 
 
@@ -1555,8 +1563,8 @@
     public final void mTRANSIENT() throws RecognitionException {
         try {
             int _type = TRANSIENT;
-            // JS.g:202:11: ( 'transient' )
-            // JS.g:202:13: 'transient'
+            // JS.g:206:11: ( 'transient' )
+            // JS.g:206:13: 'transient'
             {
             match("transient"); 
 
@@ -1574,8 +1582,8 @@
     public final void mVOLATILE() throws RecognitionException {
         try {
             int _type = VOLATILE;
-            // JS.g:203:10: ( 'volatile' )
-            // JS.g:203:12: 'volatile'
+            // JS.g:207:10: ( 'volatile' )
+            // JS.g:207:12: 'volatile'
             {
             match("volatile"); 
 
@@ -1593,8 +1601,8 @@
     public final void mLBRACE() throws RecognitionException {
         try {
             int _type = LBRACE;
-            // JS.g:204:8: ( '{' )
-            // JS.g:204:10: '{'
+            // JS.g:208:8: ( '{' )
+            // JS.g:208:10: '{'
             {
             match('{'); 
 
@@ -1611,8 +1619,8 @@
     public final void mRBRACE() throws RecognitionException {
         try {
             int _type = RBRACE;
-            // JS.g:205:8: ( '}' )
-            // JS.g:205:10: '}'
+            // JS.g:209:8: ( '}' )
+            // JS.g:209:10: '}'
             {
             match('}'); 
 
@@ -1629,8 +1637,8 @@
     public final void mLPAREN() throws RecognitionException {
         try {
             int _type = LPAREN;
-            // JS.g:206:8: ( '(' )
-            // JS.g:206:10: '('
+            // JS.g:210:8: ( '(' )
+            // JS.g:210:10: '('
             {
             match('('); 
 
@@ -1647,8 +1655,8 @@
     public final void mRPAREN() throws RecognitionException {
         try {
             int _type = RPAREN;
-            // JS.g:207:8: ( ')' )
-            // JS.g:207:10: ')'
+            // JS.g:211:8: ( ')' )
+            // JS.g:211:10: ')'
             {
             match(')'); 
 
@@ -1665,8 +1673,8 @@
     public final void mLBRACK() throws RecognitionException {
         try {
             int _type = LBRACK;
-            // JS.g:208:8: ( '[' )
-            // JS.g:208:10: '['
+            // JS.g:212:8: ( '[' )
+            // JS.g:212:10: '['
             {
             match('['); 
 
@@ -1683,8 +1691,8 @@
     public final void mRBRACK() throws RecognitionException {
         try {
             int _type = RBRACK;
-            // JS.g:209:8: ( ']' )
-            // JS.g:209:10: ']'
+            // JS.g:213:8: ( ']' )
+            // JS.g:213:10: ']'
             {
             match(']'); 
 
@@ -1701,8 +1709,8 @@
     public final void mDOT() throws RecognitionException {
         try {
             int _type = DOT;
-            // JS.g:210:5: ( '.' )
-            // JS.g:210:7: '.'
+            // JS.g:214:5: ( '.' )
+            // JS.g:214:7: '.'
             {
             match('.'); 
 
@@ -1719,8 +1727,8 @@
     public final void mSEMIC() throws RecognitionException {
         try {
             int _type = SEMIC;
-            // JS.g:211:7: ( ';' )
-            // JS.g:211:9: ';'
+            // JS.g:215:7: ( ';' )
+            // JS.g:215:9: ';'
             {
             match(';'); 
 
@@ -1737,8 +1745,8 @@
     public final void mCOMMA() throws RecognitionException {
         try {
             int _type = COMMA;
-            // JS.g:212:7: ( ',' )
-            // JS.g:212:9: ','
+            // JS.g:216:7: ( ',' )
+            // JS.g:216:9: ','
             {
             match(','); 
 
@@ -1755,8 +1763,8 @@
     public final void mLT() throws RecognitionException {
         try {
             int _type = LT;
-            // JS.g:213:4: ( '<' )
-            // JS.g:213:6: '<'
+            // JS.g:217:4: ( '<' )
+            // JS.g:217:6: '<'
             {
             match('<'); 
 
@@ -1773,8 +1781,8 @@
     public final void mGT() throws RecognitionException {
         try {
             int _type = GT;
-            // JS.g:214:4: ( '>' )
-            // JS.g:214:6: '>'
+            // JS.g:218:4: ( '>' )
+            // JS.g:218:6: '>'
             {
             match('>'); 
 
@@ -1791,8 +1799,8 @@
     public final void mLTE() throws RecognitionException {
         try {
             int _type = LTE;
-            // JS.g:215:5: ( '<=' )
-            // JS.g:215:7: '<='
+            // JS.g:219:5: ( '<=' )
+            // JS.g:219:7: '<='
             {
             match("<="); 
 
@@ -1810,8 +1818,8 @@
     public final void mGTE() throws RecognitionException {
         try {
             int _type = GTE;
-            // JS.g:216:5: ( '>=' )
-            // JS.g:216:7: '>='
+            // JS.g:220:5: ( '>=' )
+            // JS.g:220:7: '>='
             {
             match(">="); 
 
@@ -1829,8 +1837,8 @@
     public final void mEQ() throws RecognitionException {
         try {
             int _type = EQ;
-            // JS.g:217:4: ( '==' )
-            // JS.g:217:6: '=='
+            // JS.g:221:4: ( '==' )
+            // JS.g:221:6: '=='
             {
             match("=="); 
 
@@ -1848,8 +1856,8 @@
     public final void mNEQ() throws RecognitionException {
         try {
             int _type = NEQ;
-            // JS.g:218:5: ( '!=' )
-            // JS.g:218:7: '!='
+            // JS.g:222:5: ( '!=' )
+            // JS.g:222:7: '!='
             {
             match("!="); 
 
@@ -1867,8 +1875,8 @@
     public final void mSAME() throws RecognitionException {
         try {
             int _type = SAME;
-            // JS.g:219:6: ( '===' )
-            // JS.g:219:8: '==='
+            // JS.g:223:6: ( '===' )
+            // JS.g:223:8: '==='
             {
             match("==="); 
 
@@ -1886,8 +1894,8 @@
     public final void mNSAME() throws RecognitionException {
         try {
             int _type = NSAME;
-            // JS.g:220:7: ( '!==' )
-            // JS.g:220:9: '!=='
+            // JS.g:224:7: ( '!==' )
+            // JS.g:224:9: '!=='
             {
             match("!=="); 
 
@@ -1905,8 +1913,8 @@
     public final void mADD() throws RecognitionException {
         try {
             int _type = ADD;
-            // JS.g:221:5: ( '+' )
-            // JS.g:221:7: '+'
+            // JS.g:225:5: ( '+' )
+            // JS.g:225:7: '+'
             {
             match('+'); 
 
@@ -1923,8 +1931,8 @@
     public final void mSUB() throws RecognitionException {
         try {
             int _type = SUB;
-            // JS.g:222:5: ( '-' )
-            // JS.g:222:7: '-'
+            // JS.g:226:5: ( '-' )
+            // JS.g:226:7: '-'
             {
             match('-'); 
 
@@ -1941,8 +1949,8 @@
     public final void mMUL() throws RecognitionException {
         try {
             int _type = MUL;
-            // JS.g:223:5: ( '*' )
-            // JS.g:223:7: '*'
+            // JS.g:227:5: ( '*' )
+            // JS.g:227:7: '*'
             {
             match('*'); 
 
@@ -1959,8 +1967,8 @@
     public final void mMOD() throws RecognitionException {
         try {
             int _type = MOD;
-            // JS.g:224:5: ( '%' )
-            // JS.g:224:7: '%'
+            // JS.g:228:5: ( '%' )
+            // JS.g:228:7: '%'
             {
             match('%'); 
 
@@ -1977,8 +1985,8 @@
     public final void mINC() throws RecognitionException {
         try {
             int _type = INC;
-            // JS.g:225:5: ( '++' )
-            // JS.g:225:7: '++'
+            // JS.g:229:5: ( '++' )
+            // JS.g:229:7: '++'
             {
             match("++"); 
 
@@ -1996,8 +2004,8 @@
     public final void mDEC() throws RecognitionException {
         try {
             int _type = DEC;
-            // JS.g:226:5: ( '--' )
-            // JS.g:226:7: '--'
+            // JS.g:230:5: ( '--' )
+            // JS.g:230:7: '--'
             {
             match("--"); 
 
@@ -2015,8 +2023,8 @@
     public final void mSHL() throws RecognitionException {
         try {
             int _type = SHL;
-            // JS.g:227:5: ( '<<' )
-            // JS.g:227:7: '<<'
+            // JS.g:231:5: ( '<<' )
+            // JS.g:231:7: '<<'
             {
             match("<<"); 
 
@@ -2034,8 +2042,8 @@
     public final void mSHR() throws RecognitionException {
         try {
             int _type = SHR;
-            // JS.g:228:5: ( '>>' )
-            // JS.g:228:7: '>>'
+            // JS.g:232:5: ( '>>' )
+            // JS.g:232:7: '>>'
             {
             match(">>"); 
 
@@ -2053,8 +2061,8 @@
     public final void mSHU() throws RecognitionException {
         try {
             int _type = SHU;
-            // JS.g:229:5: ( '>>>' )
-            // JS.g:229:7: '>>>'
+            // JS.g:233:5: ( '>>>' )
+            // JS.g:233:7: '>>>'
             {
             match(">>>"); 
 
@@ -2072,8 +2080,8 @@
     public final void mAND() throws RecognitionException {
         try {
             int _type = AND;
-            // JS.g:230:5: ( '&' )
-            // JS.g:230:7: '&'
+            // JS.g:234:5: ( '&' )
+            // JS.g:234:7: '&'
             {
             match('&'); 
 
@@ -2090,8 +2098,8 @@
     public final void mOR() throws RecognitionException {
         try {
             int _type = OR;
-            // JS.g:231:4: ( '|' )
-            // JS.g:231:6: '|'
+            // JS.g:235:4: ( '|' )
+            // JS.g:235:6: '|'
             {
             match('|'); 
 
@@ -2108,8 +2116,8 @@
     public final void mXOR() throws RecognitionException {
         try {
             int _type = XOR;
-            // JS.g:232:5: ( '^' )
-            // JS.g:232:7: '^'
+            // JS.g:236:5: ( '^' )
+            // JS.g:236:7: '^'
             {
             match('^'); 
 
@@ -2126,8 +2134,8 @@
     public final void mNOT() throws RecognitionException {
         try {
             int _type = NOT;
-            // JS.g:233:5: ( '!' )
-            // JS.g:233:7: '!'
+            // JS.g:237:5: ( '!' )
+            // JS.g:237:7: '!'
             {
             match('!'); 
 
@@ -2144,8 +2152,8 @@
     public final void mINV() throws RecognitionException {
         try {
             int _type = INV;
-            // JS.g:234:5: ( '~' )
-            // JS.g:234:7: '~'
+            // JS.g:238:5: ( '~' )
+            // JS.g:238:7: '~'
             {
             match('~'); 
 
@@ -2162,8 +2170,8 @@
     public final void mLAND() throws RecognitionException {
         try {
             int _type = LAND;
-            // JS.g:235:6: ( '&&' )
-            // JS.g:235:8: '&&'
+            // JS.g:239:6: ( '&&' )
+            // JS.g:239:8: '&&'
             {
             match("&&"); 
 
@@ -2181,8 +2189,8 @@
     public final void mLOR() throws RecognitionException {
         try {
             int _type = LOR;
-            // JS.g:236:5: ( '||' )
-            // JS.g:236:7: '||'
+            // JS.g:240:5: ( '||' )
+            // JS.g:240:7: '||'
             {
             match("||"); 
 
@@ -2200,8 +2208,8 @@
     public final void mQUE() throws RecognitionException {
         try {
             int _type = QUE;
-            // JS.g:237:5: ( '?' )
-            // JS.g:237:7: '?'
+            // JS.g:241:5: ( '?' )
+            // JS.g:241:7: '?'
             {
             match('?'); 
 
@@ -2218,8 +2226,8 @@
     public final void mCOLON() throws RecognitionException {
         try {
             int _type = COLON;
-            // JS.g:238:7: ( ':' )
-            // JS.g:238:9: ':'
+            // JS.g:242:7: ( ':' )
+            // JS.g:242:9: ':'
             {
             match(':'); 
 
@@ -2236,8 +2244,8 @@
     public final void mASSIGN() throws RecognitionException {
         try {
             int _type = ASSIGN;
-            // JS.g:239:8: ( '=' )
-            // JS.g:239:10: '='
+            // JS.g:243:8: ( '=' )
+            // JS.g:243:10: '='
             {
             match('='); 
 
@@ -2254,8 +2262,8 @@
     public final void mADDASS() throws RecognitionException {
         try {
             int _type = ADDASS;
-            // JS.g:240:8: ( '+=' )
-            // JS.g:240:10: '+='
+            // JS.g:244:8: ( '+=' )
+            // JS.g:244:10: '+='
             {
             match("+="); 
 
@@ -2273,8 +2281,8 @@
     public final void mSUBASS() throws RecognitionException {
         try {
             int _type = SUBASS;
-            // JS.g:241:8: ( '-=' )
-            // JS.g:241:10: '-='
+            // JS.g:245:8: ( '-=' )
+            // JS.g:245:10: '-='
             {
             match("-="); 
 
@@ -2292,8 +2300,8 @@
     public final void mMULASS() throws RecognitionException {
         try {
             int _type = MULASS;
-            // JS.g:242:8: ( '*=' )
-            // JS.g:242:10: '*='
+            // JS.g:246:8: ( '*=' )
+            // JS.g:246:10: '*='
             {
             match("*="); 
 
@@ -2311,8 +2319,8 @@
     public final void mMODASS() throws RecognitionException {
         try {
             int _type = MODASS;
-            // JS.g:243:8: ( '%=' )
-            // JS.g:243:10: '%='
+            // JS.g:247:8: ( '%=' )
+            // JS.g:247:10: '%='
             {
             match("%="); 
 
@@ -2330,8 +2338,8 @@
     public final void mSHLASS() throws RecognitionException {
         try {
             int _type = SHLASS;
-            // JS.g:244:8: ( '<<=' )
-            // JS.g:244:10: '<<='
+            // JS.g:248:8: ( '<<=' )
+            // JS.g:248:10: '<<='
             {
             match("<<="); 
 
@@ -2349,8 +2357,8 @@
     public final void mSHRASS() throws RecognitionException {
         try {
             int _type = SHRASS;
-            // JS.g:245:8: ( '>>=' )
-            // JS.g:245:10: '>>='
+            // JS.g:249:8: ( '>>=' )
+            // JS.g:249:10: '>>='
             {
             match(">>="); 
 
@@ -2368,8 +2376,8 @@
     public final void mSHUASS() throws RecognitionException {
         try {
             int _type = SHUASS;
-            // JS.g:246:8: ( '>>>=' )
-            // JS.g:246:10: '>>>='
+            // JS.g:250:8: ( '>>>=' )
+            // JS.g:250:10: '>>>='
             {
             match(">>>="); 
 
@@ -2387,8 +2395,8 @@
     public final void mANDASS() throws RecognitionException {
         try {
             int _type = ANDASS;
-            // JS.g:247:8: ( '&=' )
-            // JS.g:247:10: '&='
+            // JS.g:251:8: ( '&=' )
+            // JS.g:251:10: '&='
             {
             match("&="); 
 
@@ -2406,8 +2414,8 @@
     public final void mORASS() throws RecognitionException {
         try {
             int _type = ORASS;
-            // JS.g:248:7: ( '|=' )
-            // JS.g:248:9: '|='
+            // JS.g:252:7: ( '|=' )
+            // JS.g:252:9: '|='
             {
             match("|="); 
 
@@ -2425,8 +2433,8 @@
     public final void mXORASS() throws RecognitionException {
         try {
             int _type = XORASS;
-            // JS.g:249:8: ( '^=' )
-            // JS.g:249:10: '^='
+            // JS.g:253:8: ( '^=' )
+            // JS.g:253:10: '^='
             {
             match("^="); 
 
@@ -2444,8 +2452,8 @@
     public final void mDIV() throws RecognitionException {
         try {
             int _type = DIV;
-            // JS.g:250:5: ( '/' )
-            // JS.g:250:7: '/'
+            // JS.g:254:5: ( '/' )
+            // JS.g:254:7: '/'
             {
             match('/'); 
 
@@ -2462,8 +2470,8 @@
     public final void mDIVASS() throws RecognitionException {
         try {
             int _type = DIVASS;
-            // JS.g:251:8: ( '/=' )
-            // JS.g:251:10: '/='
+            // JS.g:255:8: ( '/=' )
+            // JS.g:255:10: '/='
             {
             match("/="); 
 
@@ -2481,8 +2489,8 @@
     public final void mXCOPEN() throws RecognitionException {
         try {
             int _type = XCOPEN;
-            // JS.g:252:8: ( '<!--' )
-            // JS.g:252:10: '<!--'
+            // JS.g:256:8: ( '<!--' )
+            // JS.g:256:10: '<!--'
             {
             match("<!--"); 
 
@@ -2500,8 +2508,8 @@
     public final void mXCCLOSE() throws RecognitionException {
         try {
             int _type = XCCLOSE;
-            // JS.g:253:9: ( '-->' )
-            // JS.g:253:11: '-->'
+            // JS.g:257:9: ( '-->' )
+            // JS.g:257:11: '-->'
             {
             match("-->"); 
 
@@ -2519,8 +2527,8 @@
     public final void mXLCLOSE() throws RecognitionException {
         try {
             int _type = XLCLOSE;
-            // JS.g:254:9: ( '</' )
-            // JS.g:254:11: '</'
+            // JS.g:258:9: ( '</' )
+            // JS.g:258:11: '</'
             {
             match("</"); 
 
@@ -2538,8 +2546,8 @@
     public final void mXRCLOSE() throws RecognitionException {
         try {
             int _type = XRCLOSE;
-            // JS.g:255:9: ( '/>' )
-            // JS.g:255:11: '/>'
+            // JS.g:259:9: ( '/>' )
+            // JS.g:259:11: '/>'
             {
             match("/>"); 
 
@@ -2557,8 +2565,8 @@
     public final void mCDATAOPEN() throws RecognitionException {
         try {
             int _type = CDATAOPEN;
-            // JS.g:256:11: ( '<![' )
-            // JS.g:256:13: '<!['
+            // JS.g:260:11: ( '<![' )
+            // JS.g:260:13: '<!['
             {
             match("<!["); 
 
@@ -2576,8 +2584,8 @@
     public final void mXHOPEN() throws RecognitionException {
         try {
             int _type = XHOPEN;
-            // JS.g:257:8: ( '<?' )
-            // JS.g:257:10: '<?'
+            // JS.g:261:8: ( '<?' )
+            // JS.g:261:10: '<?'
             {
             match("<?"); 
 
@@ -2595,8 +2603,8 @@
     public final void mXHCLOSE() throws RecognitionException {
         try {
             int _type = XHCLOSE;
-            // JS.g:258:9: ( '?>' )
-            // JS.g:258:11: '?>'
+            // JS.g:262:9: ( '?>' )
+            // JS.g:262:11: '?>'
             {
             match("?>"); 
 
@@ -2614,8 +2622,8 @@
     public final void mAT() throws RecognitionException {
         try {
             int _type = AT;
-            // JS.g:259:4: ( '@' )
-            // JS.g:259:6: '@'
+            // JS.g:263:4: ( '@' )
+            // JS.g:263:6: '@'
             {
             match('@'); 
 
@@ -2632,8 +2640,8 @@
     public final void mDOTDOT() throws RecognitionException {
         try {
             int _type = DOTDOT;
-            // JS.g:260:8: ( '..' )
-            // JS.g:260:10: '..'
+            // JS.g:264:8: ( '..' )
+            // JS.g:264:10: '..'
             {
             match(".."); 
 
@@ -2651,8 +2659,8 @@
     public final void mCOLONCOLON() throws RecognitionException {
         try {
             int _type = COLONCOLON;
-            // JS.g:261:12: ( '::' )
-            // JS.g:261:14: '::'
+            // JS.g:265:12: ( '::' )
+            // JS.g:265:14: '::'
             {
             match("::"); 
 
@@ -2669,8 +2677,8 @@
     // $ANTLR start BSLASH
     public final void mBSLASH() throws RecognitionException {
         try {
-            // JS.g:503:2: ( '\\\\' )
-            // JS.g:503:4: '\\\\'
+            // JS.g:511:2: ( '\\\\' )
+            // JS.g:511:4: '\\\\'
             {
             match('\\'); 
 
@@ -2685,8 +2693,8 @@
     // $ANTLR start DQUOTE
     public final void mDQUOTE() throws RecognitionException {
         try {
-            // JS.g:507:2: ( '\"' )
-            // JS.g:507:4: '\"'
+            // JS.g:515:2: ( '\"' )
+            // JS.g:515:4: '\"'
             {
             match('\"'); 
 
@@ -2701,8 +2709,8 @@
     // $ANTLR start SQUOTE
     public final void mSQUOTE() throws RecognitionException {
         try {
-            // JS.g:511:2: ( '\\'' )
-            // JS.g:511:4: '\\''
+            // JS.g:519:2: ( '\\'' )
+            // JS.g:519:4: '\\''
             {
             match('\''); 
 
@@ -2717,8 +2725,8 @@
     // $ANTLR start TAB
     public final void mTAB() throws RecognitionException {
         try {
-            // JS.g:517:2: ( '\\u0009' )
-            // JS.g:517:4: '\\u0009'
+            // JS.g:525:2: ( '\\u0009' )
+            // JS.g:525:4: '\\u0009'
             {
             match('\t'); 
 
@@ -2733,8 +2741,8 @@
     // $ANTLR start VT
     public final void mVT() throws RecognitionException {
         try {
-            // JS.g:521:2: ( '\\u000b' )
-            // JS.g:521:4: '\\u000b'
+            // JS.g:529:2: ( '\\u000b' )
+            // JS.g:529:4: '\\u000b'
             {
             match('\u000B'); 
 
@@ -2749,8 +2757,8 @@
     // $ANTLR start FF
     public final void mFF() throws RecognitionException {
         try {
-            // JS.g:525:2: ( '\\u000c' )
-            // JS.g:525:4: '\\u000c'
+            // JS.g:533:2: ( '\\u000c' )
+            // JS.g:533:4: '\\u000c'
             {
             match('\f'); 
 
@@ -2765,8 +2773,8 @@
     // $ANTLR start SP
     public final void mSP() throws RecognitionException {
         try {
-            // JS.g:529:2: ( '\\u0020' )
-            // JS.g:529:4: '\\u0020'
+            // JS.g:537:2: ( '\\u0020' )
+            // JS.g:537:4: '\\u0020'
             {
             match(' '); 
 
@@ -2781,8 +2789,8 @@
     // $ANTLR start NBSP
     public final void mNBSP() throws RecognitionException {
         try {
-            // JS.g:533:2: ( '\\u00a0' )
-            // JS.g:533:4: '\\u00a0'
+            // JS.g:541:2: ( '\\u00a0' )
+            // JS.g:541:4: '\\u00a0'
             {
             match('\u00A0'); 
 
@@ -2797,7 +2805,7 @@
     // $ANTLR start USP
     public final void mUSP() throws RecognitionException {
         try {
-            // JS.g:537:2: ( '\\u1680' | '\\u180E' | '\\u2000' | '\\u2001' | '\\u2002' | '\\u2003' | '\\u2004' | '\\u2005' | '\\u2006' | '\\u2007' | '\\u2008' | '\\u2009' | '\\u200A' | '\\u202F' | '\\u205F' | '\\u3000' )
+            // JS.g:545:2: ( '\\u1680' | '\\u180E' | '\\u2000' | '\\u2001' | '\\u2002' | '\\u2003' | '\\u2004' | '\\u2005' | '\\u2006' | '\\u2007' | '\\u2008' | '\\u2009' | '\\u200A' | '\\u202F' | '\\u205F' | '\\u3000' )
             // JS.g:
             {
             if ( input.LA(1)=='\u1680'||input.LA(1)=='\u180E'||(input.LA(1)>='\u2000' && input.LA(1)<='\u200A')||input.LA(1)=='\u202F'||input.LA(1)=='\u205F'||input.LA(1)=='\u3000' ) {
@@ -2823,10 +2831,10 @@
     public final void mWhiteSpace() throws RecognitionException {
         try {
             int _type = WhiteSpace;
-            // JS.g:556:2: ( ( TAB | VT | FF | SP | NBSP | USP )+ )
-            // JS.g:556:4: ( TAB | VT | FF | SP | NBSP | USP )+
+            // JS.g:564:2: ( ( TAB | VT | FF | SP | NBSP | USP )+ )
+            // JS.g:564:4: ( TAB | VT | FF | SP | NBSP | USP )+
             {
-            // JS.g:556:4: ( TAB | VT | FF | SP | NBSP | USP )+
+            // JS.g:564:4: ( TAB | VT | FF | SP | NBSP | USP )+
             int cnt1=0;
             loop1:
             do {
@@ -2879,8 +2887,8 @@
     // $ANTLR start LF
     public final void mLF() throws RecognitionException {
         try {
-            // JS.g:564:2: ( '\\n' )
-            // JS.g:564:4: '\\n'
+            // JS.g:572:2: ( '\\n' )
+            // JS.g:572:4: '\\n'
             {
             match('\n'); 
 
@@ -2895,8 +2903,8 @@
     // $ANTLR start CR
     public final void mCR() throws RecognitionException {
         try {
-            // JS.g:568:2: ( '\\r' )
-            // JS.g:568:4: '\\r'
+            // JS.g:576:2: ( '\\r' )
+            // JS.g:576:4: '\\r'
             {
             match('\r'); 
 
@@ -2911,8 +2919,8 @@
     // $ANTLR start LS
     public final void mLS() throws RecognitionException {
         try {
-            // JS.g:572:2: ( '\\u2028' )
-            // JS.g:572:4: '\\u2028'
+            // JS.g:580:2: ( '\\u2028' )
+            // JS.g:580:4: '\\u2028'
             {
             match('\u2028'); 
 
@@ -2927,8 +2935,8 @@
     // $ANTLR start PS
     public final void mPS() throws RecognitionException {
         try {
-            // JS.g:576:2: ( '\\u2029' )
-            // JS.g:576:4: '\\u2029'
+            // JS.g:584:2: ( '\\u2029' )
+            // JS.g:584:4: '\\u2029'
             {
             match('\u2029'); 
 
@@ -2943,7 +2951,7 @@
     // $ANTLR start LineTerminator
     public final void mLineTerminator() throws RecognitionException {
         try {
-            // JS.g:580:2: ( CR | LF | LS | PS )
+            // JS.g:588:2: ( CR | LF | LS | PS )
             // JS.g:
             {
             if ( input.LA(1)=='\n'||input.LA(1)=='\r'||(input.LA(1)>='\u2028' && input.LA(1)<='\u2029') ) {
@@ -2969,10 +2977,10 @@
     public final void mEOL() throws RecognitionException {
         try {
             int _type = EOL;
-            // JS.g:584:2: ( ( ( CR ( LF )? ) | LF | LS | PS ) )
-            // JS.g:584:4: ( ( CR ( LF )? ) | LF | LS | PS )
+            // JS.g:592:2: ( ( ( CR ( LF )? ) | LF | LS | PS ) )
+            // JS.g:592:4: ( ( CR ( LF )? ) | LF | LS | PS )
             {
-            // JS.g:584:4: ( ( CR ( LF )? ) | LF | LS | PS )
+            // JS.g:592:4: ( ( CR ( LF )? ) | LF | LS | PS )
             int alt3=4;
             switch ( input.LA(1) ) {
             case '\r':
@@ -2997,20 +3005,20 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("584:4: ( ( CR ( LF )? ) | LF | LS | PS )", 3, 0, input);
+                    new NoViableAltException("592:4: ( ( CR ( LF )? ) | LF | LS | PS )", 3, 0, input);
 
                 throw nvae;
             }
 
             switch (alt3) {
                 case 1 :
-                    // JS.g:584:6: ( CR ( LF )? )
+                    // JS.g:592:6: ( CR ( LF )? )
                     {
-                    // JS.g:584:6: ( CR ( LF )? )
-                    // JS.g:584:8: CR ( LF )?
+                    // JS.g:592:6: ( CR ( LF )? )
+                    // JS.g:592:8: CR ( LF )?
                     {
                     mCR(); 
-                    // JS.g:584:11: ( LF )?
+                    // JS.g:592:11: ( LF )?
                     int alt2=2;
                     int LA2_0 = input.LA(1);
 
@@ -3019,7 +3027,7 @@
                     }
                     switch (alt2) {
                         case 1 :
-                            // JS.g:584:11: LF
+                            // JS.g:592:11: LF
                             {
                             mLF(); 
 
@@ -3035,21 +3043,21 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:584:19: LF
+                    // JS.g:592:19: LF
                     {
                     mLF(); 
 
                     }
                     break;
                 case 3 :
-                    // JS.g:584:24: LS
+                    // JS.g:592:24: LS
                     {
                     mLS(); 
 
                     }
                     break;
                 case 4 :
-                    // JS.g:584:29: PS
+                    // JS.g:592:29: PS
                     {
                     mPS(); 
 
@@ -3073,12 +3081,12 @@
     public final void mMultiLineComment() throws RecognitionException {
         try {
             int _type = MultiLineComment;
-            // JS.g:591:2: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            // JS.g:591:4: '/*' ( options {greedy=false; } : . )* '*/'
+            // JS.g:599:2: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // JS.g:599:4: '/*' ( options {greedy=false; } : . )* '*/'
             {
             match("/*"); 
 
-            // JS.g:591:9: ( options {greedy=false; } : . )*
+            // JS.g:599:9: ( options {greedy=false; } : . )*
             loop4:
             do {
                 int alt4=2;
@@ -3103,7 +3111,7 @@
 
                 switch (alt4) {
             	case 1 :
-            	    // JS.g:591:41: .
+            	    // JS.g:599:41: .
             	    {
             	    matchAny(); 
 
@@ -3132,12 +3140,12 @@
     public final void mSingleLineComment() throws RecognitionException {
         try {
             int _type = SingleLineComment;
-            // JS.g:595:2: ( '//' (~ ( LineTerminator ) )* )
-            // JS.g:595:4: '//' (~ ( LineTerminator ) )*
+            // JS.g:603:2: ( '//' (~ ( LineTerminator ) )* )
+            // JS.g:603:4: '//' (~ ( LineTerminator ) )*
             {
             match("//"); 
 
-            // JS.g:595:9: (~ ( LineTerminator ) )*
+            // JS.g:603:9: (~ ( LineTerminator ) )*
             loop5:
             do {
                 int alt5=2;
@@ -3150,7 +3158,7 @@
 
                 switch (alt5) {
             	case 1 :
-            	    // JS.g:595:11: ~ ( LineTerminator )
+            	    // JS.g:603:11: ~ ( LineTerminator )
             	    {
             	    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();
@@ -3185,7 +3193,7 @@
     // $ANTLR start IdentifierStartASCII
     public final void mIdentifierStartASCII() throws RecognitionException {
         try {
-            // JS.g:704:2: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | BSLASH 'u' HexDigit HexDigit HexDigit HexDigit )
+            // JS.g:712:2: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | BSLASH 'u' HexDigit HexDigit HexDigit HexDigit )
             int alt6=5;
             switch ( input.LA(1) ) {
             case 'a':
@@ -3265,42 +3273,42 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("703:10: fragment IdentifierStartASCII : ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | BSLASH 'u' HexDigit HexDigit HexDigit HexDigit );", 6, 0, input);
+                    new NoViableAltException("711:10: fragment IdentifierStartASCII : ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | BSLASH 'u' HexDigit HexDigit HexDigit HexDigit );", 6, 0, input);
 
                 throw nvae;
             }
 
             switch (alt6) {
                 case 1 :
-                    // JS.g:704:4: 'a' .. 'z'
+                    // JS.g:712:4: 'a' .. 'z'
                     {
                     matchRange('a','z'); 
 
                     }
                     break;
                 case 2 :
-                    // JS.g:704:15: 'A' .. 'Z'
+                    // JS.g:712:15: 'A' .. 'Z'
                     {
                     matchRange('A','Z'); 
 
                     }
                     break;
                 case 3 :
-                    // JS.g:705:4: '$'
+                    // JS.g:713:4: '$'
                     {
                     match('$'); 
 
                     }
                     break;
                 case 4 :
-                    // JS.g:706:4: '_'
+                    // JS.g:714:4: '_'
                     {
                     match('_'); 
 
                     }
                     break;
                 case 5 :
-                    // JS.g:707:4: BSLASH 'u' HexDigit HexDigit HexDigit HexDigit
+                    // JS.g:715:4: BSLASH 'u' HexDigit HexDigit HexDigit HexDigit
                     {
                     mBSLASH(); 
                     match('u'); 
@@ -3322,7 +3330,7 @@
     // $ANTLR start IdentifierPart
     public final void mIdentifierPart() throws RecognitionException {
         try {
-            // JS.g:715:2: ( DecimalDigit | IdentifierStartASCII | {...}?)
+            // JS.g:723:2: ( DecimalDigit | IdentifierStartASCII | {...}?)
             int alt7=3;
             switch ( input.LA(1) ) {
             case '0':
@@ -3403,21 +3411,21 @@
 
             switch (alt7) {
                 case 1 :
-                    // JS.g:715:4: DecimalDigit
+                    // JS.g:723:4: DecimalDigit
                     {
                     mDecimalDigit(); 
 
                     }
                     break;
                 case 2 :
-                    // JS.g:716:4: IdentifierStartASCII
+                    // JS.g:724:4: IdentifierStartASCII
                     {
                     mIdentifierStartASCII(); 
 
                     }
                     break;
                 case 3 :
-                    // JS.g:717:4: {...}?
+                    // JS.g:725:4: {...}?
                     {
                     if ( !( isIdentifierPartUnicode(input.LA(1)) ) ) {
                         throw new FailedPredicateException(input, "IdentifierPart", " isIdentifierPartUnicode(input.LA(1)) ");
@@ -3437,11 +3445,11 @@
     // $ANTLR start IdentifierNameASCIIStart
     public final void mIdentifierNameASCIIStart() throws RecognitionException {
         try {
-            // JS.g:721:2: ( IdentifierStartASCII ( IdentifierPart )* )
-            // JS.g:721:4: IdentifierStartASCII ( IdentifierPart )*
+            // JS.g:729:2: ( IdentifierStartASCII ( IdentifierPart )* )
+            // JS.g:729:4: IdentifierStartASCII ( IdentifierPart )*
             {
             mIdentifierStartASCII(); 
-            // JS.g:721:25: ( IdentifierPart )*
+            // JS.g:729:25: ( IdentifierPart )*
             loop8:
             do {
                 int alt8=2;
@@ -3457,7 +3465,7 @@
 
                 switch (alt8) {
             	case 1 :
-            	    // JS.g:721:25: IdentifierPart
+            	    // JS.g:729:25: IdentifierPart
             	    {
             	    mIdentifierPart(); 
 
@@ -3482,7 +3490,7 @@
     public final void mIdentifier() throws RecognitionException {
         try {
             int _type = Identifier;
-            // JS.g:734:3: ( IdentifierNameASCIIStart | )
+            // JS.g:742:3: ( IdentifierNameASCIIStart | )
             int alt9=2;
             int LA9_0 = input.LA(1);
 
@@ -3493,14 +3501,14 @@
                 alt9=2;}
             switch (alt9) {
                 case 1 :
-                    // JS.g:734:5: IdentifierNameASCIIStart
+                    // JS.g:742:5: IdentifierNameASCIIStart
                     {
                     mIdentifierNameASCIIStart(); 
 
                     }
                     break;
                 case 2 :
-                    // JS.g:735:5: 
+                    // JS.g:743:5: 
                     {
                      consumeIdentifierUnicodeStart(); 
 
@@ -3518,8 +3526,8 @@
     // $ANTLR start PropertyIdentifierSymbols
     public final void mPropertyIdentifierSymbols() throws RecognitionException {
         try {
-            // JS.g:746:3: ( AT Identifier )
-            // JS.g:746:5: AT Identifier
+            // JS.g:755:3: ( AT Identifier )
+            // JS.g:755:5: AT Identifier
             {
             mAT(); 
             mIdentifier(); 
@@ -3536,8 +3544,8 @@
     public final void mXmlAttribute() throws RecognitionException {
         try {
             int _type = XmlAttribute;
-            // JS.g:750:3: ( PropertyIdentifierSymbols )
-            // JS.g:750:5: PropertyIdentifierSymbols
+            // JS.g:759:3: ( PropertyIdentifierSymbols )
+            // JS.g:759:5: PropertyIdentifierSymbols
             {
             mPropertyIdentifierSymbols(); 
 
@@ -3553,8 +3561,8 @@
     // $ANTLR start DecimalDigit
     public final void mDecimalDigit() throws RecognitionException {
         try {
-            // JS.g:836:2: ( '0' .. '9' )
-            // JS.g:836:4: '0' .. '9'
+            // JS.g:845:2: ( '0' .. '9' )
+            // JS.g:845:4: '0' .. '9'
             {
             matchRange('0','9'); 
 
@@ -3569,7 +3577,7 @@
     // $ANTLR start HexDigit
     public final void mHexDigit() throws RecognitionException {
         try {
-            // JS.g:840:2: ( DecimalDigit | 'a' .. 'f' | 'A' .. 'F' )
+            // JS.g:849: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') ) {
@@ -3594,8 +3602,8 @@
     // $ANTLR start OctalDigit
     public final void mOctalDigit() throws RecognitionException {
         try {
-            // JS.g:844:2: ( '0' .. '7' )
-            // JS.g:844:4: '0' .. '7'
+            // JS.g:853:2: ( '0' .. '7' )
+            // JS.g:853:4: '0' .. '7'
             {
             matchRange('0','7'); 
 
@@ -3610,8 +3618,8 @@
     // $ANTLR start ExponentPart
     public final void mExponentPart() throws RecognitionException {
         try {
-            // JS.g:848:2: ( ( 'e' | 'E' ) ( '+' | '-' )? ( DecimalDigit )+ )
-            // JS.g:848:4: ( 'e' | 'E' ) ( '+' | '-' )? ( DecimalDigit )+
+            // JS.g:857:2: ( ( 'e' | 'E' ) ( '+' | '-' )? ( DecimalDigit )+ )
+            // JS.g:857:4: ( 'e' | 'E' ) ( '+' | '-' )? ( DecimalDigit )+
             {
             if ( input.LA(1)=='E'||input.LA(1)=='e' ) {
                 input.consume();
@@ -3623,7 +3631,7 @@
                 recover(mse);    throw mse;
             }
 
-            // JS.g:848:18: ( '+' | '-' )?
+            // JS.g:857:18: ( '+' | '-' )?
             int alt10=2;
             int LA10_0 = input.LA(1);
 
@@ -3650,7 +3658,7 @@
 
             }
 
-            // JS.g:848:33: ( DecimalDigit )+
+            // JS.g:857:33: ( DecimalDigit )+
             int cnt11=0;
             loop11:
             do {
@@ -3664,7 +3672,7 @@
 
                 switch (alt11) {
             	case 1 :
-            	    // JS.g:848:33: DecimalDigit
+            	    // JS.g:857:33: DecimalDigit
             	    {
             	    mDecimalDigit(); 
 
@@ -3692,7 +3700,7 @@
     // $ANTLR start DecimalIntegerLiteral
     public final void mDecimalIntegerLiteral() throws RecognitionException {
         try {
-            // JS.g:852:2: ( '0' | '1' .. '9' ( DecimalDigit )* )
+            // JS.g:861:2: ( '0' | '1' .. '9' ( DecimalDigit )* )
             int alt13=2;
             int LA13_0 = input.LA(1);
 
@@ -3704,23 +3712,23 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("851:10: fragment DecimalIntegerLiteral : ( '0' | '1' .. '9' ( DecimalDigit )* );", 13, 0, input);
+                    new NoViableAltException("860:10: fragment DecimalIntegerLiteral : ( '0' | '1' .. '9' ( DecimalDigit )* );", 13, 0, input);
 
                 throw nvae;
             }
             switch (alt13) {
                 case 1 :
-                    // JS.g:852:4: '0'
+                    // JS.g:861:4: '0'
                     {
                     match('0'); 
 
                     }
                     break;
                 case 2 :
-                    // JS.g:853:4: '1' .. '9' ( DecimalDigit )*
+                    // JS.g:862:4: '1' .. '9' ( DecimalDigit )*
                     {
                     matchRange('1','9'); 
-                    // JS.g:853:13: ( DecimalDigit )*
+                    // JS.g:862:13: ( DecimalDigit )*
                     loop12:
                     do {
                         int alt12=2;
@@ -3733,7 +3741,7 @@
 
                         switch (alt12) {
                     	case 1 :
-                    	    // JS.g:853:13: DecimalDigit
+                    	    // JS.g:862:13: DecimalDigit
                     	    {
                     	    mDecimalDigit(); 
 
@@ -3760,16 +3768,16 @@
     public final void mDecimalLiteral() throws RecognitionException {
         try {
             int _type = DecimalLiteral;
-            // JS.g:857:2: ( DecimalIntegerLiteral '.' ( DecimalDigit )* ( ExponentPart )? | '.' ( DecimalDigit )+ ( ExponentPart )? | DecimalIntegerLiteral ( ExponentPart )? )
+            // JS.g:866:2: ( DecimalIntegerLiteral '.' ( DecimalDigit )* ( ExponentPart )? | '.' ( DecimalDigit )+ ( ExponentPart )? | DecimalIntegerLiteral ( ExponentPart )? )
             int alt19=3;
             alt19 = dfa19.predict(input);
             switch (alt19) {
                 case 1 :
-                    // JS.g:857:4: DecimalIntegerLiteral '.' ( DecimalDigit )* ( ExponentPart )?
+                    // JS.g:866:4: DecimalIntegerLiteral '.' ( DecimalDigit )* ( ExponentPart )?
                     {
                     mDecimalIntegerLiteral(); 
                     match('.'); 
-                    // JS.g:857:30: ( DecimalDigit )*
+                    // JS.g:866:30: ( DecimalDigit )*
                     loop14:
                     do {
                         int alt14=2;
@@ -3782,7 +3790,7 @@
 
                         switch (alt14) {
                     	case 1 :
-                    	    // JS.g:857:30: DecimalDigit
+                    	    // JS.g:866:30: DecimalDigit
                     	    {
                     	    mDecimalDigit(); 
 
@@ -3794,7 +3802,7 @@
                         }
                     } while (true);
 
-                    // JS.g:857:44: ( ExponentPart )?
+                    // JS.g:866:44: ( ExponentPart )?
                     int alt15=2;
                     int LA15_0 = input.LA(1);
 
@@ -3803,7 +3811,7 @@
                     }
                     switch (alt15) {
                         case 1 :
-                            // JS.g:857:44: ExponentPart
+                            // JS.g:866:44: ExponentPart
                             {
                             mExponentPart(); 
 
@@ -3816,10 +3824,10 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:858:4: '.' ( DecimalDigit )+ ( ExponentPart )?
+                    // JS.g:867:4: '.' ( DecimalDigit )+ ( ExponentPart )?
                     {
                     match('.'); 
-                    // JS.g:858:8: ( DecimalDigit )+
+                    // JS.g:867:8: ( DecimalDigit )+
                     int cnt16=0;
                     loop16:
                     do {
@@ -3833,7 +3841,7 @@
 
                         switch (alt16) {
                     	case 1 :
-                    	    // JS.g:858:8: DecimalDigit
+                    	    // JS.g:867:8: DecimalDigit
                     	    {
                     	    mDecimalDigit(); 
 
@@ -3849,7 +3857,7 @@
                         cnt16++;
                     } while (true);
 
-                    // JS.g:858:22: ( ExponentPart )?
+                    // JS.g:867:22: ( ExponentPart )?
                     int alt17=2;
                     int LA17_0 = input.LA(1);
 
@@ -3858,7 +3866,7 @@
                     }
                     switch (alt17) {
                         case 1 :
-                            // JS.g:858:22: ExponentPart
+                            // JS.g:867:22: ExponentPart
                             {
                             mExponentPart(); 
 
@@ -3871,10 +3879,10 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:859:4: DecimalIntegerLiteral ( ExponentPart )?
+                    // JS.g:868:4: DecimalIntegerLiteral ( ExponentPart )?
                     {
                     mDecimalIntegerLiteral(); 
-                    // JS.g:859:26: ( ExponentPart )?
+                    // JS.g:868:26: ( ExponentPart )?
                     int alt18=2;
                     int LA18_0 = input.LA(1);
 
@@ -3883,7 +3891,7 @@
                     }
                     switch (alt18) {
                         case 1 :
-                            // JS.g:859:26: ExponentPart
+                            // JS.g:868:26: ExponentPart
                             {
                             mExponentPart(); 
 
@@ -3908,11 +3916,11 @@
     public final void mOctalIntegerLiteral() throws RecognitionException {
         try {
             int _type = OctalIntegerLiteral;
-            // JS.g:863:2: ( '0' ( OctalDigit )+ )
-            // JS.g:863:4: '0' ( OctalDigit )+
+            // JS.g:872:2: ( '0' ( OctalDigit )+ )
+            // JS.g:872:4: '0' ( OctalDigit )+
             {
             match('0'); 
-            // JS.g:863:8: ( OctalDigit )+
+            // JS.g:872:8: ( OctalDigit )+
             int cnt20=0;
             loop20:
             do {
@@ -3926,7 +3934,7 @@
 
                 switch (alt20) {
             	case 1 :
-            	    // JS.g:863:8: OctalDigit
+            	    // JS.g:872:8: OctalDigit
             	    {
             	    mOctalDigit(); 
 
@@ -3956,10 +3964,10 @@
     public final void mHexIntegerLiteral() throws RecognitionException {
         try {
             int _type = HexIntegerLiteral;
-            // JS.g:867:2: ( ( '0x' | '0X' ) ( HexDigit )+ )
-            // JS.g:867:4: ( '0x' | '0X' ) ( HexDigit )+
+            // JS.g:876:2: ( ( '0x' | '0X' ) ( HexDigit )+ )
+            // JS.g:876:4: ( '0x' | '0X' ) ( HexDigit )+
             {
-            // JS.g:867:4: ( '0x' | '0X' )
+            // JS.g:876:4: ( '0x' | '0X' )
             int alt21=2;
             int LA21_0 = input.LA(1);
 
@@ -3974,20 +3982,20 @@
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("867:4: ( '0x' | '0X' )", 21, 1, input);
+                        new NoViableAltException("876:4: ( '0x' | '0X' )", 21, 1, input);
 
                     throw nvae;
                 }
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("867:4: ( '0x' | '0X' )", 21, 0, input);
+                    new NoViableAltException("876:4: ( '0x' | '0X' )", 21, 0, input);
 
                 throw nvae;
             }
             switch (alt21) {
                 case 1 :
-                    // JS.g:867:6: '0x'
+                    // JS.g:876:6: '0x'
                     {
                     match("0x"); 
 
@@ -3995,7 +4003,7 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:867:13: '0X'
+                    // JS.g:876:13: '0X'
                     {
                     match("0X"); 
 
@@ -4005,7 +4013,7 @@
 
             }
 
-            // JS.g:867:20: ( HexDigit )+
+            // JS.g:876:20: ( HexDigit )+
             int cnt22=0;
             loop22:
             do {
@@ -4019,7 +4027,7 @@
 
                 switch (alt22) {
             	case 1 :
-            	    // JS.g:867:20: HexDigit
+            	    // JS.g:876:20: HexDigit
             	    {
             	    mHexDigit(); 
 
@@ -4048,8 +4056,8 @@
     // $ANTLR start CharacterEscapeSequence
     public final void mCharacterEscapeSequence() throws RecognitionException {
         try {
-            // JS.g:886:2: (~ ( DecimalDigit | 'x' | 'u' | LineTerminator ) )
-            // JS.g:886:4: ~ ( DecimalDigit | 'x' | 'u' | LineTerminator )
+            // JS.g:895:2: (~ ( DecimalDigit | 'x' | 'u' | LineTerminator ) )
+            // JS.g:895:4: ~ ( DecimalDigit | 'x' | 'u' | LineTerminator )
             {
             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();
@@ -4073,8 +4081,8 @@
     // $ANTLR start ZeroToThree
     public final void mZeroToThree() throws RecognitionException {
         try {
-            // JS.g:890:2: ( '0' .. '3' )
-            // JS.g:890:4: '0' .. '3'
+            // JS.g:899:2: ( '0' .. '3' )
+            // JS.g:899:4: '0' .. '3'
             {
             matchRange('0','3'); 
 
@@ -4089,7 +4097,7 @@
     // $ANTLR start OctalEscapeSequence
     public final void mOctalEscapeSequence() throws RecognitionException {
         try {
-            // JS.g:894:2: ( OctalDigit | ZeroToThree OctalDigit | '4' .. '7' OctalDigit | ZeroToThree OctalDigit OctalDigit )
+            // JS.g:903:2: ( OctalDigit | ZeroToThree OctalDigit | '4' .. '7' OctalDigit | ZeroToThree OctalDigit OctalDigit )
             int alt23=4;
             int LA23_0 = input.LA(1);
 
@@ -4119,20 +4127,20 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("893:10: fragment OctalEscapeSequence : ( OctalDigit | ZeroToThree OctalDigit | '4' .. '7' OctalDigit | ZeroToThree OctalDigit OctalDigit );", 23, 0, input);
+                    new NoViableAltException("902:10: fragment OctalEscapeSequence : ( OctalDigit | ZeroToThree OctalDigit | '4' .. '7' OctalDigit | ZeroToThree OctalDigit OctalDigit );", 23, 0, input);
 
                 throw nvae;
             }
             switch (alt23) {
                 case 1 :
-                    // JS.g:894:4: OctalDigit
+                    // JS.g:903:4: OctalDigit
                     {
                     mOctalDigit(); 
 
                     }
                     break;
                 case 2 :
-                    // JS.g:895:4: ZeroToThree OctalDigit
+                    // JS.g:904:4: ZeroToThree OctalDigit
                     {
                     mZeroToThree(); 
                     mOctalDigit(); 
@@ -4140,7 +4148,7 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:896:4: '4' .. '7' OctalDigit
+                    // JS.g:905:4: '4' .. '7' OctalDigit
                     {
                     matchRange('4','7'); 
                     mOctalDigit(); 
@@ -4148,7 +4156,7 @@
                     }
                     break;
                 case 4 :
-                    // JS.g:897:4: ZeroToThree OctalDigit OctalDigit
+                    // JS.g:906:4: ZeroToThree OctalDigit OctalDigit
                     {
                     mZeroToThree(); 
                     mOctalDigit(); 
@@ -4167,8 +4175,8 @@
     // $ANTLR start HexEscapeSequence
     public final void mHexEscapeSequence() throws RecognitionException {
         try {
-            // JS.g:901:2: ( 'x' HexDigit HexDigit )
-            // JS.g:901:4: 'x' HexDigit HexDigit
+            // JS.g:910:2: ( 'x' HexDigit HexDigit )
+            // JS.g:910:4: 'x' HexDigit HexDigit
             {
             match('x'); 
             mHexDigit(); 
@@ -4185,8 +4193,8 @@
     // $ANTLR start UnicodeEscapeSequence
     public final void mUnicodeEscapeSequence() throws RecognitionException {
         try {
-            // JS.g:905:2: ( 'u' HexDigit HexDigit HexDigit HexDigit )
-            // JS.g:905:4: 'u' HexDigit HexDigit HexDigit HexDigit
+            // JS.g:914:2: ( 'u' HexDigit HexDigit HexDigit HexDigit )
+            // JS.g:914:4: 'u' HexDigit HexDigit HexDigit HexDigit
             {
             match('u'); 
             mHexDigit(); 
@@ -4205,11 +4213,11 @@
     // $ANTLR start EscapeSequence
     public final void mEscapeSequence() throws RecognitionException {
         try {
-            // JS.g:909:2: ( BSLASH ( CharacterEscapeSequence | OctalEscapeSequence | HexEscapeSequence | UnicodeEscapeSequence | LineTerminator ) )
-            // JS.g:910:2: BSLASH ( CharacterEscapeSequence | OctalEscapeSequence | HexEscapeSequence | UnicodeEscapeSequence | LineTerminator )
+            // JS.g:918:2: ( BSLASH ( CharacterEscapeSequence | OctalEscapeSequence | HexEscapeSequence | UnicodeEscapeSequence | LineTerminator ) )
+            // JS.g:919:2: BSLASH ( CharacterEscapeSequence | OctalEscapeSequence | HexEscapeSequence | UnicodeEscapeSequence | LineTerminator )
             {
             mBSLASH(); 
-            // JS.g:911:2: ( CharacterEscapeSequence | OctalEscapeSequence | HexEscapeSequence | UnicodeEscapeSequence | LineTerminator )
+            // JS.g:920:2: ( CharacterEscapeSequence | OctalEscapeSequence | HexEscapeSequence | UnicodeEscapeSequence | LineTerminator )
             int alt24=5;
             int LA24_0 = input.LA(1);
 
@@ -4230,41 +4238,41 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("911:2: ( CharacterEscapeSequence | OctalEscapeSequence | HexEscapeSequence | UnicodeEscapeSequence | LineTerminator )", 24, 0, input);
+                    new NoViableAltException("920:2: ( CharacterEscapeSequence | OctalEscapeSequence | HexEscapeSequence | UnicodeEscapeSequence | LineTerminator )", 24, 0, input);
 
                 throw nvae;
             }
             switch (alt24) {
                 case 1 :
-                    // JS.g:912:3: CharacterEscapeSequence
+                    // JS.g:921:3: CharacterEscapeSequence
                     {
                     mCharacterEscapeSequence(); 
 
                     }
                     break;
                 case 2 :
-                    // JS.g:913:5: OctalEscapeSequence
+                    // JS.g:922:5: OctalEscapeSequence
                     {
                     mOctalEscapeSequence(); 
 
                     }
                     break;
                 case 3 :
-                    // JS.g:914:5: HexEscapeSequence
+                    // JS.g:923:5: HexEscapeSequence
                     {
                     mHexEscapeSequence(); 
 
                     }
                     break;
                 case 4 :
-                    // JS.g:915:5: UnicodeEscapeSequence
+                    // JS.g:924:5: UnicodeEscapeSequence
                     {
                     mUnicodeEscapeSequence(); 
 
                     }
                     break;
                 case 5 :
-                    // JS.g:916:5: LineTerminator
+                    // JS.g:925:5: LineTerminator
                     {
                     mLineTerminator(); 
 
@@ -4286,7 +4294,7 @@
     public final void mStringLiteral() throws RecognitionException {
         try {
             int _type = StringLiteral;
-            // JS.g:921:2: ( SQUOTE (~ ( SQUOTE | BSLASH | LineTerminator ) | EscapeSequence )* SQUOTE | DQUOTE (~ ( DQUOTE | BSLASH | LineTerminator ) | EscapeSequence )* DQUOTE )
+            // 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);
 
@@ -4298,16 +4306,16 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("920:1: StringLiteral : ( SQUOTE (~ ( SQUOTE | BSLASH | LineTerminator ) | EscapeSequence )* SQUOTE | DQUOTE (~ ( DQUOTE | BSLASH | LineTerminator ) | EscapeSequence )* DQUOTE );", 27, 0, input);
+                    new NoViableAltException("929:1: StringLiteral : ( SQUOTE (~ ( SQUOTE | BSLASH | LineTerminator ) | EscapeSequence )* SQUOTE | DQUOTE (~ ( DQUOTE | BSLASH | LineTerminator ) | EscapeSequence )* DQUOTE );", 27, 0, input);
 
                 throw nvae;
             }
             switch (alt27) {
                 case 1 :
-                    // JS.g:921:4: SQUOTE (~ ( SQUOTE | BSLASH | LineTerminator ) | EscapeSequence )* SQUOTE
+                    // JS.g:930:4: SQUOTE (~ ( SQUOTE | BSLASH | LineTerminator ) | EscapeSequence )* SQUOTE
                     {
                     mSQUOTE(); 
-                    // JS.g:921:11: (~ ( SQUOTE | BSLASH | LineTerminator ) | EscapeSequence )*
+                    // JS.g:930:11: (~ ( SQUOTE | BSLASH | LineTerminator ) | EscapeSequence )*
                     loop25:
                     do {
                         int alt25=3;
@@ -4323,7 +4331,7 @@
 
                         switch (alt25) {
                     	case 1 :
-                    	    // JS.g:921:13: ~ ( SQUOTE | BSLASH | LineTerminator )
+                    	    // JS.g:930:13: ~ ( SQUOTE | BSLASH | LineTerminator )
                     	    {
                     	    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();
@@ -4339,7 +4347,7 @@
                     	    }
                     	    break;
                     	case 2 :
-                    	    // JS.g:921:53: EscapeSequence
+                    	    // JS.g:930:53: EscapeSequence
                     	    {
                     	    mEscapeSequence(); 
 
@@ -4356,10 +4364,10 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:922:4: DQUOTE (~ ( DQUOTE | BSLASH | LineTerminator ) | EscapeSequence )* DQUOTE
+                    // JS.g:931:4: DQUOTE (~ ( DQUOTE | BSLASH | LineTerminator ) | EscapeSequence )* DQUOTE
                     {
                     mDQUOTE(); 
-                    // JS.g:922:11: (~ ( DQUOTE | BSLASH | LineTerminator ) | EscapeSequence )*
+                    // JS.g:931:11: (~ ( DQUOTE | BSLASH | LineTerminator ) | EscapeSequence )*
                     loop26:
                     do {
                         int alt26=3;
@@ -4375,7 +4383,7 @@
 
                         switch (alt26) {
                     	case 1 :
-                    	    // JS.g:922:13: ~ ( DQUOTE | BSLASH | LineTerminator )
+                    	    // JS.g:931:13: ~ ( DQUOTE | BSLASH | LineTerminator )
                     	    {
                     	    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();
@@ -4391,7 +4399,7 @@
                     	    }
                     	    break;
                     	case 2 :
-                    	    // JS.g:922:53: EscapeSequence
+                    	    // JS.g:931:53: EscapeSequence
                     	    {
                     	    mEscapeSequence(); 
 
@@ -4419,8 +4427,8 @@
     // $ANTLR start BackslashSequence
     public final void mBackslashSequence() throws RecognitionException {
         try {
-            // JS.g:931:2: ( BSLASH ~ ( LineTerminator ) )
-            // JS.g:931:4: BSLASH ~ ( LineTerminator )
+            // JS.g:940:2: ( BSLASH ~ ( LineTerminator ) )
+            // JS.g:940:4: BSLASH ~ ( LineTerminator )
             {
             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') ) {
@@ -4445,7 +4453,7 @@
     // $ANTLR start RegularExpressionFirstChar
     public final void mRegularExpressionFirstChar() throws RecognitionException {
         try {
-            // JS.g:935:2: (~ ( LineTerminator | MUL | BSLASH | DIV ) | BackslashSequence )
+            // JS.g:944:2: (~ ( LineTerminator | MUL | BSLASH | DIV ) | BackslashSequence )
             int alt28=2;
             int LA28_0 = input.LA(1);
 
@@ -4457,13 +4465,13 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("934:10: fragment RegularExpressionFirstChar : (~ ( LineTerminator | MUL | BSLASH | DIV ) | BackslashSequence );", 28, 0, input);
+                    new NoViableAltException("943:10: fragment RegularExpressionFirstChar : (~ ( LineTerminator | MUL | BSLASH | DIV ) | BackslashSequence );", 28, 0, input);
 
                 throw nvae;
             }
             switch (alt28) {
                 case 1 :
-                    // JS.g:935:4: ~ ( LineTerminator | MUL | BSLASH | DIV )
+                    // JS.g:944:4: ~ ( LineTerminator | 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();
@@ -4479,7 +4487,7 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:936:4: BackslashSequence
+                    // JS.g:945:4: BackslashSequence
                     {
                     mBackslashSequence(); 
 
@@ -4496,7 +4504,7 @@
     // $ANTLR start RegularExpressionChar
     public final void mRegularExpressionChar() throws RecognitionException {
         try {
-            // JS.g:940:2: (~ ( LineTerminator | BSLASH | DIV ) | BackslashSequence )
+            // JS.g:949:2: (~ ( LineTerminator | BSLASH | DIV ) | BackslashSequence )
             int alt29=2;
             int LA29_0 = input.LA(1);
 
@@ -4508,13 +4516,13 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("939:10: fragment RegularExpressionChar : (~ ( LineTerminator | BSLASH | DIV ) | BackslashSequence );", 29, 0, input);
+                    new NoViableAltException("948:10: fragment RegularExpressionChar : (~ ( LineTerminator | BSLASH | DIV ) | BackslashSequence );", 29, 0, input);
 
                 throw nvae;
             }
             switch (alt29) {
                 case 1 :
-                    // JS.g:940:4: ~ ( LineTerminator | BSLASH | DIV )
+                    // JS.g:949:4: ~ ( LineTerminator | 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();
@@ -4530,7 +4538,7 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:941:4: BackslashSequence
+                    // JS.g:950:4: BackslashSequence
                     {
                     mBackslashSequence(); 
 
@@ -4548,15 +4556,15 @@
     public final void mRegularExpressionLiteral() throws RecognitionException {
         try {
             int _type = RegularExpressionLiteral;
-            // JS.g:945:2: ({...}? => DIV RegularExpressionFirstChar ( RegularExpressionChar )* DIV ( IdentifierPart )* )
-            // JS.g:945:4: {...}? => DIV RegularExpressionFirstChar ( RegularExpressionChar )* DIV ( IdentifierPart )*
+            // JS.g:954:2: ({...}? => DIV RegularExpressionFirstChar ( RegularExpressionChar )* DIV ( IdentifierPart )* )
+            // JS.g:954:4: {...}? => DIV RegularExpressionFirstChar ( RegularExpressionChar )* DIV ( IdentifierPart )*
             {
             if ( !( areRegularExpressionsEnabled() ) ) {
                 throw new FailedPredicateException(input, "RegularExpressionLiteral", " areRegularExpressionsEnabled() ");
             }
             mDIV(); 
             mRegularExpressionFirstChar(); 
-            // JS.g:945:73: ( RegularExpressionChar )*
+            // JS.g:954:73: ( RegularExpressionChar )*
             loop30:
             do {
                 int alt30=2;
@@ -4569,7 +4577,7 @@
 
                 switch (alt30) {
             	case 1 :
-            	    // JS.g:945:73: RegularExpressionChar
+            	    // JS.g:954:73: RegularExpressionChar
             	    {
             	    mRegularExpressionChar(); 
 
@@ -4582,7 +4590,7 @@
             } while (true);
 
             mDIV(); 
-            // JS.g:945:100: ( IdentifierPart )*
+            // JS.g:954:100: ( IdentifierPart )*
             loop31:
             do {
                 int alt31=2;
@@ -4598,7 +4606,7 @@
 
                 switch (alt31) {
             	case 1 :
-            	    // JS.g:945:100: IdentifierPart
+            	    // JS.g:954:100: IdentifierPart
             	    {
             	    mIdentifierPart(); 
 
@@ -8518,7 +8526,7 @@
             this.transition = DFA19_transition;
         }
         public String getDescription() {
-            return "856:1: DecimalLiteral : ( DecimalIntegerLiteral '.' ( DecimalDigit )* ( ExponentPart )? | '.' ( DecimalDigit )+ ( ExponentPart )? | DecimalIntegerLiteral ( ExponentPart )? );";
+            return "865: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 f3cf5a6..1ff620f 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-08-31 22:50:17
+// $ANTLR 3.0.1 JS.g 2009-09-02 10:05:08
 
 package org.eclipse.dltk.javascript.parser;
 
@@ -11,19 +11,15 @@
 
 import org.antlr.runtime.tree.*;
 
-/**
- * @since 2.0
- *
- */
 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", "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", "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=154;
-    public static final int RegularExpressionChar=192;
+    public static final int VT=158;
+    public static final int RegularExpressionChar=196;
     public static final int CDATA=36;
     public static final int XRCLOSE=121;
     public static final int LOCALNAME=134;
@@ -32,7 +28,7 @@
     public static final int CONST=44;
     public static final int XHOPEN=123;
     public static final int DO=13;
-    public static final int DQUOTE=151;
+    public static final int DQUOTE=155;
     public static final int NOT=99;
     public static final int EOF=-1;
     public static final int CEXPR=136;
@@ -43,15 +39,15 @@
     public static final int FINAL=50;
     public static final int FORSTEP=139;
     public static final int IMPORT=54;
-    public static final int EOL=165;
+    public static final int EOL=169;
     public static final int XLCLOSE=120;
-    public static final int PropertyIdentifierSymbols=176;
-    public static final int OctalDigit=178;
+    public static final int PropertyIdentifierSymbols=180;
+    public static final int OctalDigit=182;
     public static final int RETURN=23;
     public static final int THIS=25;
     public static final int ARGS=128;
     public static final int GET=33;
-    public static final int WhiteSpace=159;
+    public static final int WhiteSpace=163;
     public static final int EXPORT=48;
     public static final int EQ=83;
     public static final int GOTO=52;
@@ -64,24 +60,25 @@
     public static final int ELSE=14;
     public static final int NATIVE=58;
     public static final int INT=55;
-    public static final int FF=155;
-    public static final int OctalEscapeSequence=186;
-    public static final int RegularExpressionFirstChar=191;
+    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 TYPEOF=28;
     public static final int GT=80;
     public static final int CALL=135;
-    public static final int CharacterEscapeSequence=184;
+    public static final int CharacterEscapeSequence=188;
     public static final int LAND=101;
-    public static final int XML=149;
-    public static final int PINC=147;
+    public static final int XML=153;
+    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 SUB=88;
-    public static final int RegularExpressionLiteral=177;
+    public static final int RegularExpressionLiteral=181;
     public static final int FLOAT=51;
-    public static final int DecimalIntegerLiteral=180;
-    public static final int HexDigit=170;
+    public static final int DecimalIntegerLiteral=184;
+    public static final int HexDigit=174;
     public static final int LPAREN=72;
     public static final int AT=125;
     public static final int IMPLEMENTS=53;
@@ -89,55 +86,55 @@
     public static final int YIELD=35;
     public static final int XCCLOSE=119;
     public static final int SHRASS=111;
-    public static final int PS=163;
-    public static final int MultiLineComment=166;
+    public static final int PS=167;
+    public static final int MultiLineComment=170;
     public static final int ADD=87;
-    public static final int ZeroToThree=185;
-    public static final int ITEM=140;
-    public static final int XMLLiteral=193;
-    public static final int UnicodeEscapeSequence=188;
+    public static final int ZeroToThree=189;
+    public static final int ITEM=144;
+    public static final int XMLLiteral=197;
+    public static final int UnicodeEscapeSequence=192;
     public static final int SHUASS=112;
     public static final int SHORT=63;
     public static final int SET=34;
     public static final int INSTANCEOF=21;
-    public static final int SQUOTE=152;
+    public static final int SQUOTE=156;
     public static final int SAME=85;
     public static final int XHCLOSE=124;
     public static final int COLON=104;
-    public static final int StringLiteral=168;
-    public static final int PAREXPR=145;
+    public static final int StringLiteral=172;
+    public static final int PAREXPR=149;
     public static final int ENUM=47;
-    public static final int NBSP=157;
-    public static final int HexIntegerLiteral=183;
-    public static final int SP=156;
+    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=164;
+    public static final int LineTerminator=168;
     public static final int INTERFACE=56;
     public static final int DIV=116;
     public static final int LONG=57;
-    public static final int CR=161;
+    public static final int CR=165;
     public static final int PUBLIC=62;
     public static final int LOR=102;
     public static final int LT=79;
     public static final int WHILE=31;
-    public static final int BackslashSequence=190;
-    public static final int LS=162;
+    public static final int BackslashSequence=194;
+    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=172;
+    public static final int DecimalDigit=176;
     public static final int BYFIELD=131;
     public static final int BREAK=7;
-    public static final int Identifier=175;
+    public static final int Identifier=179;
     public static final int WXML=37;
-    public static final int POS=148;
+    public static final int POS=152;
     public static final int DOUBLE=46;
-    public static final int ExponentPart=179;
+    public static final int ExponentPart=183;
     public static final int VAR=29;
     public static final int VOID=30;
     public static final int SUPER=65;
     public static final int EACH=17;
-    public static final int LABELLED=141;
+    public static final int LABELLED=145;
     public static final int ADDASS=106;
     public static final int ARRAY=129;
     public static final int PRIVATE=60;
@@ -147,31 +144,33 @@
     public static final int DELETE=12;
     public static final int XCOPEN=118;
     public static final int MUL=89;
-    public static final int IdentifierStartASCII=171;
+    public static final int IdentifierStartASCII=175;
     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=158;
+    public static final int USP=162;
     public static final int ANDASS=113;
-    public static final int IdentifierNameASCIIStart=174;
+    public static final int IdentifierNameASCIIStart=178;
     public static final int QUE=103;
     public static final int OR=97;
+    public static final int SETTER=142;
     public static final int DEBUGGER=45;
-    public static final int PDEC=146;
+    public static final int FOREACH=140;
+    public static final int PDEC=150;
     public static final int CATCH=9;
     public static final int FALSE=6;
-    public static final int EscapeSequence=189;
+    public static final int EscapeSequence=193;
     public static final int THROW=26;
     public static final int MULASS=108;
-    public static final int XmlAttribute=169;
+    public static final int XmlAttribute=173;
     public static final int DEC=92;
-    public static final int OctalIntegerLiteral=182;
+    public static final int OctalIntegerLiteral=186;
     public static final int CLASS=43;
+    public static final int HexEscapeSequence=191;
     public static final int ORASS=114;
-    public static final int HexEscapeSequence=187;
-    public static final int NAMEDVALUE=142;
-    public static final int SingleLineComment=167;
+    public static final int NAMEDVALUE=146;
+    public static final int SingleLineComment=171;
     public static final int GTE=82;
     public static final int FOR=16;
     public static final int DOTDOT=126;
@@ -185,31 +184,32 @@
     public static final int EXPR=137;
     public static final int IN=20;
     public static final int CONTINUE=10;
-    public static final int OBJECT=144;
+    public static final int OBJECT=148;
     public static final int COMMA=78;
     public static final int TRANSIENT=68;
     public static final int FORITER=138;
     public static final int MODASS=109;
     public static final int DOT=76;
-    public static final int IdentifierPart=173;
+    public static final int IdentifierPart=177;
     public static final int WITH=32;
     public static final int BYTE=41;
     public static final int XOR=98;
     public static final int VOLATILE=69;
+    public static final int GETTER=141;
     public static final int NSAME=86;
     public static final int DEFAULT=11;
     public static final int ALLCHILDREN=133;
-    public static final int TAB=153;
-    public static final int DecimalLiteral=181;
+    public static final int TAB=157;
+    public static final int DecimalLiteral=185;
     public static final int TRUE=5;
     public static final int NEQ=84;
     public static final int FINALLY=15;
-    public static final int NEG=143;
+    public static final int NEG=147;
     public static final int ASSIGN=105;
     public static final int SEMIC=77;
     public static final int EXTENDS=49;
-    public static final int BSLASH=150;
-    public static final int LF=160;
+    public static final int BSLASH=154;
+    public static final int LF=164;
 
         public JSParser(TokenStream input) {
             super(input);
@@ -368,7 +368,7 @@
     };
 
     // $ANTLR start token
-    // JS.g:602:1: token : ( reservedWord | identifier | punctuator | numericLiteral | StringLiteral | XmlAttribute );
+    // JS.g:610: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 +390,7 @@
         Object XmlAttribute6_tree=null;
 
         try {
-            // JS.g:603:2: ( reservedWord | identifier | punctuator | numericLiteral | StringLiteral | XmlAttribute )
+            // JS.g:611:2: ( reservedWord | identifier | punctuator | numericLiteral | StringLiteral | XmlAttribute )
             int alt1=6;
             switch ( input.LA(1) ) {
             case NULL:
@@ -541,18 +541,18 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("602:1: token : ( reservedWord | identifier | punctuator | numericLiteral | StringLiteral | XmlAttribute );", 1, 0, input);
+                    new NoViableAltException("610:1: token : ( reservedWord | identifier | punctuator | numericLiteral | StringLiteral | XmlAttribute );", 1, 0, input);
 
                 throw nvae;
             }
 
             switch (alt1) {
                 case 1 :
-                    // JS.g:603:4: reservedWord
+                    // JS.g:611:4: reservedWord
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_reservedWord_in_token1949);
+                    pushFollow(FOLLOW_reservedWord_in_token1969);
                     reservedWord1=reservedWord();
                     _fsp--;
 
@@ -561,11 +561,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:604:4: identifier
+                    // JS.g:612:4: identifier
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_identifier_in_token1954);
+                    pushFollow(FOLLOW_identifier_in_token1974);
                     identifier2=identifier();
                     _fsp--;
 
@@ -574,11 +574,11 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:605:4: punctuator
+                    // JS.g:613:4: punctuator
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_punctuator_in_token1959);
+                    pushFollow(FOLLOW_punctuator_in_token1979);
                     punctuator3=punctuator();
                     _fsp--;
 
@@ -587,11 +587,11 @@
                     }
                     break;
                 case 4 :
-                    // JS.g:606:4: numericLiteral
+                    // JS.g:614:4: numericLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_numericLiteral_in_token1964);
+                    pushFollow(FOLLOW_numericLiteral_in_token1984);
                     numericLiteral4=numericLiteral();
                     _fsp--;
 
@@ -600,12 +600,12 @@
                     }
                     break;
                 case 5 :
-                    // JS.g:607:4: StringLiteral
+                    // JS.g:615:4: StringLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
                     StringLiteral5=(Token)input.LT(1);
-                    match(input,StringLiteral,FOLLOW_StringLiteral_in_token1969); 
+                    match(input,StringLiteral,FOLLOW_StringLiteral_in_token1989); 
                     StringLiteral5_tree = (Object)adaptor.create(StringLiteral5);
                     adaptor.addChild(root_0, StringLiteral5_tree);
 
@@ -613,12 +613,12 @@
                     }
                     break;
                 case 6 :
-                    // JS.g:608:4: XmlAttribute
+                    // JS.g:616:4: XmlAttribute
                     {
                     root_0 = (Object)adaptor.nil();
 
                     XmlAttribute6=(Token)input.LT(1);
-                    match(input,XmlAttribute,FOLLOW_XmlAttribute_in_token1974); 
+                    match(input,XmlAttribute,FOLLOW_XmlAttribute_in_token1994); 
                     XmlAttribute6_tree = (Object)adaptor.create(XmlAttribute6);
                     adaptor.addChild(root_0, XmlAttribute6_tree);
 
@@ -649,7 +649,7 @@
     };
 
     // $ANTLR start reservedWord
-    // JS.g:614:1: reservedWord : ( keyword | futureReservedWord | NULL | booleanLiteral );
+    // JS.g:622: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 +667,7 @@
         Object NULL9_tree=null;
 
         try {
-            // JS.g:615:2: ( keyword | futureReservedWord | NULL | booleanLiteral )
+            // JS.g:623:2: ( keyword | futureReservedWord | NULL | booleanLiteral )
             int alt2=4;
             switch ( input.LA(1) ) {
             case BREAK:
@@ -753,18 +753,18 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("614:1: reservedWord : ( keyword | futureReservedWord | NULL | booleanLiteral );", 2, 0, input);
+                    new NoViableAltException("622:1: reservedWord : ( keyword | futureReservedWord | NULL | booleanLiteral );", 2, 0, input);
 
                 throw nvae;
             }
 
             switch (alt2) {
                 case 1 :
-                    // JS.g:615:4: keyword
+                    // JS.g:623:4: keyword
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_keyword_in_reservedWord1989);
+                    pushFollow(FOLLOW_keyword_in_reservedWord2009);
                     keyword7=keyword();
                     _fsp--;
 
@@ -773,11 +773,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:616:4: futureReservedWord
+                    // JS.g:624:4: futureReservedWord
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_futureReservedWord_in_reservedWord1994);
+                    pushFollow(FOLLOW_futureReservedWord_in_reservedWord2014);
                     futureReservedWord8=futureReservedWord();
                     _fsp--;
 
@@ -786,12 +786,12 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:617:4: NULL
+                    // JS.g:625:4: NULL
                     {
                     root_0 = (Object)adaptor.nil();
 
                     NULL9=(Token)input.LT(1);
-                    match(input,NULL,FOLLOW_NULL_in_reservedWord1999); 
+                    match(input,NULL,FOLLOW_NULL_in_reservedWord2019); 
                     NULL9_tree = (Object)adaptor.create(NULL9);
                     adaptor.addChild(root_0, NULL9_tree);
 
@@ -799,11 +799,11 @@
                     }
                     break;
                 case 4 :
-                    // JS.g:618:4: booleanLiteral
+                    // JS.g:626:4: booleanLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_booleanLiteral_in_reservedWord2004);
+                    pushFollow(FOLLOW_booleanLiteral_in_reservedWord2024);
                     booleanLiteral10=booleanLiteral();
                     _fsp--;
 
@@ -835,7 +835,7 @@
     };
 
     // $ANTLR start keyword
-    // JS.g:625: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: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 );
     public final keyword_return keyword() throws RecognitionException {
         keyword_return retval = new keyword_return();
         retval.start = input.LT(1);
@@ -847,7 +847,7 @@
         Object set11_tree=null;
 
         try {
-            // JS.g:626: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: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:
             {
             root_0 = (Object)adaptor.nil();
@@ -889,7 +889,7 @@
     };
 
     // $ANTLR start futureReservedWord
-    // JS.g:663: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: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 );
     public final futureReservedWord_return futureReservedWord() throws RecognitionException {
         futureReservedWord_return retval = new futureReservedWord_return();
         retval.start = input.LT(1);
@@ -901,7 +901,7 @@
         Object set12_tree=null;
 
         try {
-            // JS.g:664: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: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:
             {
             root_0 = (Object)adaptor.nil();
@@ -943,7 +943,7 @@
     };
 
     // $ANTLR start identifier
-    // JS.g:737:1: identifier : ( WXML | GET | SET | EACH | Identifier );
+    // JS.g:745: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,13 +955,13 @@
         Object set13_tree=null;
 
         try {
-            // JS.g:738:3: ( WXML | GET | SET | EACH | Identifier )
+            // JS.g:746:3: ( WXML | GET | SET | EACH | NAMESPACE | Identifier )
             // JS.g:
             {
             root_0 = (Object)adaptor.nil();
 
             set13=(Token)input.LT(1);
-            if ( input.LA(1)==EACH||(input.LA(1)>=GET && input.LA(1)<=SET)||input.LA(1)==WXML||input.LA(1)==Identifier ) {
+            if ( input.LA(1)==EACH||(input.LA(1)>=GET && input.LA(1)<=SET)||(input.LA(1)>=WXML && input.LA(1)<=NAMESPACE)||input.LA(1)==Identifier ) {
                 input.consume();
                 adaptor.addChild(root_0, adaptor.create(set13));
                 errorRecovery=false;
@@ -997,7 +997,7 @@
     };
 
     // $ANTLR start punctuator
-    // JS.g:757: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: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 );
     public final punctuator_return punctuator() throws RecognitionException {
         punctuator_return retval = new punctuator_return();
         retval.start = input.LT(1);
@@ -1009,7 +1009,7 @@
         Object set14_tree=null;
 
         try {
-            // JS.g:758: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: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:
             {
             root_0 = (Object)adaptor.nil();
@@ -1051,7 +1051,7 @@
     };
 
     // $ANTLR start literal
-    // JS.g:815:1: literal : ( NULL | booleanLiteral | numericLiteral | StringLiteral | RegularExpressionLiteral );
+    // JS.g:824: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 +1071,7 @@
         Object RegularExpressionLiteral19_tree=null;
 
         try {
-            // JS.g:816:2: ( NULL | booleanLiteral | numericLiteral | StringLiteral | RegularExpressionLiteral )
+            // JS.g:825:2: ( NULL | booleanLiteral | numericLiteral | StringLiteral | RegularExpressionLiteral )
             int alt3=5;
             switch ( input.LA(1) ) {
             case NULL:
@@ -1104,19 +1104,19 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("815:1: literal : ( NULL | booleanLiteral | numericLiteral | StringLiteral | RegularExpressionLiteral );", 3, 0, input);
+                    new NoViableAltException("824:1: literal : ( NULL | booleanLiteral | numericLiteral | StringLiteral | RegularExpressionLiteral );", 3, 0, input);
 
                 throw nvae;
             }
 
             switch (alt3) {
                 case 1 :
-                    // JS.g:816:4: NULL
+                    // JS.g:825:4: NULL
                     {
                     root_0 = (Object)adaptor.nil();
 
                     NULL15=(Token)input.LT(1);
-                    match(input,NULL,FOLLOW_NULL_in_literal2793); 
+                    match(input,NULL,FOLLOW_NULL_in_literal2819); 
                     NULL15_tree = (Object)adaptor.create(NULL15);
                     adaptor.addChild(root_0, NULL15_tree);
 
@@ -1124,11 +1124,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:817:4: booleanLiteral
+                    // JS.g:826:4: booleanLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_booleanLiteral_in_literal2798);
+                    pushFollow(FOLLOW_booleanLiteral_in_literal2824);
                     booleanLiteral16=booleanLiteral();
                     _fsp--;
 
@@ -1137,11 +1137,11 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:818:4: numericLiteral
+                    // JS.g:827:4: numericLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_numericLiteral_in_literal2803);
+                    pushFollow(FOLLOW_numericLiteral_in_literal2829);
                     numericLiteral17=numericLiteral();
                     _fsp--;
 
@@ -1150,12 +1150,12 @@
                     }
                     break;
                 case 4 :
-                    // JS.g:819:4: StringLiteral
+                    // JS.g:828:4: StringLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
                     StringLiteral18=(Token)input.LT(1);
-                    match(input,StringLiteral,FOLLOW_StringLiteral_in_literal2808); 
+                    match(input,StringLiteral,FOLLOW_StringLiteral_in_literal2834); 
                     StringLiteral18_tree = (Object)adaptor.create(StringLiteral18);
                     adaptor.addChild(root_0, StringLiteral18_tree);
 
@@ -1163,12 +1163,12 @@
                     }
                     break;
                 case 5 :
-                    // JS.g:820:4: RegularExpressionLiteral
+                    // JS.g:829:4: RegularExpressionLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
                     RegularExpressionLiteral19=(Token)input.LT(1);
-                    match(input,RegularExpressionLiteral,FOLLOW_RegularExpressionLiteral_in_literal2813); 
+                    match(input,RegularExpressionLiteral,FOLLOW_RegularExpressionLiteral_in_literal2839); 
                     RegularExpressionLiteral19_tree = (Object)adaptor.create(RegularExpressionLiteral19);
                     adaptor.addChild(root_0, RegularExpressionLiteral19_tree);
 
@@ -1199,7 +1199,7 @@
     };
 
     // $ANTLR start booleanLiteral
-    // JS.g:823:1: booleanLiteral : ( TRUE | FALSE );
+    // JS.g:832:1: booleanLiteral : ( TRUE | FALSE );
     public final booleanLiteral_return booleanLiteral() throws RecognitionException {
         booleanLiteral_return retval = new booleanLiteral_return();
         retval.start = input.LT(1);
@@ -1211,7 +1211,7 @@
         Object set20_tree=null;
 
         try {
-            // JS.g:824:2: ( TRUE | FALSE )
+            // JS.g:833:2: ( TRUE | FALSE )
             // JS.g:
             {
             root_0 = (Object)adaptor.nil();
@@ -1253,7 +1253,7 @@
     };
 
     // $ANTLR start numericLiteral
-    // JS.g:870:1: numericLiteral : ( DecimalLiteral | OctalIntegerLiteral | HexIntegerLiteral );
+    // JS.g:879: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 +1265,7 @@
         Object set21_tree=null;
 
         try {
-            // JS.g:871:2: ( DecimalLiteral | OctalIntegerLiteral | HexIntegerLiteral )
+            // JS.g:880:2: ( DecimalLiteral | OctalIntegerLiteral | HexIntegerLiteral )
             // JS.g:
             {
             root_0 = (Object)adaptor.nil();
@@ -1307,7 +1307,7 @@
     };
 
     // $ANTLR start primaryExpression
-    // JS.g:966:1: primaryExpression : ( THIS | identifier | XmlAttribute | literal | arrayLiteral | objectLiteral | parenExpression );
+    // JS.g:975: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 +1331,7 @@
         Object XmlAttribute24_tree=null;
 
         try {
-            // JS.g:967:2: ( THIS | identifier | XmlAttribute | literal | arrayLiteral | objectLiteral | parenExpression )
+            // JS.g:976:2: ( THIS | identifier | XmlAttribute | literal | arrayLiteral | objectLiteral | parenExpression )
             int alt4=7;
             switch ( input.LA(1) ) {
             case THIS:
@@ -1343,6 +1343,7 @@
             case GET:
             case SET:
             case WXML:
+            case NAMESPACE:
             case Identifier:
                 {
                 alt4=2;
@@ -1382,19 +1383,19 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("966:1: primaryExpression : ( THIS | identifier | XmlAttribute | literal | arrayLiteral | objectLiteral | parenExpression );", 4, 0, input);
+                    new NoViableAltException("975:1: primaryExpression : ( THIS | identifier | XmlAttribute | literal | arrayLiteral | objectLiteral | parenExpression );", 4, 0, input);
 
                 throw nvae;
             }
 
             switch (alt4) {
                 case 1 :
-                    // JS.g:967:4: THIS
+                    // JS.g:976:4: THIS
                     {
                     root_0 = (Object)adaptor.nil();
 
                     THIS22=(Token)input.LT(1);
-                    match(input,THIS,FOLLOW_THIS_in_primaryExpression3442); 
+                    match(input,THIS,FOLLOW_THIS_in_primaryExpression3468); 
                     THIS22_tree = (Object)adaptor.create(THIS22);
                     adaptor.addChild(root_0, THIS22_tree);
 
@@ -1402,11 +1403,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:968:4: identifier
+                    // JS.g:977:4: identifier
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_identifier_in_primaryExpression3447);
+                    pushFollow(FOLLOW_identifier_in_primaryExpression3473);
                     identifier23=identifier();
                     _fsp--;
 
@@ -1415,12 +1416,12 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:969:4: XmlAttribute
+                    // JS.g:978:4: XmlAttribute
                     {
                     root_0 = (Object)adaptor.nil();
 
                     XmlAttribute24=(Token)input.LT(1);
-                    match(input,XmlAttribute,FOLLOW_XmlAttribute_in_primaryExpression3452); 
+                    match(input,XmlAttribute,FOLLOW_XmlAttribute_in_primaryExpression3478); 
                     XmlAttribute24_tree = (Object)adaptor.create(XmlAttribute24);
                     adaptor.addChild(root_0, XmlAttribute24_tree);
 
@@ -1428,11 +1429,11 @@
                     }
                     break;
                 case 4 :
-                    // JS.g:970:4: literal
+                    // JS.g:979:4: literal
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_literal_in_primaryExpression3457);
+                    pushFollow(FOLLOW_literal_in_primaryExpression3483);
                     literal25=literal();
                     _fsp--;
 
@@ -1441,11 +1442,11 @@
                     }
                     break;
                 case 5 :
-                    // JS.g:971:4: arrayLiteral
+                    // JS.g:980:4: arrayLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_arrayLiteral_in_primaryExpression3462);
+                    pushFollow(FOLLOW_arrayLiteral_in_primaryExpression3488);
                     arrayLiteral26=arrayLiteral();
                     _fsp--;
 
@@ -1454,11 +1455,11 @@
                     }
                     break;
                 case 6 :
-                    // JS.g:972:4: objectLiteral
+                    // JS.g:981:4: objectLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_objectLiteral_in_primaryExpression3467);
+                    pushFollow(FOLLOW_objectLiteral_in_primaryExpression3493);
                     objectLiteral27=objectLiteral();
                     _fsp--;
 
@@ -1467,11 +1468,11 @@
                     }
                     break;
                 case 7 :
-                    // JS.g:973:4: parenExpression
+                    // JS.g:982:4: parenExpression
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_parenExpression_in_primaryExpression3472);
+                    pushFollow(FOLLOW_parenExpression_in_primaryExpression3498);
                     parenExpression28=parenExpression();
                     _fsp--;
 
@@ -1503,7 +1504,7 @@
     };
 
     // $ANTLR start parenExpression
-    // JS.g:976:1: parenExpression : lpar= LPAREN expression RPAREN -> ^( PAREXPR[$lpar, \"PAREXPR\"] expression ) ;
+    // JS.g:985: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);
@@ -1521,20 +1522,20 @@
         RewriteRuleTokenStream stream_LPAREN=new RewriteRuleTokenStream(adaptor,"token LPAREN");
         RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
         try {
-            // JS.g:977:3: (lpar= LPAREN expression RPAREN -> ^( PAREXPR[$lpar, \"PAREXPR\"] expression ) )
-            // JS.g:977:5: lpar= LPAREN expression RPAREN
+            // JS.g:986:3: (lpar= LPAREN expression RPAREN -> ^( PAREXPR[$lpar, \"PAREXPR\"] expression ) )
+            // JS.g:986:5: lpar= LPAREN expression RPAREN
             {
             lpar=(Token)input.LT(1);
-            match(input,LPAREN,FOLLOW_LPAREN_in_parenExpression3488); 
+            match(input,LPAREN,FOLLOW_LPAREN_in_parenExpression3514); 
             stream_LPAREN.add(lpar);
 
-            pushFollow(FOLLOW_expression_in_parenExpression3490);
+            pushFollow(FOLLOW_expression_in_parenExpression3516);
             expression29=expression();
             _fsp--;
 
             stream_expression.add(expression29.getTree());
             RPAREN30=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_parenExpression3492); 
+            match(input,RPAREN,FOLLOW_RPAREN_in_parenExpression3518); 
             stream_RPAREN.add(RPAREN30);
 
 
@@ -1548,9 +1549,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 977:37: -> ^( PAREXPR[$lpar, \"PAREXPR\"] expression )
+            // 986:37: -> ^( PAREXPR[$lpar, \"PAREXPR\"] expression )
             {
-                // JS.g:977:40: ^( PAREXPR[$lpar, \"PAREXPR\"] expression )
+                // JS.g:986:40: ^( PAREXPR[$lpar, \"PAREXPR\"] expression )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(PAREXPR, lpar,  "PAREXPR"), root_1);
@@ -1588,7 +1589,7 @@
     };
 
     // $ANTLR start arrayLiteral
-    // JS.g:980:1: arrayLiteral : lb= LBRACK ( arrayItem ( COMMA arrayItem )* )? RBRACK -> ^( ARRAY[$lb, \"ARRAY\"] ( arrayItem )* ) ;
+    // JS.g:989: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);
@@ -1611,18 +1612,18 @@
         RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
         RewriteRuleSubtreeStream stream_arrayItem=new RewriteRuleSubtreeStream(adaptor,"rule arrayItem");
         try {
-            // JS.g:981:2: (lb= LBRACK ( arrayItem ( COMMA arrayItem )* )? RBRACK -> ^( ARRAY[$lb, \"ARRAY\"] ( arrayItem )* ) )
-            // JS.g:981:4: lb= LBRACK ( arrayItem ( COMMA arrayItem )* )? RBRACK
+            // JS.g:990:2: (lb= LBRACK ( arrayItem ( COMMA arrayItem )* )? RBRACK -> ^( ARRAY[$lb, \"ARRAY\"] ( arrayItem )* ) )
+            // JS.g:990:4: lb= LBRACK ( arrayItem ( COMMA arrayItem )* )? RBRACK
             {
             lb=(Token)input.LT(1);
-            match(input,LBRACK,FOLLOW_LBRACK_in_arrayLiteral3517); 
+            match(input,LBRACK,FOLLOW_LBRACK_in_arrayLiteral3543); 
             stream_LBRACK.add(lb);
 
-            // JS.g:981:14: ( arrayItem ( COMMA arrayItem )* )?
+            // JS.g:990:14: ( arrayItem ( COMMA arrayItem )* )?
             int alt6=2;
             int LA6_0 = input.LA(1);
 
-            if ( ((LA6_0>=NULL && LA6_0<=FALSE)||LA6_0==DELETE||(LA6_0>=EACH && LA6_0<=FUNCTION)||LA6_0==NEW||LA6_0==THIS||LA6_0==TYPEOF||LA6_0==VOID||(LA6_0>=GET && LA6_0<=YIELD)||LA6_0==WXML||LA6_0==LBRACE||LA6_0==LPAREN||LA6_0==LBRACK||LA6_0==COMMA||(LA6_0>=ADD && LA6_0<=SUB)||(LA6_0>=INC && LA6_0<=DEC)||(LA6_0>=NOT && LA6_0<=INV)||(LA6_0>=StringLiteral && LA6_0<=XmlAttribute)||LA6_0==Identifier||LA6_0==RegularExpressionLiteral||(LA6_0>=DecimalLiteral && LA6_0<=HexIntegerLiteral)||LA6_0==XMLLiteral) ) {
+            if ( ((LA6_0>=NULL && LA6_0<=FALSE)||LA6_0==DELETE||(LA6_0>=EACH && LA6_0<=FUNCTION)||LA6_0==NEW||LA6_0==THIS||LA6_0==TYPEOF||LA6_0==VOID||(LA6_0>=GET && LA6_0<=YIELD)||(LA6_0>=WXML && LA6_0<=NAMESPACE)||LA6_0==LBRACE||LA6_0==LPAREN||LA6_0==LBRACK||LA6_0==COMMA||(LA6_0>=ADD && LA6_0<=SUB)||(LA6_0>=INC && LA6_0<=DEC)||(LA6_0>=NOT && LA6_0<=INV)||(LA6_0>=StringLiteral && LA6_0<=XmlAttribute)||LA6_0==Identifier||LA6_0==RegularExpressionLiteral||(LA6_0>=DecimalLiteral && LA6_0<=HexIntegerLiteral)||LA6_0==XMLLiteral) ) {
                 alt6=1;
             }
             else if ( (LA6_0==RBRACK) ) {
@@ -1634,14 +1635,14 @@
             }
             switch (alt6) {
                 case 1 :
-                    // JS.g:981:16: arrayItem ( COMMA arrayItem )*
+                    // JS.g:990:16: arrayItem ( COMMA arrayItem )*
                     {
-                    pushFollow(FOLLOW_arrayItem_in_arrayLiteral3521);
+                    pushFollow(FOLLOW_arrayItem_in_arrayLiteral3547);
                     arrayItem31=arrayItem();
                     _fsp--;
 
                     stream_arrayItem.add(arrayItem31.getTree());
-                    // JS.g:981:26: ( COMMA arrayItem )*
+                    // JS.g:990:26: ( COMMA arrayItem )*
                     loop5:
                     do {
                         int alt5=2;
@@ -1654,13 +1655,13 @@
 
                         switch (alt5) {
                     	case 1 :
-                    	    // JS.g:981:28: COMMA arrayItem
+                    	    // JS.g:990:28: COMMA arrayItem
                     	    {
                     	    COMMA32=(Token)input.LT(1);
-                    	    match(input,COMMA,FOLLOW_COMMA_in_arrayLiteral3525); 
+                    	    match(input,COMMA,FOLLOW_COMMA_in_arrayLiteral3551); 
                     	    stream_COMMA.add(COMMA32);
 
-                    	    pushFollow(FOLLOW_arrayItem_in_arrayLiteral3527);
+                    	    pushFollow(FOLLOW_arrayItem_in_arrayLiteral3553);
                     	    arrayItem33=arrayItem();
                     	    _fsp--;
 
@@ -1681,7 +1682,7 @@
             }
 
             RBRACK34=(Token)input.LT(1);
-            match(input,RBRACK,FOLLOW_RBRACK_in_arrayLiteral3535); 
+            match(input,RBRACK,FOLLOW_RBRACK_in_arrayLiteral3561); 
             stream_RBRACK.add(RBRACK34);
 
 
@@ -1695,14 +1696,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 982:2: -> ^( ARRAY[$lb, \"ARRAY\"] ( arrayItem )* )
+            // 991:2: -> ^( ARRAY[$lb, \"ARRAY\"] ( arrayItem )* )
             {
-                // JS.g:982:5: ^( ARRAY[$lb, \"ARRAY\"] ( arrayItem )* )
+                // JS.g:991: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:982:28: ( arrayItem )*
+                // JS.g:991:28: ( arrayItem )*
                 while ( stream_arrayItem.hasNext() ) {
                     adaptor.addChild(root_1, stream_arrayItem.next());
 
@@ -1740,7 +1741,7 @@
     };
 
     // $ANTLR start arrayItem
-    // JS.g:985:1: arrayItem : (expr= assignmentExpression | {...}?) -> ^( ITEM ( $expr)? ) ;
+    // JS.g:994:1: arrayItem : (expr= assignmentExpression | {...}?) -> ^( ITEM ( $expr)? ) ;
     public final arrayItem_return arrayItem() throws RecognitionException {
         arrayItem_return retval = new arrayItem_return();
         retval.start = input.LT(1);
@@ -1752,14 +1753,14 @@
 
         RewriteRuleSubtreeStream stream_assignmentExpression=new RewriteRuleSubtreeStream(adaptor,"rule assignmentExpression");
         try {
-            // JS.g:986:2: ( (expr= assignmentExpression | {...}?) -> ^( ITEM ( $expr)? ) )
-            // JS.g:986:4: (expr= assignmentExpression | {...}?)
+            // JS.g:995:2: ( (expr= assignmentExpression | {...}?) -> ^( ITEM ( $expr)? ) )
+            // JS.g:995:4: (expr= assignmentExpression | {...}?)
             {
-            // JS.g:986:4: (expr= assignmentExpression | {...}?)
+            // JS.g:995:4: (expr= assignmentExpression | {...}?)
             int alt7=2;
             int LA7_0 = input.LA(1);
 
-            if ( ((LA7_0>=NULL && LA7_0<=FALSE)||LA7_0==DELETE||(LA7_0>=EACH && LA7_0<=FUNCTION)||LA7_0==NEW||LA7_0==THIS||LA7_0==TYPEOF||LA7_0==VOID||(LA7_0>=GET && LA7_0<=YIELD)||LA7_0==WXML||LA7_0==LBRACE||LA7_0==LPAREN||LA7_0==LBRACK||(LA7_0>=ADD && LA7_0<=SUB)||(LA7_0>=INC && LA7_0<=DEC)||(LA7_0>=NOT && LA7_0<=INV)||(LA7_0>=StringLiteral && LA7_0<=XmlAttribute)||LA7_0==Identifier||LA7_0==RegularExpressionLiteral||(LA7_0>=DecimalLiteral && LA7_0<=HexIntegerLiteral)||LA7_0==XMLLiteral) ) {
+            if ( ((LA7_0>=NULL && LA7_0<=FALSE)||LA7_0==DELETE||(LA7_0>=EACH && LA7_0<=FUNCTION)||LA7_0==NEW||LA7_0==THIS||LA7_0==TYPEOF||LA7_0==VOID||(LA7_0>=GET && LA7_0<=YIELD)||(LA7_0>=WXML && LA7_0<=NAMESPACE)||LA7_0==LBRACE||LA7_0==LPAREN||LA7_0==LBRACK||(LA7_0>=ADD && LA7_0<=SUB)||(LA7_0>=INC && LA7_0<=DEC)||(LA7_0>=NOT && LA7_0<=INV)||(LA7_0>=StringLiteral && LA7_0<=XmlAttribute)||LA7_0==Identifier||LA7_0==RegularExpressionLiteral||(LA7_0>=DecimalLiteral && LA7_0<=HexIntegerLiteral)||LA7_0==XMLLiteral) ) {
                 alt7=1;
             }
             else if ( (LA7_0==RBRACK||LA7_0==COMMA) ) {
@@ -1767,15 +1768,15 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("986:4: (expr= assignmentExpression | {...}?)", 7, 0, input);
+                    new NoViableAltException("995:4: (expr= assignmentExpression | {...}?)", 7, 0, input);
 
                 throw nvae;
             }
             switch (alt7) {
                 case 1 :
-                    // JS.g:986:6: expr= assignmentExpression
+                    // JS.g:995:6: expr= assignmentExpression
                     {
-                    pushFollow(FOLLOW_assignmentExpression_in_arrayItem3563);
+                    pushFollow(FOLLOW_assignmentExpression_in_arrayItem3589);
                     expr=assignmentExpression();
                     _fsp--;
 
@@ -1784,7 +1785,7 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:986:34: {...}?
+                    // JS.g:995:34: {...}?
                     {
                     if ( !( input.LA(1) == COMMA ) ) {
                         throw new FailedPredicateException(input, "arrayItem", " input.LA(1) == COMMA ");
@@ -1807,14 +1808,14 @@
             RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"token expr",expr!=null?expr.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 987:2: -> ^( ITEM ( $expr)? )
+            // 996:2: -> ^( ITEM ( $expr)? )
             {
-                // JS.g:987:5: ^( ITEM ( $expr)? )
+                // JS.g:996:5: ^( ITEM ( $expr)? )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(ITEM, "ITEM"), root_1);
 
-                // JS.g:987:13: ( $expr)?
+                // JS.g:996:13: ( $expr)?
                 if ( stream_expr.hasNext() ) {
                     adaptor.addChild(root_1, stream_expr.next());
 
@@ -1852,7 +1853,7 @@
     };
 
     // $ANTLR start objectLiteral
-    // JS.g:990:1: objectLiteral : lb= LBRACE ( objectPropertyInitializer ( COMMA objectPropertyInitializer )* )? RBRACE -> ^( OBJECT[$lb, \"OBJECT\"] ( objectPropertyInitializer )* ) ;
+    // JS.g:999: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);
@@ -1875,30 +1876,30 @@
         RewriteRuleTokenStream stream_LBRACE=new RewriteRuleTokenStream(adaptor,"token LBRACE");
         RewriteRuleSubtreeStream stream_objectPropertyInitializer=new RewriteRuleSubtreeStream(adaptor,"rule objectPropertyInitializer");
         try {
-            // JS.g:991:2: (lb= LBRACE ( objectPropertyInitializer ( COMMA objectPropertyInitializer )* )? RBRACE -> ^( OBJECT[$lb, \"OBJECT\"] ( objectPropertyInitializer )* ) )
-            // JS.g:991:4: lb= LBRACE ( objectPropertyInitializer ( COMMA objectPropertyInitializer )* )? RBRACE
+            // JS.g:1000:2: (lb= LBRACE ( objectPropertyInitializer ( COMMA objectPropertyInitializer )* )? RBRACE -> ^( OBJECT[$lb, \"OBJECT\"] ( objectPropertyInitializer )* ) )
+            // JS.g:1000:4: lb= LBRACE ( objectPropertyInitializer ( COMMA objectPropertyInitializer )* )? RBRACE
             {
             lb=(Token)input.LT(1);
-            match(input,LBRACE,FOLLOW_LBRACE_in_objectLiteral3595); 
+            match(input,LBRACE,FOLLOW_LBRACE_in_objectLiteral3621); 
             stream_LBRACE.add(lb);
 
-            // JS.g:991:14: ( objectPropertyInitializer ( COMMA objectPropertyInitializer )* )?
+            // JS.g:1000:14: ( objectPropertyInitializer ( COMMA objectPropertyInitializer )* )?
             int alt9=2;
             int LA9_0 = input.LA(1);
 
-            if ( (LA9_0==EACH||(LA9_0>=GET && LA9_0<=SET)||LA9_0==WXML||(LA9_0>=StringLiteral && LA9_0<=XmlAttribute)||LA9_0==Identifier||(LA9_0>=DecimalLiteral && LA9_0<=HexIntegerLiteral)) ) {
+            if ( (LA9_0==EACH||(LA9_0>=GET && LA9_0<=SET)||(LA9_0>=WXML && LA9_0<=NAMESPACE)||(LA9_0>=StringLiteral && LA9_0<=XmlAttribute)||LA9_0==Identifier||(LA9_0>=DecimalLiteral && LA9_0<=HexIntegerLiteral)) ) {
                 alt9=1;
             }
             switch (alt9) {
                 case 1 :
-                    // JS.g:991:16: objectPropertyInitializer ( COMMA objectPropertyInitializer )*
+                    // JS.g:1000:16: objectPropertyInitializer ( COMMA objectPropertyInitializer )*
                     {
-                    pushFollow(FOLLOW_objectPropertyInitializer_in_objectLiteral3599);
+                    pushFollow(FOLLOW_objectPropertyInitializer_in_objectLiteral3625);
                     objectPropertyInitializer35=objectPropertyInitializer();
                     _fsp--;
 
                     stream_objectPropertyInitializer.add(objectPropertyInitializer35.getTree());
-                    // JS.g:991:42: ( COMMA objectPropertyInitializer )*
+                    // JS.g:1000:42: ( COMMA objectPropertyInitializer )*
                     loop8:
                     do {
                         int alt8=2;
@@ -1911,13 +1912,13 @@
 
                         switch (alt8) {
                     	case 1 :
-                    	    // JS.g:991:44: COMMA objectPropertyInitializer
+                    	    // JS.g:1000:44: COMMA objectPropertyInitializer
                     	    {
                     	    COMMA36=(Token)input.LT(1);
-                    	    match(input,COMMA,FOLLOW_COMMA_in_objectLiteral3603); 
+                    	    match(input,COMMA,FOLLOW_COMMA_in_objectLiteral3629); 
                     	    stream_COMMA.add(COMMA36);
 
-                    	    pushFollow(FOLLOW_objectPropertyInitializer_in_objectLiteral3605);
+                    	    pushFollow(FOLLOW_objectPropertyInitializer_in_objectLiteral3631);
                     	    objectPropertyInitializer37=objectPropertyInitializer();
                     	    _fsp--;
 
@@ -1938,7 +1939,7 @@
             }
 
             RBRACE38=(Token)input.LT(1);
-            match(input,RBRACE,FOLLOW_RBRACE_in_objectLiteral3613); 
+            match(input,RBRACE,FOLLOW_RBRACE_in_objectLiteral3639); 
             stream_RBRACE.add(RBRACE38);
 
 
@@ -1952,14 +1953,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 992:2: -> ^( OBJECT[$lb, \"OBJECT\"] ( objectPropertyInitializer )* )
+            // 1001:2: -> ^( OBJECT[$lb, \"OBJECT\"] ( objectPropertyInitializer )* )
             {
-                // JS.g:992:5: ^( OBJECT[$lb, \"OBJECT\"] ( objectPropertyInitializer )* )
+                // JS.g:1001: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:992:30: ( objectPropertyInitializer )*
+                // JS.g:1001:30: ( objectPropertyInitializer )*
                 while ( stream_objectPropertyInitializer.hasNext() ) {
                     adaptor.addChild(root_1, stream_objectPropertyInitializer.next());
 
@@ -1997,7 +1998,7 @@
     };
 
     // $ANTLR start objectPropertyInitializer
-    // JS.g:995:1: objectPropertyInitializer : ( nameValuePair | getMethodDeclaration | setMethodDeclaration );
+    // JS.g:1004:1: objectPropertyInitializer : ( nameValuePair | getMethodDeclaration | setMethodDeclaration );
     public final objectPropertyInitializer_return objectPropertyInitializer() throws RecognitionException {
         objectPropertyInitializer_return retval = new objectPropertyInitializer_return();
         retval.start = input.LT(1);
@@ -2013,7 +2014,7 @@
 
 
         try {
-            // JS.g:996:3: ( nameValuePair | getMethodDeclaration | setMethodDeclaration )
+            // JS.g:1005:3: ( nameValuePair | getMethodDeclaration | setMethodDeclaration )
             int alt10=3;
             switch ( input.LA(1) ) {
             case GET:
@@ -2023,12 +2024,12 @@
                 if ( (LA10_1==COLON) ) {
                     alt10=1;
                 }
-                else if ( (LA10_1==EACH||(LA10_1>=GET && LA10_1<=SET)||LA10_1==WXML||LA10_1==Identifier) ) {
+                else if ( (LA10_1==EACH||(LA10_1>=GET && LA10_1<=SET)||(LA10_1>=WXML && LA10_1<=NAMESPACE)||LA10_1==Identifier) ) {
                     alt10=2;
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("995:1: objectPropertyInitializer : ( nameValuePair | getMethodDeclaration | setMethodDeclaration );", 10, 1, input);
+                        new NoViableAltException("1004:1: objectPropertyInitializer : ( nameValuePair | getMethodDeclaration | setMethodDeclaration );", 10, 1, input);
 
                     throw nvae;
                 }
@@ -2036,6 +2037,7 @@
                 break;
             case EACH:
             case WXML:
+            case NAMESPACE:
             case StringLiteral:
             case XmlAttribute:
             case Identifier:
@@ -2053,12 +2055,12 @@
                 if ( (LA10_3==COLON) ) {
                     alt10=1;
                 }
-                else if ( (LA10_3==EACH||(LA10_3>=GET && LA10_3<=SET)||LA10_3==WXML||LA10_3==Identifier) ) {
+                else if ( (LA10_3==EACH||(LA10_3>=GET && LA10_3<=SET)||(LA10_3>=WXML && LA10_3<=NAMESPACE)||LA10_3==Identifier) ) {
                     alt10=3;
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("995:1: objectPropertyInitializer : ( nameValuePair | getMethodDeclaration | setMethodDeclaration );", 10, 3, input);
+                        new NoViableAltException("1004:1: objectPropertyInitializer : ( nameValuePair | getMethodDeclaration | setMethodDeclaration );", 10, 3, input);
 
                     throw nvae;
                 }
@@ -2066,18 +2068,18 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("995:1: objectPropertyInitializer : ( nameValuePair | getMethodDeclaration | setMethodDeclaration );", 10, 0, input);
+                    new NoViableAltException("1004:1: objectPropertyInitializer : ( nameValuePair | getMethodDeclaration | setMethodDeclaration );", 10, 0, input);
 
                 throw nvae;
             }
 
             switch (alt10) {
                 case 1 :
-                    // JS.g:996:5: nameValuePair
+                    // JS.g:1005:5: nameValuePair
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_nameValuePair_in_objectPropertyInitializer3638);
+                    pushFollow(FOLLOW_nameValuePair_in_objectPropertyInitializer3664);
                     nameValuePair39=nameValuePair();
                     _fsp--;
 
@@ -2086,11 +2088,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:997:5: getMethodDeclaration
+                    // JS.g:1006:5: getMethodDeclaration
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_getMethodDeclaration_in_objectPropertyInitializer3645);
+                    pushFollow(FOLLOW_getMethodDeclaration_in_objectPropertyInitializer3671);
                     getMethodDeclaration40=getMethodDeclaration();
                     _fsp--;
 
@@ -2099,11 +2101,11 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:998:5: setMethodDeclaration
+                    // JS.g:1007:5: setMethodDeclaration
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_setMethodDeclaration_in_objectPropertyInitializer3651);
+                    pushFollow(FOLLOW_setMethodDeclaration_in_objectPropertyInitializer3677);
                     setMethodDeclaration41=setMethodDeclaration();
                     _fsp--;
 
@@ -2135,7 +2137,7 @@
     };
 
     // $ANTLR start nameValuePair
-    // JS.g:1001:1: nameValuePair : propertyName COLON assignmentExpression -> ^( NAMEDVALUE propertyName assignmentExpression ) ;
+    // JS.g:1010: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);
@@ -2153,19 +2155,19 @@
         RewriteRuleSubtreeStream stream_propertyName=new RewriteRuleSubtreeStream(adaptor,"rule propertyName");
         RewriteRuleSubtreeStream stream_assignmentExpression=new RewriteRuleSubtreeStream(adaptor,"rule assignmentExpression");
         try {
-            // JS.g:1002:2: ( propertyName COLON assignmentExpression -> ^( NAMEDVALUE propertyName assignmentExpression ) )
-            // JS.g:1002:4: propertyName COLON assignmentExpression
+            // JS.g:1011:2: ( propertyName COLON assignmentExpression -> ^( NAMEDVALUE propertyName assignmentExpression ) )
+            // JS.g:1011:4: propertyName COLON assignmentExpression
             {
-            pushFollow(FOLLOW_propertyName_in_nameValuePair3664);
+            pushFollow(FOLLOW_propertyName_in_nameValuePair3690);
             propertyName42=propertyName();
             _fsp--;
 
             stream_propertyName.add(propertyName42.getTree());
             COLON43=(Token)input.LT(1);
-            match(input,COLON,FOLLOW_COLON_in_nameValuePair3666); 
+            match(input,COLON,FOLLOW_COLON_in_nameValuePair3692); 
             stream_COLON.add(COLON43);
 
-            pushFollow(FOLLOW_assignmentExpression_in_nameValuePair3668);
+            pushFollow(FOLLOW_assignmentExpression_in_nameValuePair3694);
             assignmentExpression44=assignmentExpression();
             _fsp--;
 
@@ -2181,9 +2183,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1003:2: -> ^( NAMEDVALUE propertyName assignmentExpression )
+            // 1012:2: -> ^( NAMEDVALUE propertyName assignmentExpression )
             {
-                // JS.g:1003:5: ^( NAMEDVALUE propertyName assignmentExpression )
+                // JS.g:1012:5: ^( NAMEDVALUE propertyName assignmentExpression )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(NAMEDVALUE, "NAMEDVALUE"), root_1);
@@ -2222,7 +2224,7 @@
     };
 
     // $ANTLR start propertyName
-    // JS.g:1006:1: propertyName : ( identifier | StringLiteral | numericLiteral | XmlAttribute );
+    // JS.g:1015:1: propertyName : ( identifier | StringLiteral | numericLiteral | XmlAttribute );
     public final propertyName_return propertyName() throws RecognitionException {
         propertyName_return retval = new propertyName_return();
         retval.start = input.LT(1);
@@ -2240,13 +2242,14 @@
         Object XmlAttribute48_tree=null;
 
         try {
-            // JS.g:1007:2: ( identifier | StringLiteral | numericLiteral | XmlAttribute )
+            // JS.g:1016:2: ( identifier | StringLiteral | numericLiteral | XmlAttribute )
             int alt11=4;
             switch ( input.LA(1) ) {
             case EACH:
             case GET:
             case SET:
             case WXML:
+            case NAMESPACE:
             case Identifier:
                 {
                 alt11=1;
@@ -2271,18 +2274,18 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("1006:1: propertyName : ( identifier | StringLiteral | numericLiteral | XmlAttribute );", 11, 0, input);
+                    new NoViableAltException("1015:1: propertyName : ( identifier | StringLiteral | numericLiteral | XmlAttribute );", 11, 0, input);
 
                 throw nvae;
             }
 
             switch (alt11) {
                 case 1 :
-                    // JS.g:1007:4: identifier
+                    // JS.g:1016:4: identifier
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_identifier_in_propertyName3692);
+                    pushFollow(FOLLOW_identifier_in_propertyName3718);
                     identifier45=identifier();
                     _fsp--;
 
@@ -2291,12 +2294,12 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1008:4: StringLiteral
+                    // JS.g:1017:4: StringLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
                     StringLiteral46=(Token)input.LT(1);
-                    match(input,StringLiteral,FOLLOW_StringLiteral_in_propertyName3697); 
+                    match(input,StringLiteral,FOLLOW_StringLiteral_in_propertyName3723); 
                     StringLiteral46_tree = (Object)adaptor.create(StringLiteral46);
                     adaptor.addChild(root_0, StringLiteral46_tree);
 
@@ -2304,11 +2307,11 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:1009:4: numericLiteral
+                    // JS.g:1018:4: numericLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_numericLiteral_in_propertyName3702);
+                    pushFollow(FOLLOW_numericLiteral_in_propertyName3728);
                     numericLiteral47=numericLiteral();
                     _fsp--;
 
@@ -2317,12 +2320,12 @@
                     }
                     break;
                 case 4 :
-                    // JS.g:1010:4: XmlAttribute
+                    // JS.g:1019:4: XmlAttribute
                     {
                     root_0 = (Object)adaptor.nil();
 
                     XmlAttribute48=(Token)input.LT(1);
-                    match(input,XmlAttribute,FOLLOW_XmlAttribute_in_propertyName3707); 
+                    match(input,XmlAttribute,FOLLOW_XmlAttribute_in_propertyName3733); 
                     XmlAttribute48_tree = (Object)adaptor.create(XmlAttribute48);
                     adaptor.addChild(root_0, XmlAttribute48_tree);
 
@@ -2353,7 +2356,7 @@
     };
 
     // $ANTLR start memberExpression
-    // JS.g:1022:1: memberExpression : ( primaryExpression | functionExpression | newExpression );
+    // JS.g:1031:1: memberExpression : ( primaryExpression | functionExpression | newExpression );
     public final memberExpression_return memberExpression() throws RecognitionException {
         memberExpression_return retval = new memberExpression_return();
         retval.start = input.LT(1);
@@ -2369,7 +2372,7 @@
 
 
         try {
-            // JS.g:1023:2: ( primaryExpression | functionExpression | newExpression )
+            // JS.g:1032:2: ( primaryExpression | functionExpression | newExpression )
             int alt12=3;
             switch ( input.LA(1) ) {
             case NULL:
@@ -2380,6 +2383,7 @@
             case GET:
             case SET:
             case WXML:
+            case NAMESPACE:
             case LBRACE:
             case LPAREN:
             case LBRACK:
@@ -2406,18 +2410,18 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("1022:1: memberExpression : ( primaryExpression | functionExpression | newExpression );", 12, 0, input);
+                    new NoViableAltException("1031:1: memberExpression : ( primaryExpression | functionExpression | newExpression );", 12, 0, input);
 
                 throw nvae;
             }
 
             switch (alt12) {
                 case 1 :
-                    // JS.g:1023:4: primaryExpression
+                    // JS.g:1032:4: primaryExpression
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_primaryExpression_in_memberExpression3725);
+                    pushFollow(FOLLOW_primaryExpression_in_memberExpression3751);
                     primaryExpression49=primaryExpression();
                     _fsp--;
 
@@ -2426,11 +2430,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1024:4: functionExpression
+                    // JS.g:1033:4: functionExpression
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_functionExpression_in_memberExpression3730);
+                    pushFollow(FOLLOW_functionExpression_in_memberExpression3756);
                     functionExpression50=functionExpression();
                     _fsp--;
 
@@ -2439,11 +2443,11 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:1025:4: newExpression
+                    // JS.g:1034:4: newExpression
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_newExpression_in_memberExpression3735);
+                    pushFollow(FOLLOW_newExpression_in_memberExpression3761);
                     newExpression51=newExpression();
                     _fsp--;
 
@@ -2475,7 +2479,7 @@
     };
 
     // $ANTLR start newExpression
-    // JS.g:1028:1: newExpression : NEW memberExpression ;
+    // JS.g:1037:1: newExpression : NEW memberExpression ;
     public final newExpression_return newExpression() throws RecognitionException {
         newExpression_return retval = new newExpression_return();
         retval.start = input.LT(1);
@@ -2489,17 +2493,17 @@
         Object NEW52_tree=null;
 
         try {
-            // JS.g:1029:2: ( NEW memberExpression )
-            // JS.g:1029:4: NEW memberExpression
+            // JS.g:1038:2: ( NEW memberExpression )
+            // JS.g:1038:4: NEW memberExpression
             {
             root_0 = (Object)adaptor.nil();
 
             NEW52=(Token)input.LT(1);
-            match(input,NEW,FOLLOW_NEW_in_newExpression3746); 
+            match(input,NEW,FOLLOW_NEW_in_newExpression3772); 
             NEW52_tree = (Object)adaptor.create(NEW52);
             root_0 = (Object)adaptor.becomeRoot(NEW52_tree, root_0);
 
-            pushFollow(FOLLOW_memberExpression_in_newExpression3749);
+            pushFollow(FOLLOW_memberExpression_in_newExpression3775);
             memberExpression53=memberExpression();
             _fsp--;
 
@@ -2529,7 +2533,7 @@
     };
 
     // $ANTLR start arguments
-    // JS.g:1033:1: arguments : LPAREN ( assignmentExpression ( COMMA assignmentExpression )* )? RPAREN -> ^( ARGS ( assignmentExpression )* ) ;
+    // JS.g:1042: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);
@@ -2552,30 +2556,30 @@
         RewriteRuleTokenStream stream_LPAREN=new RewriteRuleTokenStream(adaptor,"token LPAREN");
         RewriteRuleSubtreeStream stream_assignmentExpression=new RewriteRuleSubtreeStream(adaptor,"rule assignmentExpression");
         try {
-            // JS.g:1034:2: ( LPAREN ( assignmentExpression ( COMMA assignmentExpression )* )? RPAREN -> ^( ARGS ( assignmentExpression )* ) )
-            // JS.g:1034:4: LPAREN ( assignmentExpression ( COMMA assignmentExpression )* )? RPAREN
+            // JS.g:1043:2: ( LPAREN ( assignmentExpression ( COMMA assignmentExpression )* )? RPAREN -> ^( ARGS ( assignmentExpression )* ) )
+            // JS.g:1043:4: LPAREN ( assignmentExpression ( COMMA assignmentExpression )* )? RPAREN
             {
             LPAREN54=(Token)input.LT(1);
-            match(input,LPAREN,FOLLOW_LPAREN_in_arguments3762); 
+            match(input,LPAREN,FOLLOW_LPAREN_in_arguments3788); 
             stream_LPAREN.add(LPAREN54);
 
-            // JS.g:1034:11: ( assignmentExpression ( COMMA assignmentExpression )* )?
+            // JS.g:1043:11: ( assignmentExpression ( COMMA assignmentExpression )* )?
             int alt14=2;
             int LA14_0 = input.LA(1);
 
-            if ( ((LA14_0>=NULL && LA14_0<=FALSE)||LA14_0==DELETE||(LA14_0>=EACH && LA14_0<=FUNCTION)||LA14_0==NEW||LA14_0==THIS||LA14_0==TYPEOF||LA14_0==VOID||(LA14_0>=GET && LA14_0<=YIELD)||LA14_0==WXML||LA14_0==LBRACE||LA14_0==LPAREN||LA14_0==LBRACK||(LA14_0>=ADD && LA14_0<=SUB)||(LA14_0>=INC && LA14_0<=DEC)||(LA14_0>=NOT && LA14_0<=INV)||(LA14_0>=StringLiteral && LA14_0<=XmlAttribute)||LA14_0==Identifier||LA14_0==RegularExpressionLiteral||(LA14_0>=DecimalLiteral && LA14_0<=HexIntegerLiteral)||LA14_0==XMLLiteral) ) {
+            if ( ((LA14_0>=NULL && LA14_0<=FALSE)||LA14_0==DELETE||(LA14_0>=EACH && LA14_0<=FUNCTION)||LA14_0==NEW||LA14_0==THIS||LA14_0==TYPEOF||LA14_0==VOID||(LA14_0>=GET && LA14_0<=YIELD)||(LA14_0>=WXML && LA14_0<=NAMESPACE)||LA14_0==LBRACE||LA14_0==LPAREN||LA14_0==LBRACK||(LA14_0>=ADD && LA14_0<=SUB)||(LA14_0>=INC && LA14_0<=DEC)||(LA14_0>=NOT && LA14_0<=INV)||(LA14_0>=StringLiteral && LA14_0<=XmlAttribute)||LA14_0==Identifier||LA14_0==RegularExpressionLiteral||(LA14_0>=DecimalLiteral && LA14_0<=HexIntegerLiteral)||LA14_0==XMLLiteral) ) {
                 alt14=1;
             }
             switch (alt14) {
                 case 1 :
-                    // JS.g:1034:13: assignmentExpression ( COMMA assignmentExpression )*
+                    // JS.g:1043:13: assignmentExpression ( COMMA assignmentExpression )*
                     {
-                    pushFollow(FOLLOW_assignmentExpression_in_arguments3766);
+                    pushFollow(FOLLOW_assignmentExpression_in_arguments3792);
                     assignmentExpression55=assignmentExpression();
                     _fsp--;
 
                     stream_assignmentExpression.add(assignmentExpression55.getTree());
-                    // JS.g:1034:34: ( COMMA assignmentExpression )*
+                    // JS.g:1043:34: ( COMMA assignmentExpression )*
                     loop13:
                     do {
                         int alt13=2;
@@ -2588,13 +2592,13 @@
 
                         switch (alt13) {
                     	case 1 :
-                    	    // JS.g:1034:36: COMMA assignmentExpression
+                    	    // JS.g:1043:36: COMMA assignmentExpression
                     	    {
                     	    COMMA56=(Token)input.LT(1);
-                    	    match(input,COMMA,FOLLOW_COMMA_in_arguments3770); 
+                    	    match(input,COMMA,FOLLOW_COMMA_in_arguments3796); 
                     	    stream_COMMA.add(COMMA56);
 
-                    	    pushFollow(FOLLOW_assignmentExpression_in_arguments3772);
+                    	    pushFollow(FOLLOW_assignmentExpression_in_arguments3798);
                     	    assignmentExpression57=assignmentExpression();
                     	    _fsp--;
 
@@ -2615,7 +2619,7 @@
             }
 
             RPAREN58=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_arguments3780); 
+            match(input,RPAREN,FOLLOW_RPAREN_in_arguments3806); 
             stream_RPAREN.add(RPAREN58);
 
 
@@ -2629,14 +2633,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1035:2: -> ^( ARGS ( assignmentExpression )* )
+            // 1044:2: -> ^( ARGS ( assignmentExpression )* )
             {
-                // JS.g:1035:5: ^( ARGS ( assignmentExpression )* )
+                // JS.g:1044:5: ^( ARGS ( assignmentExpression )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(ARGS, "ARGS"), root_1);
 
-                // JS.g:1035:13: ( assignmentExpression )*
+                // JS.g:1044:13: ( assignmentExpression )*
                 while ( stream_assignmentExpression.hasNext() ) {
                     adaptor.addChild(root_1, stream_assignmentExpression.next());
 
@@ -2674,7 +2678,7 @@
     };
 
     // $ANTLR start leftHandSideExpression
-    // JS.g:1038: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: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 ) )* ;
     public final leftHandSideExpression_return leftHandSideExpression() throws RecognitionException {
         leftHandSideExpression_return retval = new leftHandSideExpression_return();
         retval.start = input.LT(1);
@@ -2714,13 +2718,13 @@
         RewriteRuleSubtreeStream stream_arguments=new RewriteRuleSubtreeStream(adaptor,"rule arguments");
         RewriteRuleSubtreeStream stream_rightHandSideExpression=new RewriteRuleSubtreeStream(adaptor,"rule rightHandSideExpression");
         try {
-            // JS.g:1039: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:1040: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: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:1040:3: ( memberExpression -> memberExpression )
-            // JS.g:1041:5: memberExpression
+            // JS.g:1049:3: ( memberExpression -> memberExpression )
+            // JS.g:1050:5: memberExpression
             {
-            pushFollow(FOLLOW_memberExpression_in_leftHandSideExpression3813);
+            pushFollow(FOLLOW_memberExpression_in_leftHandSideExpression3839);
             memberExpression59=memberExpression();
             _fsp--;
 
@@ -2736,7 +2740,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1041:25: -> memberExpression
+            // 1050:25: -> memberExpression
             {
                 adaptor.addChild(root_0, stream_memberExpression.next());
 
@@ -2746,7 +2750,7 @@
 
             }
 
-            // JS.g:1043: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: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 ) )*
             loop15:
             do {
                 int alt15=6;
@@ -2781,9 +2785,9 @@
 
                 switch (alt15) {
             	case 1 :
-            	    // JS.g:1044:5: arguments
+            	    // JS.g:1053:5: arguments
             	    {
-            	    pushFollow(FOLLOW_arguments_in_leftHandSideExpression3834);
+            	    pushFollow(FOLLOW_arguments_in_leftHandSideExpression3860);
             	    arguments60=arguments();
             	    _fsp--;
 
@@ -2799,9 +2803,9 @@
             	    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             	    root_0 = (Object)adaptor.nil();
-            	    // 1044:19: -> ^( CALL $leftHandSideExpression arguments )
+            	    // 1053:19: -> ^( CALL $leftHandSideExpression arguments )
             	    {
-            	        // JS.g:1044:22: ^( CALL $leftHandSideExpression arguments )
+            	        // JS.g:1053:22: ^( CALL $leftHandSideExpression arguments )
             	        {
             	        Object root_1 = (Object)adaptor.nil();
             	        root_1 = (Object)adaptor.becomeRoot(adaptor.create(CALL, "CALL"), root_1);
@@ -2819,19 +2823,19 @@
             	    }
             	    break;
             	case 2 :
-            	    // JS.g:1045:7: LBRACK expression RBRACK
+            	    // JS.g:1054:7: LBRACK expression RBRACK
             	    {
             	    LBRACK61=(Token)input.LT(1);
-            	    match(input,LBRACK,FOLLOW_LBRACK_in_leftHandSideExpression3859); 
+            	    match(input,LBRACK,FOLLOW_LBRACK_in_leftHandSideExpression3885); 
             	    stream_LBRACK.add(LBRACK61);
 
-            	    pushFollow(FOLLOW_expression_in_leftHandSideExpression3861);
+            	    pushFollow(FOLLOW_expression_in_leftHandSideExpression3887);
             	    expression62=expression();
             	    _fsp--;
 
             	    stream_expression.add(expression62.getTree());
             	    RBRACK63=(Token)input.LT(1);
-            	    match(input,RBRACK,FOLLOW_RBRACK_in_leftHandSideExpression3863); 
+            	    match(input,RBRACK,FOLLOW_RBRACK_in_leftHandSideExpression3889); 
             	    stream_RBRACK.add(RBRACK63);
 
 
@@ -2845,9 +2849,9 @@
             	    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             	    root_0 = (Object)adaptor.nil();
-            	    // 1045:33: -> ^( BYINDEX $leftHandSideExpression expression )
+            	    // 1054:33: -> ^( BYINDEX $leftHandSideExpression expression )
             	    {
-            	        // JS.g:1045:36: ^( BYINDEX $leftHandSideExpression expression )
+            	        // JS.g:1054:36: ^( BYINDEX $leftHandSideExpression expression )
             	        {
             	        Object root_1 = (Object)adaptor.nil();
             	        root_1 = (Object)adaptor.becomeRoot(adaptor.create(BYINDEX, "BYINDEX"), root_1);
@@ -2865,13 +2869,13 @@
             	    }
             	    break;
             	case 3 :
-            	    // JS.g:1046:7: DOT rightHandSideExpression
+            	    // JS.g:1055:7: DOT rightHandSideExpression
             	    {
             	    DOT64=(Token)input.LT(1);
-            	    match(input,DOT,FOLLOW_DOT_in_leftHandSideExpression3885); 
+            	    match(input,DOT,FOLLOW_DOT_in_leftHandSideExpression3911); 
             	    stream_DOT.add(DOT64);
 
-            	    pushFollow(FOLLOW_rightHandSideExpression_in_leftHandSideExpression3887);
+            	    pushFollow(FOLLOW_rightHandSideExpression_in_leftHandSideExpression3913);
             	    rightHandSideExpression65=rightHandSideExpression();
             	    _fsp--;
 
@@ -2887,9 +2891,9 @@
             	    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             	    root_0 = (Object)adaptor.nil();
-            	    // 1046:35: -> ^( BYFIELD $leftHandSideExpression rightHandSideExpression )
+            	    // 1055:35: -> ^( BYFIELD $leftHandSideExpression rightHandSideExpression )
             	    {
-            	        // JS.g:1046:38: ^( BYFIELD $leftHandSideExpression rightHandSideExpression )
+            	        // JS.g:1055:38: ^( BYFIELD $leftHandSideExpression rightHandSideExpression )
             	        {
             	        Object root_1 = (Object)adaptor.nil();
             	        root_1 = (Object)adaptor.becomeRoot(adaptor.create(BYFIELD, "BYFIELD"), root_1);
@@ -2907,20 +2911,20 @@
             	    }
             	    break;
             	case 4 :
-            	    // JS.g:1047:7: DOTDOT expression
+            	    // JS.g:1056:7: DOTDOT expression
             	    {
             	    DOTDOT66=(Token)input.LT(1);
-            	    match(input,DOTDOT,FOLLOW_DOTDOT_in_leftHandSideExpression3908); 
+            	    match(input,DOTDOT,FOLLOW_DOTDOT_in_leftHandSideExpression3934); 
             	    stream_DOTDOT.add(DOTDOT66);
 
-            	    pushFollow(FOLLOW_expression_in_leftHandSideExpression3910);
+            	    pushFollow(FOLLOW_expression_in_leftHandSideExpression3936);
             	    expression67=expression();
             	    _fsp--;
 
             	    stream_expression.add(expression67.getTree());
 
             	    // AST REWRITE
-            	    // elements: expression, leftHandSideExpression
+            	    // elements: leftHandSideExpression, expression
             	    // token labels: 
             	    // rule labels: retval
             	    // token list labels: 
@@ -2929,9 +2933,9 @@
             	    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             	    root_0 = (Object)adaptor.nil();
-            	    // 1047:25: -> ^( ALLCHILDREN $leftHandSideExpression expression )
+            	    // 1056:25: -> ^( ALLCHILDREN $leftHandSideExpression expression )
             	    {
-            	        // JS.g:1047:28: ^( ALLCHILDREN $leftHandSideExpression expression )
+            	        // JS.g:1056:28: ^( ALLCHILDREN $leftHandSideExpression expression )
             	        {
             	        Object root_1 = (Object)adaptor.nil();
             	        root_1 = (Object)adaptor.becomeRoot(adaptor.create(ALLCHILDREN, "ALLCHILDREN"), root_1);
@@ -2949,20 +2953,20 @@
             	    }
             	    break;
             	case 5 :
-            	    // JS.g:1048:7: COLONCOLON expression
+            	    // JS.g:1057:7: COLONCOLON expression
             	    {
             	    COLONCOLON68=(Token)input.LT(1);
-            	    match(input,COLONCOLON,FOLLOW_COLONCOLON_in_leftHandSideExpression3929); 
+            	    match(input,COLONCOLON,FOLLOW_COLONCOLON_in_leftHandSideExpression3955); 
             	    stream_COLONCOLON.add(COLONCOLON68);
 
-            	    pushFollow(FOLLOW_expression_in_leftHandSideExpression3931);
+            	    pushFollow(FOLLOW_expression_in_leftHandSideExpression3957);
             	    expression69=expression();
             	    _fsp--;
 
             	    stream_expression.add(expression69.getTree());
 
             	    // AST REWRITE
-            	    // elements: expression, leftHandSideExpression
+            	    // elements: leftHandSideExpression, expression
             	    // token labels: 
             	    // rule labels: retval
             	    // token list labels: 
@@ -2971,9 +2975,9 @@
             	    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             	    root_0 = (Object)adaptor.nil();
-            	    // 1048:29: -> ^( LOCALNAME $leftHandSideExpression expression )
+            	    // 1057:29: -> ^( LOCALNAME $leftHandSideExpression expression )
             	    {
-            	        // JS.g:1048:32: ^( LOCALNAME $leftHandSideExpression expression )
+            	        // JS.g:1057:32: ^( LOCALNAME $leftHandSideExpression expression )
             	        {
             	        Object root_1 = (Object)adaptor.nil();
             	        root_1 = (Object)adaptor.becomeRoot(adaptor.create(LOCALNAME, "LOCALNAME"), root_1);
@@ -3021,7 +3025,7 @@
     };
 
     // $ANTLR start rightHandSideExpression
-    // JS.g:1052:1: rightHandSideExpression : ( parenExpression | identifier | XmlAttribute | MUL );
+    // JS.g:1061:1: rightHandSideExpression : ( parenExpression | identifier | XmlAttribute | MUL );
     public final rightHandSideExpression_return rightHandSideExpression() throws RecognitionException {
         rightHandSideExpression_return retval = new rightHandSideExpression_return();
         retval.start = input.LT(1);
@@ -3039,7 +3043,7 @@
         Object MUL73_tree=null;
 
         try {
-            // JS.g:1053:3: ( parenExpression | identifier | XmlAttribute | MUL )
+            // JS.g:1062:3: ( parenExpression | identifier | XmlAttribute | MUL )
             int alt16=4;
             switch ( input.LA(1) ) {
             case LPAREN:
@@ -3051,6 +3055,7 @@
             case GET:
             case SET:
             case WXML:
+            case NAMESPACE:
             case Identifier:
                 {
                 alt16=2;
@@ -3068,18 +3073,18 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("1052:1: rightHandSideExpression : ( parenExpression | identifier | XmlAttribute | MUL );", 16, 0, input);
+                    new NoViableAltException("1061:1: rightHandSideExpression : ( parenExpression | identifier | XmlAttribute | MUL );", 16, 0, input);
 
                 throw nvae;
             }
 
             switch (alt16) {
                 case 1 :
-                    // JS.g:1053:5: parenExpression
+                    // JS.g:1062:5: parenExpression
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_parenExpression_in_rightHandSideExpression3960);
+                    pushFollow(FOLLOW_parenExpression_in_rightHandSideExpression3986);
                     parenExpression70=parenExpression();
                     _fsp--;
 
@@ -3088,11 +3093,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1054:5: identifier
+                    // JS.g:1063:5: identifier
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_identifier_in_rightHandSideExpression3967);
+                    pushFollow(FOLLOW_identifier_in_rightHandSideExpression3993);
                     identifier71=identifier();
                     _fsp--;
 
@@ -3101,12 +3106,12 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:1055:5: XmlAttribute
+                    // JS.g:1064:5: XmlAttribute
                     {
                     root_0 = (Object)adaptor.nil();
 
                     XmlAttribute72=(Token)input.LT(1);
-                    match(input,XmlAttribute,FOLLOW_XmlAttribute_in_rightHandSideExpression3973); 
+                    match(input,XmlAttribute,FOLLOW_XmlAttribute_in_rightHandSideExpression3999); 
                     XmlAttribute72_tree = (Object)adaptor.create(XmlAttribute72);
                     adaptor.addChild(root_0, XmlAttribute72_tree);
 
@@ -3114,12 +3119,12 @@
                     }
                     break;
                 case 4 :
-                    // JS.g:1056:5: MUL
+                    // JS.g:1065:5: MUL
                     {
                     root_0 = (Object)adaptor.nil();
 
                     MUL73=(Token)input.LT(1);
-                    match(input,MUL,FOLLOW_MUL_in_rightHandSideExpression3979); 
+                    match(input,MUL,FOLLOW_MUL_in_rightHandSideExpression4005); 
                     MUL73_tree = (Object)adaptor.create(MUL73);
                     adaptor.addChild(root_0, MUL73_tree);
 
@@ -3150,7 +3155,7 @@
     };
 
     // $ANTLR start postfixExpression
-    // JS.g:1089:1: postfixExpression : leftHandSideExpression ( postfixOperator )? ;
+    // JS.g:1098:1: postfixExpression : leftHandSideExpression ( postfixOperator )? ;
     public final postfixExpression_return postfixExpression() throws RecognitionException {
         postfixExpression_return retval = new postfixExpression_return();
         retval.start = input.LT(1);
@@ -3164,18 +3169,18 @@
 
 
         try {
-            // JS.g:1090:2: ( leftHandSideExpression ( postfixOperator )? )
-            // JS.g:1090:4: leftHandSideExpression ( postfixOperator )?
+            // JS.g:1099:2: ( leftHandSideExpression ( postfixOperator )? )
+            // JS.g:1099:4: leftHandSideExpression ( postfixOperator )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_leftHandSideExpression_in_postfixExpression4017);
+            pushFollow(FOLLOW_leftHandSideExpression_in_postfixExpression4043);
             leftHandSideExpression74=leftHandSideExpression();
             _fsp--;
 
             adaptor.addChild(root_0, leftHandSideExpression74.getTree());
              if (input.LA(1) == INC || input.LA(1) == DEC) promoteEOL(null); 
-            // JS.g:1090:95: ( postfixOperator )?
+            // JS.g:1099:95: ( postfixOperator )?
             int alt17=2;
             int LA17_0 = input.LA(1);
 
@@ -3187,9 +3192,9 @@
             }
             switch (alt17) {
                 case 1 :
-                    // JS.g:1090:97: postfixOperator
+                    // JS.g:1099:97: postfixOperator
                     {
-                    pushFollow(FOLLOW_postfixOperator_in_postfixExpression4023);
+                    pushFollow(FOLLOW_postfixOperator_in_postfixExpression4049);
                     postfixOperator75=postfixOperator();
                     _fsp--;
 
@@ -3225,7 +3230,7 @@
     };
 
     // $ANTLR start postfixOperator
-    // JS.g:1093:1: postfixOperator : (op= INC | op= DEC );
+    // JS.g:1102:1: postfixOperator : (op= INC | op= DEC );
     public final postfixOperator_return postfixOperator() throws RecognitionException {
         postfixOperator_return retval = new postfixOperator_return();
         retval.start = input.LT(1);
@@ -3237,7 +3242,7 @@
         Object op_tree=null;
 
         try {
-            // JS.g:1094:2: (op= INC | op= DEC )
+            // JS.g:1103:2: (op= INC | op= DEC )
             int alt18=2;
             int LA18_0 = input.LA(1);
 
@@ -3249,18 +3254,18 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("1093:1: postfixOperator : (op= INC | op= DEC );", 18, 0, input);
+                    new NoViableAltException("1102:1: postfixOperator : (op= INC | op= DEC );", 18, 0, input);
 
                 throw nvae;
             }
             switch (alt18) {
                 case 1 :
-                    // JS.g:1094:4: op= INC
+                    // JS.g:1103:4: op= INC
                     {
                     root_0 = (Object)adaptor.nil();
 
                     op=(Token)input.LT(1);
-                    match(input,INC,FOLLOW_INC_in_postfixOperator4041); 
+                    match(input,INC,FOLLOW_INC_in_postfixOperator4067); 
                     op_tree = (Object)adaptor.create(op);
                     adaptor.addChild(root_0, op_tree);
 
@@ -3269,12 +3274,12 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1095:4: op= DEC
+                    // JS.g:1104:4: op= DEC
                     {
                     root_0 = (Object)adaptor.nil();
 
                     op=(Token)input.LT(1);
-                    match(input,DEC,FOLLOW_DEC_in_postfixOperator4050); 
+                    match(input,DEC,FOLLOW_DEC_in_postfixOperator4076); 
                     op_tree = (Object)adaptor.create(op);
                     adaptor.addChild(root_0, op_tree);
 
@@ -3306,7 +3311,7 @@
     };
 
     // $ANTLR start unaryExpression
-    // JS.g:1102:1: unaryExpression : ( postfixExpression | unaryOperator unaryExpression | XMLLiteral );
+    // JS.g:1111:1: unaryExpression : ( postfixExpression | unaryOperator unaryExpression | XMLLiteral );
     public final unaryExpression_return unaryExpression() throws RecognitionException {
         unaryExpression_return retval = new unaryExpression_return();
         retval.start = input.LT(1);
@@ -3324,7 +3329,7 @@
         Object XMLLiteral79_tree=null;
 
         try {
-            // JS.g:1103:2: ( postfixExpression | unaryOperator unaryExpression | XMLLiteral )
+            // JS.g:1112:2: ( postfixExpression | unaryOperator unaryExpression | XMLLiteral )
             int alt19=3;
             switch ( input.LA(1) ) {
             case NULL:
@@ -3337,6 +3342,7 @@
             case GET:
             case SET:
             case WXML:
+            case NAMESPACE:
             case LBRACE:
             case LPAREN:
             case LBRACK:
@@ -3372,18 +3378,18 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("1102:1: unaryExpression : ( postfixExpression | unaryOperator unaryExpression | XMLLiteral );", 19, 0, input);
+                    new NoViableAltException("1111:1: unaryExpression : ( postfixExpression | unaryOperator unaryExpression | XMLLiteral );", 19, 0, input);
 
                 throw nvae;
             }
 
             switch (alt19) {
                 case 1 :
-                    // JS.g:1103:4: postfixExpression
+                    // JS.g:1112:4: postfixExpression
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_postfixExpression_in_unaryExpression4067);
+                    pushFollow(FOLLOW_postfixExpression_in_unaryExpression4093);
                     postfixExpression76=postfixExpression();
                     _fsp--;
 
@@ -3392,16 +3398,16 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1104:4: unaryOperator unaryExpression
+                    // JS.g:1113:4: unaryOperator unaryExpression
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_unaryOperator_in_unaryExpression4072);
+                    pushFollow(FOLLOW_unaryOperator_in_unaryExpression4098);
                     unaryOperator77=unaryOperator();
                     _fsp--;
 
                     root_0 = (Object)adaptor.becomeRoot(unaryOperator77.getTree(), root_0);
-                    pushFollow(FOLLOW_unaryExpression_in_unaryExpression4075);
+                    pushFollow(FOLLOW_unaryExpression_in_unaryExpression4101);
                     unaryExpression78=unaryExpression();
                     _fsp--;
 
@@ -3410,12 +3416,12 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:1105:5: XMLLiteral
+                    // JS.g:1114:5: XMLLiteral
                     {
                     root_0 = (Object)adaptor.nil();
 
                     XMLLiteral79=(Token)input.LT(1);
-                    match(input,XMLLiteral,FOLLOW_XMLLiteral_in_unaryExpression4081); 
+                    match(input,XMLLiteral,FOLLOW_XMLLiteral_in_unaryExpression4107); 
                     XMLLiteral79_tree = (Object)adaptor.create(XMLLiteral79);
                     adaptor.addChild(root_0, XMLLiteral79_tree);
 
@@ -3446,7 +3452,7 @@
     };
 
     // $ANTLR start unaryOperator
-    // JS.g:1108:1: unaryOperator : ( DELETE | VOID | TYPEOF | INC | DEC | op= ADD | op= SUB | INV | NOT | YIELD );
+    // JS.g:1117: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);
@@ -3474,7 +3480,7 @@
         Object YIELD87_tree=null;
 
         try {
-            // JS.g:1109:2: ( DELETE | VOID | TYPEOF | INC | DEC | op= ADD | op= SUB | INV | NOT | YIELD )
+            // JS.g:1118:2: ( DELETE | VOID | TYPEOF | INC | DEC | op= ADD | op= SUB | INV | NOT | YIELD )
             int alt20=10;
             switch ( input.LA(1) ) {
             case DELETE:
@@ -3529,19 +3535,19 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("1108:1: unaryOperator : ( DELETE | VOID | TYPEOF | INC | DEC | op= ADD | op= SUB | INV | NOT | YIELD );", 20, 0, input);
+                    new NoViableAltException("1117: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:1109:4: DELETE
+                    // JS.g:1118:4: DELETE
                     {
                     root_0 = (Object)adaptor.nil();
 
                     DELETE80=(Token)input.LT(1);
-                    match(input,DELETE,FOLLOW_DELETE_in_unaryOperator4093); 
+                    match(input,DELETE,FOLLOW_DELETE_in_unaryOperator4119); 
                     DELETE80_tree = (Object)adaptor.create(DELETE80);
                     adaptor.addChild(root_0, DELETE80_tree);
 
@@ -3549,12 +3555,12 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1110:4: VOID
+                    // JS.g:1119:4: VOID
                     {
                     root_0 = (Object)adaptor.nil();
 
                     VOID81=(Token)input.LT(1);
-                    match(input,VOID,FOLLOW_VOID_in_unaryOperator4098); 
+                    match(input,VOID,FOLLOW_VOID_in_unaryOperator4124); 
                     VOID81_tree = (Object)adaptor.create(VOID81);
                     adaptor.addChild(root_0, VOID81_tree);
 
@@ -3562,12 +3568,12 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:1111:4: TYPEOF
+                    // JS.g:1120:4: TYPEOF
                     {
                     root_0 = (Object)adaptor.nil();
 
                     TYPEOF82=(Token)input.LT(1);
-                    match(input,TYPEOF,FOLLOW_TYPEOF_in_unaryOperator4103); 
+                    match(input,TYPEOF,FOLLOW_TYPEOF_in_unaryOperator4129); 
                     TYPEOF82_tree = (Object)adaptor.create(TYPEOF82);
                     adaptor.addChild(root_0, TYPEOF82_tree);
 
@@ -3575,12 +3581,12 @@
                     }
                     break;
                 case 4 :
-                    // JS.g:1112:4: INC
+                    // JS.g:1121:4: INC
                     {
                     root_0 = (Object)adaptor.nil();
 
                     INC83=(Token)input.LT(1);
-                    match(input,INC,FOLLOW_INC_in_unaryOperator4108); 
+                    match(input,INC,FOLLOW_INC_in_unaryOperator4134); 
                     INC83_tree = (Object)adaptor.create(INC83);
                     adaptor.addChild(root_0, INC83_tree);
 
@@ -3588,12 +3594,12 @@
                     }
                     break;
                 case 5 :
-                    // JS.g:1113:4: DEC
+                    // JS.g:1122:4: DEC
                     {
                     root_0 = (Object)adaptor.nil();
 
                     DEC84=(Token)input.LT(1);
-                    match(input,DEC,FOLLOW_DEC_in_unaryOperator4113); 
+                    match(input,DEC,FOLLOW_DEC_in_unaryOperator4139); 
                     DEC84_tree = (Object)adaptor.create(DEC84);
                     adaptor.addChild(root_0, DEC84_tree);
 
@@ -3601,12 +3607,12 @@
                     }
                     break;
                 case 6 :
-                    // JS.g:1114:4: op= ADD
+                    // JS.g:1123:4: op= ADD
                     {
                     root_0 = (Object)adaptor.nil();
 
                     op=(Token)input.LT(1);
-                    match(input,ADD,FOLLOW_ADD_in_unaryOperator4120); 
+                    match(input,ADD,FOLLOW_ADD_in_unaryOperator4146); 
                     op_tree = (Object)adaptor.create(op);
                     adaptor.addChild(root_0, op_tree);
 
@@ -3615,12 +3621,12 @@
                     }
                     break;
                 case 7 :
-                    // JS.g:1115:4: op= SUB
+                    // JS.g:1124:4: op= SUB
                     {
                     root_0 = (Object)adaptor.nil();
 
                     op=(Token)input.LT(1);
-                    match(input,SUB,FOLLOW_SUB_in_unaryOperator4129); 
+                    match(input,SUB,FOLLOW_SUB_in_unaryOperator4155); 
                     op_tree = (Object)adaptor.create(op);
                     adaptor.addChild(root_0, op_tree);
 
@@ -3629,12 +3635,12 @@
                     }
                     break;
                 case 8 :
-                    // JS.g:1116:4: INV
+                    // JS.g:1125:4: INV
                     {
                     root_0 = (Object)adaptor.nil();
 
                     INV85=(Token)input.LT(1);
-                    match(input,INV,FOLLOW_INV_in_unaryOperator4136); 
+                    match(input,INV,FOLLOW_INV_in_unaryOperator4162); 
                     INV85_tree = (Object)adaptor.create(INV85);
                     adaptor.addChild(root_0, INV85_tree);
 
@@ -3642,12 +3648,12 @@
                     }
                     break;
                 case 9 :
-                    // JS.g:1117:4: NOT
+                    // JS.g:1126:4: NOT
                     {
                     root_0 = (Object)adaptor.nil();
 
                     NOT86=(Token)input.LT(1);
-                    match(input,NOT,FOLLOW_NOT_in_unaryOperator4141); 
+                    match(input,NOT,FOLLOW_NOT_in_unaryOperator4167); 
                     NOT86_tree = (Object)adaptor.create(NOT86);
                     adaptor.addChild(root_0, NOT86_tree);
 
@@ -3655,12 +3661,12 @@
                     }
                     break;
                 case 10 :
-                    // JS.g:1118:4: YIELD
+                    // JS.g:1127:4: YIELD
                     {
                     root_0 = (Object)adaptor.nil();
 
                     YIELD87=(Token)input.LT(1);
-                    match(input,YIELD,FOLLOW_YIELD_in_unaryOperator4146); 
+                    match(input,YIELD,FOLLOW_YIELD_in_unaryOperator4172); 
                     YIELD87_tree = (Object)adaptor.create(YIELD87);
                     adaptor.addChild(root_0, YIELD87_tree);
 
@@ -3691,7 +3697,7 @@
     };
 
     // $ANTLR start namespaceStatement
-    // JS.g:1145:1: namespaceStatement : DEFAULT WXML NAMESPACE ASSIGN StringLiteral semic ;
+    // JS.g:1154: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);
@@ -3711,42 +3717,70 @@
         Object NAMESPACE90_tree=null;
         Object ASSIGN91_tree=null;
         Object StringLiteral92_tree=null;
-
+        RewriteRuleTokenStream stream_StringLiteral=new RewriteRuleTokenStream(adaptor,"token StringLiteral");
+        RewriteRuleTokenStream stream_WXML=new RewriteRuleTokenStream(adaptor,"token WXML");
+        RewriteRuleTokenStream stream_NAMESPACE=new RewriteRuleTokenStream(adaptor,"token NAMESPACE");
+        RewriteRuleTokenStream stream_DEFAULT=new RewriteRuleTokenStream(adaptor,"token DEFAULT");
+        RewriteRuleTokenStream stream_ASSIGN=new RewriteRuleTokenStream(adaptor,"token ASSIGN");
+        RewriteRuleSubtreeStream stream_semic=new RewriteRuleSubtreeStream(adaptor,"rule semic");
         try {
-            // JS.g:1146:3: ( DEFAULT WXML NAMESPACE ASSIGN StringLiteral semic )
-            // JS.g:1146:5: DEFAULT WXML NAMESPACE ASSIGN StringLiteral semic
+            // 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
             {
-            root_0 = (Object)adaptor.nil();
-
             DEFAULT88=(Token)input.LT(1);
-            match(input,DEFAULT,FOLLOW_DEFAULT_in_namespaceStatement4182); 
-            DEFAULT88_tree = (Object)adaptor.create(DEFAULT88);
-            adaptor.addChild(root_0, DEFAULT88_tree);
+            match(input,DEFAULT,FOLLOW_DEFAULT_in_namespaceStatement4208); 
+            stream_DEFAULT.add(DEFAULT88);
 
             WXML89=(Token)input.LT(1);
-            match(input,WXML,FOLLOW_WXML_in_namespaceStatement4184); 
-            WXML89_tree = (Object)adaptor.create(WXML89);
-            adaptor.addChild(root_0, WXML89_tree);
+            match(input,WXML,FOLLOW_WXML_in_namespaceStatement4210); 
+            stream_WXML.add(WXML89);
 
             NAMESPACE90=(Token)input.LT(1);
-            match(input,NAMESPACE,FOLLOW_NAMESPACE_in_namespaceStatement4186); 
-            NAMESPACE90_tree = (Object)adaptor.create(NAMESPACE90);
-            root_0 = (Object)adaptor.becomeRoot(NAMESPACE90_tree, root_0);
+            match(input,NAMESPACE,FOLLOW_NAMESPACE_in_namespaceStatement4212); 
+            stream_NAMESPACE.add(NAMESPACE90);
 
             ASSIGN91=(Token)input.LT(1);
-            match(input,ASSIGN,FOLLOW_ASSIGN_in_namespaceStatement4189); 
-            ASSIGN91_tree = (Object)adaptor.create(ASSIGN91);
-            adaptor.addChild(root_0, ASSIGN91_tree);
+            match(input,ASSIGN,FOLLOW_ASSIGN_in_namespaceStatement4214); 
+            stream_ASSIGN.add(ASSIGN91);
 
             StringLiteral92=(Token)input.LT(1);
-            match(input,StringLiteral,FOLLOW_StringLiteral_in_namespaceStatement4191); 
-            StringLiteral92_tree = (Object)adaptor.create(StringLiteral92);
-            adaptor.addChild(root_0, StringLiteral92_tree);
+            match(input,StringLiteral,FOLLOW_StringLiteral_in_namespaceStatement4216); 
+            stream_StringLiteral.add(StringLiteral92);
 
-            pushFollow(FOLLOW_semic_in_namespaceStatement4193);
+            pushFollow(FOLLOW_semic_in_namespaceStatement4218);
             semic93=semic();
             _fsp--;
 
+            stream_semic.add(semic93.getTree());
+
+            // AST REWRITE
+            // elements: StringLiteral, DEFAULT, ASSIGN, WXML
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            retval.tree = root_0;
+            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 )
+            {
+                // JS.g:1156: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);
+
+                adaptor.addChild(root_1, stream_DEFAULT.next());
+                adaptor.addChild(root_1, stream_WXML.next());
+                adaptor.addChild(root_1, stream_ASSIGN.next());
+                adaptor.addChild(root_1, stream_StringLiteral.next());
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+
 
             }
 
@@ -3772,7 +3806,7 @@
     };
 
     // $ANTLR start multiplicativeExpression
-    // JS.g:1151:1: multiplicativeExpression : unaryExpression ( ( MUL | DIV | MOD ) unaryExpression )* ;
+    // JS.g:1161: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);
@@ -3788,17 +3822,17 @@
         Object set95_tree=null;
 
         try {
-            // JS.g:1152:2: ( unaryExpression ( ( MUL | DIV | MOD ) unaryExpression )* )
-            // JS.g:1152:4: unaryExpression ( ( MUL | DIV | MOD ) unaryExpression )*
+            // JS.g:1162:2: ( unaryExpression ( ( MUL | DIV | MOD ) unaryExpression )* )
+            // JS.g:1162:4: unaryExpression ( ( MUL | DIV | MOD ) unaryExpression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_unaryExpression_in_multiplicativeExpression4208);
+            pushFollow(FOLLOW_unaryExpression_in_multiplicativeExpression4250);
             unaryExpression94=unaryExpression();
             _fsp--;
 
             adaptor.addChild(root_0, unaryExpression94.getTree());
-            // JS.g:1152:20: ( ( MUL | DIV | MOD ) unaryExpression )*
+            // JS.g:1162:20: ( ( MUL | DIV | MOD ) unaryExpression )*
             loop21:
             do {
                 int alt21=2;
@@ -3811,7 +3845,7 @@
 
                 switch (alt21) {
             	case 1 :
-            	    // JS.g:1152:22: ( MUL | DIV | MOD ) unaryExpression
+            	    // JS.g:1162:22: ( MUL | DIV | MOD ) unaryExpression
             	    {
             	    set95=(Token)input.LT(1);
             	    if ( (input.LA(1)>=MUL && input.LA(1)<=MOD)||input.LA(1)==DIV ) {
@@ -3822,10 +3856,10 @@
             	    else {
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_multiplicativeExpression4212);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_multiplicativeExpression4254);    throw mse;
             	    }
 
-            	    pushFollow(FOLLOW_unaryExpression_in_multiplicativeExpression4227);
+            	    pushFollow(FOLLOW_unaryExpression_in_multiplicativeExpression4269);
             	    unaryExpression96=unaryExpression();
             	    _fsp--;
 
@@ -3864,7 +3898,7 @@
     };
 
     // $ANTLR start additiveExpression
-    // JS.g:1159:1: additiveExpression : multiplicativeExpression ( ( ADD | SUB ) multiplicativeExpression )* ;
+    // JS.g:1169:1: additiveExpression : multiplicativeExpression ( ( ADD | SUB ) multiplicativeExpression )* ;
     public final additiveExpression_return additiveExpression() throws RecognitionException {
         additiveExpression_return retval = new additiveExpression_return();
         retval.start = input.LT(1);
@@ -3880,17 +3914,17 @@
         Object set98_tree=null;
 
         try {
-            // JS.g:1160:2: ( multiplicativeExpression ( ( ADD | SUB ) multiplicativeExpression )* )
-            // JS.g:1160:4: multiplicativeExpression ( ( ADD | SUB ) multiplicativeExpression )*
+            // JS.g:1170:2: ( multiplicativeExpression ( ( ADD | SUB ) multiplicativeExpression )* )
+            // JS.g:1170:4: multiplicativeExpression ( ( ADD | SUB ) multiplicativeExpression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_multiplicativeExpression_in_additiveExpression4245);
+            pushFollow(FOLLOW_multiplicativeExpression_in_additiveExpression4287);
             multiplicativeExpression97=multiplicativeExpression();
             _fsp--;
 
             adaptor.addChild(root_0, multiplicativeExpression97.getTree());
-            // JS.g:1160:29: ( ( ADD | SUB ) multiplicativeExpression )*
+            // JS.g:1170:29: ( ( ADD | SUB ) multiplicativeExpression )*
             loop22:
             do {
                 int alt22=2;
@@ -3903,7 +3937,7 @@
 
                 switch (alt22) {
             	case 1 :
-            	    // JS.g:1160:31: ( ADD | SUB ) multiplicativeExpression
+            	    // JS.g:1170:31: ( ADD | SUB ) multiplicativeExpression
             	    {
             	    set98=(Token)input.LT(1);
             	    if ( (input.LA(1)>=ADD && input.LA(1)<=SUB) ) {
@@ -3914,10 +3948,10 @@
             	    else {
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_additiveExpression4249);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_additiveExpression4291);    throw mse;
             	    }
 
-            	    pushFollow(FOLLOW_multiplicativeExpression_in_additiveExpression4260);
+            	    pushFollow(FOLLOW_multiplicativeExpression_in_additiveExpression4302);
             	    multiplicativeExpression99=multiplicativeExpression();
             	    _fsp--;
 
@@ -3956,7 +3990,7 @@
     };
 
     // $ANTLR start shiftExpression
-    // JS.g:1167:1: shiftExpression : additiveExpression ( ( SHL | SHR | SHU ) additiveExpression )* ;
+    // JS.g:1177: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);
@@ -3972,17 +4006,17 @@
         Object set101_tree=null;
 
         try {
-            // JS.g:1168:2: ( additiveExpression ( ( SHL | SHR | SHU ) additiveExpression )* )
-            // JS.g:1168:4: additiveExpression ( ( SHL | SHR | SHU ) additiveExpression )*
+            // JS.g:1178:2: ( additiveExpression ( ( SHL | SHR | SHU ) additiveExpression )* )
+            // JS.g:1178:4: additiveExpression ( ( SHL | SHR | SHU ) additiveExpression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_additiveExpression_in_shiftExpression4279);
+            pushFollow(FOLLOW_additiveExpression_in_shiftExpression4321);
             additiveExpression100=additiveExpression();
             _fsp--;
 
             adaptor.addChild(root_0, additiveExpression100.getTree());
-            // JS.g:1168:23: ( ( SHL | SHR | SHU ) additiveExpression )*
+            // JS.g:1178:23: ( ( SHL | SHR | SHU ) additiveExpression )*
             loop23:
             do {
                 int alt23=2;
@@ -3995,7 +4029,7 @@
 
                 switch (alt23) {
             	case 1 :
-            	    // JS.g:1168:25: ( SHL | SHR | SHU ) additiveExpression
+            	    // JS.g:1178:25: ( SHL | SHR | SHU ) additiveExpression
             	    {
             	    set101=(Token)input.LT(1);
             	    if ( (input.LA(1)>=SHL && input.LA(1)<=SHU) ) {
@@ -4006,10 +4040,10 @@
             	    else {
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_shiftExpression4283);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_shiftExpression4325);    throw mse;
             	    }
 
-            	    pushFollow(FOLLOW_additiveExpression_in_shiftExpression4298);
+            	    pushFollow(FOLLOW_additiveExpression_in_shiftExpression4340);
             	    additiveExpression102=additiveExpression();
             	    _fsp--;
 
@@ -4048,7 +4082,7 @@
     };
 
     // $ANTLR start relationalExpression
-    // JS.g:1175:1: relationalExpression : shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF | IN ) shiftExpression )* ;
+    // JS.g:1185: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);
@@ -4064,17 +4098,17 @@
         Object set104_tree=null;
 
         try {
-            // JS.g:1176:2: ( shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF | IN ) shiftExpression )* )
-            // JS.g:1176:4: shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF | IN ) shiftExpression )*
+            // JS.g:1186:2: ( shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF | IN ) shiftExpression )* )
+            // JS.g:1186:4: shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF | IN ) shiftExpression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_shiftExpression_in_relationalExpression4317);
+            pushFollow(FOLLOW_shiftExpression_in_relationalExpression4359);
             shiftExpression103=shiftExpression();
             _fsp--;
 
             adaptor.addChild(root_0, shiftExpression103.getTree());
-            // JS.g:1176:20: ( ( LT | GT | LTE | GTE | INSTANCEOF | IN ) shiftExpression )*
+            // JS.g:1186:20: ( ( LT | GT | LTE | GTE | INSTANCEOF | IN ) shiftExpression )*
             loop24:
             do {
                 int alt24=2;
@@ -4090,7 +4124,7 @@
 
                 switch (alt24) {
             	case 1 :
-            	    // JS.g:1176:22: ( LT | GT | LTE | GTE | INSTANCEOF | IN ) shiftExpression
+            	    // JS.g:1186: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) ) {
@@ -4101,10 +4135,10 @@
             	    else {
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_relationalExpression4321);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_relationalExpression4363);    throw mse;
             	    }
 
-            	    pushFollow(FOLLOW_shiftExpression_in_relationalExpression4348);
+            	    pushFollow(FOLLOW_shiftExpression_in_relationalExpression4390);
             	    shiftExpression105=shiftExpression();
             	    _fsp--;
 
@@ -4143,7 +4177,7 @@
     };
 
     // $ANTLR start relationalExpressionNoIn
-    // JS.g:1179:1: relationalExpressionNoIn : shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF ) shiftExpression )* ;
+    // JS.g:1189: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);
@@ -4159,17 +4193,17 @@
         Object set107_tree=null;
 
         try {
-            // JS.g:1180:2: ( shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF ) shiftExpression )* )
-            // JS.g:1180:4: shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF ) shiftExpression )*
+            // JS.g:1190:2: ( shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF ) shiftExpression )* )
+            // JS.g:1190:4: shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF ) shiftExpression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_shiftExpression_in_relationalExpressionNoIn4362);
+            pushFollow(FOLLOW_shiftExpression_in_relationalExpressionNoIn4404);
             shiftExpression106=shiftExpression();
             _fsp--;
 
             adaptor.addChild(root_0, shiftExpression106.getTree());
-            // JS.g:1180:20: ( ( LT | GT | LTE | GTE | INSTANCEOF ) shiftExpression )*
+            // JS.g:1190:20: ( ( LT | GT | LTE | GTE | INSTANCEOF ) shiftExpression )*
             loop25:
             do {
                 int alt25=2;
@@ -4182,7 +4216,7 @@
 
                 switch (alt25) {
             	case 1 :
-            	    // JS.g:1180:22: ( LT | GT | LTE | GTE | INSTANCEOF ) shiftExpression
+            	    // JS.g:1190: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) ) {
@@ -4193,10 +4227,10 @@
             	    else {
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_relationalExpressionNoIn4366);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_relationalExpressionNoIn4408);    throw mse;
             	    }
 
-            	    pushFollow(FOLLOW_shiftExpression_in_relationalExpressionNoIn4389);
+            	    pushFollow(FOLLOW_shiftExpression_in_relationalExpressionNoIn4431);
             	    shiftExpression108=shiftExpression();
             	    _fsp--;
 
@@ -4235,7 +4269,7 @@
     };
 
     // $ANTLR start equalityExpression
-    // JS.g:1187:1: equalityExpression : relationalExpression ( ( EQ | NEQ | SAME | NSAME ) relationalExpression )* ;
+    // JS.g:1197: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);
@@ -4251,17 +4285,17 @@
         Object set110_tree=null;
 
         try {
-            // JS.g:1188:2: ( relationalExpression ( ( EQ | NEQ | SAME | NSAME ) relationalExpression )* )
-            // JS.g:1188:4: relationalExpression ( ( EQ | NEQ | SAME | NSAME ) relationalExpression )*
+            // JS.g:1198:2: ( relationalExpression ( ( EQ | NEQ | SAME | NSAME ) relationalExpression )* )
+            // JS.g:1198:4: relationalExpression ( ( EQ | NEQ | SAME | NSAME ) relationalExpression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_relationalExpression_in_equalityExpression4408);
+            pushFollow(FOLLOW_relationalExpression_in_equalityExpression4450);
             relationalExpression109=relationalExpression();
             _fsp--;
 
             adaptor.addChild(root_0, relationalExpression109.getTree());
-            // JS.g:1188:25: ( ( EQ | NEQ | SAME | NSAME ) relationalExpression )*
+            // JS.g:1198:25: ( ( EQ | NEQ | SAME | NSAME ) relationalExpression )*
             loop26:
             do {
                 int alt26=2;
@@ -4274,7 +4308,7 @@
 
                 switch (alt26) {
             	case 1 :
-            	    // JS.g:1188:27: ( EQ | NEQ | SAME | NSAME ) relationalExpression
+            	    // JS.g:1198:27: ( EQ | NEQ | SAME | NSAME ) relationalExpression
             	    {
             	    set110=(Token)input.LT(1);
             	    if ( (input.LA(1)>=EQ && input.LA(1)<=NSAME) ) {
@@ -4285,10 +4319,10 @@
             	    else {
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_equalityExpression4412);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_equalityExpression4454);    throw mse;
             	    }
 
-            	    pushFollow(FOLLOW_relationalExpression_in_equalityExpression4431);
+            	    pushFollow(FOLLOW_relationalExpression_in_equalityExpression4473);
             	    relationalExpression111=relationalExpression();
             	    _fsp--;
 
@@ -4327,7 +4361,7 @@
     };
 
     // $ANTLR start equalityExpressionNoIn
-    // JS.g:1191:1: equalityExpressionNoIn : relationalExpressionNoIn ( ( EQ | NEQ | SAME | NSAME ) relationalExpressionNoIn )* ;
+    // JS.g:1201: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);
@@ -4343,17 +4377,17 @@
         Object set113_tree=null;
 
         try {
-            // JS.g:1192:2: ( relationalExpressionNoIn ( ( EQ | NEQ | SAME | NSAME ) relationalExpressionNoIn )* )
-            // JS.g:1192:4: relationalExpressionNoIn ( ( EQ | NEQ | SAME | NSAME ) relationalExpressionNoIn )*
+            // JS.g:1202:2: ( relationalExpressionNoIn ( ( EQ | NEQ | SAME | NSAME ) relationalExpressionNoIn )* )
+            // JS.g:1202:4: relationalExpressionNoIn ( ( EQ | NEQ | SAME | NSAME ) relationalExpressionNoIn )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_relationalExpressionNoIn_in_equalityExpressionNoIn4445);
+            pushFollow(FOLLOW_relationalExpressionNoIn_in_equalityExpressionNoIn4487);
             relationalExpressionNoIn112=relationalExpressionNoIn();
             _fsp--;
 
             adaptor.addChild(root_0, relationalExpressionNoIn112.getTree());
-            // JS.g:1192:29: ( ( EQ | NEQ | SAME | NSAME ) relationalExpressionNoIn )*
+            // JS.g:1202:29: ( ( EQ | NEQ | SAME | NSAME ) relationalExpressionNoIn )*
             loop27:
             do {
                 int alt27=2;
@@ -4366,7 +4400,7 @@
 
                 switch (alt27) {
             	case 1 :
-            	    // JS.g:1192:31: ( EQ | NEQ | SAME | NSAME ) relationalExpressionNoIn
+            	    // JS.g:1202:31: ( EQ | NEQ | SAME | NSAME ) relationalExpressionNoIn
             	    {
             	    set113=(Token)input.LT(1);
             	    if ( (input.LA(1)>=EQ && input.LA(1)<=NSAME) ) {
@@ -4377,10 +4411,10 @@
             	    else {
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_equalityExpressionNoIn4449);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_equalityExpressionNoIn4491);    throw mse;
             	    }
 
-            	    pushFollow(FOLLOW_relationalExpressionNoIn_in_equalityExpressionNoIn4468);
+            	    pushFollow(FOLLOW_relationalExpressionNoIn_in_equalityExpressionNoIn4510);
             	    relationalExpressionNoIn114=relationalExpressionNoIn();
             	    _fsp--;
 
@@ -4419,7 +4453,7 @@
     };
 
     // $ANTLR start bitwiseANDExpression
-    // JS.g:1199:1: bitwiseANDExpression : equalityExpression ( AND equalityExpression )* ;
+    // JS.g:1209:1: bitwiseANDExpression : equalityExpression ( AND equalityExpression )* ;
     public final bitwiseANDExpression_return bitwiseANDExpression() throws RecognitionException {
         bitwiseANDExpression_return retval = new bitwiseANDExpression_return();
         retval.start = input.LT(1);
@@ -4435,17 +4469,17 @@
         Object AND116_tree=null;
 
         try {
-            // JS.g:1200:2: ( equalityExpression ( AND equalityExpression )* )
-            // JS.g:1200:4: equalityExpression ( AND equalityExpression )*
+            // JS.g:1210:2: ( equalityExpression ( AND equalityExpression )* )
+            // JS.g:1210:4: equalityExpression ( AND equalityExpression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_equalityExpression_in_bitwiseANDExpression4488);
+            pushFollow(FOLLOW_equalityExpression_in_bitwiseANDExpression4530);
             equalityExpression115=equalityExpression();
             _fsp--;
 
             adaptor.addChild(root_0, equalityExpression115.getTree());
-            // JS.g:1200:23: ( AND equalityExpression )*
+            // JS.g:1210:23: ( AND equalityExpression )*
             loop28:
             do {
                 int alt28=2;
@@ -4458,14 +4492,14 @@
 
                 switch (alt28) {
             	case 1 :
-            	    // JS.g:1200:25: AND equalityExpression
+            	    // JS.g:1210:25: AND equalityExpression
             	    {
             	    AND116=(Token)input.LT(1);
-            	    match(input,AND,FOLLOW_AND_in_bitwiseANDExpression4492); 
+            	    match(input,AND,FOLLOW_AND_in_bitwiseANDExpression4534); 
             	    AND116_tree = (Object)adaptor.create(AND116);
             	    root_0 = (Object)adaptor.becomeRoot(AND116_tree, root_0);
 
-            	    pushFollow(FOLLOW_equalityExpression_in_bitwiseANDExpression4495);
+            	    pushFollow(FOLLOW_equalityExpression_in_bitwiseANDExpression4537);
             	    equalityExpression117=equalityExpression();
             	    _fsp--;
 
@@ -4504,7 +4538,7 @@
     };
 
     // $ANTLR start bitwiseANDExpressionNoIn
-    // JS.g:1203:1: bitwiseANDExpressionNoIn : equalityExpressionNoIn ( AND equalityExpressionNoIn )* ;
+    // JS.g:1213:1: bitwiseANDExpressionNoIn : equalityExpressionNoIn ( AND equalityExpressionNoIn )* ;
     public final bitwiseANDExpressionNoIn_return bitwiseANDExpressionNoIn() throws RecognitionException {
         bitwiseANDExpressionNoIn_return retval = new bitwiseANDExpressionNoIn_return();
         retval.start = input.LT(1);
@@ -4520,17 +4554,17 @@
         Object AND119_tree=null;
 
         try {
-            // JS.g:1204:2: ( equalityExpressionNoIn ( AND equalityExpressionNoIn )* )
-            // JS.g:1204:4: equalityExpressionNoIn ( AND equalityExpressionNoIn )*
+            // JS.g:1214:2: ( equalityExpressionNoIn ( AND equalityExpressionNoIn )* )
+            // JS.g:1214:4: equalityExpressionNoIn ( AND equalityExpressionNoIn )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_equalityExpressionNoIn_in_bitwiseANDExpressionNoIn4509);
+            pushFollow(FOLLOW_equalityExpressionNoIn_in_bitwiseANDExpressionNoIn4551);
             equalityExpressionNoIn118=equalityExpressionNoIn();
             _fsp--;
 
             adaptor.addChild(root_0, equalityExpressionNoIn118.getTree());
-            // JS.g:1204:27: ( AND equalityExpressionNoIn )*
+            // JS.g:1214:27: ( AND equalityExpressionNoIn )*
             loop29:
             do {
                 int alt29=2;
@@ -4543,14 +4577,14 @@
 
                 switch (alt29) {
             	case 1 :
-            	    // JS.g:1204:29: AND equalityExpressionNoIn
+            	    // JS.g:1214:29: AND equalityExpressionNoIn
             	    {
             	    AND119=(Token)input.LT(1);
-            	    match(input,AND,FOLLOW_AND_in_bitwiseANDExpressionNoIn4513); 
+            	    match(input,AND,FOLLOW_AND_in_bitwiseANDExpressionNoIn4555); 
             	    AND119_tree = (Object)adaptor.create(AND119);
             	    root_0 = (Object)adaptor.becomeRoot(AND119_tree, root_0);
 
-            	    pushFollow(FOLLOW_equalityExpressionNoIn_in_bitwiseANDExpressionNoIn4516);
+            	    pushFollow(FOLLOW_equalityExpressionNoIn_in_bitwiseANDExpressionNoIn4558);
             	    equalityExpressionNoIn120=equalityExpressionNoIn();
             	    _fsp--;
 
@@ -4589,7 +4623,7 @@
     };
 
     // $ANTLR start bitwiseXORExpression
-    // JS.g:1207:1: bitwiseXORExpression : bitwiseANDExpression ( XOR bitwiseANDExpression )* ;
+    // JS.g:1217:1: bitwiseXORExpression : bitwiseANDExpression ( XOR bitwiseANDExpression )* ;
     public final bitwiseXORExpression_return bitwiseXORExpression() throws RecognitionException {
         bitwiseXORExpression_return retval = new bitwiseXORExpression_return();
         retval.start = input.LT(1);
@@ -4605,17 +4639,17 @@
         Object XOR122_tree=null;
 
         try {
-            // JS.g:1208:2: ( bitwiseANDExpression ( XOR bitwiseANDExpression )* )
-            // JS.g:1208:4: bitwiseANDExpression ( XOR bitwiseANDExpression )*
+            // JS.g:1218:2: ( bitwiseANDExpression ( XOR bitwiseANDExpression )* )
+            // JS.g:1218:4: bitwiseANDExpression ( XOR bitwiseANDExpression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_bitwiseANDExpression_in_bitwiseXORExpression4532);
+            pushFollow(FOLLOW_bitwiseANDExpression_in_bitwiseXORExpression4574);
             bitwiseANDExpression121=bitwiseANDExpression();
             _fsp--;
 
             adaptor.addChild(root_0, bitwiseANDExpression121.getTree());
-            // JS.g:1208:25: ( XOR bitwiseANDExpression )*
+            // JS.g:1218:25: ( XOR bitwiseANDExpression )*
             loop30:
             do {
                 int alt30=2;
@@ -4628,14 +4662,14 @@
 
                 switch (alt30) {
             	case 1 :
-            	    // JS.g:1208:27: XOR bitwiseANDExpression
+            	    // JS.g:1218:27: XOR bitwiseANDExpression
             	    {
             	    XOR122=(Token)input.LT(1);
-            	    match(input,XOR,FOLLOW_XOR_in_bitwiseXORExpression4536); 
+            	    match(input,XOR,FOLLOW_XOR_in_bitwiseXORExpression4578); 
             	    XOR122_tree = (Object)adaptor.create(XOR122);
             	    root_0 = (Object)adaptor.becomeRoot(XOR122_tree, root_0);
 
-            	    pushFollow(FOLLOW_bitwiseANDExpression_in_bitwiseXORExpression4539);
+            	    pushFollow(FOLLOW_bitwiseANDExpression_in_bitwiseXORExpression4581);
             	    bitwiseANDExpression123=bitwiseANDExpression();
             	    _fsp--;
 
@@ -4674,7 +4708,7 @@
     };
 
     // $ANTLR start bitwiseXORExpressionNoIn
-    // JS.g:1211:1: bitwiseXORExpressionNoIn : bitwiseANDExpressionNoIn ( XOR bitwiseANDExpressionNoIn )* ;
+    // JS.g:1221:1: bitwiseXORExpressionNoIn : bitwiseANDExpressionNoIn ( XOR bitwiseANDExpressionNoIn )* ;
     public final bitwiseXORExpressionNoIn_return bitwiseXORExpressionNoIn() throws RecognitionException {
         bitwiseXORExpressionNoIn_return retval = new bitwiseXORExpressionNoIn_return();
         retval.start = input.LT(1);
@@ -4690,17 +4724,17 @@
         Object XOR125_tree=null;
 
         try {
-            // JS.g:1212:2: ( bitwiseANDExpressionNoIn ( XOR bitwiseANDExpressionNoIn )* )
-            // JS.g:1212:4: bitwiseANDExpressionNoIn ( XOR bitwiseANDExpressionNoIn )*
+            // JS.g:1222:2: ( bitwiseANDExpressionNoIn ( XOR bitwiseANDExpressionNoIn )* )
+            // JS.g:1222:4: bitwiseANDExpressionNoIn ( XOR bitwiseANDExpressionNoIn )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_bitwiseANDExpressionNoIn_in_bitwiseXORExpressionNoIn4555);
+            pushFollow(FOLLOW_bitwiseANDExpressionNoIn_in_bitwiseXORExpressionNoIn4597);
             bitwiseANDExpressionNoIn124=bitwiseANDExpressionNoIn();
             _fsp--;
 
             adaptor.addChild(root_0, bitwiseANDExpressionNoIn124.getTree());
-            // JS.g:1212:29: ( XOR bitwiseANDExpressionNoIn )*
+            // JS.g:1222:29: ( XOR bitwiseANDExpressionNoIn )*
             loop31:
             do {
                 int alt31=2;
@@ -4713,14 +4747,14 @@
 
                 switch (alt31) {
             	case 1 :
-            	    // JS.g:1212:31: XOR bitwiseANDExpressionNoIn
+            	    // JS.g:1222:31: XOR bitwiseANDExpressionNoIn
             	    {
             	    XOR125=(Token)input.LT(1);
-            	    match(input,XOR,FOLLOW_XOR_in_bitwiseXORExpressionNoIn4559); 
+            	    match(input,XOR,FOLLOW_XOR_in_bitwiseXORExpressionNoIn4601); 
             	    XOR125_tree = (Object)adaptor.create(XOR125);
             	    root_0 = (Object)adaptor.becomeRoot(XOR125_tree, root_0);
 
-            	    pushFollow(FOLLOW_bitwiseANDExpressionNoIn_in_bitwiseXORExpressionNoIn4562);
+            	    pushFollow(FOLLOW_bitwiseANDExpressionNoIn_in_bitwiseXORExpressionNoIn4604);
             	    bitwiseANDExpressionNoIn126=bitwiseANDExpressionNoIn();
             	    _fsp--;
 
@@ -4759,7 +4793,7 @@
     };
 
     // $ANTLR start bitwiseORExpression
-    // JS.g:1215:1: bitwiseORExpression : bitwiseXORExpression ( OR bitwiseXORExpression )* ;
+    // JS.g:1225:1: bitwiseORExpression : bitwiseXORExpression ( OR bitwiseXORExpression )* ;
     public final bitwiseORExpression_return bitwiseORExpression() throws RecognitionException {
         bitwiseORExpression_return retval = new bitwiseORExpression_return();
         retval.start = input.LT(1);
@@ -4775,17 +4809,17 @@
         Object OR128_tree=null;
 
         try {
-            // JS.g:1216:2: ( bitwiseXORExpression ( OR bitwiseXORExpression )* )
-            // JS.g:1216:4: bitwiseXORExpression ( OR bitwiseXORExpression )*
+            // JS.g:1226:2: ( bitwiseXORExpression ( OR bitwiseXORExpression )* )
+            // JS.g:1226:4: bitwiseXORExpression ( OR bitwiseXORExpression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_bitwiseXORExpression_in_bitwiseORExpression4577);
+            pushFollow(FOLLOW_bitwiseXORExpression_in_bitwiseORExpression4619);
             bitwiseXORExpression127=bitwiseXORExpression();
             _fsp--;
 
             adaptor.addChild(root_0, bitwiseXORExpression127.getTree());
-            // JS.g:1216:25: ( OR bitwiseXORExpression )*
+            // JS.g:1226:25: ( OR bitwiseXORExpression )*
             loop32:
             do {
                 int alt32=2;
@@ -4798,14 +4832,14 @@
 
                 switch (alt32) {
             	case 1 :
-            	    // JS.g:1216:27: OR bitwiseXORExpression
+            	    // JS.g:1226:27: OR bitwiseXORExpression
             	    {
             	    OR128=(Token)input.LT(1);
-            	    match(input,OR,FOLLOW_OR_in_bitwiseORExpression4581); 
+            	    match(input,OR,FOLLOW_OR_in_bitwiseORExpression4623); 
             	    OR128_tree = (Object)adaptor.create(OR128);
             	    root_0 = (Object)adaptor.becomeRoot(OR128_tree, root_0);
 
-            	    pushFollow(FOLLOW_bitwiseXORExpression_in_bitwiseORExpression4584);
+            	    pushFollow(FOLLOW_bitwiseXORExpression_in_bitwiseORExpression4626);
             	    bitwiseXORExpression129=bitwiseXORExpression();
             	    _fsp--;
 
@@ -4844,7 +4878,7 @@
     };
 
     // $ANTLR start bitwiseORExpressionNoIn
-    // JS.g:1219:1: bitwiseORExpressionNoIn : bitwiseXORExpressionNoIn ( OR bitwiseXORExpressionNoIn )* ;
+    // JS.g:1229:1: bitwiseORExpressionNoIn : bitwiseXORExpressionNoIn ( OR bitwiseXORExpressionNoIn )* ;
     public final bitwiseORExpressionNoIn_return bitwiseORExpressionNoIn() throws RecognitionException {
         bitwiseORExpressionNoIn_return retval = new bitwiseORExpressionNoIn_return();
         retval.start = input.LT(1);
@@ -4860,17 +4894,17 @@
         Object OR131_tree=null;
 
         try {
-            // JS.g:1220:2: ( bitwiseXORExpressionNoIn ( OR bitwiseXORExpressionNoIn )* )
-            // JS.g:1220:4: bitwiseXORExpressionNoIn ( OR bitwiseXORExpressionNoIn )*
+            // JS.g:1230:2: ( bitwiseXORExpressionNoIn ( OR bitwiseXORExpressionNoIn )* )
+            // JS.g:1230:4: bitwiseXORExpressionNoIn ( OR bitwiseXORExpressionNoIn )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_bitwiseXORExpressionNoIn_in_bitwiseORExpressionNoIn4599);
+            pushFollow(FOLLOW_bitwiseXORExpressionNoIn_in_bitwiseORExpressionNoIn4641);
             bitwiseXORExpressionNoIn130=bitwiseXORExpressionNoIn();
             _fsp--;
 
             adaptor.addChild(root_0, bitwiseXORExpressionNoIn130.getTree());
-            // JS.g:1220:29: ( OR bitwiseXORExpressionNoIn )*
+            // JS.g:1230:29: ( OR bitwiseXORExpressionNoIn )*
             loop33:
             do {
                 int alt33=2;
@@ -4883,14 +4917,14 @@
 
                 switch (alt33) {
             	case 1 :
-            	    // JS.g:1220:31: OR bitwiseXORExpressionNoIn
+            	    // JS.g:1230:31: OR bitwiseXORExpressionNoIn
             	    {
             	    OR131=(Token)input.LT(1);
-            	    match(input,OR,FOLLOW_OR_in_bitwiseORExpressionNoIn4603); 
+            	    match(input,OR,FOLLOW_OR_in_bitwiseORExpressionNoIn4645); 
             	    OR131_tree = (Object)adaptor.create(OR131);
             	    root_0 = (Object)adaptor.becomeRoot(OR131_tree, root_0);
 
-            	    pushFollow(FOLLOW_bitwiseXORExpressionNoIn_in_bitwiseORExpressionNoIn4606);
+            	    pushFollow(FOLLOW_bitwiseXORExpressionNoIn_in_bitwiseORExpressionNoIn4648);
             	    bitwiseXORExpressionNoIn132=bitwiseXORExpressionNoIn();
             	    _fsp--;
 
@@ -4929,7 +4963,7 @@
     };
 
     // $ANTLR start logicalANDExpression
-    // JS.g:1227:1: logicalANDExpression : bitwiseORExpression ( LAND bitwiseORExpression )* ;
+    // JS.g:1237:1: logicalANDExpression : bitwiseORExpression ( LAND bitwiseORExpression )* ;
     public final logicalANDExpression_return logicalANDExpression() throws RecognitionException {
         logicalANDExpression_return retval = new logicalANDExpression_return();
         retval.start = input.LT(1);
@@ -4945,17 +4979,17 @@
         Object LAND134_tree=null;
 
         try {
-            // JS.g:1228:2: ( bitwiseORExpression ( LAND bitwiseORExpression )* )
-            // JS.g:1228:4: bitwiseORExpression ( LAND bitwiseORExpression )*
+            // JS.g:1238:2: ( bitwiseORExpression ( LAND bitwiseORExpression )* )
+            // JS.g:1238:4: bitwiseORExpression ( LAND bitwiseORExpression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_bitwiseORExpression_in_logicalANDExpression4625);
+            pushFollow(FOLLOW_bitwiseORExpression_in_logicalANDExpression4667);
             bitwiseORExpression133=bitwiseORExpression();
             _fsp--;
 
             adaptor.addChild(root_0, bitwiseORExpression133.getTree());
-            // JS.g:1228:24: ( LAND bitwiseORExpression )*
+            // JS.g:1238:24: ( LAND bitwiseORExpression )*
             loop34:
             do {
                 int alt34=2;
@@ -4968,14 +5002,14 @@
 
                 switch (alt34) {
             	case 1 :
-            	    // JS.g:1228:26: LAND bitwiseORExpression
+            	    // JS.g:1238:26: LAND bitwiseORExpression
             	    {
             	    LAND134=(Token)input.LT(1);
-            	    match(input,LAND,FOLLOW_LAND_in_logicalANDExpression4629); 
+            	    match(input,LAND,FOLLOW_LAND_in_logicalANDExpression4671); 
             	    LAND134_tree = (Object)adaptor.create(LAND134);
             	    root_0 = (Object)adaptor.becomeRoot(LAND134_tree, root_0);
 
-            	    pushFollow(FOLLOW_bitwiseORExpression_in_logicalANDExpression4632);
+            	    pushFollow(FOLLOW_bitwiseORExpression_in_logicalANDExpression4674);
             	    bitwiseORExpression135=bitwiseORExpression();
             	    _fsp--;
 
@@ -5014,7 +5048,7 @@
     };
 
     // $ANTLR start logicalANDExpressionNoIn
-    // JS.g:1231:1: logicalANDExpressionNoIn : bitwiseORExpressionNoIn ( LAND bitwiseORExpressionNoIn )* ;
+    // JS.g:1241:1: logicalANDExpressionNoIn : bitwiseORExpressionNoIn ( LAND bitwiseORExpressionNoIn )* ;
     public final logicalANDExpressionNoIn_return logicalANDExpressionNoIn() throws RecognitionException {
         logicalANDExpressionNoIn_return retval = new logicalANDExpressionNoIn_return();
         retval.start = input.LT(1);
@@ -5030,17 +5064,17 @@
         Object LAND137_tree=null;
 
         try {
-            // JS.g:1232:2: ( bitwiseORExpressionNoIn ( LAND bitwiseORExpressionNoIn )* )
-            // JS.g:1232:4: bitwiseORExpressionNoIn ( LAND bitwiseORExpressionNoIn )*
+            // JS.g:1242:2: ( bitwiseORExpressionNoIn ( LAND bitwiseORExpressionNoIn )* )
+            // JS.g:1242:4: bitwiseORExpressionNoIn ( LAND bitwiseORExpressionNoIn )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_bitwiseORExpressionNoIn_in_logicalANDExpressionNoIn4646);
+            pushFollow(FOLLOW_bitwiseORExpressionNoIn_in_logicalANDExpressionNoIn4688);
             bitwiseORExpressionNoIn136=bitwiseORExpressionNoIn();
             _fsp--;
 
             adaptor.addChild(root_0, bitwiseORExpressionNoIn136.getTree());
-            // JS.g:1232:28: ( LAND bitwiseORExpressionNoIn )*
+            // JS.g:1242:28: ( LAND bitwiseORExpressionNoIn )*
             loop35:
             do {
                 int alt35=2;
@@ -5053,14 +5087,14 @@
 
                 switch (alt35) {
             	case 1 :
-            	    // JS.g:1232:30: LAND bitwiseORExpressionNoIn
+            	    // JS.g:1242:30: LAND bitwiseORExpressionNoIn
             	    {
             	    LAND137=(Token)input.LT(1);
-            	    match(input,LAND,FOLLOW_LAND_in_logicalANDExpressionNoIn4650); 
+            	    match(input,LAND,FOLLOW_LAND_in_logicalANDExpressionNoIn4692); 
             	    LAND137_tree = (Object)adaptor.create(LAND137);
             	    root_0 = (Object)adaptor.becomeRoot(LAND137_tree, root_0);
 
-            	    pushFollow(FOLLOW_bitwiseORExpressionNoIn_in_logicalANDExpressionNoIn4653);
+            	    pushFollow(FOLLOW_bitwiseORExpressionNoIn_in_logicalANDExpressionNoIn4695);
             	    bitwiseORExpressionNoIn138=bitwiseORExpressionNoIn();
             	    _fsp--;
 
@@ -5099,7 +5133,7 @@
     };
 
     // $ANTLR start logicalORExpression
-    // JS.g:1235:1: logicalORExpression : logicalANDExpression ( LOR logicalANDExpression )* ;
+    // JS.g:1245:1: logicalORExpression : logicalANDExpression ( LOR logicalANDExpression )* ;
     public final logicalORExpression_return logicalORExpression() throws RecognitionException {
         logicalORExpression_return retval = new logicalORExpression_return();
         retval.start = input.LT(1);
@@ -5115,17 +5149,17 @@
         Object LOR140_tree=null;
 
         try {
-            // JS.g:1236:2: ( logicalANDExpression ( LOR logicalANDExpression )* )
-            // JS.g:1236:4: logicalANDExpression ( LOR logicalANDExpression )*
+            // JS.g:1246:2: ( logicalANDExpression ( LOR logicalANDExpression )* )
+            // JS.g:1246:4: logicalANDExpression ( LOR logicalANDExpression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_logicalANDExpression_in_logicalORExpression4668);
+            pushFollow(FOLLOW_logicalANDExpression_in_logicalORExpression4710);
             logicalANDExpression139=logicalANDExpression();
             _fsp--;
 
             adaptor.addChild(root_0, logicalANDExpression139.getTree());
-            // JS.g:1236:25: ( LOR logicalANDExpression )*
+            // JS.g:1246:25: ( LOR logicalANDExpression )*
             loop36:
             do {
                 int alt36=2;
@@ -5138,14 +5172,14 @@
 
                 switch (alt36) {
             	case 1 :
-            	    // JS.g:1236:27: LOR logicalANDExpression
+            	    // JS.g:1246:27: LOR logicalANDExpression
             	    {
             	    LOR140=(Token)input.LT(1);
-            	    match(input,LOR,FOLLOW_LOR_in_logicalORExpression4672); 
+            	    match(input,LOR,FOLLOW_LOR_in_logicalORExpression4714); 
             	    LOR140_tree = (Object)adaptor.create(LOR140);
             	    root_0 = (Object)adaptor.becomeRoot(LOR140_tree, root_0);
 
-            	    pushFollow(FOLLOW_logicalANDExpression_in_logicalORExpression4675);
+            	    pushFollow(FOLLOW_logicalANDExpression_in_logicalORExpression4717);
             	    logicalANDExpression141=logicalANDExpression();
             	    _fsp--;
 
@@ -5184,7 +5218,7 @@
     };
 
     // $ANTLR start logicalORExpressionNoIn
-    // JS.g:1239:1: logicalORExpressionNoIn : logicalANDExpressionNoIn ( LOR logicalANDExpressionNoIn )* ;
+    // JS.g:1249:1: logicalORExpressionNoIn : logicalANDExpressionNoIn ( LOR logicalANDExpressionNoIn )* ;
     public final logicalORExpressionNoIn_return logicalORExpressionNoIn() throws RecognitionException {
         logicalORExpressionNoIn_return retval = new logicalORExpressionNoIn_return();
         retval.start = input.LT(1);
@@ -5200,17 +5234,17 @@
         Object LOR143_tree=null;
 
         try {
-            // JS.g:1240:2: ( logicalANDExpressionNoIn ( LOR logicalANDExpressionNoIn )* )
-            // JS.g:1240:4: logicalANDExpressionNoIn ( LOR logicalANDExpressionNoIn )*
+            // JS.g:1250:2: ( logicalANDExpressionNoIn ( LOR logicalANDExpressionNoIn )* )
+            // JS.g:1250:4: logicalANDExpressionNoIn ( LOR logicalANDExpressionNoIn )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_logicalANDExpressionNoIn_in_logicalORExpressionNoIn4690);
+            pushFollow(FOLLOW_logicalANDExpressionNoIn_in_logicalORExpressionNoIn4732);
             logicalANDExpressionNoIn142=logicalANDExpressionNoIn();
             _fsp--;
 
             adaptor.addChild(root_0, logicalANDExpressionNoIn142.getTree());
-            // JS.g:1240:29: ( LOR logicalANDExpressionNoIn )*
+            // JS.g:1250:29: ( LOR logicalANDExpressionNoIn )*
             loop37:
             do {
                 int alt37=2;
@@ -5223,14 +5257,14 @@
 
                 switch (alt37) {
             	case 1 :
-            	    // JS.g:1240:31: LOR logicalANDExpressionNoIn
+            	    // JS.g:1250:31: LOR logicalANDExpressionNoIn
             	    {
             	    LOR143=(Token)input.LT(1);
-            	    match(input,LOR,FOLLOW_LOR_in_logicalORExpressionNoIn4694); 
+            	    match(input,LOR,FOLLOW_LOR_in_logicalORExpressionNoIn4736); 
             	    LOR143_tree = (Object)adaptor.create(LOR143);
             	    root_0 = (Object)adaptor.becomeRoot(LOR143_tree, root_0);
 
-            	    pushFollow(FOLLOW_logicalANDExpressionNoIn_in_logicalORExpressionNoIn4697);
+            	    pushFollow(FOLLOW_logicalANDExpressionNoIn_in_logicalORExpressionNoIn4739);
             	    logicalANDExpressionNoIn144=logicalANDExpressionNoIn();
             	    _fsp--;
 
@@ -5269,7 +5303,7 @@
     };
 
     // $ANTLR start conditionalExpression
-    // JS.g:1247:1: conditionalExpression : logicalORExpression ( QUE assignmentExpression COLON assignmentExpression )? ;
+    // JS.g:1257: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);
@@ -5289,17 +5323,17 @@
         Object COLON148_tree=null;
 
         try {
-            // JS.g:1248:2: ( logicalORExpression ( QUE assignmentExpression COLON assignmentExpression )? )
-            // JS.g:1248:4: logicalORExpression ( QUE assignmentExpression COLON assignmentExpression )?
+            // JS.g:1258:2: ( logicalORExpression ( QUE assignmentExpression COLON assignmentExpression )? )
+            // JS.g:1258:4: logicalORExpression ( QUE assignmentExpression COLON assignmentExpression )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_logicalORExpression_in_conditionalExpression4716);
+            pushFollow(FOLLOW_logicalORExpression_in_conditionalExpression4758);
             logicalORExpression145=logicalORExpression();
             _fsp--;
 
             adaptor.addChild(root_0, logicalORExpression145.getTree());
-            // JS.g:1248:24: ( QUE assignmentExpression COLON assignmentExpression )?
+            // JS.g:1258:24: ( QUE assignmentExpression COLON assignmentExpression )?
             int alt38=2;
             int LA38_0 = input.LA(1);
 
@@ -5308,21 +5342,21 @@
             }
             switch (alt38) {
                 case 1 :
-                    // JS.g:1248:26: QUE assignmentExpression COLON assignmentExpression
+                    // JS.g:1258:26: QUE assignmentExpression COLON assignmentExpression
                     {
                     QUE146=(Token)input.LT(1);
-                    match(input,QUE,FOLLOW_QUE_in_conditionalExpression4720); 
+                    match(input,QUE,FOLLOW_QUE_in_conditionalExpression4762); 
                     QUE146_tree = (Object)adaptor.create(QUE146);
                     root_0 = (Object)adaptor.becomeRoot(QUE146_tree, root_0);
 
-                    pushFollow(FOLLOW_assignmentExpression_in_conditionalExpression4723);
+                    pushFollow(FOLLOW_assignmentExpression_in_conditionalExpression4765);
                     assignmentExpression147=assignmentExpression();
                     _fsp--;
 
                     adaptor.addChild(root_0, assignmentExpression147.getTree());
                     COLON148=(Token)input.LT(1);
-                    match(input,COLON,FOLLOW_COLON_in_conditionalExpression4725); 
-                    pushFollow(FOLLOW_assignmentExpression_in_conditionalExpression4728);
+                    match(input,COLON,FOLLOW_COLON_in_conditionalExpression4767); 
+                    pushFollow(FOLLOW_assignmentExpression_in_conditionalExpression4770);
                     assignmentExpression149=assignmentExpression();
                     _fsp--;
 
@@ -5358,7 +5392,7 @@
     };
 
     // $ANTLR start conditionalExpressionNoIn
-    // JS.g:1251:1: conditionalExpressionNoIn : logicalORExpressionNoIn ( QUE assignmentExpressionNoIn COLON assignmentExpressionNoIn )? ;
+    // JS.g:1261: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);
@@ -5378,17 +5412,17 @@
         Object COLON153_tree=null;
 
         try {
-            // JS.g:1252:2: ( logicalORExpressionNoIn ( QUE assignmentExpressionNoIn COLON assignmentExpressionNoIn )? )
-            // JS.g:1252:4: logicalORExpressionNoIn ( QUE assignmentExpressionNoIn COLON assignmentExpressionNoIn )?
+            // JS.g:1262:2: ( logicalORExpressionNoIn ( QUE assignmentExpressionNoIn COLON assignmentExpressionNoIn )? )
+            // JS.g:1262:4: logicalORExpressionNoIn ( QUE assignmentExpressionNoIn COLON assignmentExpressionNoIn )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_logicalORExpressionNoIn_in_conditionalExpressionNoIn4742);
+            pushFollow(FOLLOW_logicalORExpressionNoIn_in_conditionalExpressionNoIn4784);
             logicalORExpressionNoIn150=logicalORExpressionNoIn();
             _fsp--;
 
             adaptor.addChild(root_0, logicalORExpressionNoIn150.getTree());
-            // JS.g:1252:28: ( QUE assignmentExpressionNoIn COLON assignmentExpressionNoIn )?
+            // JS.g:1262:28: ( QUE assignmentExpressionNoIn COLON assignmentExpressionNoIn )?
             int alt39=2;
             int LA39_0 = input.LA(1);
 
@@ -5397,21 +5431,21 @@
             }
             switch (alt39) {
                 case 1 :
-                    // JS.g:1252:30: QUE assignmentExpressionNoIn COLON assignmentExpressionNoIn
+                    // JS.g:1262:30: QUE assignmentExpressionNoIn COLON assignmentExpressionNoIn
                     {
                     QUE151=(Token)input.LT(1);
-                    match(input,QUE,FOLLOW_QUE_in_conditionalExpressionNoIn4746); 
+                    match(input,QUE,FOLLOW_QUE_in_conditionalExpressionNoIn4788); 
                     QUE151_tree = (Object)adaptor.create(QUE151);
                     root_0 = (Object)adaptor.becomeRoot(QUE151_tree, root_0);
 
-                    pushFollow(FOLLOW_assignmentExpressionNoIn_in_conditionalExpressionNoIn4749);
+                    pushFollow(FOLLOW_assignmentExpressionNoIn_in_conditionalExpressionNoIn4791);
                     assignmentExpressionNoIn152=assignmentExpressionNoIn();
                     _fsp--;
 
                     adaptor.addChild(root_0, assignmentExpressionNoIn152.getTree());
                     COLON153=(Token)input.LT(1);
-                    match(input,COLON,FOLLOW_COLON_in_conditionalExpressionNoIn4751); 
-                    pushFollow(FOLLOW_assignmentExpressionNoIn_in_conditionalExpressionNoIn4754);
+                    match(input,COLON,FOLLOW_COLON_in_conditionalExpressionNoIn4793); 
+                    pushFollow(FOLLOW_assignmentExpressionNoIn_in_conditionalExpressionNoIn4796);
                     assignmentExpressionNoIn154=assignmentExpressionNoIn();
                     _fsp--;
 
@@ -5447,7 +5481,7 @@
     };
 
     // $ANTLR start assignmentExpression
-    // JS.g:1281:1: assignmentExpression : lhs= conditionalExpression ({...}? assignmentOperator assignmentExpression )? ;
+    // JS.g:1291:1: assignmentExpression : lhs= conditionalExpression ({...}? assignmentOperator assignmentExpression )? ;
     public final assignmentExpression_return assignmentExpression() throws RecognitionException {
         assignmentExpression_return retval = new assignmentExpression_return();
         retval.start = input.LT(1);
@@ -5466,17 +5500,17 @@
         	Object[] isLhs = new Object[1];
 
         try {
-            // JS.g:1286:2: (lhs= conditionalExpression ({...}? assignmentOperator assignmentExpression )? )
-            // JS.g:1286:4: lhs= conditionalExpression ({...}? assignmentOperator assignmentExpression )?
+            // JS.g:1296:2: (lhs= conditionalExpression ({...}? assignmentOperator assignmentExpression )? )
+            // JS.g:1296:4: lhs= conditionalExpression ({...}? assignmentOperator assignmentExpression )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_conditionalExpression_in_assignmentExpression4782);
+            pushFollow(FOLLOW_conditionalExpression_in_assignmentExpression4824);
             lhs=conditionalExpression();
             _fsp--;
 
             adaptor.addChild(root_0, lhs.getTree());
-            // JS.g:1287:2: ({...}? assignmentOperator assignmentExpression )?
+            // JS.g:1297:2: ({...}? assignmentOperator assignmentExpression )?
             int alt40=2;
             int LA40_0 = input.LA(1);
 
@@ -5489,17 +5523,17 @@
             }
             switch (alt40) {
                 case 1 :
-                    // JS.g:1287:4: {...}? assignmentOperator assignmentExpression
+                    // JS.g:1297:4: {...}? assignmentOperator assignmentExpression
                     {
                     if ( !( isLeftHandSideAssign(lhs, isLhs) ) ) {
                         throw new FailedPredicateException(input, "assignmentExpression", " isLeftHandSideAssign(lhs, isLhs) ");
                     }
-                    pushFollow(FOLLOW_assignmentOperator_in_assignmentExpression4789);
+                    pushFollow(FOLLOW_assignmentOperator_in_assignmentExpression4831);
                     assignmentOperator155=assignmentOperator();
                     _fsp--;
 
                     root_0 = (Object)adaptor.becomeRoot(assignmentOperator155.getTree(), root_0);
-                    pushFollow(FOLLOW_assignmentExpression_in_assignmentExpression4792);
+                    pushFollow(FOLLOW_assignmentExpression_in_assignmentExpression4834);
                     assignmentExpression156=assignmentExpression();
                     _fsp--;
 
@@ -5535,7 +5569,7 @@
     };
 
     // $ANTLR start assignmentOperator
-    // JS.g:1290:1: assignmentOperator : ( ASSIGN | MULASS | DIVASS | MODASS | ADDASS | SUBASS | SHLASS | SHRASS | SHUASS | ANDASS | XORASS | ORASS );
+    // JS.g:1300: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);
@@ -5547,7 +5581,7 @@
         Object set157_tree=null;
 
         try {
-            // JS.g:1291:3: ( ASSIGN | MULASS | DIVASS | MODASS | ADDASS | SUBASS | SHLASS | SHRASS | SHUASS | ANDASS | XORASS | ORASS )
+            // JS.g:1301:3: ( ASSIGN | MULASS | DIVASS | MODASS | ADDASS | SUBASS | SHLASS | SHRASS | SHUASS | ANDASS | XORASS | ORASS )
             // JS.g:
             {
             root_0 = (Object)adaptor.nil();
@@ -5589,7 +5623,7 @@
     };
 
     // $ANTLR start assignmentExpressionNoIn
-    // JS.g:1294:1: assignmentExpressionNoIn : lhs= conditionalExpressionNoIn ({...}? assignmentOperator assignmentExpressionNoIn )? ;
+    // JS.g:1304:1: assignmentExpressionNoIn : lhs= conditionalExpressionNoIn ({...}? assignmentOperator assignmentExpressionNoIn )? ;
     public final assignmentExpressionNoIn_return assignmentExpressionNoIn() throws RecognitionException {
         assignmentExpressionNoIn_return retval = new assignmentExpressionNoIn_return();
         retval.start = input.LT(1);
@@ -5608,17 +5642,17 @@
         	Object[] isLhs = new Object[1];
 
         try {
-            // JS.g:1299:2: (lhs= conditionalExpressionNoIn ({...}? assignmentOperator assignmentExpressionNoIn )? )
-            // JS.g:1299:4: lhs= conditionalExpressionNoIn ({...}? assignmentOperator assignmentExpressionNoIn )?
+            // JS.g:1309:2: (lhs= conditionalExpressionNoIn ({...}? assignmentOperator assignmentExpressionNoIn )? )
+            // JS.g:1309:4: lhs= conditionalExpressionNoIn ({...}? assignmentOperator assignmentExpressionNoIn )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_conditionalExpressionNoIn_in_assignmentExpressionNoIn4870);
+            pushFollow(FOLLOW_conditionalExpressionNoIn_in_assignmentExpressionNoIn4912);
             lhs=conditionalExpressionNoIn();
             _fsp--;
 
             adaptor.addChild(root_0, lhs.getTree());
-            // JS.g:1300:2: ({...}? assignmentOperator assignmentExpressionNoIn )?
+            // JS.g:1310:2: ({...}? assignmentOperator assignmentExpressionNoIn )?
             int alt41=2;
             int LA41_0 = input.LA(1);
 
@@ -5631,17 +5665,17 @@
             }
             switch (alt41) {
                 case 1 :
-                    // JS.g:1300:4: {...}? assignmentOperator assignmentExpressionNoIn
+                    // JS.g:1310:4: {...}? assignmentOperator assignmentExpressionNoIn
                     {
                     if ( !( isLeftHandSideAssign(lhs, isLhs) ) ) {
                         throw new FailedPredicateException(input, "assignmentExpressionNoIn", " isLeftHandSideAssign(lhs, isLhs) ");
                     }
-                    pushFollow(FOLLOW_assignmentOperator_in_assignmentExpressionNoIn4877);
+                    pushFollow(FOLLOW_assignmentOperator_in_assignmentExpressionNoIn4919);
                     assignmentOperator158=assignmentOperator();
                     _fsp--;
 
                     root_0 = (Object)adaptor.becomeRoot(assignmentOperator158.getTree(), root_0);
-                    pushFollow(FOLLOW_assignmentExpressionNoIn_in_assignmentExpressionNoIn4880);
+                    pushFollow(FOLLOW_assignmentExpressionNoIn_in_assignmentExpressionNoIn4922);
                     assignmentExpressionNoIn159=assignmentExpressionNoIn();
                     _fsp--;
 
@@ -5677,7 +5711,7 @@
     };
 
     // $ANTLR start expression
-    // JS.g:1307:1: expression : exprs+= assignmentExpression ( COMMA exprs+= assignmentExpression )* -> { $exprs.size() > 1 }? ^( CEXPR ( $exprs)+ ) -> $exprs;
+    // JS.g:1317: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);
@@ -5691,10 +5725,10 @@
         RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
         RewriteRuleSubtreeStream stream_assignmentExpression=new RewriteRuleSubtreeStream(adaptor,"rule assignmentExpression");
         try {
-            // JS.g:1308:2: (exprs+= assignmentExpression ( COMMA exprs+= assignmentExpression )* -> { $exprs.size() > 1 }? ^( CEXPR ( $exprs)+ ) -> $exprs)
-            // JS.g:1308:4: exprs+= assignmentExpression ( COMMA exprs+= assignmentExpression )*
+            // JS.g:1318:2: (exprs+= assignmentExpression ( COMMA exprs+= assignmentExpression )* -> { $exprs.size() > 1 }? ^( CEXPR ( $exprs)+ ) -> $exprs)
+            // JS.g:1318:4: exprs+= assignmentExpression ( COMMA exprs+= assignmentExpression )*
             {
-            pushFollow(FOLLOW_assignmentExpression_in_expression4902);
+            pushFollow(FOLLOW_assignmentExpression_in_expression4944);
             exprs=assignmentExpression();
             _fsp--;
 
@@ -5702,7 +5736,7 @@
             if (list_exprs==null) list_exprs=new ArrayList();
             list_exprs.add(exprs);
 
-            // JS.g:1308:32: ( COMMA exprs+= assignmentExpression )*
+            // JS.g:1318:32: ( COMMA exprs+= assignmentExpression )*
             loop42:
             do {
                 int alt42=2;
@@ -5715,13 +5749,13 @@
 
                 switch (alt42) {
             	case 1 :
-            	    // JS.g:1308:34: COMMA exprs+= assignmentExpression
+            	    // JS.g:1318:34: COMMA exprs+= assignmentExpression
             	    {
             	    COMMA160=(Token)input.LT(1);
-            	    match(input,COMMA,FOLLOW_COMMA_in_expression4906); 
+            	    match(input,COMMA,FOLLOW_COMMA_in_expression4948); 
             	    stream_COMMA.add(COMMA160);
 
-            	    pushFollow(FOLLOW_assignmentExpression_in_expression4910);
+            	    pushFollow(FOLLOW_assignmentExpression_in_expression4952);
             	    exprs=assignmentExpression();
             	    _fsp--;
 
@@ -5749,9 +5783,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();
-            // 1309:2: -> { $exprs.size() > 1 }? ^( CEXPR ( $exprs)+ )
+            // 1319:2: -> { $exprs.size() > 1 }? ^( CEXPR ( $exprs)+ )
             if ( list_exprs.size() > 1 ) {
-                // JS.g:1309:28: ^( CEXPR ( $exprs)+ )
+                // JS.g:1319:28: ^( CEXPR ( $exprs)+ )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(CEXPR, "CEXPR"), root_1);
@@ -5769,7 +5803,7 @@
                 }
 
             }
-            else // 1310:2: -> $exprs
+            else // 1320:2: -> $exprs
             {
                 adaptor.addChild(root_0, ((ParserRuleReturnScope)stream_exprs.next()).getTree());
 
@@ -5801,7 +5835,7 @@
     };
 
     // $ANTLR start expressionNoIn
-    // JS.g:1313:1: expressionNoIn : exprs+= assignmentExpressionNoIn ( COMMA exprs+= assignmentExpressionNoIn )* -> { $exprs.size() > 1 }? ^( CEXPR ( $exprs)+ ) -> $exprs;
+    // JS.g:1323: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);
@@ -5815,10 +5849,10 @@
         RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
         RewriteRuleSubtreeStream stream_assignmentExpressionNoIn=new RewriteRuleSubtreeStream(adaptor,"rule assignmentExpressionNoIn");
         try {
-            // JS.g:1314:2: (exprs+= assignmentExpressionNoIn ( COMMA exprs+= assignmentExpressionNoIn )* -> { $exprs.size() > 1 }? ^( CEXPR ( $exprs)+ ) -> $exprs)
-            // JS.g:1314:4: exprs+= assignmentExpressionNoIn ( COMMA exprs+= assignmentExpressionNoIn )*
+            // JS.g:1324:2: (exprs+= assignmentExpressionNoIn ( COMMA exprs+= assignmentExpressionNoIn )* -> { $exprs.size() > 1 }? ^( CEXPR ( $exprs)+ ) -> $exprs)
+            // JS.g:1324:4: exprs+= assignmentExpressionNoIn ( COMMA exprs+= assignmentExpressionNoIn )*
             {
-            pushFollow(FOLLOW_assignmentExpressionNoIn_in_expressionNoIn4947);
+            pushFollow(FOLLOW_assignmentExpressionNoIn_in_expressionNoIn4989);
             exprs=assignmentExpressionNoIn();
             _fsp--;
 
@@ -5826,7 +5860,7 @@
             if (list_exprs==null) list_exprs=new ArrayList();
             list_exprs.add(exprs);
 
-            // JS.g:1314:36: ( COMMA exprs+= assignmentExpressionNoIn )*
+            // JS.g:1324:36: ( COMMA exprs+= assignmentExpressionNoIn )*
             loop43:
             do {
                 int alt43=2;
@@ -5839,13 +5873,13 @@
 
                 switch (alt43) {
             	case 1 :
-            	    // JS.g:1314:38: COMMA exprs+= assignmentExpressionNoIn
+            	    // JS.g:1324:38: COMMA exprs+= assignmentExpressionNoIn
             	    {
             	    COMMA161=(Token)input.LT(1);
-            	    match(input,COMMA,FOLLOW_COMMA_in_expressionNoIn4951); 
+            	    match(input,COMMA,FOLLOW_COMMA_in_expressionNoIn4993); 
             	    stream_COMMA.add(COMMA161);
 
-            	    pushFollow(FOLLOW_assignmentExpressionNoIn_in_expressionNoIn4955);
+            	    pushFollow(FOLLOW_assignmentExpressionNoIn_in_expressionNoIn4997);
             	    exprs=assignmentExpressionNoIn();
             	    _fsp--;
 
@@ -5873,9 +5907,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();
-            // 1315:2: -> { $exprs.size() > 1 }? ^( CEXPR ( $exprs)+ )
+            // 1325:2: -> { $exprs.size() > 1 }? ^( CEXPR ( $exprs)+ )
             if ( list_exprs.size() > 1 ) {
-                // JS.g:1315:28: ^( CEXPR ( $exprs)+ )
+                // JS.g:1325:28: ^( CEXPR ( $exprs)+ )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(CEXPR, "CEXPR"), root_1);
@@ -5893,7 +5927,7 @@
                 }
 
             }
-            else // 1316:2: -> $exprs
+            else // 1326:2: -> $exprs
             {
                 adaptor.addChild(root_0, ((ParserRuleReturnScope)stream_exprs.next()).getTree());
 
@@ -5925,7 +5959,7 @@
     };
 
     // $ANTLR start semic
-    // JS.g:1341:1: semic : ( SEMIC | EOF | RBRACE | EOL | MultiLineComment );
+    // JS.g:1351: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);
@@ -5951,7 +5985,7 @@
         	promoteEOL(retval);
 
         try {
-            // JS.g:1349:2: ( SEMIC | EOF | RBRACE | EOL | MultiLineComment )
+            // JS.g:1359:2: ( SEMIC | EOF | RBRACE | EOL | MultiLineComment )
             int alt44=5;
             switch ( input.LA(1) ) {
             case SEMIC:
@@ -5981,19 +6015,19 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("1341:1: semic : ( SEMIC | EOF | RBRACE | EOL | MultiLineComment );", 44, 0, input);
+                    new NoViableAltException("1351:1: semic : ( SEMIC | EOF | RBRACE | EOL | MultiLineComment );", 44, 0, input);
 
                 throw nvae;
             }
 
             switch (alt44) {
                 case 1 :
-                    // JS.g:1349:4: SEMIC
+                    // JS.g:1359:4: SEMIC
                     {
                     root_0 = (Object)adaptor.nil();
 
                     SEMIC162=(Token)input.LT(1);
-                    match(input,SEMIC,FOLLOW_SEMIC_in_semic5006); 
+                    match(input,SEMIC,FOLLOW_SEMIC_in_semic5048); 
                     SEMIC162_tree = (Object)adaptor.create(SEMIC162);
                     adaptor.addChild(root_0, SEMIC162_tree);
 
@@ -6001,12 +6035,12 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1350:4: EOF
+                    // JS.g:1360:4: EOF
                     {
                     root_0 = (Object)adaptor.nil();
 
                     EOF163=(Token)input.LT(1);
-                    match(input,EOF,FOLLOW_EOF_in_semic5011); 
+                    match(input,EOF,FOLLOW_EOF_in_semic5053); 
                     EOF163_tree = (Object)adaptor.create(EOF163);
                     adaptor.addChild(root_0, EOF163_tree);
 
@@ -6014,12 +6048,12 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:1351:4: RBRACE
+                    // JS.g:1361:4: RBRACE
                     {
                     root_0 = (Object)adaptor.nil();
 
                     RBRACE164=(Token)input.LT(1);
-                    match(input,RBRACE,FOLLOW_RBRACE_in_semic5016); 
+                    match(input,RBRACE,FOLLOW_RBRACE_in_semic5058); 
                     RBRACE164_tree = (Object)adaptor.create(RBRACE164);
                     adaptor.addChild(root_0, RBRACE164_tree);
 
@@ -6028,12 +6062,12 @@
                     }
                     break;
                 case 4 :
-                    // JS.g:1352:4: EOL
+                    // JS.g:1362:4: EOL
                     {
                     root_0 = (Object)adaptor.nil();
 
                     EOL165=(Token)input.LT(1);
-                    match(input,EOL,FOLLOW_EOL_in_semic5023); 
+                    match(input,EOL,FOLLOW_EOL_in_semic5065); 
                     EOL165_tree = (Object)adaptor.create(EOL165);
                     adaptor.addChild(root_0, EOL165_tree);
 
@@ -6041,12 +6075,12 @@
                     }
                     break;
                 case 5 :
-                    // JS.g:1352:10: MultiLineComment
+                    // JS.g:1362:10: MultiLineComment
                     {
                     root_0 = (Object)adaptor.nil();
 
                     MultiLineComment166=(Token)input.LT(1);
-                    match(input,MultiLineComment,FOLLOW_MultiLineComment_in_semic5027); 
+                    match(input,MultiLineComment,FOLLOW_MultiLineComment_in_semic5069); 
                     MultiLineComment166_tree = (Object)adaptor.create(MultiLineComment166);
                     adaptor.addChild(root_0, MultiLineComment166_tree);
 
@@ -6077,7 +6111,7 @@
     };
 
     // $ANTLR start statement
-    // JS.g:1360:1: statement options {k=1; } : ({...}? block | statementTail );
+    // JS.g:1370: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);
@@ -6091,7 +6125,7 @@
 
 
         try {
-            // JS.g:1365:2: ({...}? block | statementTail )
+            // JS.g:1375:2: ({...}? block | statementTail )
             int alt45=2;
             int LA45_0 = input.LA(1);
 
@@ -6106,30 +6140,30 @@
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("1360:1: statement options {k=1; } : ({...}? block | statementTail );", 45, 1, input);
+                        new NoViableAltException("1370:1: statement options {k=1; } : ({...}? block | statementTail );", 45, 1, input);
 
                     throw nvae;
                 }
             }
-            else if ( ((LA45_0>=NULL && LA45_0<=BREAK)||(LA45_0>=CONTINUE && LA45_0<=DO)||(LA45_0>=FOR && LA45_0<=IF)||(LA45_0>=NEW && LA45_0<=YIELD)||LA45_0==WXML||LA45_0==CONST||LA45_0==LPAREN||LA45_0==LBRACK||LA45_0==SEMIC||(LA45_0>=ADD && LA45_0<=SUB)||(LA45_0>=INC && LA45_0<=DEC)||(LA45_0>=NOT && LA45_0<=INV)||(LA45_0>=StringLiteral && LA45_0<=XmlAttribute)||LA45_0==Identifier||LA45_0==RegularExpressionLiteral||(LA45_0>=DecimalLiteral && LA45_0<=HexIntegerLiteral)||LA45_0==XMLLiteral) ) {
+            else if ( ((LA45_0>=NULL && LA45_0<=BREAK)||(LA45_0>=CONTINUE && LA45_0<=DO)||(LA45_0>=FOR && LA45_0<=IF)||(LA45_0>=NEW && LA45_0<=YIELD)||(LA45_0>=WXML && LA45_0<=NAMESPACE)||LA45_0==CONST||LA45_0==LPAREN||LA45_0==LBRACK||LA45_0==SEMIC||(LA45_0>=ADD && LA45_0<=SUB)||(LA45_0>=INC && LA45_0<=DEC)||(LA45_0>=NOT && LA45_0<=INV)||(LA45_0>=StringLiteral && LA45_0<=XmlAttribute)||LA45_0==Identifier||LA45_0==RegularExpressionLiteral||(LA45_0>=DecimalLiteral && LA45_0<=HexIntegerLiteral)||LA45_0==XMLLiteral) ) {
                 alt45=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("1360:1: statement options {k=1; } : ({...}? block | statementTail );", 45, 0, input);
+                    new NoViableAltException("1370:1: statement options {k=1; } : ({...}? block | statementTail );", 45, 0, input);
 
                 throw nvae;
             }
             switch (alt45) {
                 case 1 :
-                    // JS.g:1365:4: {...}? block
+                    // JS.g:1375: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_statement5056);
+                    pushFollow(FOLLOW_block_in_statement5098);
                     block167=block();
                     _fsp--;
 
@@ -6138,11 +6172,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1366:4: statementTail
+                    // JS.g:1376:4: statementTail
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_statementTail_in_statement5061);
+                    pushFollow(FOLLOW_statementTail_in_statement5103);
                     statementTail168=statementTail();
                     _fsp--;
 
@@ -6174,7 +6208,7 @@
     };
 
     // $ANTLR start statementTail
-    // JS.g:1369:1: statementTail : ( variableStatement | emptyStatement | expressionStatement | ifStatement | iterationStatement | continueStatement | breakStatement | returnStatement | withStatement | labelledStatement | switchStatement | throwStatement | tryStatement | constStatement | namespaceStatement );
+    // JS.g:1379: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);
@@ -6214,7 +6248,7 @@
 
 
         try {
-            // JS.g:1370:2: ( variableStatement | emptyStatement | expressionStatement | ifStatement | iterationStatement | continueStatement | breakStatement | returnStatement | withStatement | labelledStatement | switchStatement | throwStatement | tryStatement | constStatement | namespaceStatement )
+            // JS.g:1380: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:
@@ -6261,6 +6295,7 @@
             case GET:
             case SET:
             case WXML:
+            case NAMESPACE:
             case Identifier:
                 {
                 int LA46_4 = input.LA(2);
@@ -6273,7 +6308,7 @@
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("1369:1: statementTail : ( variableStatement | emptyStatement | expressionStatement | ifStatement | iterationStatement | continueStatement | breakStatement | returnStatement | withStatement | labelledStatement | switchStatement | throwStatement | tryStatement | constStatement | namespaceStatement );", 46, 4, input);
+                        new NoViableAltException("1379:1: statementTail : ( variableStatement | emptyStatement | expressionStatement | ifStatement | iterationStatement | continueStatement | breakStatement | returnStatement | withStatement | labelledStatement | switchStatement | throwStatement | tryStatement | constStatement | namespaceStatement );", 46, 4, input);
 
                     throw nvae;
                 }
@@ -6338,18 +6373,18 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("1369:1: statementTail : ( variableStatement | emptyStatement | expressionStatement | ifStatement | iterationStatement | continueStatement | breakStatement | returnStatement | withStatement | labelledStatement | switchStatement | throwStatement | tryStatement | constStatement | namespaceStatement );", 46, 0, input);
+                    new NoViableAltException("1379: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:1370:4: variableStatement
+                    // JS.g:1380:4: variableStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_variableStatement_in_statementTail5073);
+                    pushFollow(FOLLOW_variableStatement_in_statementTail5115);
                     variableStatement169=variableStatement();
                     _fsp--;
 
@@ -6358,11 +6393,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1371:4: emptyStatement
+                    // JS.g:1381:4: emptyStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_emptyStatement_in_statementTail5078);
+                    pushFollow(FOLLOW_emptyStatement_in_statementTail5120);
                     emptyStatement170=emptyStatement();
                     _fsp--;
 
@@ -6371,11 +6406,11 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:1372:4: expressionStatement
+                    // JS.g:1382:4: expressionStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_expressionStatement_in_statementTail5083);
+                    pushFollow(FOLLOW_expressionStatement_in_statementTail5125);
                     expressionStatement171=expressionStatement();
                     _fsp--;
 
@@ -6384,11 +6419,11 @@
                     }
                     break;
                 case 4 :
-                    // JS.g:1373:4: ifStatement
+                    // JS.g:1383:4: ifStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_ifStatement_in_statementTail5088);
+                    pushFollow(FOLLOW_ifStatement_in_statementTail5130);
                     ifStatement172=ifStatement();
                     _fsp--;
 
@@ -6397,11 +6432,11 @@
                     }
                     break;
                 case 5 :
-                    // JS.g:1374:4: iterationStatement
+                    // JS.g:1384:4: iterationStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_iterationStatement_in_statementTail5093);
+                    pushFollow(FOLLOW_iterationStatement_in_statementTail5135);
                     iterationStatement173=iterationStatement();
                     _fsp--;
 
@@ -6410,11 +6445,11 @@
                     }
                     break;
                 case 6 :
-                    // JS.g:1375:4: continueStatement
+                    // JS.g:1385:4: continueStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_continueStatement_in_statementTail5098);
+                    pushFollow(FOLLOW_continueStatement_in_statementTail5140);
                     continueStatement174=continueStatement();
                     _fsp--;
 
@@ -6423,11 +6458,11 @@
                     }
                     break;
                 case 7 :
-                    // JS.g:1376:4: breakStatement
+                    // JS.g:1386:4: breakStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_breakStatement_in_statementTail5103);
+                    pushFollow(FOLLOW_breakStatement_in_statementTail5145);
                     breakStatement175=breakStatement();
                     _fsp--;
 
@@ -6436,11 +6471,11 @@
                     }
                     break;
                 case 8 :
-                    // JS.g:1377:4: returnStatement
+                    // JS.g:1387:4: returnStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_returnStatement_in_statementTail5108);
+                    pushFollow(FOLLOW_returnStatement_in_statementTail5150);
                     returnStatement176=returnStatement();
                     _fsp--;
 
@@ -6449,11 +6484,11 @@
                     }
                     break;
                 case 9 :
-                    // JS.g:1378:4: withStatement
+                    // JS.g:1388:4: withStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_withStatement_in_statementTail5113);
+                    pushFollow(FOLLOW_withStatement_in_statementTail5155);
                     withStatement177=withStatement();
                     _fsp--;
 
@@ -6462,11 +6497,11 @@
                     }
                     break;
                 case 10 :
-                    // JS.g:1379:4: labelledStatement
+                    // JS.g:1389:4: labelledStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_labelledStatement_in_statementTail5118);
+                    pushFollow(FOLLOW_labelledStatement_in_statementTail5160);
                     labelledStatement178=labelledStatement();
                     _fsp--;
 
@@ -6475,11 +6510,11 @@
                     }
                     break;
                 case 11 :
-                    // JS.g:1380:4: switchStatement
+                    // JS.g:1390:4: switchStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_switchStatement_in_statementTail5123);
+                    pushFollow(FOLLOW_switchStatement_in_statementTail5165);
                     switchStatement179=switchStatement();
                     _fsp--;
 
@@ -6488,11 +6523,11 @@
                     }
                     break;
                 case 12 :
-                    // JS.g:1381:4: throwStatement
+                    // JS.g:1391:4: throwStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_throwStatement_in_statementTail5128);
+                    pushFollow(FOLLOW_throwStatement_in_statementTail5170);
                     throwStatement180=throwStatement();
                     _fsp--;
 
@@ -6501,11 +6536,11 @@
                     }
                     break;
                 case 13 :
-                    // JS.g:1382:4: tryStatement
+                    // JS.g:1392:4: tryStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_tryStatement_in_statementTail5133);
+                    pushFollow(FOLLOW_tryStatement_in_statementTail5175);
                     tryStatement181=tryStatement();
                     _fsp--;
 
@@ -6514,11 +6549,11 @@
                     }
                     break;
                 case 14 :
-                    // JS.g:1383:4: constStatement
+                    // JS.g:1393:4: constStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_constStatement_in_statementTail5138);
+                    pushFollow(FOLLOW_constStatement_in_statementTail5180);
                     constStatement182=constStatement();
                     _fsp--;
 
@@ -6527,11 +6562,11 @@
                     }
                     break;
                 case 15 :
-                    // JS.g:1384:4: namespaceStatement
+                    // JS.g:1394:4: namespaceStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_namespaceStatement_in_statementTail5143);
+                    pushFollow(FOLLOW_namespaceStatement_in_statementTail5185);
                     namespaceStatement183=namespaceStatement();
                     _fsp--;
 
@@ -6563,7 +6598,7 @@
     };
 
     // $ANTLR start block
-    // JS.g:1389:1: block : lb= LBRACE ( statement )* RBRACE -> ^( BLOCK[$lb, \"BLOCK\"] ( statement )* ) ;
+    // JS.g:1399: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);
@@ -6581,29 +6616,29 @@
         RewriteRuleTokenStream stream_LBRACE=new RewriteRuleTokenStream(adaptor,"token LBRACE");
         RewriteRuleSubtreeStream stream_statement=new RewriteRuleSubtreeStream(adaptor,"rule statement");
         try {
-            // JS.g:1390:2: (lb= LBRACE ( statement )* RBRACE -> ^( BLOCK[$lb, \"BLOCK\"] ( statement )* ) )
-            // JS.g:1390:4: lb= LBRACE ( statement )* RBRACE
+            // JS.g:1400:2: (lb= LBRACE ( statement )* RBRACE -> ^( BLOCK[$lb, \"BLOCK\"] ( statement )* ) )
+            // JS.g:1400:4: lb= LBRACE ( statement )* RBRACE
             {
             lb=(Token)input.LT(1);
-            match(input,LBRACE,FOLLOW_LBRACE_in_block5158); 
+            match(input,LBRACE,FOLLOW_LBRACE_in_block5200); 
             stream_LBRACE.add(lb);
 
-            // JS.g:1390:14: ( statement )*
+            // JS.g:1400:14: ( statement )*
             loop47:
             do {
                 int alt47=2;
                 int LA47_0 = input.LA(1);
 
-                if ( ((LA47_0>=NULL && LA47_0<=BREAK)||(LA47_0>=CONTINUE && LA47_0<=DO)||(LA47_0>=FOR && LA47_0<=IF)||(LA47_0>=NEW && LA47_0<=YIELD)||LA47_0==WXML||LA47_0==CONST||LA47_0==LBRACE||LA47_0==LPAREN||LA47_0==LBRACK||LA47_0==SEMIC||(LA47_0>=ADD && LA47_0<=SUB)||(LA47_0>=INC && LA47_0<=DEC)||(LA47_0>=NOT && LA47_0<=INV)||(LA47_0>=StringLiteral && LA47_0<=XmlAttribute)||LA47_0==Identifier||LA47_0==RegularExpressionLiteral||(LA47_0>=DecimalLiteral && LA47_0<=HexIntegerLiteral)||LA47_0==XMLLiteral) ) {
+                if ( ((LA47_0>=NULL && LA47_0<=BREAK)||(LA47_0>=CONTINUE && LA47_0<=DO)||(LA47_0>=FOR && LA47_0<=IF)||(LA47_0>=NEW && LA47_0<=YIELD)||(LA47_0>=WXML && LA47_0<=NAMESPACE)||LA47_0==CONST||LA47_0==LBRACE||LA47_0==LPAREN||LA47_0==LBRACK||LA47_0==SEMIC||(LA47_0>=ADD && LA47_0<=SUB)||(LA47_0>=INC && LA47_0<=DEC)||(LA47_0>=NOT && LA47_0<=INV)||(LA47_0>=StringLiteral && LA47_0<=XmlAttribute)||LA47_0==Identifier||LA47_0==RegularExpressionLiteral||(LA47_0>=DecimalLiteral && LA47_0<=HexIntegerLiteral)||LA47_0==XMLLiteral) ) {
                     alt47=1;
                 }
 
 
                 switch (alt47) {
             	case 1 :
-            	    // JS.g:1390:14: statement
+            	    // JS.g:1400:14: statement
             	    {
-            	    pushFollow(FOLLOW_statement_in_block5160);
+            	    pushFollow(FOLLOW_statement_in_block5202);
             	    statement184=statement();
             	    _fsp--;
 
@@ -6618,7 +6653,7 @@
             } while (true);
 
             RBRACE185=(Token)input.LT(1);
-            match(input,RBRACE,FOLLOW_RBRACE_in_block5163); 
+            match(input,RBRACE,FOLLOW_RBRACE_in_block5205); 
             stream_RBRACE.add(RBRACE185);
 
 
@@ -6632,14 +6667,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1391:2: -> ^( BLOCK[$lb, \"BLOCK\"] ( statement )* )
+            // 1401:2: -> ^( BLOCK[$lb, \"BLOCK\"] ( statement )* )
             {
-                // JS.g:1391:5: ^( BLOCK[$lb, \"BLOCK\"] ( statement )* )
+                // JS.g:1401: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:1391:28: ( statement )*
+                // JS.g:1401:28: ( statement )*
                 while ( stream_statement.hasNext() ) {
                     adaptor.addChild(root_1, stream_statement.next());
 
@@ -6677,7 +6712,7 @@
     };
 
     // $ANTLR start variableStatement
-    // JS.g:1398:1: variableStatement : VAR variableDeclaration ( COMMA variableDeclaration )* semic -> ^( VAR ( variableDeclaration )+ ) ;
+    // JS.g:1408: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);
@@ -6700,19 +6735,19 @@
         RewriteRuleSubtreeStream stream_variableDeclaration=new RewriteRuleSubtreeStream(adaptor,"rule variableDeclaration");
         RewriteRuleSubtreeStream stream_semic=new RewriteRuleSubtreeStream(adaptor,"rule semic");
         try {
-            // JS.g:1399:2: ( VAR variableDeclaration ( COMMA variableDeclaration )* semic -> ^( VAR ( variableDeclaration )+ ) )
-            // JS.g:1399:4: VAR variableDeclaration ( COMMA variableDeclaration )* semic
+            // JS.g:1409:2: ( VAR variableDeclaration ( COMMA variableDeclaration )* semic -> ^( VAR ( variableDeclaration )+ ) )
+            // JS.g:1409:4: VAR variableDeclaration ( COMMA variableDeclaration )* semic
             {
             VAR186=(Token)input.LT(1);
-            match(input,VAR,FOLLOW_VAR_in_variableStatement5192); 
+            match(input,VAR,FOLLOW_VAR_in_variableStatement5234); 
             stream_VAR.add(VAR186);
 
-            pushFollow(FOLLOW_variableDeclaration_in_variableStatement5194);
+            pushFollow(FOLLOW_variableDeclaration_in_variableStatement5236);
             variableDeclaration187=variableDeclaration();
             _fsp--;
 
             stream_variableDeclaration.add(variableDeclaration187.getTree());
-            // JS.g:1399:28: ( COMMA variableDeclaration )*
+            // JS.g:1409:28: ( COMMA variableDeclaration )*
             loop48:
             do {
                 int alt48=2;
@@ -6725,13 +6760,13 @@
 
                 switch (alt48) {
             	case 1 :
-            	    // JS.g:1399:30: COMMA variableDeclaration
+            	    // JS.g:1409:30: COMMA variableDeclaration
             	    {
             	    COMMA188=(Token)input.LT(1);
-            	    match(input,COMMA,FOLLOW_COMMA_in_variableStatement5198); 
+            	    match(input,COMMA,FOLLOW_COMMA_in_variableStatement5240); 
             	    stream_COMMA.add(COMMA188);
 
-            	    pushFollow(FOLLOW_variableDeclaration_in_variableStatement5200);
+            	    pushFollow(FOLLOW_variableDeclaration_in_variableStatement5242);
             	    variableDeclaration189=variableDeclaration();
             	    _fsp--;
 
@@ -6745,7 +6780,7 @@
                 }
             } while (true);
 
-            pushFollow(FOLLOW_semic_in_variableStatement5205);
+            pushFollow(FOLLOW_semic_in_variableStatement5247);
             semic190=semic();
             _fsp--;
 
@@ -6761,9 +6796,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1400:2: -> ^( VAR ( variableDeclaration )+ )
+            // 1410:2: -> ^( VAR ( variableDeclaration )+ )
             {
-                // JS.g:1400:5: ^( VAR ( variableDeclaration )+ )
+                // JS.g:1410:5: ^( VAR ( variableDeclaration )+ )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_VAR.next(), root_1);
@@ -6808,7 +6843,7 @@
     };
 
     // $ANTLR start variableDeclaration
-    // JS.g:1403:1: variableDeclaration : identifier ( ASSIGN assignmentExpression )? ;
+    // JS.g:1413:1: variableDeclaration : identifier ( ASSIGN assignmentExpression )? ;
     public final variableDeclaration_return variableDeclaration() throws RecognitionException {
         variableDeclaration_return retval = new variableDeclaration_return();
         retval.start = input.LT(1);
@@ -6824,17 +6859,17 @@
         Object ASSIGN192_tree=null;
 
         try {
-            // JS.g:1404:2: ( identifier ( ASSIGN assignmentExpression )? )
-            // JS.g:1404:4: identifier ( ASSIGN assignmentExpression )?
+            // JS.g:1414:2: ( identifier ( ASSIGN assignmentExpression )? )
+            // JS.g:1414:4: identifier ( ASSIGN assignmentExpression )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_identifier_in_variableDeclaration5228);
+            pushFollow(FOLLOW_identifier_in_variableDeclaration5270);
             identifier191=identifier();
             _fsp--;
 
             adaptor.addChild(root_0, identifier191.getTree());
-            // JS.g:1404:15: ( ASSIGN assignmentExpression )?
+            // JS.g:1414:15: ( ASSIGN assignmentExpression )?
             int alt49=2;
             int LA49_0 = input.LA(1);
 
@@ -6843,14 +6878,14 @@
             }
             switch (alt49) {
                 case 1 :
-                    // JS.g:1404:17: ASSIGN assignmentExpression
+                    // JS.g:1414:17: ASSIGN assignmentExpression
                     {
                     ASSIGN192=(Token)input.LT(1);
-                    match(input,ASSIGN,FOLLOW_ASSIGN_in_variableDeclaration5232); 
+                    match(input,ASSIGN,FOLLOW_ASSIGN_in_variableDeclaration5274); 
                     ASSIGN192_tree = (Object)adaptor.create(ASSIGN192);
                     root_0 = (Object)adaptor.becomeRoot(ASSIGN192_tree, root_0);
 
-                    pushFollow(FOLLOW_assignmentExpression_in_variableDeclaration5235);
+                    pushFollow(FOLLOW_assignmentExpression_in_variableDeclaration5277);
                     assignmentExpression193=assignmentExpression();
                     _fsp--;
 
@@ -6886,7 +6921,7 @@
     };
 
     // $ANTLR start variableDeclarationNoIn
-    // JS.g:1407:1: variableDeclarationNoIn : identifier ( ASSIGN assignmentExpressionNoIn )? ;
+    // JS.g:1417:1: variableDeclarationNoIn : identifier ( ASSIGN assignmentExpressionNoIn )? ;
     public final variableDeclarationNoIn_return variableDeclarationNoIn() throws RecognitionException {
         variableDeclarationNoIn_return retval = new variableDeclarationNoIn_return();
         retval.start = input.LT(1);
@@ -6902,17 +6937,17 @@
         Object ASSIGN195_tree=null;
 
         try {
-            // JS.g:1408:2: ( identifier ( ASSIGN assignmentExpressionNoIn )? )
-            // JS.g:1408:4: identifier ( ASSIGN assignmentExpressionNoIn )?
+            // JS.g:1418:2: ( identifier ( ASSIGN assignmentExpressionNoIn )? )
+            // JS.g:1418:4: identifier ( ASSIGN assignmentExpressionNoIn )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_identifier_in_variableDeclarationNoIn5250);
+            pushFollow(FOLLOW_identifier_in_variableDeclarationNoIn5292);
             identifier194=identifier();
             _fsp--;
 
             adaptor.addChild(root_0, identifier194.getTree());
-            // JS.g:1408:15: ( ASSIGN assignmentExpressionNoIn )?
+            // JS.g:1418:15: ( ASSIGN assignmentExpressionNoIn )?
             int alt50=2;
             int LA50_0 = input.LA(1);
 
@@ -6921,14 +6956,14 @@
             }
             switch (alt50) {
                 case 1 :
-                    // JS.g:1408:17: ASSIGN assignmentExpressionNoIn
+                    // JS.g:1418:17: ASSIGN assignmentExpressionNoIn
                     {
                     ASSIGN195=(Token)input.LT(1);
-                    match(input,ASSIGN,FOLLOW_ASSIGN_in_variableDeclarationNoIn5254); 
+                    match(input,ASSIGN,FOLLOW_ASSIGN_in_variableDeclarationNoIn5296); 
                     ASSIGN195_tree = (Object)adaptor.create(ASSIGN195);
                     root_0 = (Object)adaptor.becomeRoot(ASSIGN195_tree, root_0);
 
-                    pushFollow(FOLLOW_assignmentExpressionNoIn_in_variableDeclarationNoIn5257);
+                    pushFollow(FOLLOW_assignmentExpressionNoIn_in_variableDeclarationNoIn5299);
                     assignmentExpressionNoIn196=assignmentExpressionNoIn();
                     _fsp--;
 
@@ -6964,7 +6999,7 @@
     };
 
     // $ANTLR start constStatement
-    // JS.g:1411:1: constStatement : CONST variableDeclaration ( COMMA variableDeclaration )* semic -> ^( CONST ( variableDeclaration )+ ) ;
+    // JS.g:1421: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);
@@ -6987,19 +7022,19 @@
         RewriteRuleSubtreeStream stream_variableDeclaration=new RewriteRuleSubtreeStream(adaptor,"rule variableDeclaration");
         RewriteRuleSubtreeStream stream_semic=new RewriteRuleSubtreeStream(adaptor,"rule semic");
         try {
-            // JS.g:1412:3: ( CONST variableDeclaration ( COMMA variableDeclaration )* semic -> ^( CONST ( variableDeclaration )+ ) )
-            // JS.g:1412:5: CONST variableDeclaration ( COMMA variableDeclaration )* semic
+            // JS.g:1422:3: ( CONST variableDeclaration ( COMMA variableDeclaration )* semic -> ^( CONST ( variableDeclaration )+ ) )
+            // JS.g:1422:5: CONST variableDeclaration ( COMMA variableDeclaration )* semic
             {
             CONST197=(Token)input.LT(1);
-            match(input,CONST,FOLLOW_CONST_in_constStatement5272); 
+            match(input,CONST,FOLLOW_CONST_in_constStatement5314); 
             stream_CONST.add(CONST197);
 
-            pushFollow(FOLLOW_variableDeclaration_in_constStatement5274);
+            pushFollow(FOLLOW_variableDeclaration_in_constStatement5316);
             variableDeclaration198=variableDeclaration();
             _fsp--;
 
             stream_variableDeclaration.add(variableDeclaration198.getTree());
-            // JS.g:1412:31: ( COMMA variableDeclaration )*
+            // JS.g:1422:31: ( COMMA variableDeclaration )*
             loop51:
             do {
                 int alt51=2;
@@ -7012,13 +7047,13 @@
 
                 switch (alt51) {
             	case 1 :
-            	    // JS.g:1412:33: COMMA variableDeclaration
+            	    // JS.g:1422:33: COMMA variableDeclaration
             	    {
             	    COMMA199=(Token)input.LT(1);
-            	    match(input,COMMA,FOLLOW_COMMA_in_constStatement5278); 
+            	    match(input,COMMA,FOLLOW_COMMA_in_constStatement5320); 
             	    stream_COMMA.add(COMMA199);
 
-            	    pushFollow(FOLLOW_variableDeclaration_in_constStatement5280);
+            	    pushFollow(FOLLOW_variableDeclaration_in_constStatement5322);
             	    variableDeclaration200=variableDeclaration();
             	    _fsp--;
 
@@ -7032,7 +7067,7 @@
                 }
             } while (true);
 
-            pushFollow(FOLLOW_semic_in_constStatement5285);
+            pushFollow(FOLLOW_semic_in_constStatement5327);
             semic201=semic();
             _fsp--;
 
@@ -7048,9 +7083,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1413:3: -> ^( CONST ( variableDeclaration )+ )
+            // 1423:3: -> ^( CONST ( variableDeclaration )+ )
             {
-                // JS.g:1413:6: ^( CONST ( variableDeclaration )+ )
+                // JS.g:1423:6: ^( CONST ( variableDeclaration )+ )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_CONST.next(), root_1);
@@ -7095,7 +7130,7 @@
     };
 
     // $ANTLR start emptyStatement
-    // JS.g:1420:1: emptyStatement : SEMIC ;
+    // JS.g:1430:1: emptyStatement : SEMIC ;
     public final emptyStatement_return emptyStatement() throws RecognitionException {
         emptyStatement_return retval = new emptyStatement_return();
         retval.start = input.LT(1);
@@ -7107,13 +7142,13 @@
         Object SEMIC202_tree=null;
 
         try {
-            // JS.g:1421:2: ( SEMIC )
-            // JS.g:1421:4: SEMIC
+            // JS.g:1431:2: ( SEMIC )
+            // JS.g:1431:4: SEMIC
             {
             root_0 = (Object)adaptor.nil();
 
             SEMIC202=(Token)input.LT(1);
-            match(input,SEMIC,FOLLOW_SEMIC_in_emptyStatement5315); 
+            match(input,SEMIC,FOLLOW_SEMIC_in_emptyStatement5357); 
 
             }
 
@@ -7139,7 +7174,7 @@
     };
 
     // $ANTLR start expressionStatement
-    // JS.g:1434:1: expressionStatement : expression semic ;
+    // JS.g:1444:1: expressionStatement : expression semic ;
     public final expressionStatement_return expressionStatement() throws RecognitionException {
         expressionStatement_return retval = new expressionStatement_return();
         retval.start = input.LT(1);
@@ -7153,17 +7188,17 @@
 
 
         try {
-            // JS.g:1435:2: ( expression semic )
-            // JS.g:1435:4: expression semic
+            // JS.g:1445:2: ( expression semic )
+            // JS.g:1445:4: expression semic
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_expression_in_expressionStatement5334);
+            pushFollow(FOLLOW_expression_in_expressionStatement5376);
             expression203=expression();
             _fsp--;
 
             adaptor.addChild(root_0, expression203.getTree());
-            pushFollow(FOLLOW_semic_in_expressionStatement5336);
+            pushFollow(FOLLOW_semic_in_expressionStatement5378);
             semic204=semic();
             _fsp--;
 
@@ -7192,7 +7227,7 @@
     };
 
     // $ANTLR start ifStatement
-    // JS.g:1442:1: ifStatement : IF LPAREN expression RPAREN statement ({...}? ELSE statement )? -> ^( IF expression ( statement )+ ) ;
+    // JS.g:1452: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);
@@ -7221,32 +7256,32 @@
         RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
         RewriteRuleSubtreeStream stream_statement=new RewriteRuleSubtreeStream(adaptor,"rule statement");
         try {
-            // JS.g:1444:2: ( IF LPAREN expression RPAREN statement ({...}? ELSE statement )? -> ^( IF expression ( statement )+ ) )
-            // JS.g:1444:4: IF LPAREN expression RPAREN statement ({...}? ELSE statement )?
+            // 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 )?
             {
             IF205=(Token)input.LT(1);
-            match(input,IF,FOLLOW_IF_in_ifStatement5354); 
+            match(input,IF,FOLLOW_IF_in_ifStatement5396); 
             stream_IF.add(IF205);
 
             LPAREN206=(Token)input.LT(1);
-            match(input,LPAREN,FOLLOW_LPAREN_in_ifStatement5356); 
+            match(input,LPAREN,FOLLOW_LPAREN_in_ifStatement5398); 
             stream_LPAREN.add(LPAREN206);
 
-            pushFollow(FOLLOW_expression_in_ifStatement5358);
+            pushFollow(FOLLOW_expression_in_ifStatement5400);
             expression207=expression();
             _fsp--;
 
             stream_expression.add(expression207.getTree());
             RPAREN208=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_ifStatement5360); 
+            match(input,RPAREN,FOLLOW_RPAREN_in_ifStatement5402); 
             stream_RPAREN.add(RPAREN208);
 
-            pushFollow(FOLLOW_statement_in_ifStatement5362);
+            pushFollow(FOLLOW_statement_in_ifStatement5404);
             statement209=statement();
             _fsp--;
 
             stream_statement.add(statement209.getTree());
-            // JS.g:1444:42: ({...}? ELSE statement )?
+            // JS.g:1454:42: ({...}? ELSE statement )?
             int alt52=2;
             int LA52_0 = input.LA(1);
 
@@ -7259,16 +7294,16 @@
             }
             switch (alt52) {
                 case 1 :
-                    // JS.g:1444:44: {...}? ELSE statement
+                    // JS.g:1454: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_ifStatement5368); 
+                    match(input,ELSE,FOLLOW_ELSE_in_ifStatement5410); 
                     stream_ELSE.add(ELSE210);
 
-                    pushFollow(FOLLOW_statement_in_ifStatement5370);
+                    pushFollow(FOLLOW_statement_in_ifStatement5412);
                     statement211=statement();
                     _fsp--;
 
@@ -7281,7 +7316,7 @@
 
 
             // AST REWRITE
-            // elements: expression, statement, IF
+            // elements: statement, IF, expression
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -7290,9 +7325,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1445:2: -> ^( IF expression ( statement )+ )
+            // 1455:2: -> ^( IF expression ( statement )+ )
             {
-                // JS.g:1445:5: ^( IF expression ( statement )+ )
+                // JS.g:1455:5: ^( IF expression ( statement )+ )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_IF.next(), root_1);
@@ -7338,7 +7373,7 @@
     };
 
     // $ANTLR start iterationStatement
-    // JS.g:1452:1: iterationStatement : ( doStatement | whileStatement | forEachStatement | forStatement );
+    // JS.g:1462:1: iterationStatement : ( doStatement | whileStatement | forEachStatement | forStatement );
     public final iterationStatement_return iterationStatement() throws RecognitionException {
         iterationStatement_return retval = new iterationStatement_return();
         retval.start = input.LT(1);
@@ -7356,7 +7391,7 @@
 
 
         try {
-            // JS.g:1453:2: ( doStatement | whileStatement | forEachStatement | forStatement )
+            // JS.g:1463:2: ( doStatement | whileStatement | forEachStatement | forStatement )
             int alt53=4;
             switch ( input.LA(1) ) {
             case DO:
@@ -7381,7 +7416,7 @@
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("1452:1: iterationStatement : ( doStatement | whileStatement | forEachStatement | forStatement );", 53, 3, input);
+                        new NoViableAltException("1462:1: iterationStatement : ( doStatement | whileStatement | forEachStatement | forStatement );", 53, 3, input);
 
                     throw nvae;
                 }
@@ -7389,18 +7424,18 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("1452:1: iterationStatement : ( doStatement | whileStatement | forEachStatement | forStatement );", 53, 0, input);
+                    new NoViableAltException("1462:1: iterationStatement : ( doStatement | whileStatement | forEachStatement | forStatement );", 53, 0, input);
 
                 throw nvae;
             }
 
             switch (alt53) {
                 case 1 :
-                    // JS.g:1453:4: doStatement
+                    // JS.g:1463:4: doStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_doStatement_in_iterationStatement5403);
+                    pushFollow(FOLLOW_doStatement_in_iterationStatement5445);
                     doStatement212=doStatement();
                     _fsp--;
 
@@ -7409,11 +7444,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1454:4: whileStatement
+                    // JS.g:1464:4: whileStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_whileStatement_in_iterationStatement5408);
+                    pushFollow(FOLLOW_whileStatement_in_iterationStatement5450);
                     whileStatement213=whileStatement();
                     _fsp--;
 
@@ -7422,11 +7457,11 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:1455:4: forEachStatement
+                    // JS.g:1465:4: forEachStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_forEachStatement_in_iterationStatement5413);
+                    pushFollow(FOLLOW_forEachStatement_in_iterationStatement5455);
                     forEachStatement214=forEachStatement();
                     _fsp--;
 
@@ -7435,11 +7470,11 @@
                     }
                     break;
                 case 4 :
-                    // JS.g:1456:4: forStatement
+                    // JS.g:1466:4: forStatement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_forStatement_in_iterationStatement5418);
+                    pushFollow(FOLLOW_forStatement_in_iterationStatement5460);
                     forStatement215=forStatement();
                     _fsp--;
 
@@ -7471,7 +7506,7 @@
     };
 
     // $ANTLR start doStatement
-    // JS.g:1459:1: doStatement : DO statement WHILE LPAREN expression RPAREN semic -> ^( DO statement expression ) ;
+    // JS.g:1469: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);
@@ -7501,36 +7536,36 @@
         RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
         RewriteRuleSubtreeStream stream_semic=new RewriteRuleSubtreeStream(adaptor,"rule semic");
         try {
-            // JS.g:1460:2: ( DO statement WHILE LPAREN expression RPAREN semic -> ^( DO statement expression ) )
-            // JS.g:1460:4: DO statement WHILE LPAREN expression RPAREN semic
+            // 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
             {
             DO216=(Token)input.LT(1);
-            match(input,DO,FOLLOW_DO_in_doStatement5430); 
+            match(input,DO,FOLLOW_DO_in_doStatement5472); 
             stream_DO.add(DO216);
 
-            pushFollow(FOLLOW_statement_in_doStatement5432);
+            pushFollow(FOLLOW_statement_in_doStatement5474);
             statement217=statement();
             _fsp--;
 
             stream_statement.add(statement217.getTree());
             WHILE218=(Token)input.LT(1);
-            match(input,WHILE,FOLLOW_WHILE_in_doStatement5434); 
+            match(input,WHILE,FOLLOW_WHILE_in_doStatement5476); 
             stream_WHILE.add(WHILE218);
 
             LPAREN219=(Token)input.LT(1);
-            match(input,LPAREN,FOLLOW_LPAREN_in_doStatement5436); 
+            match(input,LPAREN,FOLLOW_LPAREN_in_doStatement5478); 
             stream_LPAREN.add(LPAREN219);
 
-            pushFollow(FOLLOW_expression_in_doStatement5438);
+            pushFollow(FOLLOW_expression_in_doStatement5480);
             expression220=expression();
             _fsp--;
 
             stream_expression.add(expression220.getTree());
             RPAREN221=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_doStatement5440); 
+            match(input,RPAREN,FOLLOW_RPAREN_in_doStatement5482); 
             stream_RPAREN.add(RPAREN221);
 
-            pushFollow(FOLLOW_semic_in_doStatement5442);
+            pushFollow(FOLLOW_semic_in_doStatement5484);
             semic222=semic();
             _fsp--;
 
@@ -7546,9 +7581,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1461:2: -> ^( DO statement expression )
+            // 1471:2: -> ^( DO statement expression )
             {
-                // JS.g:1461:5: ^( DO statement expression )
+                // JS.g:1471:5: ^( DO statement expression )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_DO.next(), root_1);
@@ -7587,7 +7622,7 @@
     };
 
     // $ANTLR start whileStatement
-    // JS.g:1464:1: whileStatement : WHILE LPAREN expression RPAREN statement ;
+    // JS.g:1474: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);
@@ -7607,26 +7642,26 @@
         Object RPAREN226_tree=null;
 
         try {
-            // JS.g:1465:2: ( WHILE LPAREN expression RPAREN statement )
-            // JS.g:1465:4: WHILE LPAREN expression RPAREN statement
+            // JS.g:1475:2: ( WHILE LPAREN expression RPAREN statement )
+            // JS.g:1475:4: WHILE LPAREN expression RPAREN statement
             {
             root_0 = (Object)adaptor.nil();
 
             WHILE223=(Token)input.LT(1);
-            match(input,WHILE,FOLLOW_WHILE_in_whileStatement5467); 
+            match(input,WHILE,FOLLOW_WHILE_in_whileStatement5509); 
             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_whileStatement5470); 
-            pushFollow(FOLLOW_expression_in_whileStatement5473);
+            match(input,LPAREN,FOLLOW_LPAREN_in_whileStatement5512); 
+            pushFollow(FOLLOW_expression_in_whileStatement5515);
             expression225=expression();
             _fsp--;
 
             adaptor.addChild(root_0, expression225.getTree());
             RPAREN226=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_whileStatement5475); 
-            pushFollow(FOLLOW_statement_in_whileStatement5478);
+            match(input,RPAREN,FOLLOW_RPAREN_in_whileStatement5517); 
+            pushFollow(FOLLOW_statement_in_whileStatement5520);
             statement227=statement();
             _fsp--;
 
@@ -7656,7 +7691,7 @@
     };
 
     // $ANTLR start forEachStatement
-    // JS.g:1510:1: forEachStatement : FOR EACH LPAREN forEachControl RPAREN statement ;
+    // JS.g:1520: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);
@@ -7676,34 +7711,69 @@
         Object EACH229_tree=null;
         Object LPAREN230_tree=null;
         Object RPAREN232_tree=null;
-
+        RewriteRuleTokenStream stream_FOR=new RewriteRuleTokenStream(adaptor,"token FOR");
+        RewriteRuleTokenStream stream_RPAREN=new RewriteRuleTokenStream(adaptor,"token RPAREN");
+        RewriteRuleTokenStream stream_EACH=new RewriteRuleTokenStream(adaptor,"token EACH");
+        RewriteRuleTokenStream stream_LPAREN=new RewriteRuleTokenStream(adaptor,"token LPAREN");
+        RewriteRuleSubtreeStream stream_statement=new RewriteRuleSubtreeStream(adaptor,"rule statement");
+        RewriteRuleSubtreeStream stream_forEachControl=new RewriteRuleSubtreeStream(adaptor,"rule forEachControl");
         try {
-            // JS.g:1511:3: ( FOR EACH LPAREN forEachControl RPAREN statement )
-            // JS.g:1511:5: FOR EACH LPAREN forEachControl RPAREN statement
+            // JS.g:1521:3: ( FOR EACH LPAREN forEachControl RPAREN statement -> ^( FOREACH forEachControl statement ) )
+            // JS.g:1521:5: FOR EACH LPAREN forEachControl RPAREN statement
             {
-            root_0 = (Object)adaptor.nil();
-
             FOR228=(Token)input.LT(1);
-            match(input,FOR,FOLLOW_FOR_in_forEachStatement5493); 
+            match(input,FOR,FOLLOW_FOR_in_forEachStatement5535); 
+            stream_FOR.add(FOR228);
+
             EACH229=(Token)input.LT(1);
-            match(input,EACH,FOLLOW_EACH_in_forEachStatement5496); 
-            EACH229_tree = (Object)adaptor.create(EACH229);
-            root_0 = (Object)adaptor.becomeRoot(EACH229_tree, root_0);
+            match(input,EACH,FOLLOW_EACH_in_forEachStatement5537); 
+            stream_EACH.add(EACH229);
 
             LPAREN230=(Token)input.LT(1);
-            match(input,LPAREN,FOLLOW_LPAREN_in_forEachStatement5499); 
-            pushFollow(FOLLOW_forEachControl_in_forEachStatement5502);
+            match(input,LPAREN,FOLLOW_LPAREN_in_forEachStatement5539); 
+            stream_LPAREN.add(LPAREN230);
+
+            pushFollow(FOLLOW_forEachControl_in_forEachStatement5541);
             forEachControl231=forEachControl();
             _fsp--;
 
-            adaptor.addChild(root_0, forEachControl231.getTree());
+            stream_forEachControl.add(forEachControl231.getTree());
             RPAREN232=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_forEachStatement5504); 
-            pushFollow(FOLLOW_statement_in_forEachStatement5507);
+            match(input,RPAREN,FOLLOW_RPAREN_in_forEachStatement5543); 
+            stream_RPAREN.add(RPAREN232);
+
+            pushFollow(FOLLOW_statement_in_forEachStatement5545);
             statement233=statement();
             _fsp--;
 
-            adaptor.addChild(root_0, statement233.getTree());
+            stream_statement.add(statement233.getTree());
+
+            // AST REWRITE
+            // elements: statement, forEachControl
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1522:4: -> ^( FOREACH forEachControl statement )
+            {
+                // JS.g:1522:7: ^( FOREACH forEachControl statement )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(adaptor.create(FOREACH, "FOREACH"), root_1);
+
+                adaptor.addChild(root_1, stream_forEachControl.next());
+                adaptor.addChild(root_1, stream_statement.next());
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+
 
             }
 
@@ -7729,7 +7799,7 @@
     };
 
     // $ANTLR start forEachControl
-    // JS.g:1514:1: forEachControl : ( forControlVar | forControlExpression );
+    // JS.g:1525:1: forEachControl : ( forControlVar | forControlExpression );
     public final forEachControl_return forEachControl() throws RecognitionException {
         forEachControl_return retval = new forEachControl_return();
         retval.start = input.LT(1);
@@ -7743,29 +7813,29 @@
 
 
         try {
-            // JS.g:1515:3: ( forControlVar | forControlExpression )
+            // JS.g:1526:3: ( forControlVar | forControlExpression )
             int alt54=2;
             int LA54_0 = input.LA(1);
 
             if ( (LA54_0==VAR) ) {
                 alt54=1;
             }
-            else if ( ((LA54_0>=NULL && LA54_0<=FALSE)||LA54_0==DELETE||(LA54_0>=EACH && LA54_0<=FUNCTION)||LA54_0==NEW||LA54_0==THIS||LA54_0==TYPEOF||LA54_0==VOID||(LA54_0>=GET && LA54_0<=YIELD)||LA54_0==WXML||LA54_0==LBRACE||LA54_0==LPAREN||LA54_0==LBRACK||(LA54_0>=ADD && LA54_0<=SUB)||(LA54_0>=INC && LA54_0<=DEC)||(LA54_0>=NOT && LA54_0<=INV)||(LA54_0>=StringLiteral && LA54_0<=XmlAttribute)||LA54_0==Identifier||LA54_0==RegularExpressionLiteral||(LA54_0>=DecimalLiteral && LA54_0<=HexIntegerLiteral)||LA54_0==XMLLiteral) ) {
+            else if ( ((LA54_0>=NULL && LA54_0<=FALSE)||LA54_0==DELETE||(LA54_0>=EACH && LA54_0<=FUNCTION)||LA54_0==NEW||LA54_0==THIS||LA54_0==TYPEOF||LA54_0==VOID||(LA54_0>=GET && LA54_0<=YIELD)||(LA54_0>=WXML && LA54_0<=NAMESPACE)||LA54_0==LBRACE||LA54_0==LPAREN||LA54_0==LBRACK||(LA54_0>=ADD && LA54_0<=SUB)||(LA54_0>=INC && LA54_0<=DEC)||(LA54_0>=NOT && LA54_0<=INV)||(LA54_0>=StringLiteral && LA54_0<=XmlAttribute)||LA54_0==Identifier||LA54_0==RegularExpressionLiteral||(LA54_0>=DecimalLiteral && LA54_0<=HexIntegerLiteral)||LA54_0==XMLLiteral) ) {
                 alt54=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("1514:1: forEachControl : ( forControlVar | forControlExpression );", 54, 0, input);
+                    new NoViableAltException("1525:1: forEachControl : ( forControlVar | forControlExpression );", 54, 0, input);
 
                 throw nvae;
             }
             switch (alt54) {
                 case 1 :
-                    // JS.g:1515:5: forControlVar
+                    // JS.g:1526:5: forControlVar
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_forControlVar_in_forEachControl5520);
+                    pushFollow(FOLLOW_forControlVar_in_forEachControl5572);
                     forControlVar234=forControlVar();
                     _fsp--;
 
@@ -7774,11 +7844,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1516:5: forControlExpression
+                    // JS.g:1527:5: forControlExpression
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_forControlExpression_in_forEachControl5526);
+                    pushFollow(FOLLOW_forControlExpression_in_forEachControl5578);
                     forControlExpression235=forControlExpression();
                     _fsp--;
 
@@ -7810,7 +7880,7 @@
     };
 
     // $ANTLR start forStatement
-    // JS.g:1519:1: forStatement : FOR LPAREN forControl RPAREN statement ;
+    // JS.g:1530: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);
@@ -7830,26 +7900,26 @@
         Object RPAREN239_tree=null;
 
         try {
-            // JS.g:1520:2: ( FOR LPAREN forControl RPAREN statement )
-            // JS.g:1520:4: FOR LPAREN forControl RPAREN statement
+            // JS.g:1531:2: ( FOR LPAREN forControl RPAREN statement )
+            // JS.g:1531:4: FOR LPAREN forControl RPAREN statement
             {
             root_0 = (Object)adaptor.nil();
 
             FOR236=(Token)input.LT(1);
-            match(input,FOR,FOLLOW_FOR_in_forStatement5538); 
+            match(input,FOR,FOLLOW_FOR_in_forStatement5590); 
             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_forStatement5541); 
-            pushFollow(FOLLOW_forControl_in_forStatement5544);
+            match(input,LPAREN,FOLLOW_LPAREN_in_forStatement5593); 
+            pushFollow(FOLLOW_forControl_in_forStatement5596);
             forControl238=forControl();
             _fsp--;
 
             adaptor.addChild(root_0, forControl238.getTree());
             RPAREN239=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_forStatement5546); 
-            pushFollow(FOLLOW_statement_in_forStatement5549);
+            match(input,RPAREN,FOLLOW_RPAREN_in_forStatement5598); 
+            pushFollow(FOLLOW_statement_in_forStatement5601);
             statement240=statement();
             _fsp--;
 
@@ -7879,7 +7949,7 @@
     };
 
     // $ANTLR start forControl
-    // JS.g:1523:1: forControl : ( forControlVar | forControlExpression | forControlSemic );
+    // JS.g:1534:1: forControl : ( forControlVar | forControlExpression | forControlSemic );
     public final forControl_return forControl() throws RecognitionException {
         forControl_return retval = new forControl_return();
         retval.start = input.LT(1);
@@ -7895,7 +7965,7 @@
 
 
         try {
-            // JS.g:1524:2: ( forControlVar | forControlExpression | forControlSemic )
+            // JS.g:1535:2: ( forControlVar | forControlExpression | forControlSemic )
             int alt55=3;
             switch ( input.LA(1) ) {
             case VAR:
@@ -7917,6 +7987,7 @@
             case SET:
             case YIELD:
             case WXML:
+            case NAMESPACE:
             case LBRACE:
             case LPAREN:
             case LBRACK:
@@ -7945,18 +8016,18 @@
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("1523:1: forControl : ( forControlVar | forControlExpression | forControlSemic );", 55, 0, input);
+                    new NoViableAltException("1534:1: forControl : ( forControlVar | forControlExpression | forControlSemic );", 55, 0, input);
 
                 throw nvae;
             }
 
             switch (alt55) {
                 case 1 :
-                    // JS.g:1524:4: forControlVar
+                    // JS.g:1535:4: forControlVar
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_forControlVar_in_forControl5560);
+                    pushFollow(FOLLOW_forControlVar_in_forControl5612);
                     forControlVar241=forControlVar();
                     _fsp--;
 
@@ -7965,11 +8036,11 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1525:4: forControlExpression
+                    // JS.g:1536:4: forControlExpression
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_forControlExpression_in_forControl5565);
+                    pushFollow(FOLLOW_forControlExpression_in_forControl5617);
                     forControlExpression242=forControlExpression();
                     _fsp--;
 
@@ -7978,11 +8049,11 @@
                     }
                     break;
                 case 3 :
-                    // JS.g:1526:4: forControlSemic
+                    // JS.g:1537:4: forControlSemic
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_forControlSemic_in_forControl5570);
+                    pushFollow(FOLLOW_forControlSemic_in_forControl5622);
                     forControlSemic243=forControlSemic();
                     _fsp--;
 
@@ -8014,7 +8085,7 @@
     };
 
     // $ANTLR start forControlVar
-    // JS.g:1529: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: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)? ) ) ) ) ;
     public final forControlVar_return forControlVar() throws RecognitionException {
         forControlVar_return retval = new forControlVar_return();
         retval.start = input.LT(1);
@@ -8049,19 +8120,19 @@
         RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
         RewriteRuleSubtreeStream stream_variableDeclarationNoIn=new RewriteRuleSubtreeStream(adaptor,"rule variableDeclarationNoIn");
         try {
-            // JS.g:1530: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:1530: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: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)? ) ) ) )
             {
             VAR244=(Token)input.LT(1);
-            match(input,VAR,FOLLOW_VAR_in_forControlVar5581); 
+            match(input,VAR,FOLLOW_VAR_in_forControlVar5633); 
             stream_VAR.add(VAR244);
 
-            pushFollow(FOLLOW_variableDeclarationNoIn_in_forControlVar5583);
+            pushFollow(FOLLOW_variableDeclarationNoIn_in_forControlVar5635);
             variableDeclarationNoIn245=variableDeclarationNoIn();
             _fsp--;
 
             stream_variableDeclarationNoIn.add(variableDeclarationNoIn245.getTree());
-            // JS.g:1531: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:1542: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);
 
@@ -8073,29 +8144,29 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("1531: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("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);
 
                 throw nvae;
             }
             switch (alt59) {
                 case 1 :
-                    // JS.g:1532:3: ( IN expression -> ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) ) )
+                    // JS.g:1543:3: ( IN expression -> ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) ) )
                     {
-                    // JS.g:1532:3: ( IN expression -> ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) ) )
-                    // JS.g:1533:4: IN expression
+                    // JS.g:1543:3: ( IN expression -> ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) ) )
+                    // JS.g:1544:4: IN expression
                     {
                     IN246=(Token)input.LT(1);
-                    match(input,IN,FOLLOW_IN_in_forControlVar5595); 
+                    match(input,IN,FOLLOW_IN_in_forControlVar5647); 
                     stream_IN.add(IN246);
 
-                    pushFollow(FOLLOW_expression_in_forControlVar5597);
+                    pushFollow(FOLLOW_expression_in_forControlVar5649);
                     expression247=expression();
                     _fsp--;
 
                     stream_expression.add(expression247.getTree());
 
                     // AST REWRITE
-                    // elements: variableDeclarationNoIn, VAR, expression
+                    // elements: expression, VAR, variableDeclarationNoIn
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
@@ -8104,14 +8175,14 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1534:4: -> ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) )
+                    // 1545:4: -> ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) )
                     {
-                        // JS.g:1534:7: ^( FORITER ^( VAR variableDeclarationNoIn ) ^( EXPR expression ) )
+                        // JS.g:1545: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:1534:18: ^( VAR variableDeclarationNoIn )
+                        // JS.g:1545:18: ^( VAR variableDeclarationNoIn )
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot(stream_VAR.next(), root_2);
@@ -8120,7 +8191,7 @@
 
                         adaptor.addChild(root_1, root_2);
                         }
-                        // JS.g:1534:51: ^( EXPR expression )
+                        // JS.g:1545:51: ^( EXPR expression )
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot(adaptor.create(EXPR, "EXPR"), root_2);
@@ -8143,12 +8214,12 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1537: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:1537:3: ( ( COMMA variableDeclarationNoIn )* SEMIC (ex1= expression )? SEMIC (ex2= expression )? -> ^( FORSTEP ^( VAR ( variableDeclarationNoIn )+ ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) ) )
-                    // JS.g:1538:4: ( COMMA variableDeclarationNoIn )* SEMIC (ex1= expression )? SEMIC (ex2= expression )?
+                    // 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:1538:4: ( COMMA variableDeclarationNoIn )*
+                    // JS.g:1549:4: ( COMMA variableDeclarationNoIn )*
                     loop56:
                     do {
                         int alt56=2;
@@ -8161,13 +8232,13 @@
 
                         switch (alt56) {
                     	case 1 :
-                    	    // JS.g:1538:6: COMMA variableDeclarationNoIn
+                    	    // JS.g:1549:6: COMMA variableDeclarationNoIn
                     	    {
                     	    COMMA248=(Token)input.LT(1);
-                    	    match(input,COMMA,FOLLOW_COMMA_in_forControlVar5643); 
+                    	    match(input,COMMA,FOLLOW_COMMA_in_forControlVar5695); 
                     	    stream_COMMA.add(COMMA248);
 
-                    	    pushFollow(FOLLOW_variableDeclarationNoIn_in_forControlVar5645);
+                    	    pushFollow(FOLLOW_variableDeclarationNoIn_in_forControlVar5697);
                     	    variableDeclarationNoIn249=variableDeclarationNoIn();
                     	    _fsp--;
 
@@ -8182,21 +8253,21 @@
                     } while (true);
 
                     SEMIC250=(Token)input.LT(1);
-                    match(input,SEMIC,FOLLOW_SEMIC_in_forControlVar5650); 
+                    match(input,SEMIC,FOLLOW_SEMIC_in_forControlVar5702); 
                     stream_SEMIC.add(SEMIC250);
 
-                    // JS.g:1538:48: (ex1= expression )?
+                    // JS.g:1549:48: (ex1= expression )?
                     int alt57=2;
                     int LA57_0 = input.LA(1);
 
-                    if ( ((LA57_0>=NULL && LA57_0<=FALSE)||LA57_0==DELETE||(LA57_0>=EACH && LA57_0<=FUNCTION)||LA57_0==NEW||LA57_0==THIS||LA57_0==TYPEOF||LA57_0==VOID||(LA57_0>=GET && LA57_0<=YIELD)||LA57_0==WXML||LA57_0==LBRACE||LA57_0==LPAREN||LA57_0==LBRACK||(LA57_0>=ADD && LA57_0<=SUB)||(LA57_0>=INC && LA57_0<=DEC)||(LA57_0>=NOT && LA57_0<=INV)||(LA57_0>=StringLiteral && LA57_0<=XmlAttribute)||LA57_0==Identifier||LA57_0==RegularExpressionLiteral||(LA57_0>=DecimalLiteral && LA57_0<=HexIntegerLiteral)||LA57_0==XMLLiteral) ) {
+                    if ( ((LA57_0>=NULL && LA57_0<=FALSE)||LA57_0==DELETE||(LA57_0>=EACH && LA57_0<=FUNCTION)||LA57_0==NEW||LA57_0==THIS||LA57_0==TYPEOF||LA57_0==VOID||(LA57_0>=GET && LA57_0<=YIELD)||(LA57_0>=WXML && LA57_0<=NAMESPACE)||LA57_0==LBRACE||LA57_0==LPAREN||LA57_0==LBRACK||(LA57_0>=ADD && LA57_0<=SUB)||(LA57_0>=INC && LA57_0<=DEC)||(LA57_0>=NOT && LA57_0<=INV)||(LA57_0>=StringLiteral && LA57_0<=XmlAttribute)||LA57_0==Identifier||LA57_0==RegularExpressionLiteral||(LA57_0>=DecimalLiteral && LA57_0<=HexIntegerLiteral)||LA57_0==XMLLiteral) ) {
                         alt57=1;
                     }
                     switch (alt57) {
                         case 1 :
-                            // JS.g:1538:48: ex1= expression
+                            // JS.g:1549:48: ex1= expression
                             {
-                            pushFollow(FOLLOW_expression_in_forControlVar5654);
+                            pushFollow(FOLLOW_expression_in_forControlVar5706);
                             ex1=expression();
                             _fsp--;
 
@@ -8208,21 +8279,21 @@
                     }
 
                     SEMIC251=(Token)input.LT(1);
-                    match(input,SEMIC,FOLLOW_SEMIC_in_forControlVar5657); 
+                    match(input,SEMIC,FOLLOW_SEMIC_in_forControlVar5709); 
                     stream_SEMIC.add(SEMIC251);
 
-                    // JS.g:1538:70: (ex2= expression )?
+                    // JS.g:1549:70: (ex2= expression )?
                     int alt58=2;
                     int LA58_0 = input.LA(1);
 
-                    if ( ((LA58_0>=NULL && LA58_0<=FALSE)||LA58_0==DELETE||(LA58_0>=EACH && LA58_0<=FUNCTION)||LA58_0==NEW||LA58_0==THIS||LA58_0==TYPEOF||LA58_0==VOID||(LA58_0>=GET && LA58_0<=YIELD)||LA58_0==WXML||LA58_0==LBRACE||LA58_0==LPAREN||LA58_0==LBRACK||(LA58_0>=ADD && LA58_0<=SUB)||(LA58_0>=INC && LA58_0<=DEC)||(LA58_0>=NOT && LA58_0<=INV)||(LA58_0>=StringLiteral && LA58_0<=XmlAttribute)||LA58_0==Identifier||LA58_0==RegularExpressionLiteral||(LA58_0>=DecimalLiteral && LA58_0<=HexIntegerLiteral)||LA58_0==XMLLiteral) ) {
+                    if ( ((LA58_0>=NULL && LA58_0<=FALSE)||LA58_0==DELETE||(LA58_0>=EACH && LA58_0<=FUNCTION)||LA58_0==NEW||LA58_0==THIS||LA58_0==TYPEOF||LA58_0==VOID||(LA58_0>=GET && LA58_0<=YIELD)||(LA58_0>=WXML && LA58_0<=NAMESPACE)||LA58_0==LBRACE||LA58_0==LPAREN||LA58_0==LBRACK||(LA58_0>=ADD && LA58_0<=SUB)||(LA58_0>=INC && LA58_0<=DEC)||(LA58_0>=NOT && LA58_0<=INV)||(LA58_0>=StringLiteral && LA58_0<=XmlAttribute)||LA58_0==Identifier||LA58_0==RegularExpressionLiteral||(LA58_0>=DecimalLiteral && LA58_0<=HexIntegerLiteral)||LA58_0==XMLLiteral) ) {
                         alt58=1;
                     }
                     switch (alt58) {
                         case 1 :
-                            // JS.g:1538:70: ex2= expression
+                            // JS.g:1549:70: ex2= expression
                             {
-                            pushFollow(FOLLOW_expression_in_forControlVar5661);
+                            pushFollow(FOLLOW_expression_in_forControlVar5713);
                             ex2=expression();
                             _fsp--;
 
@@ -8246,14 +8317,14 @@
                     RewriteRuleSubtreeStream stream_ex1=new RewriteRuleSubtreeStream(adaptor,"token ex1",ex1!=null?ex1.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1539:4: -> ^( FORSTEP ^( VAR ( variableDeclarationNoIn )+ ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) )
+                    // 1550:4: -> ^( FORSTEP ^( VAR ( variableDeclarationNoIn )+ ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) )
                     {
-                        // JS.g:1539:7: ^( FORSTEP ^( VAR ( variableDeclarationNoIn )+ ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) )
+                        // JS.g:1550: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:1539:18: ^( VAR ( variableDeclarationNoIn )+ )
+                        // JS.g:1550:18: ^( VAR ( variableDeclarationNoIn )+ )
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot(stream_VAR.next(), root_2);
@@ -8269,12 +8340,12 @@
 
                         adaptor.addChild(root_1, root_2);
                         }
-                        // JS.g:1539:52: ^( EXPR ( $ex1)? )
+                        // JS.g:1550:52: ^( EXPR ( $ex1)? )
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot(adaptor.create(EXPR, "EXPR"), root_2);
 
-                        // JS.g:1539:60: ( $ex1)?
+                        // JS.g:1550:60: ( $ex1)?
                         if ( stream_ex1.hasNext() ) {
                             adaptor.addChild(root_2, stream_ex1.next());
 
@@ -8283,12 +8354,12 @@
 
                         adaptor.addChild(root_1, root_2);
                         }
-                        // JS.g:1539:68: ^( EXPR ( $ex2)? )
+                        // JS.g:1550:68: ^( EXPR ( $ex2)? )
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot(adaptor.create(EXPR, "EXPR"), root_2);
 
-                        // JS.g:1539:76: ( $ex2)?
+                        // JS.g:1550:76: ( $ex2)?
                         if ( stream_ex2.hasNext() ) {
                             adaptor.addChild(root_2, stream_ex2.next());
 
@@ -8338,7 +8409,7 @@
     };
 
     // $ANTLR start forControlExpression
-    // JS.g:1544: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: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)? ) ) ) ) ;
     public final forControlExpression_return forControlExpression() throws RecognitionException {
         forControlExpression_return retval = new forControlExpression_return();
         retval.start = input.LT(1);
@@ -8366,15 +8437,15 @@
         	Object[] isLhs = new Object[1];
 
         try {
-            // JS.g:1549: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:1549: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: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)? ) ) ) )
             {
-            pushFollow(FOLLOW_expressionNoIn_in_forControlExpression5727);
+            pushFollow(FOLLOW_expressionNoIn_in_forControlExpression5779);
             ex1=expressionNoIn();
             _fsp--;
 
             stream_expressionNoIn.add(ex1.getTree());
-            // JS.g:1550:2: ({...}? ( IN ex2= expression -> ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) ) ) | ( SEMIC (ex2= expression )? SEMIC (ex3= expression )? -> ^( FORSTEP ^( EXPR $ex1) ^( EXPR ( $ex2)? ) ^( EXPR ( $ex3)? ) ) ) )
+            // 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)? ) ) ) )
             int alt62=2;
             int LA62_0 = input.LA(1);
 
@@ -8386,32 +8457,32 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("1550: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("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);
 
                 throw nvae;
             }
             switch (alt62) {
                 case 1 :
-                    // JS.g:1551:3: {...}? ( IN ex2= expression -> ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) ) )
+                    // JS.g:1562:3: {...}? ( IN ex2= expression -> ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) ) )
                     {
                     if ( !( isLeftHandSideIn(ex1, isLhs) ) ) {
                         throw new FailedPredicateException(input, "forControlExpression", " isLeftHandSideIn(ex1, isLhs) ");
                     }
-                    // JS.g:1551:37: ( IN ex2= expression -> ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) ) )
-                    // JS.g:1552:4: IN ex2= expression
+                    // JS.g:1562:37: ( IN ex2= expression -> ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) ) )
+                    // JS.g:1563:4: IN ex2= expression
                     {
                     IN252=(Token)input.LT(1);
-                    match(input,IN,FOLLOW_IN_in_forControlExpression5742); 
+                    match(input,IN,FOLLOW_IN_in_forControlExpression5794); 
                     stream_IN.add(IN252);
 
-                    pushFollow(FOLLOW_expression_in_forControlExpression5746);
+                    pushFollow(FOLLOW_expression_in_forControlExpression5798);
                     ex2=expression();
                     _fsp--;
 
                     stream_expression.add(ex2.getTree());
 
                     // AST REWRITE
-                    // elements: ex1, ex2
+                    // elements: ex2, ex1
                     // token labels: 
                     // rule labels: retval, ex2, ex1
                     // token list labels: 
@@ -8422,14 +8493,14 @@
                     RewriteRuleSubtreeStream stream_ex1=new RewriteRuleSubtreeStream(adaptor,"token ex1",ex1!=null?ex1.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1553:4: -> ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) )
+                    // 1564:4: -> ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) )
                     {
-                        // JS.g:1553:7: ^( FORITER ^( EXPR $ex1) ^( EXPR $ex2) )
+                        // JS.g:1564: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:1553:18: ^( EXPR $ex1)
+                        // JS.g:1564:18: ^( EXPR $ex1)
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot(adaptor.create(EXPR, "EXPR"), root_2);
@@ -8438,7 +8509,7 @@
 
                         adaptor.addChild(root_1, root_2);
                         }
-                        // JS.g:1553:33: ^( EXPR $ex2)
+                        // JS.g:1564:33: ^( EXPR $ex2)
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot(adaptor.create(EXPR, "EXPR"), root_2);
@@ -8461,27 +8532,27 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1556: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:1556:3: ( SEMIC (ex2= expression )? SEMIC (ex3= expression )? -> ^( FORSTEP ^( EXPR $ex1) ^( EXPR ( $ex2)? ) ^( EXPR ( $ex3)? ) ) )
-                    // JS.g:1557:4: SEMIC (ex2= expression )? SEMIC (ex3= expression )?
+                    // 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 )?
                     {
                     SEMIC253=(Token)input.LT(1);
-                    match(input,SEMIC,FOLLOW_SEMIC_in_forControlExpression5792); 
+                    match(input,SEMIC,FOLLOW_SEMIC_in_forControlExpression5844); 
                     stream_SEMIC.add(SEMIC253);
 
-                    // JS.g:1557:13: (ex2= expression )?
+                    // JS.g:1568:13: (ex2= expression )?
                     int alt60=2;
                     int LA60_0 = input.LA(1);
 
-                    if ( ((LA60_0>=NULL && LA60_0<=FALSE)||LA60_0==DELETE||(LA60_0>=EACH && LA60_0<=FUNCTION)||LA60_0==NEW||LA60_0==THIS||LA60_0==TYPEOF||LA60_0==VOID||(LA60_0>=GET && LA60_0<=YIELD)||LA60_0==WXML||LA60_0==LBRACE||LA60_0==LPAREN||LA60_0==LBRACK||(LA60_0>=ADD && LA60_0<=SUB)||(LA60_0>=INC && LA60_0<=DEC)||(LA60_0>=NOT && LA60_0<=INV)||(LA60_0>=StringLiteral && LA60_0<=XmlAttribute)||LA60_0==Identifier||LA60_0==RegularExpressionLiteral||(LA60_0>=DecimalLiteral && LA60_0<=HexIntegerLiteral)||LA60_0==XMLLiteral) ) {
+                    if ( ((LA60_0>=NULL && LA60_0<=FALSE)||LA60_0==DELETE||(LA60_0>=EACH && LA60_0<=FUNCTION)||LA60_0==NEW||LA60_0==THIS||LA60_0==TYPEOF||LA60_0==VOID||(LA60_0>=GET && LA60_0<=YIELD)||(LA60_0>=WXML && LA60_0<=NAMESPACE)||LA60_0==LBRACE||LA60_0==LPAREN||LA60_0==LBRACK||(LA60_0>=ADD && LA60_0<=SUB)||(LA60_0>=INC && LA60_0<=DEC)||(LA60_0>=NOT && LA60_0<=INV)||(LA60_0>=StringLiteral && LA60_0<=XmlAttribute)||LA60_0==Identifier||LA60_0==RegularExpressionLiteral||(LA60_0>=DecimalLiteral && LA60_0<=HexIntegerLiteral)||LA60_0==XMLLiteral) ) {
                         alt60=1;
                     }
                     switch (alt60) {
                         case 1 :
-                            // JS.g:1557:13: ex2= expression
+                            // JS.g:1568:13: ex2= expression
                             {
-                            pushFollow(FOLLOW_expression_in_forControlExpression5796);
+                            pushFollow(FOLLOW_expression_in_forControlExpression5848);
                             ex2=expression();
                             _fsp--;
 
@@ -8493,21 +8564,21 @@
                     }
 
                     SEMIC254=(Token)input.LT(1);
-                    match(input,SEMIC,FOLLOW_SEMIC_in_forControlExpression5799); 
+                    match(input,SEMIC,FOLLOW_SEMIC_in_forControlExpression5851); 
                     stream_SEMIC.add(SEMIC254);
 
-                    // JS.g:1557:35: (ex3= expression )?
+                    // JS.g:1568:35: (ex3= expression )?
                     int alt61=2;
                     int LA61_0 = input.LA(1);
 
-                    if ( ((LA61_0>=NULL && LA61_0<=FALSE)||LA61_0==DELETE||(LA61_0>=EACH && LA61_0<=FUNCTION)||LA61_0==NEW||LA61_0==THIS||LA61_0==TYPEOF||LA61_0==VOID||(LA61_0>=GET && LA61_0<=YIELD)||LA61_0==WXML||LA61_0==LBRACE||LA61_0==LPAREN||LA61_0==LBRACK||(LA61_0>=ADD && LA61_0<=SUB)||(LA61_0>=INC && LA61_0<=DEC)||(LA61_0>=NOT && LA61_0<=INV)||(LA61_0>=StringLiteral && LA61_0<=XmlAttribute)||LA61_0==Identifier||LA61_0==RegularExpressionLiteral||(LA61_0>=DecimalLiteral && LA61_0<=HexIntegerLiteral)||LA61_0==XMLLiteral) ) {
+                    if ( ((LA61_0>=NULL && LA61_0<=FALSE)||LA61_0==DELETE||(LA61_0>=EACH && LA61_0<=FUNCTION)||LA61_0==NEW||LA61_0==THIS||LA61_0==TYPEOF||LA61_0==VOID||(LA61_0>=GET && LA61_0<=YIELD)||(LA61_0>=WXML && LA61_0<=NAMESPACE)||LA61_0==LBRACE||LA61_0==LPAREN||LA61_0==LBRACK||(LA61_0>=ADD && LA61_0<=SUB)||(LA61_0>=INC && LA61_0<=DEC)||(LA61_0>=NOT && LA61_0<=INV)||(LA61_0>=StringLiteral && LA61_0<=XmlAttribute)||LA61_0==Identifier||LA61_0==RegularExpressionLiteral||(LA61_0>=DecimalLiteral && LA61_0<=HexIntegerLiteral)||LA61_0==XMLLiteral) ) {
                         alt61=1;
                     }
                     switch (alt61) {
                         case 1 :
-                            // JS.g:1557:35: ex3= expression
+                            // JS.g:1568:35: ex3= expression
                             {
-                            pushFollow(FOLLOW_expression_in_forControlExpression5803);
+                            pushFollow(FOLLOW_expression_in_forControlExpression5855);
                             ex3=expression();
                             _fsp--;
 
@@ -8520,7 +8591,7 @@
 
 
                     // AST REWRITE
-                    // elements: ex1, ex2, ex3
+                    // elements: ex3, ex2, ex1
                     // token labels: 
                     // rule labels: retval, ex3, ex2, ex1
                     // token list labels: 
@@ -8532,14 +8603,14 @@
                     RewriteRuleSubtreeStream stream_ex1=new RewriteRuleSubtreeStream(adaptor,"token ex1",ex1!=null?ex1.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1558:4: -> ^( FORSTEP ^( EXPR $ex1) ^( EXPR ( $ex2)? ) ^( EXPR ( $ex3)? ) )
+                    // 1569:4: -> ^( FORSTEP ^( EXPR $ex1) ^( EXPR ( $ex2)? ) ^( EXPR ( $ex3)? ) )
                     {
-                        // JS.g:1558:7: ^( FORSTEP ^( EXPR $ex1) ^( EXPR ( $ex2)? ) ^( EXPR ( $ex3)? ) )
+                        // JS.g:1569: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:1558:18: ^( EXPR $ex1)
+                        // JS.g:1569:18: ^( EXPR $ex1)
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot(adaptor.create(EXPR, "EXPR"), root_2);
@@ -8548,12 +8619,12 @@
 
                         adaptor.addChild(root_1, root_2);
                         }
-                        // JS.g:1558:33: ^( EXPR ( $ex2)? )
+                        // JS.g:1569:33: ^( EXPR ( $ex2)? )
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot(adaptor.create(EXPR, "EXPR"), root_2);
 
-                        // JS.g:1558:41: ( $ex2)?
+                        // JS.g:1569:41: ( $ex2)?
                         if ( stream_ex2.hasNext() ) {
                             adaptor.addChild(root_2, stream_ex2.next());
 
@@ -8562,12 +8633,12 @@
 
                         adaptor.addChild(root_1, root_2);
                         }
-                        // JS.g:1558:49: ^( EXPR ( $ex3)? )
+                        // JS.g:1569:49: ^( EXPR ( $ex3)? )
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot(adaptor.create(EXPR, "EXPR"), root_2);
 
-                        // JS.g:1558:57: ( $ex3)?
+                        // JS.g:1569:57: ( $ex3)?
                         if ( stream_ex3.hasNext() ) {
                             adaptor.addChild(root_2, stream_ex3.next());
 
@@ -8617,7 +8688,7 @@
     };
 
     // $ANTLR start forControlSemic
-    // JS.g:1563:1: forControlSemic : SEMIC (ex1= expression )? SEMIC (ex2= expression )? -> ^( FORSTEP ^( EXPR ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) ) ;
+    // JS.g:1574: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);
@@ -8636,25 +8707,25 @@
         RewriteRuleTokenStream stream_SEMIC=new RewriteRuleTokenStream(adaptor,"token SEMIC");
         RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
         try {
-            // JS.g:1564:2: ( SEMIC (ex1= expression )? SEMIC (ex2= expression )? -> ^( FORSTEP ^( EXPR ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) ) )
-            // JS.g:1564:4: SEMIC (ex1= expression )? SEMIC (ex2= expression )?
+            // 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 )?
             {
             SEMIC255=(Token)input.LT(1);
-            match(input,SEMIC,FOLLOW_SEMIC_in_forControlSemic5862); 
+            match(input,SEMIC,FOLLOW_SEMIC_in_forControlSemic5914); 
             stream_SEMIC.add(SEMIC255);
 
-            // JS.g:1564:13: (ex1= expression )?
+            // JS.g:1575:13: (ex1= expression )?
             int alt63=2;
             int LA63_0 = input.LA(1);
 
-            if ( ((LA63_0>=NULL && LA63_0<=FALSE)||LA63_0==DELETE||(LA63_0>=EACH && LA63_0<=FUNCTION)||LA63_0==NEW||LA63_0==THIS||LA63_0==TYPEOF||LA63_0==VOID||(LA63_0>=GET && LA63_0<=YIELD)||LA63_0==WXML||LA63_0==LBRACE||LA63_0==LPAREN||LA63_0==LBRACK||(LA63_0>=ADD && LA63_0<=SUB)||(LA63_0>=INC && LA63_0<=DEC)||(LA63_0>=NOT && LA63_0<=INV)||(LA63_0>=StringLiteral && LA63_0<=XmlAttribute)||LA63_0==Identifier||LA63_0==RegularExpressionLiteral||(LA63_0>=DecimalLiteral && LA63_0<=HexIntegerLiteral)||LA63_0==XMLLiteral) ) {
+            if ( ((LA63_0>=NULL && LA63_0<=FALSE)||LA63_0==DELETE||(LA63_0>=EACH && LA63_0<=FUNCTION)||LA63_0==NEW||LA63_0==THIS||LA63_0==TYPEOF||LA63_0==VOID||(LA63_0>=GET && LA63_0<=YIELD)||(LA63_0>=WXML && LA63_0<=NAMESPACE)||LA63_0==LBRACE||LA63_0==LPAREN||LA63_0==LBRACK||(LA63_0>=ADD && LA63_0<=SUB)||(LA63_0>=INC && LA63_0<=DEC)||(LA63_0>=NOT && LA63_0<=INV)||(LA63_0>=StringLiteral && LA63_0<=XmlAttribute)||LA63_0==Identifier||LA63_0==RegularExpressionLiteral||(LA63_0>=DecimalLiteral && LA63_0<=HexIntegerLiteral)||LA63_0==XMLLiteral) ) {
                 alt63=1;
             }
             switch (alt63) {
                 case 1 :
-                    // JS.g:1564:13: ex1= expression
+                    // JS.g:1575:13: ex1= expression
                     {
-                    pushFollow(FOLLOW_expression_in_forControlSemic5866);
+                    pushFollow(FOLLOW_expression_in_forControlSemic5918);
                     ex1=expression();
                     _fsp--;
 
@@ -8666,21 +8737,21 @@
             }
 
             SEMIC256=(Token)input.LT(1);
-            match(input,SEMIC,FOLLOW_SEMIC_in_forControlSemic5869); 
+            match(input,SEMIC,FOLLOW_SEMIC_in_forControlSemic5921); 
             stream_SEMIC.add(SEMIC256);
 
-            // JS.g:1564:35: (ex2= expression )?
+            // JS.g:1575:35: (ex2= expression )?
             int alt64=2;
             int LA64_0 = input.LA(1);
 
-            if ( ((LA64_0>=NULL && LA64_0<=FALSE)||LA64_0==DELETE||(LA64_0>=EACH && LA64_0<=FUNCTION)||LA64_0==NEW||LA64_0==THIS||LA64_0==TYPEOF||LA64_0==VOID||(LA64_0>=GET && LA64_0<=YIELD)||LA64_0==WXML||LA64_0==LBRACE||LA64_0==LPAREN||LA64_0==LBRACK||(LA64_0>=ADD && LA64_0<=SUB)||(LA64_0>=INC && LA64_0<=DEC)||(LA64_0>=NOT && LA64_0<=INV)||(LA64_0>=StringLiteral && LA64_0<=XmlAttribute)||LA64_0==Identifier||LA64_0==RegularExpressionLiteral||(LA64_0>=DecimalLiteral && LA64_0<=HexIntegerLiteral)||LA64_0==XMLLiteral) ) {
+            if ( ((LA64_0>=NULL && LA64_0<=FALSE)||LA64_0==DELETE||(LA64_0>=EACH && LA64_0<=FUNCTION)||LA64_0==NEW||LA64_0==THIS||LA64_0==TYPEOF||LA64_0==VOID||(LA64_0>=GET && LA64_0<=YIELD)||(LA64_0>=WXML && LA64_0<=NAMESPACE)||LA64_0==LBRACE||LA64_0==LPAREN||LA64_0==LBRACK||(LA64_0>=ADD && LA64_0<=SUB)||(LA64_0>=INC && LA64_0<=DEC)||(LA64_0>=NOT && LA64_0<=INV)||(LA64_0>=StringLiteral && LA64_0<=XmlAttribute)||LA64_0==Identifier||LA64_0==RegularExpressionLiteral||(LA64_0>=DecimalLiteral && LA64_0<=HexIntegerLiteral)||LA64_0==XMLLiteral) ) {
                 alt64=1;
             }
             switch (alt64) {
                 case 1 :
-                    // JS.g:1564:35: ex2= expression
+                    // JS.g:1575:35: ex2= expression
                     {
-                    pushFollow(FOLLOW_expression_in_forControlSemic5873);
+                    pushFollow(FOLLOW_expression_in_forControlSemic5925);
                     ex2=expression();
                     _fsp--;
 
@@ -8693,7 +8764,7 @@
 
 
             // AST REWRITE
-            // elements: ex1, ex2
+            // elements: ex2, ex1
             // token labels: 
             // rule labels: retval, ex2, ex1
             // token list labels: 
@@ -8704,26 +8775,26 @@
             RewriteRuleSubtreeStream stream_ex1=new RewriteRuleSubtreeStream(adaptor,"token ex1",ex1!=null?ex1.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1565:2: -> ^( FORSTEP ^( EXPR ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) )
+            // 1576:2: -> ^( FORSTEP ^( EXPR ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) )
             {
-                // JS.g:1565:5: ^( FORSTEP ^( EXPR ) ^( EXPR ( $ex1)? ) ^( EXPR ( $ex2)? ) )
+                // JS.g:1576: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:1565:16: ^( EXPR )
+                // JS.g:1576: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:1565:26: ^( EXPR ( $ex1)? )
+                // JS.g:1576:26: ^( EXPR ( $ex1)? )
                 {
                 Object root_2 = (Object)adaptor.nil();
                 root_2 = (Object)adaptor.becomeRoot(adaptor.create(EXPR, "EXPR"), root_2);
 
-                // JS.g:1565:34: ( $ex1)?
+                // JS.g:1576:34: ( $ex1)?
                 if ( stream_ex1.hasNext() ) {
                     adaptor.addChild(root_2, stream_ex1.next());
 
@@ -8732,12 +8803,12 @@
 
                 adaptor.addChild(root_1, root_2);
                 }
-                // JS.g:1565:42: ^( EXPR ( $ex2)? )
+                // JS.g:1576:42: ^( EXPR ( $ex2)? )
                 {
                 Object root_2 = (Object)adaptor.nil();
                 root_2 = (Object)adaptor.becomeRoot(adaptor.create(EXPR, "EXPR"), root_2);
 
-                // JS.g:1565:50: ( $ex2)?
+                // JS.g:1576:50: ( $ex2)?
                 if ( stream_ex2.hasNext() ) {
                     adaptor.addChild(root_2, stream_ex2.next());
 
@@ -8778,7 +8849,7 @@
     };
 
     // $ANTLR start continueStatement
-    // JS.g:1577:1: continueStatement : CONTINUE ( Identifier )? semic ;
+    // JS.g:1588:1: continueStatement : CONTINUE ( Identifier )? semic ;
     public final continueStatement_return continueStatement() throws RecognitionException {
         continueStatement_return retval = new continueStatement_return();
         retval.start = input.LT(1);
@@ -8794,18 +8865,18 @@
         Object Identifier258_tree=null;
 
         try {
-            // JS.g:1578:2: ( CONTINUE ( Identifier )? semic )
-            // JS.g:1578:4: CONTINUE ( Identifier )? semic
+            // JS.g:1589:2: ( CONTINUE ( Identifier )? semic )
+            // JS.g:1589:4: CONTINUE ( Identifier )? semic
             {
             root_0 = (Object)adaptor.nil();
 
             CONTINUE257=(Token)input.LT(1);
-            match(input,CONTINUE,FOLLOW_CONTINUE_in_continueStatement5927); 
+            match(input,CONTINUE,FOLLOW_CONTINUE_in_continueStatement5979); 
             CONTINUE257_tree = (Object)adaptor.create(CONTINUE257);
             root_0 = (Object)adaptor.becomeRoot(CONTINUE257_tree, root_0);
 
              if (input.LA(1) == Identifier) promoteEOL(null); 
-            // JS.g:1578:67: ( Identifier )?
+            // JS.g:1589:67: ( Identifier )?
             int alt65=2;
             int LA65_0 = input.LA(1);
 
@@ -8814,10 +8885,10 @@
             }
             switch (alt65) {
                 case 1 :
-                    // JS.g:1578:67: Identifier
+                    // JS.g:1589:67: Identifier
                     {
                     Identifier258=(Token)input.LT(1);
-                    match(input,Identifier,FOLLOW_Identifier_in_continueStatement5932); 
+                    match(input,Identifier,FOLLOW_Identifier_in_continueStatement5984); 
                     Identifier258_tree = (Object)adaptor.create(Identifier258);
                     adaptor.addChild(root_0, Identifier258_tree);
 
@@ -8827,7 +8898,7 @@
 
             }
 
-            pushFollow(FOLLOW_semic_in_continueStatement5935);
+            pushFollow(FOLLOW_semic_in_continueStatement5987);
             semic259=semic();
             _fsp--;
 
@@ -8856,7 +8927,7 @@
     };
 
     // $ANTLR start breakStatement
-    // JS.g:1590:1: breakStatement : BREAK ( Identifier )? semic ;
+    // JS.g:1601:1: breakStatement : BREAK ( Identifier )? semic ;
     public final breakStatement_return breakStatement() throws RecognitionException {
         breakStatement_return retval = new breakStatement_return();
         retval.start = input.LT(1);
@@ -8872,18 +8943,18 @@
         Object Identifier261_tree=null;
 
         try {
-            // JS.g:1591:2: ( BREAK ( Identifier )? semic )
-            // JS.g:1591:4: BREAK ( Identifier )? semic
+            // JS.g:1602:2: ( BREAK ( Identifier )? semic )
+            // JS.g:1602:4: BREAK ( Identifier )? semic
             {
             root_0 = (Object)adaptor.nil();
 
             BREAK260=(Token)input.LT(1);
-            match(input,BREAK,FOLLOW_BREAK_in_breakStatement5954); 
+            match(input,BREAK,FOLLOW_BREAK_in_breakStatement6006); 
             BREAK260_tree = (Object)adaptor.create(BREAK260);
             root_0 = (Object)adaptor.becomeRoot(BREAK260_tree, root_0);
 
              if (input.LA(1) == Identifier) promoteEOL(null); 
-            // JS.g:1591:64: ( Identifier )?
+            // JS.g:1602:64: ( Identifier )?
             int alt66=2;
             int LA66_0 = input.LA(1);
 
@@ -8892,10 +8963,10 @@
             }
             switch (alt66) {
                 case 1 :
-                    // JS.g:1591:64: Identifier
+                    // JS.g:1602:64: Identifier
                     {
                     Identifier261=(Token)input.LT(1);
-                    match(input,Identifier,FOLLOW_Identifier_in_breakStatement5959); 
+                    match(input,Identifier,FOLLOW_Identifier_in_breakStatement6011); 
                     Identifier261_tree = (Object)adaptor.create(Identifier261);
                     adaptor.addChild(root_0, Identifier261_tree);
 
@@ -8905,7 +8976,7 @@
 
             }
 
-            pushFollow(FOLLOW_semic_in_breakStatement5962);
+            pushFollow(FOLLOW_semic_in_breakStatement6014);
             semic262=semic();
             _fsp--;
 
@@ -8934,7 +9005,7 @@
     };
 
     // $ANTLR start returnStatement
-    // JS.g:1611:1: returnStatement : RETURN ( expression )? semic ;
+    // JS.g:1622:1: returnStatement : RETURN ( expression )? semic ;
     public final returnStatement_return returnStatement() throws RecognitionException {
         returnStatement_return retval = new returnStatement_return();
         retval.start = input.LT(1);
@@ -8950,29 +9021,29 @@
         Object RETURN263_tree=null;
 
         try {
-            // JS.g:1612:2: ( RETURN ( expression )? semic )
-            // JS.g:1612:4: RETURN ( expression )? semic
+            // JS.g:1623:2: ( RETURN ( expression )? semic )
+            // JS.g:1623:4: RETURN ( expression )? semic
             {
             root_0 = (Object)adaptor.nil();
 
             RETURN263=(Token)input.LT(1);
-            match(input,RETURN,FOLLOW_RETURN_in_returnStatement5981); 
+            match(input,RETURN,FOLLOW_RETURN_in_returnStatement6033); 
             RETURN263_tree = (Object)adaptor.create(RETURN263);
             root_0 = (Object)adaptor.becomeRoot(RETURN263_tree, root_0);
 
              promoteEOL(null); 
-            // JS.g:1612:34: ( expression )?
+            // JS.g:1623:34: ( expression )?
             int alt67=2;
             int LA67_0 = input.LA(1);
 
-            if ( ((LA67_0>=NULL && LA67_0<=FALSE)||LA67_0==DELETE||(LA67_0>=EACH && LA67_0<=FUNCTION)||LA67_0==NEW||LA67_0==THIS||LA67_0==TYPEOF||LA67_0==VOID||(LA67_0>=GET && LA67_0<=YIELD)||LA67_0==WXML||LA67_0==LBRACE||LA67_0==LPAREN||LA67_0==LBRACK||(LA67_0>=ADD && LA67_0<=SUB)||(LA67_0>=INC && LA67_0<=DEC)||(LA67_0>=NOT && LA67_0<=INV)||(LA67_0>=StringLiteral && LA67_0<=XmlAttribute)||LA67_0==Identifier||LA67_0==RegularExpressionLiteral||(LA67_0>=DecimalLiteral && LA67_0<=HexIntegerLiteral)||LA67_0==XMLLiteral) ) {
+            if ( ((LA67_0>=NULL && LA67_0<=FALSE)||LA67_0==DELETE||(LA67_0>=EACH && LA67_0<=FUNCTION)||LA67_0==NEW||LA67_0==THIS||LA67_0==TYPEOF||LA67_0==VOID||(LA67_0>=GET && LA67_0<=YIELD)||(LA67_0>=WXML && LA67_0<=NAMESPACE)||LA67_0==LBRACE||LA67_0==LPAREN||LA67_0==LBRACK||(LA67_0>=ADD && LA67_0<=SUB)||(LA67_0>=INC && LA67_0<=DEC)||(LA67_0>=NOT && LA67_0<=INV)||(LA67_0>=StringLiteral && LA67_0<=XmlAttribute)||LA67_0==Identifier||LA67_0==RegularExpressionLiteral||(LA67_0>=DecimalLiteral && LA67_0<=HexIntegerLiteral)||LA67_0==XMLLiteral) ) {
                 alt67=1;
             }
             switch (alt67) {
                 case 1 :
-                    // JS.g:1612:34: expression
+                    // JS.g:1623:34: expression
                     {
-                    pushFollow(FOLLOW_expression_in_returnStatement5986);
+                    pushFollow(FOLLOW_expression_in_returnStatement6038);
                     expression264=expression();
                     _fsp--;
 
@@ -8983,7 +9054,7 @@
 
             }
 
-            pushFollow(FOLLOW_semic_in_returnStatement5989);
+            pushFollow(FOLLOW_semic_in_returnStatement6041);
             semic265=semic();
             _fsp--;
 
@@ -9012,7 +9083,7 @@
     };
 
     // $ANTLR start withStatement
-    // JS.g:1619:1: withStatement : WITH LPAREN expression RPAREN statement ;
+    // JS.g:1630: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);
@@ -9032,26 +9103,26 @@
         Object RPAREN269_tree=null;
 
         try {
-            // JS.g:1620:2: ( WITH LPAREN expression RPAREN statement )
-            // JS.g:1620:4: WITH LPAREN expression RPAREN statement
+            // JS.g:1631:2: ( WITH LPAREN expression RPAREN statement )
+            // JS.g:1631:4: WITH LPAREN expression RPAREN statement
             {
             root_0 = (Object)adaptor.nil();
 
             WITH266=(Token)input.LT(1);
-            match(input,WITH,FOLLOW_WITH_in_withStatement6006); 
+            match(input,WITH,FOLLOW_WITH_in_withStatement6058); 
             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_withStatement6009); 
-            pushFollow(FOLLOW_expression_in_withStatement6012);
+            match(input,LPAREN,FOLLOW_LPAREN_in_withStatement6061); 
+            pushFollow(FOLLOW_expression_in_withStatement6064);
             expression268=expression();
             _fsp--;
 
             adaptor.addChild(root_0, expression268.getTree());
             RPAREN269=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_withStatement6014); 
-            pushFollow(FOLLOW_statement_in_withStatement6017);
+            match(input,RPAREN,FOLLOW_RPAREN_in_withStatement6066); 
+            pushFollow(FOLLOW_statement_in_withStatement6069);
             statement270=statement();
             _fsp--;
 
@@ -9081,7 +9152,7 @@
     };
 
     // $ANTLR start switchStatement
-    // JS.g:1627:1: switchStatement : SWITCH LPAREN expression RPAREN LBRACE ({...}? => defaultClause | caseClause )* RBRACE -> ^( SWITCH expression ( defaultClause )? ( caseClause )* ) ;
+    // JS.g:1638: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);
@@ -9117,31 +9188,31 @@
         	int defaultClauseCount = 0;
 
         try {
-            // JS.g:1632:2: ( SWITCH LPAREN expression RPAREN LBRACE ({...}? => defaultClause | caseClause )* RBRACE -> ^( SWITCH expression ( defaultClause )? ( caseClause )* ) )
-            // JS.g:1632:4: SWITCH LPAREN expression RPAREN LBRACE ({...}? => defaultClause | caseClause )* RBRACE
+            // 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
             {
             SWITCH271=(Token)input.LT(1);
-            match(input,SWITCH,FOLLOW_SWITCH_in_switchStatement6038); 
+            match(input,SWITCH,FOLLOW_SWITCH_in_switchStatement6090); 
             stream_SWITCH.add(SWITCH271);
 
             LPAREN272=(Token)input.LT(1);
-            match(input,LPAREN,FOLLOW_LPAREN_in_switchStatement6040); 
+            match(input,LPAREN,FOLLOW_LPAREN_in_switchStatement6092); 
             stream_LPAREN.add(LPAREN272);
 
-            pushFollow(FOLLOW_expression_in_switchStatement6042);
+            pushFollow(FOLLOW_expression_in_switchStatement6094);
             expression273=expression();
             _fsp--;
 
             stream_expression.add(expression273.getTree());
             RPAREN274=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_switchStatement6044); 
+            match(input,RPAREN,FOLLOW_RPAREN_in_switchStatement6096); 
             stream_RPAREN.add(RPAREN274);
 
             LBRACE275=(Token)input.LT(1);
-            match(input,LBRACE,FOLLOW_LBRACE_in_switchStatement6046); 
+            match(input,LBRACE,FOLLOW_LBRACE_in_switchStatement6098); 
             stream_LBRACE.add(LBRACE275);
 
-            // JS.g:1632:43: ({...}? => defaultClause | caseClause )*
+            // JS.g:1643:43: ({...}? => defaultClause | caseClause )*
             loop68:
             do {
                 int alt68=3;
@@ -9157,12 +9228,12 @@
 
                 switch (alt68) {
             	case 1 :
-            	    // JS.g:1632:45: {...}? => defaultClause
+            	    // JS.g:1643:45: {...}? => defaultClause
             	    {
             	    if ( !( defaultClauseCount == 0 ) ) {
             	        throw new FailedPredicateException(input, "switchStatement", " defaultClauseCount == 0 ");
             	    }
-            	    pushFollow(FOLLOW_defaultClause_in_switchStatement6053);
+            	    pushFollow(FOLLOW_defaultClause_in_switchStatement6105);
             	    defaultClause276=defaultClause();
             	    _fsp--;
 
@@ -9172,9 +9243,9 @@
             	    }
             	    break;
             	case 2 :
-            	    // JS.g:1632:118: caseClause
+            	    // JS.g:1643:118: caseClause
             	    {
-            	    pushFollow(FOLLOW_caseClause_in_switchStatement6059);
+            	    pushFollow(FOLLOW_caseClause_in_switchStatement6111);
             	    caseClause277=caseClause();
             	    _fsp--;
 
@@ -9189,12 +9260,12 @@
             } while (true);
 
             RBRACE278=(Token)input.LT(1);
-            match(input,RBRACE,FOLLOW_RBRACE_in_switchStatement6064); 
+            match(input,RBRACE,FOLLOW_RBRACE_in_switchStatement6116); 
             stream_RBRACE.add(RBRACE278);
 
 
             // AST REWRITE
-            // elements: SWITCH, expression, caseClause, defaultClause
+            // elements: defaultClause, expression, SWITCH, caseClause
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -9203,21 +9274,21 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1633:2: -> ^( SWITCH expression ( defaultClause )? ( caseClause )* )
+            // 1644:2: -> ^( SWITCH expression ( defaultClause )? ( caseClause )* )
             {
-                // JS.g:1633:5: ^( SWITCH expression ( defaultClause )? ( caseClause )* )
+                // JS.g:1644: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:1633:26: ( defaultClause )?
+                // JS.g:1644:26: ( defaultClause )?
                 if ( stream_defaultClause.hasNext() ) {
                     adaptor.addChild(root_1, stream_defaultClause.next());
 
                 }
                 stream_defaultClause.reset();
-                // JS.g:1633:41: ( caseClause )*
+                // JS.g:1644:41: ( caseClause )*
                 while ( stream_caseClause.hasNext() ) {
                     adaptor.addChild(root_1, stream_caseClause.next());
 
@@ -9255,7 +9326,7 @@
     };
 
     // $ANTLR start caseClause
-    // JS.g:1636:1: caseClause : CASE expression COLON ( statement )* ;
+    // JS.g:1647:1: caseClause : CASE expression COLON ( statement )* ;
     public final caseClause_return caseClause() throws RecognitionException {
         caseClause_return retval = new caseClause_return();
         retval.start = input.LT(1);
@@ -9273,24 +9344,24 @@
         Object COLON281_tree=null;
 
         try {
-            // JS.g:1637:2: ( CASE expression COLON ( statement )* )
-            // JS.g:1637:4: CASE expression COLON ( statement )*
+            // JS.g:1648:2: ( CASE expression COLON ( statement )* )
+            // JS.g:1648:4: CASE expression COLON ( statement )*
             {
             root_0 = (Object)adaptor.nil();
 
             CASE279=(Token)input.LT(1);
-            match(input,CASE,FOLLOW_CASE_in_caseClause6092); 
+            match(input,CASE,FOLLOW_CASE_in_caseClause6144); 
             CASE279_tree = (Object)adaptor.create(CASE279);
             root_0 = (Object)adaptor.becomeRoot(CASE279_tree, root_0);
 
-            pushFollow(FOLLOW_expression_in_caseClause6095);
+            pushFollow(FOLLOW_expression_in_caseClause6147);
             expression280=expression();
             _fsp--;
 
             adaptor.addChild(root_0, expression280.getTree());
             COLON281=(Token)input.LT(1);
-            match(input,COLON,FOLLOW_COLON_in_caseClause6097); 
-            // JS.g:1637:28: ( statement )*
+            match(input,COLON,FOLLOW_COLON_in_caseClause6149); 
+            // JS.g:1648:28: ( statement )*
             loop69:
             do {
                 int alt69=2;
@@ -9305,16 +9376,16 @@
 
 
                 }
-                else if ( ((LA69_0>=NULL && LA69_0<=BREAK)||LA69_0==CONTINUE||(LA69_0>=DELETE && LA69_0<=DO)||(LA69_0>=FOR && LA69_0<=IF)||(LA69_0>=NEW && LA69_0<=YIELD)||LA69_0==WXML||LA69_0==CONST||LA69_0==LBRACE||LA69_0==LPAREN||LA69_0==LBRACK||LA69_0==SEMIC||(LA69_0>=ADD && LA69_0<=SUB)||(LA69_0>=INC && LA69_0<=DEC)||(LA69_0>=NOT && LA69_0<=INV)||(LA69_0>=StringLiteral && LA69_0<=XmlAttribute)||LA69_0==Identifier||LA69_0==RegularExpressionLiteral||(LA69_0>=DecimalLiteral && LA69_0<=HexIntegerLiteral)||LA69_0==XMLLiteral) ) {
+                else if ( ((LA69_0>=NULL && LA69_0<=BREAK)||LA69_0==CONTINUE||(LA69_0>=DELETE && LA69_0<=DO)||(LA69_0>=FOR && LA69_0<=IF)||(LA69_0>=NEW && LA69_0<=YIELD)||(LA69_0>=WXML && LA69_0<=NAMESPACE)||LA69_0==CONST||LA69_0==LBRACE||LA69_0==LPAREN||LA69_0==LBRACK||LA69_0==SEMIC||(LA69_0>=ADD && LA69_0<=SUB)||(LA69_0>=INC && LA69_0<=DEC)||(LA69_0>=NOT && LA69_0<=INV)||(LA69_0>=StringLiteral && LA69_0<=XmlAttribute)||LA69_0==Identifier||LA69_0==RegularExpressionLiteral||(LA69_0>=DecimalLiteral && LA69_0<=HexIntegerLiteral)||LA69_0==XMLLiteral) ) {
                     alt69=1;
                 }
 
 
                 switch (alt69) {
             	case 1 :
-            	    // JS.g:1637:28: statement
+            	    // JS.g:1648:28: statement
             	    {
-            	    pushFollow(FOLLOW_statement_in_caseClause6100);
+            	    pushFollow(FOLLOW_statement_in_caseClause6152);
             	    statement282=statement();
             	    _fsp--;
 
@@ -9353,7 +9424,7 @@
     };
 
     // $ANTLR start defaultClause
-    // JS.g:1640:1: defaultClause : DEFAULT COLON ( statement )* ;
+    // JS.g:1651:1: defaultClause : DEFAULT COLON ( statement )* ;
     public final defaultClause_return defaultClause() throws RecognitionException {
         defaultClause_return retval = new defaultClause_return();
         retval.start = input.LT(1);
@@ -9369,19 +9440,19 @@
         Object COLON284_tree=null;
 
         try {
-            // JS.g:1641:2: ( DEFAULT COLON ( statement )* )
-            // JS.g:1641:4: DEFAULT COLON ( statement )*
+            // JS.g:1652:2: ( DEFAULT COLON ( statement )* )
+            // JS.g:1652:4: DEFAULT COLON ( statement )*
             {
             root_0 = (Object)adaptor.nil();
 
             DEFAULT283=(Token)input.LT(1);
-            match(input,DEFAULT,FOLLOW_DEFAULT_in_defaultClause6113); 
+            match(input,DEFAULT,FOLLOW_DEFAULT_in_defaultClause6165); 
             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_defaultClause6116); 
-            // JS.g:1641:20: ( statement )*
+            match(input,COLON,FOLLOW_COLON_in_defaultClause6168); 
+            // JS.g:1652:20: ( statement )*
             loop70:
             do {
                 int alt70=2;
@@ -9396,16 +9467,16 @@
 
 
                 }
-                else if ( ((LA70_0>=NULL && LA70_0<=BREAK)||LA70_0==CONTINUE||(LA70_0>=DELETE && LA70_0<=DO)||(LA70_0>=FOR && LA70_0<=IF)||(LA70_0>=NEW && LA70_0<=YIELD)||LA70_0==WXML||LA70_0==CONST||LA70_0==LBRACE||LA70_0==LPAREN||LA70_0==LBRACK||LA70_0==SEMIC||(LA70_0>=ADD && LA70_0<=SUB)||(LA70_0>=INC && LA70_0<=DEC)||(LA70_0>=NOT && LA70_0<=INV)||(LA70_0>=StringLiteral && LA70_0<=XmlAttribute)||LA70_0==Identifier||LA70_0==RegularExpressionLiteral||(LA70_0>=DecimalLiteral && LA70_0<=HexIntegerLiteral)||LA70_0==XMLLiteral) ) {
+                else if ( ((LA70_0>=NULL && LA70_0<=BREAK)||LA70_0==CONTINUE||(LA70_0>=DELETE && LA70_0<=DO)||(LA70_0>=FOR && LA70_0<=IF)||(LA70_0>=NEW && LA70_0<=YIELD)||(LA70_0>=WXML && LA70_0<=NAMESPACE)||LA70_0==CONST||LA70_0==LBRACE||LA70_0==LPAREN||LA70_0==LBRACK||LA70_0==SEMIC||(LA70_0>=ADD && LA70_0<=SUB)||(LA70_0>=INC && LA70_0<=DEC)||(LA70_0>=NOT && LA70_0<=INV)||(LA70_0>=StringLiteral && LA70_0<=XmlAttribute)||LA70_0==Identifier||LA70_0==RegularExpressionLiteral||(LA70_0>=DecimalLiteral && LA70_0<=HexIntegerLiteral)||LA70_0==XMLLiteral) ) {
                     alt70=1;
                 }
 
 
                 switch (alt70) {
             	case 1 :
-            	    // JS.g:1641:20: statement
+            	    // JS.g:1652:20: statement
             	    {
-            	    pushFollow(FOLLOW_statement_in_defaultClause6119);
+            	    pushFollow(FOLLOW_statement_in_defaultClause6171);
             	    statement285=statement();
             	    _fsp--;
 
@@ -9444,7 +9515,7 @@
     };
 
     // $ANTLR start labelledStatement
-    // JS.g:1648:1: labelledStatement : identifier COLON statement -> ^( LABELLED identifier statement ) ;
+    // JS.g:1659: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);
@@ -9462,26 +9533,26 @@
         RewriteRuleSubtreeStream stream_statement=new RewriteRuleSubtreeStream(adaptor,"rule statement");
         RewriteRuleSubtreeStream stream_identifier=new RewriteRuleSubtreeStream(adaptor,"rule identifier");
         try {
-            // JS.g:1649:2: ( identifier COLON statement -> ^( LABELLED identifier statement ) )
-            // JS.g:1649:4: identifier COLON statement
+            // JS.g:1660:2: ( identifier COLON statement -> ^( LABELLED identifier statement ) )
+            // JS.g:1660:4: identifier COLON statement
             {
-            pushFollow(FOLLOW_identifier_in_labelledStatement6136);
+            pushFollow(FOLLOW_identifier_in_labelledStatement6188);
             identifier286=identifier();
             _fsp--;
 
             stream_identifier.add(identifier286.getTree());
             COLON287=(Token)input.LT(1);
-            match(input,COLON,FOLLOW_COLON_in_labelledStatement6138); 
+            match(input,COLON,FOLLOW_COLON_in_labelledStatement6190); 
             stream_COLON.add(COLON287);
 
-            pushFollow(FOLLOW_statement_in_labelledStatement6140);
+            pushFollow(FOLLOW_statement_in_labelledStatement6192);
             statement288=statement();
             _fsp--;
 
             stream_statement.add(statement288.getTree());
 
             // AST REWRITE
-            // elements: identifier, statement
+            // elements: statement, identifier
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -9490,9 +9561,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1650:2: -> ^( LABELLED identifier statement )
+            // 1661:2: -> ^( LABELLED identifier statement )
             {
-                // JS.g:1650:5: ^( LABELLED identifier statement )
+                // JS.g:1661:5: ^( LABELLED identifier statement )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(LABELLED, "LABELLED"), root_1);
@@ -9531,7 +9602,7 @@
     };
 
     // $ANTLR start throwStatement
-    // JS.g:1672:1: throwStatement : THROW expression semic ;
+    // JS.g:1683:1: throwStatement : THROW expression semic ;
     public final throwStatement_return throwStatement() throws RecognitionException {
         throwStatement_return retval = new throwStatement_return();
         retval.start = input.LT(1);
@@ -9547,23 +9618,23 @@
         Object THROW289_tree=null;
 
         try {
-            // JS.g:1673:2: ( THROW expression semic )
-            // JS.g:1673:4: THROW expression semic
+            // JS.g:1684:2: ( THROW expression semic )
+            // JS.g:1684:4: THROW expression semic
             {
             root_0 = (Object)adaptor.nil();
 
             THROW289=(Token)input.LT(1);
-            match(input,THROW,FOLLOW_THROW_in_throwStatement6171); 
+            match(input,THROW,FOLLOW_THROW_in_throwStatement6223); 
             THROW289_tree = (Object)adaptor.create(THROW289);
             root_0 = (Object)adaptor.becomeRoot(THROW289_tree, root_0);
 
              promoteEOL(null); 
-            pushFollow(FOLLOW_expression_in_throwStatement6176);
+            pushFollow(FOLLOW_expression_in_throwStatement6228);
             expression290=expression();
             _fsp--;
 
             adaptor.addChild(root_0, expression290.getTree());
-            pushFollow(FOLLOW_semic_in_throwStatement6178);
+            pushFollow(FOLLOW_semic_in_throwStatement6230);
             semic291=semic();
             _fsp--;
 
@@ -9592,7 +9663,7 @@
     };
 
     // $ANTLR start tryStatement
-    // JS.g:1680:1: tryStatement : TRY block ( ( catchClause )+ ( finallyClause )? | finallyClause ) ;
+    // JS.g:1691: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);
@@ -9612,22 +9683,22 @@
         Object TRY292_tree=null;
 
         try {
-            // JS.g:1681:2: ( TRY block ( ( catchClause )+ ( finallyClause )? | finallyClause ) )
-            // JS.g:1681:4: TRY block ( ( catchClause )+ ( finallyClause )? | finallyClause )
+            // JS.g:1692:2: ( TRY block ( ( catchClause )+ ( finallyClause )? | finallyClause ) )
+            // JS.g:1692:4: TRY block ( ( catchClause )+ ( finallyClause )? | finallyClause )
             {
             root_0 = (Object)adaptor.nil();
 
             TRY292=(Token)input.LT(1);
-            match(input,TRY,FOLLOW_TRY_in_tryStatement6195); 
+            match(input,TRY,FOLLOW_TRY_in_tryStatement6247); 
             TRY292_tree = (Object)adaptor.create(TRY292);
             root_0 = (Object)adaptor.becomeRoot(TRY292_tree, root_0);
 
-            pushFollow(FOLLOW_block_in_tryStatement6198);
+            pushFollow(FOLLOW_block_in_tryStatement6250);
             block293=block();
             _fsp--;
 
             adaptor.addChild(root_0, block293.getTree());
-            // JS.g:1681:15: ( ( catchClause )+ ( finallyClause )? | finallyClause )
+            // JS.g:1692:15: ( ( catchClause )+ ( finallyClause )? | finallyClause )
             int alt73=2;
             int LA73_0 = input.LA(1);
 
@@ -9639,15 +9710,15 @@
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("1681:15: ( ( catchClause )+ ( finallyClause )? | finallyClause )", 73, 0, input);
+                    new NoViableAltException("1692:15: ( ( catchClause )+ ( finallyClause )? | finallyClause )", 73, 0, input);
 
                 throw nvae;
             }
             switch (alt73) {
                 case 1 :
-                    // JS.g:1681:17: ( catchClause )+ ( finallyClause )?
+                    // JS.g:1692:17: ( catchClause )+ ( finallyClause )?
                     {
-                    // JS.g:1681:17: ( catchClause )+
+                    // JS.g:1692:17: ( catchClause )+
                     int cnt71=0;
                     loop71:
                     do {
@@ -9661,9 +9732,9 @@
 
                         switch (alt71) {
                     	case 1 :
-                    	    // JS.g:1681:17: catchClause
+                    	    // JS.g:1692:17: catchClause
                     	    {
-                    	    pushFollow(FOLLOW_catchClause_in_tryStatement6202);
+                    	    pushFollow(FOLLOW_catchClause_in_tryStatement6254);
                     	    catchClause294=catchClause();
                     	    _fsp--;
 
@@ -9681,7 +9752,7 @@
                         cnt71++;
                     } while (true);
 
-                    // JS.g:1681:30: ( finallyClause )?
+                    // JS.g:1692:30: ( finallyClause )?
                     int alt72=2;
                     int LA72_0 = input.LA(1);
 
@@ -9690,9 +9761,9 @@
                     }
                     switch (alt72) {
                         case 1 :
-                            // JS.g:1681:30: finallyClause
+                            // JS.g:1692:30: finallyClause
                             {
-                            pushFollow(FOLLOW_finallyClause_in_tryStatement6205);
+                            pushFollow(FOLLOW_finallyClause_in_tryStatement6257);
                             finallyClause295=finallyClause();
                             _fsp--;
 
@@ -9707,9 +9778,9 @@
                     }
                     break;
                 case 2 :
-                    // JS.g:1681:47: finallyClause
+                    // JS.g:1692:47: finallyClause
                     {
-                    pushFollow(FOLLOW_finallyClause_in_tryStatement6210);
+                    pushFollow(FOLLOW_finallyClause_in_tryStatement6262);
                     finallyClause296=finallyClause();
                     _fsp--;
 
@@ -9745,7 +9816,7 @@
     };
 
     // $ANTLR start catchClause
-    // JS.g:1684:1: catchClause : CATCH LPAREN identifier ( catchFilter )? RPAREN block ;
+    // JS.g:1695: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);
@@ -9767,24 +9838,24 @@
         Object RPAREN301_tree=null;
 
         try {
-            // JS.g:1685:2: ( CATCH LPAREN identifier ( catchFilter )? RPAREN block )
-            // JS.g:1685:4: CATCH LPAREN identifier ( catchFilter )? RPAREN block
+            // JS.g:1696:2: ( CATCH LPAREN identifier ( catchFilter )? RPAREN block )
+            // JS.g:1696:4: CATCH LPAREN identifier ( catchFilter )? RPAREN block
             {
             root_0 = (Object)adaptor.nil();
 
             CATCH297=(Token)input.LT(1);
-            match(input,CATCH,FOLLOW_CATCH_in_catchClause6224); 
+            match(input,CATCH,FOLLOW_CATCH_in_catchClause6276); 
             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_catchClause6227); 
-            pushFollow(FOLLOW_identifier_in_catchClause6230);
+            match(input,LPAREN,FOLLOW_LPAREN_in_catchClause6279); 
+            pushFollow(FOLLOW_identifier_in_catchClause6282);
             identifier299=identifier();
             _fsp--;
 
             adaptor.addChild(root_0, identifier299.getTree());
-            // JS.g:1685:30: ( catchFilter )?
+            // JS.g:1696:30: ( catchFilter )?
             int alt74=2;
             int LA74_0 = input.LA(1);
 
@@ -9793,9 +9864,9 @@
             }
             switch (alt74) {
                 case 1 :
-                    // JS.g:1685:30: catchFilter
+                    // JS.g:1696:30: catchFilter
                     {
-                    pushFollow(FOLLOW_catchFilter_in_catchClause6232);
+                    pushFollow(FOLLOW_catchFilter_in_catchClause6284);
                     catchFilter300=catchFilter();
                     _fsp--;
 
@@ -9807,8 +9878,8 @@
             }
 
             RPAREN301=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_catchClause6235); 
-            pushFollow(FOLLOW_block_in_catchClause6238);
+            match(input,RPAREN,FOLLOW_RPAREN_in_catchClause6287); 
+            pushFollow(FOLLOW_block_in_catchClause6290);
             block302=block();
             _fsp--;
 
@@ -9838,7 +9909,7 @@
     };
 
     // $ANTLR start catchFilter
-    // JS.g:1688:1: catchFilter : IF instanceofExpression ;
+    // JS.g:1699:1: catchFilter : IF instanceofExpression ;
     public final catchFilter_return catchFilter() throws RecognitionException {
         catchFilter_return retval = new catchFilter_return();
         retval.start = input.LT(1);
@@ -9852,17 +9923,17 @@
         Object IF303_tree=null;
 
         try {
-            // JS.g:1689:3: ( IF instanceofExpression )
-            // JS.g:1689:5: IF instanceofExpression
+            // JS.g:1700:3: ( IF instanceofExpression )
+            // JS.g:1700:5: IF instanceofExpression
             {
             root_0 = (Object)adaptor.nil();
 
             IF303=(Token)input.LT(1);
-            match(input,IF,FOLLOW_IF_in_catchFilter6251); 
+            match(input,IF,FOLLOW_IF_in_catchFilter6303); 
             IF303_tree = (Object)adaptor.create(IF303);
             root_0 = (Object)adaptor.becomeRoot(IF303_tree, root_0);
 
-            pushFollow(FOLLOW_instanceofExpression_in_catchFilter6254);
+            pushFollow(FOLLOW_instanceofExpression_in_catchFilter6306);
             instanceofExpression304=instanceofExpression();
             _fsp--;
 
@@ -9892,7 +9963,7 @@
     };
 
     // $ANTLR start instanceofExpression
-    // JS.g:1692:1: instanceofExpression : identifier INSTANCEOF identifier ;
+    // JS.g:1703:1: instanceofExpression : identifier INSTANCEOF identifier ;
     public final instanceofExpression_return instanceofExpression() throws RecognitionException {
         instanceofExpression_return retval = new instanceofExpression_return();
         retval.start = input.LT(1);
@@ -9908,22 +9979,22 @@
         Object INSTANCEOF306_tree=null;
 
         try {
-            // JS.g:1693:3: ( identifier INSTANCEOF identifier )
-            // JS.g:1693:5: identifier INSTANCEOF identifier
+            // JS.g:1704:3: ( identifier INSTANCEOF identifier )
+            // JS.g:1704:5: identifier INSTANCEOF identifier
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_identifier_in_instanceofExpression6269);
+            pushFollow(FOLLOW_identifier_in_instanceofExpression6321);
             identifier305=identifier();
             _fsp--;
 
             adaptor.addChild(root_0, identifier305.getTree());
             INSTANCEOF306=(Token)input.LT(1);
-            match(input,INSTANCEOF,FOLLOW_INSTANCEOF_in_instanceofExpression6271); 
+            match(input,INSTANCEOF,FOLLOW_INSTANCEOF_in_instanceofExpression6323); 
             INSTANCEOF306_tree = (Object)adaptor.create(INSTANCEOF306);
             root_0 = (Object)adaptor.becomeRoot(INSTANCEOF306_tree, root_0);
 
-            pushFollow(FOLLOW_identifier_in_instanceofExpression6274);
+            pushFollow(FOLLOW_identifier_in_instanceofExpression6326);
             identifier307=identifier();
             _fsp--;
 
@@ -9953,7 +10024,7 @@
     };
 
     // $ANTLR start finallyClause
-    // JS.g:1696:1: finallyClause : FINALLY block ;
+    // JS.g:1707:1: finallyClause : FINALLY block ;
     public final finallyClause_return finallyClause() throws RecognitionException {
         finallyClause_return retval = new finallyClause_return();
         retval.start = input.LT(1);
@@ -9967,17 +10038,17 @@
         Object FINALLY308_tree=null;
 
         try {
-            // JS.g:1697:2: ( FINALLY block )
-            // JS.g:1697:4: FINALLY block
+            // JS.g:1708:2: ( FINALLY block )
+            // JS.g:1708:4: FINALLY block
             {
             root_0 = (Object)adaptor.nil();
 
             FINALLY308=(Token)input.LT(1);
-            match(input,FINALLY,FOLLOW_FINALLY_in_finallyClause6287); 
+            match(input,FINALLY,FOLLOW_FINALLY_in_finallyClause6339); 
             FINALLY308_tree = (Object)adaptor.create(FINALLY308);
             root_0 = (Object)adaptor.becomeRoot(FINALLY308_tree, root_0);
 
-            pushFollow(FOLLOW_block_in_finallyClause6290);
+            pushFollow(FOLLOW_block_in_finallyClause6342);
             block309=block();
             _fsp--;
 
@@ -10007,7 +10078,7 @@
     };
 
     // $ANTLR start functionDeclaration
-    // JS.g:1710:1: functionDeclaration : FUNCTION name= identifier formalParameterList functionBody -> ^( FUNCTION $name formalParameterList functionBody ) ;
+    // JS.g:1721: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);
@@ -10028,24 +10099,24 @@
         RewriteRuleSubtreeStream stream_identifier=new RewriteRuleSubtreeStream(adaptor,"rule identifier");
         RewriteRuleSubtreeStream stream_formalParameterList=new RewriteRuleSubtreeStream(adaptor,"rule formalParameterList");
         try {
-            // JS.g:1711:2: ( FUNCTION name= identifier formalParameterList functionBody -> ^( FUNCTION $name formalParameterList functionBody ) )
-            // JS.g:1711:4: FUNCTION name= identifier formalParameterList functionBody
+            // JS.g:1722:2: ( FUNCTION name= identifier formalParameterList functionBody -> ^( FUNCTION $name formalParameterList functionBody ) )
+            // JS.g:1722:4: FUNCTION name= identifier formalParameterList functionBody
             {
             FUNCTION310=(Token)input.LT(1);
-            match(input,FUNCTION,FOLLOW_FUNCTION_in_functionDeclaration6311); 
+            match(input,FUNCTION,FOLLOW_FUNCTION_in_functionDeclaration6363); 
             stream_FUNCTION.add(FUNCTION310);
 
-            pushFollow(FOLLOW_identifier_in_functionDeclaration6315);
+            pushFollow(FOLLOW_identifier_in_functionDeclaration6367);
             name=identifier();
             _fsp--;
 
             stream_identifier.add(name.getTree());
-            pushFollow(FOLLOW_formalParameterList_in_functionDeclaration6317);
+            pushFollow(FOLLOW_formalParameterList_in_functionDeclaration6369);
             formalParameterList311=formalParameterList();
             _fsp--;
 
             stream_formalParameterList.add(formalParameterList311.getTree());
-            pushFollow(FOLLOW_functionBody_in_functionDeclaration6319);
+            pushFollow(FOLLOW_functionBody_in_functionDeclaration6371);
             functionBody312=functionBody();
             _fsp--;
 
@@ -10062,9 +10133,9 @@
             RewriteRuleSubtreeStream stream_name=new RewriteRuleSubtreeStream(adaptor,"token name",name!=null?name.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1712:2: -> ^( FUNCTION $name formalParameterList functionBody )
+            // 1723:2: -> ^( FUNCTION $name formalParameterList functionBody )
             {
-                // JS.g:1712:5: ^( FUNCTION $name formalParameterList functionBody )
+                // JS.g:1723:5: ^( FUNCTION $name formalParameterList functionBody )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_FUNCTION.next(), root_1);
@@ -10104,7 +10175,7 @@
     };
 
     // $ANTLR start functionExpression
-    // JS.g:1715:1: functionExpression : FUNCTION (name= identifier )? formalParameterList functionBody -> ^( FUNCTION ( $name)? formalParameterList functionBody ) ;
+    // JS.g:1726: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);
@@ -10125,25 +10196,25 @@
         RewriteRuleSubtreeStream stream_identifier=new RewriteRuleSubtreeStream(adaptor,"rule identifier");
         RewriteRuleSubtreeStream stream_formalParameterList=new RewriteRuleSubtreeStream(adaptor,"rule formalParameterList");
         try {
-            // JS.g:1716:2: ( FUNCTION (name= identifier )? formalParameterList functionBody -> ^( FUNCTION ( $name)? formalParameterList functionBody ) )
-            // JS.g:1716:4: FUNCTION (name= identifier )? formalParameterList functionBody
+            // JS.g:1727:2: ( FUNCTION (name= identifier )? formalParameterList functionBody -> ^( FUNCTION ( $name)? formalParameterList functionBody ) )
+            // JS.g:1727:4: FUNCTION (name= identifier )? formalParameterList functionBody
             {
             FUNCTION313=(Token)input.LT(1);
-            match(input,FUNCTION,FOLLOW_FUNCTION_in_functionExpression6346); 
+            match(input,FUNCTION,FOLLOW_FUNCTION_in_functionExpression6398); 
             stream_FUNCTION.add(FUNCTION313);
 
-            // JS.g:1716:17: (name= identifier )?
+            // JS.g:1727:17: (name= identifier )?
             int alt75=2;
             int LA75_0 = input.LA(1);
 
-            if ( (LA75_0==EACH||(LA75_0>=GET && LA75_0<=SET)||LA75_0==WXML||LA75_0==Identifier) ) {
+            if ( (LA75_0==EACH||(LA75_0>=GET && LA75_0<=SET)||(LA75_0>=WXML && LA75_0<=NAMESPACE)||LA75_0==Identifier) ) {
                 alt75=1;
             }
             switch (alt75) {
                 case 1 :
-                    // JS.g:1716:17: name= identifier
+                    // JS.g:1727:17: name= identifier
                     {
-                    pushFollow(FOLLOW_identifier_in_functionExpression6350);
+                    pushFollow(FOLLOW_identifier_in_functionExpression6402);
                     name=identifier();
                     _fsp--;
 
@@ -10154,19 +10225,19 @@
 
             }
 
-            pushFollow(FOLLOW_formalParameterList_in_functionExpression6353);
+            pushFollow(FOLLOW_formalParameterList_in_functionExpression6405);
             formalParameterList314=formalParameterList();
             _fsp--;
 
             stream_formalParameterList.add(formalParameterList314.getTree());
-            pushFollow(FOLLOW_functionBody_in_functionExpression6355);
+            pushFollow(FOLLOW_functionBody_in_functionExpression6407);
             functionBody315=functionBody();
             _fsp--;
 
             stream_functionBody.add(functionBody315.getTree());
 
             // AST REWRITE
-            // elements: functionBody, name, formalParameterList, FUNCTION
+            // elements: formalParameterList, name, FUNCTION, functionBody
             // token labels: 
             // rule labels: retval, name
             // token list labels: 
@@ -10176,14 +10247,14 @@
             RewriteRuleSubtreeStream stream_name=new RewriteRuleSubtreeStream(adaptor,"token name",name!=null?name.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1717:2: -> ^( FUNCTION ( $name)? formalParameterList functionBody )
+            // 1728:2: -> ^( FUNCTION ( $name)? formalParameterList functionBody )
             {
-                // JS.g:1717:5: ^( FUNCTION ( $name)? formalParameterList functionBody )
+                // JS.g:1728:5: ^( FUNCTION ( $name)? formalParameterList functionBody )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_FUNCTION.next(), root_1);
 
-                // JS.g:1717:17: ( $name)?
+                // JS.g:1728:17: ( $name)?
                 if ( stream_name.hasNext() ) {
                     adaptor.addChild(root_1, stream_name.next());
 
@@ -10223,7 +10294,7 @@
     };
 
     // $ANTLR start formalParameterList
-    // JS.g:1720:1: formalParameterList : LPAREN (args+= identifier ( COMMA args+= identifier )* )? RPAREN -> ^( ARGS ( $args)* ) ;
+    // JS.g:1731: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);
@@ -10243,25 +10314,25 @@
         RewriteRuleTokenStream stream_LPAREN=new RewriteRuleTokenStream(adaptor,"token LPAREN");
         RewriteRuleSubtreeStream stream_identifier=new RewriteRuleSubtreeStream(adaptor,"rule identifier");
         try {
-            // JS.g:1721:2: ( LPAREN (args+= identifier ( COMMA args+= identifier )* )? RPAREN -> ^( ARGS ( $args)* ) )
-            // JS.g:1721:4: LPAREN (args+= identifier ( COMMA args+= identifier )* )? RPAREN
+            // JS.g:1732:2: ( LPAREN (args+= identifier ( COMMA args+= identifier )* )? RPAREN -> ^( ARGS ( $args)* ) )
+            // JS.g:1732:4: LPAREN (args+= identifier ( COMMA args+= identifier )* )? RPAREN
             {
             LPAREN316=(Token)input.LT(1);
-            match(input,LPAREN,FOLLOW_LPAREN_in_formalParameterList6383); 
+            match(input,LPAREN,FOLLOW_LPAREN_in_formalParameterList6435); 
             stream_LPAREN.add(LPAREN316);
 
-            // JS.g:1721:11: (args+= identifier ( COMMA args+= identifier )* )?
+            // JS.g:1732:11: (args+= identifier ( COMMA args+= identifier )* )?
             int alt77=2;
             int LA77_0 = input.LA(1);
 
-            if ( (LA77_0==EACH||(LA77_0>=GET && LA77_0<=SET)||LA77_0==WXML||LA77_0==Identifier) ) {
+            if ( (LA77_0==EACH||(LA77_0>=GET && LA77_0<=SET)||(LA77_0>=WXML && LA77_0<=NAMESPACE)||LA77_0==Identifier) ) {
                 alt77=1;
             }
             switch (alt77) {
                 case 1 :
-                    // JS.g:1721:13: args+= identifier ( COMMA args+= identifier )*
+                    // JS.g:1732:13: args+= identifier ( COMMA args+= identifier )*
                     {
-                    pushFollow(FOLLOW_identifier_in_formalParameterList6389);
+                    pushFollow(FOLLOW_identifier_in_formalParameterList6441);
                     args=identifier();
                     _fsp--;
 
@@ -10269,7 +10340,7 @@
                     if (list_args==null) list_args=new ArrayList();
                     list_args.add(args);
 
-                    // JS.g:1721:30: ( COMMA args+= identifier )*
+                    // JS.g:1732:30: ( COMMA args+= identifier )*
                     loop76:
                     do {
                         int alt76=2;
@@ -10282,13 +10353,13 @@
 
                         switch (alt76) {
                     	case 1 :
-                    	    // JS.g:1721:32: COMMA args+= identifier
+                    	    // JS.g:1732:32: COMMA args+= identifier
                     	    {
                     	    COMMA317=(Token)input.LT(1);
-                    	    match(input,COMMA,FOLLOW_COMMA_in_formalParameterList6393); 
+                    	    match(input,COMMA,FOLLOW_COMMA_in_formalParameterList6445); 
                     	    stream_COMMA.add(COMMA317);
 
-                    	    pushFollow(FOLLOW_identifier_in_formalParameterList6397);
+                    	    pushFollow(FOLLOW_identifier_in_formalParameterList6449);
                     	    args=identifier();
                     	    _fsp--;
 
@@ -10312,7 +10383,7 @@
             }
 
             RPAREN318=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_formalParameterList6405); 
+            match(input,RPAREN,FOLLOW_RPAREN_in_formalParameterList6457); 
             stream_RPAREN.add(RPAREN318);
 
 
@@ -10326,14 +10397,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();
-            // 1722:2: -> ^( ARGS ( $args)* )
+            // 1733:2: -> ^( ARGS ( $args)* )
             {
-                // JS.g:1722:5: ^( ARGS ( $args)* )
+                // JS.g:1733:5: ^( ARGS ( $args)* )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(ARGS, "ARGS"), root_1);
 
-                // JS.g:1722:13: ( $args)*
+                // JS.g:1733:13: ( $args)*
                 while ( stream_args.hasNext() ) {
                     adaptor.addChild(root_1, ((ParserRuleReturnScope)stream_args.next()).getTree());
 
@@ -10371,7 +10442,7 @@
     };
 
     // $ANTLR start functionBody
-    // JS.g:1725:1: functionBody : lb= LBRACE ( sourceElement )* RBRACE -> ^( BLOCK[$lb, \"BLOCK\"] ( sourceElement )* ) ;
+    // JS.g:1736: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);
@@ -10389,29 +10460,29 @@
         RewriteRuleTokenStream stream_LBRACE=new RewriteRuleTokenStream(adaptor,"token LBRACE");
         RewriteRuleSubtreeStream stream_sourceElement=new RewriteRuleSubtreeStream(adaptor,"rule sourceElement");
         try {
-            // JS.g:1726:2: (lb= LBRACE ( sourceElement )* RBRACE -> ^( BLOCK[$lb, \"BLOCK\"] ( sourceElement )* ) )
-            // JS.g:1726:4: lb= LBRACE ( sourceElement )* RBRACE
+            // JS.g:1737:2: (lb= LBRACE ( sourceElement )* RBRACE -> ^( BLOCK[$lb, \"BLOCK\"] ( sourceElement )* ) )
+            // JS.g:1737:4: lb= LBRACE ( sourceElement )* RBRACE
             {
             lb=(Token)input.LT(1);
-            match(input,LBRACE,FOLLOW_LBRACE_in_functionBody6431); 
+            match(input,LBRACE,FOLLOW_LBRACE_in_functionBody6483); 
             stream_LBRACE.add(lb);
 
-            // JS.g:1726:14: ( sourceElement )*
+            // JS.g:1737:14: ( sourceElement )*
             loop78:
             do {
                 int alt78=2;
                 int LA78_0 = input.LA(1);
 
-                if ( ((LA78_0>=NULL && LA78_0<=BREAK)||(LA78_0>=CONTINUE && LA78_0<=DO)||(LA78_0>=FOR && LA78_0<=IF)||(LA78_0>=NEW && LA78_0<=YIELD)||LA78_0==WXML||LA78_0==CONST||LA78_0==LBRACE||LA78_0==LPAREN||LA78_0==LBRACK||LA78_0==SEMIC||(LA78_0>=ADD && LA78_0<=SUB)||(LA78_0>=INC && LA78_0<=DEC)||(LA78_0>=NOT && LA78_0<=INV)||(LA78_0>=StringLiteral && LA78_0<=XmlAttribute)||LA78_0==Identifier||LA78_0==RegularExpressionLiteral||(LA78_0>=DecimalLiteral && LA78_0<=HexIntegerLiteral)||LA78_0==XMLLiteral) ) {
+                if ( ((LA78_0>=NULL && LA78_0<=BREAK)||(LA78_0>=CONTINUE && LA78_0<=DO)||(LA78_0>=FOR && LA78_0<=IF)||(LA78_0>=NEW && LA78_0<=YIELD)||(LA78_0>=WXML && LA78_0<=NAMESPACE)||LA78_0==CONST||LA78_0==LBRACE||LA78_0==LPAREN||LA78_0==LBRACK||LA78_0==SEMIC||(LA78_0>=ADD && LA78_0<=SUB)||(LA78_0>=INC && LA78_0<=DEC)||(LA78_0>=NOT && LA78_0<=INV)||(LA78_0>=StringLiteral && LA78_0<=XmlAttribute)||LA78_0==Identifier||LA78_0==RegularExpressionLiteral||(LA78_0>=DecimalLiteral && LA78_0<=HexIntegerLiteral)||LA78_0==XMLLiteral) ) {
                     alt78=1;
                 }
 
 
                 switch (alt78) {
             	case 1 :
-            	    // JS.g:1726:14: sourceElement
+            	    // JS.g:1737:14: sourceElement
             	    {
-            	    pushFollow(FOLLOW_sourceElement_in_functionBody6433);
+            	    pushFollow(FOLLOW_sourceElement_in_functionBody6485);
             	    sourceElement319=sourceElement();
             	    _fsp--;
 
@@ -10426,7 +10497,7 @@
             } while (true);
 
             RBRACE320=(Token)input.LT(1);
-            match(input,RBRACE,FOLLOW_RBRACE_in_functionBody6436); 
+            match(input,RBRACE,FOLLOW_RBRACE_in_functionBody6488); 
             stream_RBRACE.add(RBRACE320);
 
 
@@ -10440,14 +10511,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1727:2: -> ^( BLOCK[$lb, \"BLOCK\"] ( sourceElement )* )
+            // 1738:2: -> ^( BLOCK[$lb, \"BLOCK\"] ( sourceElement )* )
             {
-                // JS.g:1727:5: ^( BLOCK[$lb, \"BLOCK\"] ( sourceElement )* )
+                // JS.g:1738: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:1727:28: ( sourceElement )*
+                // JS.g:1738:28: ( sourceElement )*
                 while ( stream_sourceElement.hasNext() ) {
                     adaptor.addChild(root_1, stream_sourceElement.next());
 
@@ -10485,7 +10556,7 @@
     };
 
     // $ANTLR start getMethodDeclaration
-    // JS.g:1735:1: getMethodDeclaration : GET name= identifier LPAREN RPAREN functionBody ;
+    // JS.g:1746: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);
@@ -10503,32 +10574,64 @@
         Object GET321_tree=null;
         Object LPAREN322_tree=null;
         Object RPAREN323_tree=null;
-
+        RewriteRuleTokenStream stream_RPAREN=new RewriteRuleTokenStream(adaptor,"token RPAREN");
+        RewriteRuleTokenStream stream_GET=new RewriteRuleTokenStream(adaptor,"token GET");
+        RewriteRuleTokenStream stream_LPAREN=new RewriteRuleTokenStream(adaptor,"token LPAREN");
+        RewriteRuleSubtreeStream stream_functionBody=new RewriteRuleSubtreeStream(adaptor,"rule functionBody");
+        RewriteRuleSubtreeStream stream_identifier=new RewriteRuleSubtreeStream(adaptor,"rule identifier");
         try {
-            // JS.g:1736:3: ( GET name= identifier LPAREN RPAREN functionBody )
-            // JS.g:1736:5: GET name= identifier LPAREN RPAREN functionBody
+            // JS.g:1747:3: ( GET name= identifier LPAREN RPAREN functionBody -> ^( GETTER identifier functionBody ) )
+            // JS.g:1747:5: GET name= identifier LPAREN RPAREN functionBody
             {
-            root_0 = (Object)adaptor.nil();
-
             GET321=(Token)input.LT(1);
-            match(input,GET,FOLLOW_GET_in_getMethodDeclaration6466); 
-            GET321_tree = (Object)adaptor.create(GET321);
-            root_0 = (Object)adaptor.becomeRoot(GET321_tree, root_0);
+            match(input,GET,FOLLOW_GET_in_getMethodDeclaration6518); 
+            stream_GET.add(GET321);
 
-            pushFollow(FOLLOW_identifier_in_getMethodDeclaration6471);
+            pushFollow(FOLLOW_identifier_in_getMethodDeclaration6522);
             name=identifier();
             _fsp--;
 
-            adaptor.addChild(root_0, name.getTree());
+            stream_identifier.add(name.getTree());
             LPAREN322=(Token)input.LT(1);
-            match(input,LPAREN,FOLLOW_LPAREN_in_getMethodDeclaration6473); 
+            match(input,LPAREN,FOLLOW_LPAREN_in_getMethodDeclaration6524); 
+            stream_LPAREN.add(LPAREN322);
+
             RPAREN323=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_getMethodDeclaration6476); 
-            pushFollow(FOLLOW_functionBody_in_getMethodDeclaration6479);
+            match(input,RPAREN,FOLLOW_RPAREN_in_getMethodDeclaration6526); 
+            stream_RPAREN.add(RPAREN323);
+
+            pushFollow(FOLLOW_functionBody_in_getMethodDeclaration6528);
             functionBody324=functionBody();
             _fsp--;
 
-            adaptor.addChild(root_0, functionBody324.getTree());
+            stream_functionBody.add(functionBody324.getTree());
+
+            // AST REWRITE
+            // elements: functionBody, identifier
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1748:4: -> ^( GETTER identifier functionBody )
+            {
+                // JS.g:1748:7: ^( GETTER identifier functionBody )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(adaptor.create(GETTER, "GETTER"), root_1);
+
+                adaptor.addChild(root_1, stream_identifier.next());
+                adaptor.addChild(root_1, stream_functionBody.next());
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+
 
             }
 
@@ -10554,7 +10657,7 @@
     };
 
     // $ANTLR start setMethodDeclaration
-    // JS.g:1739:1: setMethodDeclaration : SET name= identifier LPAREN identifier RPAREN functionBody ;
+    // JS.g:1751: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);
@@ -10563,48 +10666,83 @@
 
         Token SET325=null;
         Token LPAREN326=null;
-        Token RPAREN328=null;
+        Token RPAREN327=null;
         identifier_return name = null;
 
-        identifier_return identifier327 = null;
+        identifier_return param = null;
 
-        functionBody_return functionBody329 = null;
+        functionBody_return functionBody328 = null;
 
 
         Object SET325_tree=null;
         Object LPAREN326_tree=null;
-        Object RPAREN328_tree=null;
-
+        Object RPAREN327_tree=null;
+        RewriteRuleTokenStream stream_RPAREN=new RewriteRuleTokenStream(adaptor,"token RPAREN");
+        RewriteRuleTokenStream stream_SET=new RewriteRuleTokenStream(adaptor,"token SET");
+        RewriteRuleTokenStream stream_LPAREN=new RewriteRuleTokenStream(adaptor,"token LPAREN");
+        RewriteRuleSubtreeStream stream_functionBody=new RewriteRuleSubtreeStream(adaptor,"rule functionBody");
+        RewriteRuleSubtreeStream stream_identifier=new RewriteRuleSubtreeStream(adaptor,"rule identifier");
         try {
-            // JS.g:1740:3: ( SET name= identifier LPAREN identifier RPAREN functionBody )
-            // JS.g:1740:5: SET name= identifier LPAREN identifier RPAREN functionBody
+            // 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
             {
-            root_0 = (Object)adaptor.nil();
-
             SET325=(Token)input.LT(1);
-            match(input,SET,FOLLOW_SET_in_setMethodDeclaration6494); 
-            SET325_tree = (Object)adaptor.create(SET325);
-            root_0 = (Object)adaptor.becomeRoot(SET325_tree, root_0);
+            match(input,SET,FOLLOW_SET_in_setMethodDeclaration6556); 
+            stream_SET.add(SET325);
 
-            pushFollow(FOLLOW_identifier_in_setMethodDeclaration6499);
+            pushFollow(FOLLOW_identifier_in_setMethodDeclaration6560);
             name=identifier();
             _fsp--;
 
-            adaptor.addChild(root_0, name.getTree());
+            stream_identifier.add(name.getTree());
             LPAREN326=(Token)input.LT(1);
-            match(input,LPAREN,FOLLOW_LPAREN_in_setMethodDeclaration6501); 
-            pushFollow(FOLLOW_identifier_in_setMethodDeclaration6504);
-            identifier327=identifier();
+            match(input,LPAREN,FOLLOW_LPAREN_in_setMethodDeclaration6562); 
+            stream_LPAREN.add(LPAREN326);
+
+            pushFollow(FOLLOW_identifier_in_setMethodDeclaration6566);
+            param=identifier();
             _fsp--;
 
-            adaptor.addChild(root_0, identifier327.getTree());
-            RPAREN328=(Token)input.LT(1);
-            match(input,RPAREN,FOLLOW_RPAREN_in_setMethodDeclaration6506); 
-            pushFollow(FOLLOW_functionBody_in_setMethodDeclaration6509);
-            functionBody329=functionBody();
+            stream_identifier.add(param.getTree());
+            RPAREN327=(Token)input.LT(1);
+            match(input,RPAREN,FOLLOW_RPAREN_in_setMethodDeclaration6568); 
+            stream_RPAREN.add(RPAREN327);
+
+            pushFollow(FOLLOW_functionBody_in_setMethodDeclaration6570);
+            functionBody328=functionBody();
             _fsp--;
 
-            adaptor.addChild(root_0, functionBody329.getTree());
+            stream_functionBody.add(functionBody328.getTree());
+
+            // AST REWRITE
+            // elements: functionBody, param, name
+            // token labels: 
+            // rule labels: retval, param, name
+            // token list labels: 
+            // rule list labels: 
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+            RewriteRuleSubtreeStream stream_param=new RewriteRuleSubtreeStream(adaptor,"token param",param!=null?param.tree:null);
+            RewriteRuleSubtreeStream stream_name=new RewriteRuleSubtreeStream(adaptor,"token name",name!=null?name.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 1753:5: -> ^( SETTER $name $param functionBody )
+            {
+                // JS.g:1753:8: ^( SETTER $name $param functionBody )
+                {
+                Object root_1 = (Object)adaptor.nil();
+                root_1 = (Object)adaptor.becomeRoot(adaptor.create(SETTER, "SETTER"), root_1);
+
+                adaptor.addChild(root_1, stream_name.next());
+                adaptor.addChild(root_1, stream_param.next());
+                adaptor.addChild(root_1, stream_functionBody.next());
+
+                adaptor.addChild(root_0, root_1);
+                }
+
+            }
+
+
 
             }
 
@@ -10630,45 +10768,45 @@
     };
 
     // $ANTLR start program
-    // JS.g:1747:1: program : ( sourceElement )* EOF ;
+    // JS.g:1760:1: program : ( sourceElement )* EOF ;
     public final program_return program() throws RecognitionException {
         program_return retval = new program_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token EOF331=null;
-        sourceElement_return sourceElement330 = null;
+        Token EOF330=null;
+        sourceElement_return sourceElement329 = null;
 
 
-        Object EOF331_tree=null;
+        Object EOF330_tree=null;
 
         try {
-            // JS.g:1748:2: ( ( sourceElement )* EOF )
-            // JS.g:1748:4: ( sourceElement )* EOF
+            // JS.g:1761:2: ( ( sourceElement )* EOF )
+            // JS.g:1761:4: ( sourceElement )* EOF
             {
             root_0 = (Object)adaptor.nil();
 
-            // JS.g:1748:4: ( sourceElement )*
+            // JS.g:1761:4: ( sourceElement )*
             loop79:
             do {
                 int alt79=2;
                 int LA79_0 = input.LA(1);
 
-                if ( ((LA79_0>=NULL && LA79_0<=BREAK)||(LA79_0>=CONTINUE && LA79_0<=DO)||(LA79_0>=FOR && LA79_0<=IF)||(LA79_0>=NEW && LA79_0<=YIELD)||LA79_0==WXML||LA79_0==CONST||LA79_0==LBRACE||LA79_0==LPAREN||LA79_0==LBRACK||LA79_0==SEMIC||(LA79_0>=ADD && LA79_0<=SUB)||(LA79_0>=INC && LA79_0<=DEC)||(LA79_0>=NOT && LA79_0<=INV)||(LA79_0>=StringLiteral && LA79_0<=XmlAttribute)||LA79_0==Identifier||LA79_0==RegularExpressionLiteral||(LA79_0>=DecimalLiteral && LA79_0<=HexIntegerLiteral)||LA79_0==XMLLiteral) ) {
+                if ( ((LA79_0>=NULL && LA79_0<=BREAK)||(LA79_0>=CONTINUE && LA79_0<=DO)||(LA79_0>=FOR && LA79_0<=IF)||(LA79_0>=NEW && LA79_0<=YIELD)||(LA79_0>=WXML && LA79_0<=NAMESPACE)||LA79_0==CONST||LA79_0==LBRACE||LA79_0==LPAREN||LA79_0==LBRACK||LA79_0==SEMIC||(LA79_0>=ADD && LA79_0<=SUB)||(LA79_0>=INC && LA79_0<=DEC)||(LA79_0>=NOT && LA79_0<=INV)||(LA79_0>=StringLiteral && LA79_0<=XmlAttribute)||LA79_0==Identifier||LA79_0==RegularExpressionLiteral||(LA79_0>=DecimalLiteral && LA79_0<=HexIntegerLiteral)||LA79_0==XMLLiteral) ) {
                     alt79=1;
                 }
 
 
                 switch (alt79) {
             	case 1 :
-            	    // JS.g:1748:4: sourceElement
+            	    // JS.g:1761:4: sourceElement
             	    {
-            	    pushFollow(FOLLOW_sourceElement_in_program6526);
-            	    sourceElement330=sourceElement();
+            	    pushFollow(FOLLOW_sourceElement_in_program6605);
+            	    sourceElement329=sourceElement();
             	    _fsp--;
 
-            	    adaptor.addChild(root_0, sourceElement330.getTree());
+            	    adaptor.addChild(root_0, sourceElement329.getTree());
 
             	    }
             	    break;
@@ -10678,8 +10816,8 @@
                 }
             } while (true);
 
-            EOF331=(Token)input.LT(1);
-            match(input,EOF,FOLLOW_EOF_in_program6529); 
+            EOF330=(Token)input.LT(1);
+            match(input,EOF,FOLLOW_EOF_in_program6608); 
 
             }
 
@@ -10705,21 +10843,21 @@
     };
 
     // $ANTLR start sourceElement
-    // JS.g:1756:1: sourceElement options {k=1; } : ({...}? functionDeclaration | statement );
+    // JS.g:1769: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);
 
         Object root_0 = null;
 
-        functionDeclaration_return functionDeclaration332 = null;
+        functionDeclaration_return functionDeclaration331 = null;
 
-        statement_return statement333 = null;
+        statement_return statement332 = null;
 
 
 
         try {
-            // JS.g:1761:2: ({...}? functionDeclaration | statement )
+            // JS.g:1774:2: ({...}? functionDeclaration | statement )
             int alt80=2;
             int LA80_0 = input.LA(1);
 
@@ -10734,47 +10872,47 @@
                 }
                 else {
                     NoViableAltException nvae =
-                        new NoViableAltException("1756:1: sourceElement options {k=1; } : ({...}? functionDeclaration | statement );", 80, 1, input);
+                        new NoViableAltException("1769:1: sourceElement options {k=1; } : ({...}? functionDeclaration | statement );", 80, 1, input);
 
                     throw nvae;
                 }
             }
-            else if ( ((LA80_0>=NULL && LA80_0<=BREAK)||(LA80_0>=CONTINUE && LA80_0<=DO)||(LA80_0>=FOR && LA80_0<=EACH)||LA80_0==IF||(LA80_0>=NEW && LA80_0<=YIELD)||LA80_0==WXML||LA80_0==CONST||LA80_0==LBRACE||LA80_0==LPAREN||LA80_0==LBRACK||LA80_0==SEMIC||(LA80_0>=ADD && LA80_0<=SUB)||(LA80_0>=INC && LA80_0<=DEC)||(LA80_0>=NOT && LA80_0<=INV)||(LA80_0>=StringLiteral && LA80_0<=XmlAttribute)||LA80_0==Identifier||LA80_0==RegularExpressionLiteral||(LA80_0>=DecimalLiteral && LA80_0<=HexIntegerLiteral)||LA80_0==XMLLiteral) ) {
+            else if ( ((LA80_0>=NULL && LA80_0<=BREAK)||(LA80_0>=CONTINUE && LA80_0<=DO)||(LA80_0>=FOR && LA80_0<=EACH)||LA80_0==IF||(LA80_0>=NEW && LA80_0<=YIELD)||(LA80_0>=WXML && LA80_0<=NAMESPACE)||LA80_0==CONST||LA80_0==LBRACE||LA80_0==LPAREN||LA80_0==LBRACK||LA80_0==SEMIC||(LA80_0>=ADD && LA80_0<=SUB)||(LA80_0>=INC && LA80_0<=DEC)||(LA80_0>=NOT && LA80_0<=INV)||(LA80_0>=StringLiteral && LA80_0<=XmlAttribute)||LA80_0==Identifier||LA80_0==RegularExpressionLiteral||(LA80_0>=DecimalLiteral && LA80_0<=HexIntegerLiteral)||LA80_0==XMLLiteral) ) {
                 alt80=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("1756:1: sourceElement options {k=1; } : ({...}? functionDeclaration | statement );", 80, 0, input);
+                    new NoViableAltException("1769:1: sourceElement options {k=1; } : ({...}? functionDeclaration | statement );", 80, 0, input);
 
                 throw nvae;
             }
             switch (alt80) {
                 case 1 :
-                    // JS.g:1761:4: {...}? functionDeclaration
+                    // JS.g:1774: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_sourceElement6558);
-                    functionDeclaration332=functionDeclaration();
+                    pushFollow(FOLLOW_functionDeclaration_in_sourceElement6637);
+                    functionDeclaration331=functionDeclaration();
                     _fsp--;
 
-                    adaptor.addChild(root_0, functionDeclaration332.getTree());
+                    adaptor.addChild(root_0, functionDeclaration331.getTree());
 
                     }
                     break;
                 case 2 :
-                    // JS.g:1762:4: statement
+                    // JS.g:1775:4: statement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_statement_in_sourceElement6563);
-                    statement333=statement();
+                    pushFollow(FOLLOW_statement_in_sourceElement6642);
+                    statement332=statement();
                     _fsp--;
 
-                    adaptor.addChild(root_0, statement333.getTree());
+                    adaptor.addChild(root_0, statement332.getTree());
 
                     }
                     break;
@@ -10799,368 +10937,368 @@
 
  
 
-    public static final BitSet FOLLOW_reservedWord_in_token1949 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_identifier_in_token1954 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_punctuator_in_token1959 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_numericLiteral_in_token1964 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_StringLiteral_in_token1969 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_XmlAttribute_in_token1974 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_keyword_in_reservedWord1989 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_futureReservedWord_in_reservedWord1994 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_NULL_in_reservedWord1999 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_booleanLiteral_in_reservedWord2004 = new BitSet(new long[]{0x0000000000000002L});
+    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_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_literal2793 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_booleanLiteral_in_literal2798 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_numericLiteral_in_literal2803 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_StringLiteral_in_literal2808 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_RegularExpressionLiteral_in_literal2813 = 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_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_primaryExpression3442 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_identifier_in_primaryExpression3447 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_XmlAttribute_in_primaryExpression3452 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_literal_in_primaryExpression3457 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_arrayLiteral_in_primaryExpression3462 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_objectLiteral_in_primaryExpression3467 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_parenExpression_in_primaryExpression3472 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LPAREN_in_parenExpression3488 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_expression_in_parenExpression3490 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_RPAREN_in_parenExpression3492 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LBRACK_in_arrayLiteral3517 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819804D40L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_arrayItem_in_arrayLiteral3521 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004800L});
-    public static final BitSet FOLLOW_COMMA_in_arrayLiteral3525 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819804D40L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_arrayItem_in_arrayLiteral3527 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004800L});
-    public static final BitSet FOLLOW_RBRACK_in_arrayLiteral3535 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_assignmentExpression_in_arrayItem3563 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LBRACE_in_objectLiteral3595 = new BitSet(new long[]{0x0000002600020000L,0x0000000000000080L,0x00E0830000000000L});
-    public static final BitSet FOLLOW_objectPropertyInitializer_in_objectLiteral3599 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004080L});
-    public static final BitSet FOLLOW_COMMA_in_objectLiteral3603 = new BitSet(new long[]{0x0000002600020000L,0x0000000000000000L,0x00E0830000000000L});
-    public static final BitSet FOLLOW_objectPropertyInitializer_in_objectLiteral3605 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004080L});
-    public static final BitSet FOLLOW_RBRACE_in_objectLiteral3613 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_nameValuePair_in_objectPropertyInitializer3638 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_getMethodDeclaration_in_objectPropertyInitializer3645 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_setMethodDeclaration_in_objectPropertyInitializer3651 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_propertyName_in_nameValuePair3664 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
-    public static final BitSet FOLLOW_COLON_in_nameValuePair3666 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_assignmentExpression_in_nameValuePair3668 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_identifier_in_propertyName3692 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_StringLiteral_in_propertyName3697 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_numericLiteral_in_propertyName3702 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_XmlAttribute_in_propertyName3707 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_primaryExpression_in_memberExpression3725 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_functionExpression_in_memberExpression3730 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_newExpression_in_memberExpression3735 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_NEW_in_newExpression3746 = new BitSet(new long[]{0x0000002602460070L,0x0000000000000540L,0x00E2830000000000L});
-    public static final BitSet FOLLOW_memberExpression_in_newExpression3749 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LPAREN_in_arguments3762 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800740L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_assignmentExpression_in_arguments3766 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004200L});
-    public static final BitSet FOLLOW_COMMA_in_arguments3770 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_assignmentExpression_in_arguments3772 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004200L});
-    public static final BitSet FOLLOW_RPAREN_in_arguments3780 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_memberExpression_in_leftHandSideExpression3813 = new BitSet(new long[]{0x0000000000000002L,0xC000000000001500L});
-    public static final BitSet FOLLOW_arguments_in_leftHandSideExpression3834 = new BitSet(new long[]{0x0000000000000002L,0xC000000000001500L});
-    public static final BitSet FOLLOW_LBRACK_in_leftHandSideExpression3859 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_expression_in_leftHandSideExpression3861 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
-    public static final BitSet FOLLOW_RBRACK_in_leftHandSideExpression3863 = new BitSet(new long[]{0x0000000000000002L,0xC000000000001500L});
-    public static final BitSet FOLLOW_DOT_in_leftHandSideExpression3885 = new BitSet(new long[]{0x0000002600020000L,0x0000000002000100L,0x0000820000000000L});
-    public static final BitSet FOLLOW_rightHandSideExpression_in_leftHandSideExpression3887 = new BitSet(new long[]{0x0000000000000002L,0xC000000000001500L});
-    public static final BitSet FOLLOW_DOTDOT_in_leftHandSideExpression3908 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_expression_in_leftHandSideExpression3910 = new BitSet(new long[]{0x0000000000000002L,0xC000000000001500L});
-    public static final BitSet FOLLOW_COLONCOLON_in_leftHandSideExpression3929 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_expression_in_leftHandSideExpression3931 = new BitSet(new long[]{0x0000000000000002L,0xC000000000001500L});
-    public static final BitSet FOLLOW_parenExpression_in_rightHandSideExpression3960 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_identifier_in_rightHandSideExpression3967 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_XmlAttribute_in_rightHandSideExpression3973 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_MUL_in_rightHandSideExpression3979 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_leftHandSideExpression_in_postfixExpression4017 = new BitSet(new long[]{0x0000000000000002L,0x0000000018000000L});
-    public static final BitSet FOLLOW_postfixOperator_in_postfixExpression4023 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_INC_in_postfixOperator4041 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DEC_in_postfixOperator4050 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_postfixExpression_in_unaryExpression4067 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_unaryOperator_in_unaryExpression4072 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_unaryExpression_in_unaryExpression4075 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_XMLLiteral_in_unaryExpression4081 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DELETE_in_unaryOperator4093 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VOID_in_unaryOperator4098 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_TYPEOF_in_unaryOperator4103 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_INC_in_unaryOperator4108 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DEC_in_unaryOperator4113 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ADD_in_unaryOperator4120 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_SUB_in_unaryOperator4129 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_INV_in_unaryOperator4136 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_NOT_in_unaryOperator4141 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_YIELD_in_unaryOperator4146 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DEFAULT_in_namespaceStatement4182 = new BitSet(new long[]{0x0000002000000000L});
-    public static final BitSet FOLLOW_WXML_in_namespaceStatement4184 = new BitSet(new long[]{0x0000004000000000L});
-    public static final BitSet FOLLOW_NAMESPACE_in_namespaceStatement4186 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_ASSIGN_in_namespaceStatement4189 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000010000000000L});
-    public static final BitSet FOLLOW_StringLiteral_in_namespaceStatement4191 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x0000006000000000L});
-    public static final BitSet FOLLOW_semic_in_namespaceStatement4193 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_unaryExpression_in_multiplicativeExpression4208 = new BitSet(new long[]{0x0000000000000002L,0x0010000006000000L});
-    public static final BitSet FOLLOW_set_in_multiplicativeExpression4212 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_unaryExpression_in_multiplicativeExpression4227 = new BitSet(new long[]{0x0000000000000002L,0x0010000006000000L});
-    public static final BitSet FOLLOW_multiplicativeExpression_in_additiveExpression4245 = new BitSet(new long[]{0x0000000000000002L,0x0000000001800000L});
-    public static final BitSet FOLLOW_set_in_additiveExpression4249 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_multiplicativeExpression_in_additiveExpression4260 = new BitSet(new long[]{0x0000000000000002L,0x0000000001800000L});
-    public static final BitSet FOLLOW_additiveExpression_in_shiftExpression4279 = new BitSet(new long[]{0x0000000000000002L,0x00000000E0000000L});
-    public static final BitSet FOLLOW_set_in_shiftExpression4283 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_additiveExpression_in_shiftExpression4298 = new BitSet(new long[]{0x0000000000000002L,0x00000000E0000000L});
-    public static final BitSet FOLLOW_shiftExpression_in_relationalExpression4317 = new BitSet(new long[]{0x0000000000300002L,0x0000000000078000L});
-    public static final BitSet FOLLOW_set_in_relationalExpression4321 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_shiftExpression_in_relationalExpression4348 = new BitSet(new long[]{0x0000000000300002L,0x0000000000078000L});
-    public static final BitSet FOLLOW_shiftExpression_in_relationalExpressionNoIn4362 = new BitSet(new long[]{0x0000000000200002L,0x0000000000078000L});
-    public static final BitSet FOLLOW_set_in_relationalExpressionNoIn4366 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_shiftExpression_in_relationalExpressionNoIn4389 = new BitSet(new long[]{0x0000000000200002L,0x0000000000078000L});
-    public static final BitSet FOLLOW_relationalExpression_in_equalityExpression4408 = new BitSet(new long[]{0x0000000000000002L,0x0000000000780000L});
-    public static final BitSet FOLLOW_set_in_equalityExpression4412 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_relationalExpression_in_equalityExpression4431 = new BitSet(new long[]{0x0000000000000002L,0x0000000000780000L});
-    public static final BitSet FOLLOW_relationalExpressionNoIn_in_equalityExpressionNoIn4445 = new BitSet(new long[]{0x0000000000000002L,0x0000000000780000L});
-    public static final BitSet FOLLOW_set_in_equalityExpressionNoIn4449 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_relationalExpressionNoIn_in_equalityExpressionNoIn4468 = new BitSet(new long[]{0x0000000000000002L,0x0000000000780000L});
-    public static final BitSet FOLLOW_equalityExpression_in_bitwiseANDExpression4488 = new BitSet(new long[]{0x0000000000000002L,0x0000000100000000L});
-    public static final BitSet FOLLOW_AND_in_bitwiseANDExpression4492 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_equalityExpression_in_bitwiseANDExpression4495 = new BitSet(new long[]{0x0000000000000002L,0x0000000100000000L});
-    public static final BitSet FOLLOW_equalityExpressionNoIn_in_bitwiseANDExpressionNoIn4509 = new BitSet(new long[]{0x0000000000000002L,0x0000000100000000L});
-    public static final BitSet FOLLOW_AND_in_bitwiseANDExpressionNoIn4513 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_equalityExpressionNoIn_in_bitwiseANDExpressionNoIn4516 = new BitSet(new long[]{0x0000000000000002L,0x0000000100000000L});
-    public static final BitSet FOLLOW_bitwiseANDExpression_in_bitwiseXORExpression4532 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
-    public static final BitSet FOLLOW_XOR_in_bitwiseXORExpression4536 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_bitwiseANDExpression_in_bitwiseXORExpression4539 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
-    public static final BitSet FOLLOW_bitwiseANDExpressionNoIn_in_bitwiseXORExpressionNoIn4555 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
-    public static final BitSet FOLLOW_XOR_in_bitwiseXORExpressionNoIn4559 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_bitwiseANDExpressionNoIn_in_bitwiseXORExpressionNoIn4562 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
-    public static final BitSet FOLLOW_bitwiseXORExpression_in_bitwiseORExpression4577 = new BitSet(new long[]{0x0000000000000002L,0x0000000200000000L});
-    public static final BitSet FOLLOW_OR_in_bitwiseORExpression4581 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_bitwiseXORExpression_in_bitwiseORExpression4584 = new BitSet(new long[]{0x0000000000000002L,0x0000000200000000L});
-    public static final BitSet FOLLOW_bitwiseXORExpressionNoIn_in_bitwiseORExpressionNoIn4599 = new BitSet(new long[]{0x0000000000000002L,0x0000000200000000L});
-    public static final BitSet FOLLOW_OR_in_bitwiseORExpressionNoIn4603 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_bitwiseXORExpressionNoIn_in_bitwiseORExpressionNoIn4606 = new BitSet(new long[]{0x0000000000000002L,0x0000000200000000L});
-    public static final BitSet FOLLOW_bitwiseORExpression_in_logicalANDExpression4625 = new BitSet(new long[]{0x0000000000000002L,0x0000002000000000L});
-    public static final BitSet FOLLOW_LAND_in_logicalANDExpression4629 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_bitwiseORExpression_in_logicalANDExpression4632 = new BitSet(new long[]{0x0000000000000002L,0x0000002000000000L});
-    public static final BitSet FOLLOW_bitwiseORExpressionNoIn_in_logicalANDExpressionNoIn4646 = new BitSet(new long[]{0x0000000000000002L,0x0000002000000000L});
-    public static final BitSet FOLLOW_LAND_in_logicalANDExpressionNoIn4650 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_bitwiseORExpressionNoIn_in_logicalANDExpressionNoIn4653 = new BitSet(new long[]{0x0000000000000002L,0x0000002000000000L});
-    public static final BitSet FOLLOW_logicalANDExpression_in_logicalORExpression4668 = new BitSet(new long[]{0x0000000000000002L,0x0000004000000000L});
-    public static final BitSet FOLLOW_LOR_in_logicalORExpression4672 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_logicalANDExpression_in_logicalORExpression4675 = new BitSet(new long[]{0x0000000000000002L,0x0000004000000000L});
-    public static final BitSet FOLLOW_logicalANDExpressionNoIn_in_logicalORExpressionNoIn4690 = new BitSet(new long[]{0x0000000000000002L,0x0000004000000000L});
-    public static final BitSet FOLLOW_LOR_in_logicalORExpressionNoIn4694 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_logicalANDExpressionNoIn_in_logicalORExpressionNoIn4697 = new BitSet(new long[]{0x0000000000000002L,0x0000004000000000L});
-    public static final BitSet FOLLOW_logicalORExpression_in_conditionalExpression4716 = new BitSet(new long[]{0x0000000000000002L,0x0000008000000000L});
-    public static final BitSet FOLLOW_QUE_in_conditionalExpression4720 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_assignmentExpression_in_conditionalExpression4723 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
-    public static final BitSet FOLLOW_COLON_in_conditionalExpression4725 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_assignmentExpression_in_conditionalExpression4728 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_logicalORExpressionNoIn_in_conditionalExpressionNoIn4742 = new BitSet(new long[]{0x0000000000000002L,0x0000008000000000L});
-    public static final BitSet FOLLOW_QUE_in_conditionalExpressionNoIn4746 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_assignmentExpressionNoIn_in_conditionalExpressionNoIn4749 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
-    public static final BitSet FOLLOW_COLON_in_conditionalExpressionNoIn4751 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_assignmentExpressionNoIn_in_conditionalExpressionNoIn4754 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_conditionalExpression_in_assignmentExpression4782 = new BitSet(new long[]{0x0000000000000002L,0x002FFE0000000000L});
-    public static final BitSet FOLLOW_assignmentOperator_in_assignmentExpression4789 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_assignmentExpression_in_assignmentExpression4792 = 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_set_in_assignmentOperator0 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_conditionalExpressionNoIn_in_assignmentExpressionNoIn4870 = new BitSet(new long[]{0x0000000000000002L,0x002FFE0000000000L});
-    public static final BitSet FOLLOW_assignmentOperator_in_assignmentExpressionNoIn4877 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_assignmentExpressionNoIn_in_assignmentExpressionNoIn4880 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_assignmentExpression_in_expression4902 = new BitSet(new long[]{0x0000000000000002L,0x0000000000004000L});
-    public static final BitSet FOLLOW_COMMA_in_expression4906 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_assignmentExpression_in_expression4910 = new BitSet(new long[]{0x0000000000000002L,0x0000000000004000L});
-    public static final BitSet FOLLOW_assignmentExpressionNoIn_in_expressionNoIn4947 = new BitSet(new long[]{0x0000000000000002L,0x0000000000004000L});
-    public static final BitSet FOLLOW_COMMA_in_expressionNoIn4951 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_assignmentExpressionNoIn_in_expressionNoIn4955 = new BitSet(new long[]{0x0000000000000002L,0x0000000000004000L});
-    public static final BitSet FOLLOW_SEMIC_in_semic5006 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_EOF_in_semic5011 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_RBRACE_in_semic5016 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_EOL_in_semic5023 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_MultiLineComment_in_semic5027 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_block_in_statement5056 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_statementTail_in_statement5061 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_variableStatement_in_statementTail5073 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_emptyStatement_in_statementTail5078 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_expressionStatement_in_statementTail5083 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ifStatement_in_statementTail5088 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_iterationStatement_in_statementTail5093 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_continueStatement_in_statementTail5098 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_breakStatement_in_statementTail5103 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_returnStatement_in_statementTail5108 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_withStatement_in_statementTail5113 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_labelledStatement_in_statementTail5118 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_switchStatement_in_statementTail5123 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_throwStatement_in_statementTail5128 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_tryStatement_in_statementTail5133 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_constStatement_in_statementTail5138 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_namespaceStatement_in_statementTail5143 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LBRACE_in_block5158 = new BitSet(new long[]{0x0000102FFFCF3CF0L,0x00000018198025C0L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_statement_in_block5160 = new BitSet(new long[]{0x0000102FFFCF3CF0L,0x00000018198025C0L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_RBRACE_in_block5163 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VAR_in_variableStatement5192 = new BitSet(new long[]{0x0000002600020000L,0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_variableDeclaration_in_variableStatement5194 = new BitSet(new long[]{0x0000000000000000L,0x0000000000006080L,0x0000006000000000L});
-    public static final BitSet FOLLOW_COMMA_in_variableStatement5198 = new BitSet(new long[]{0x0000002600020000L,0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_variableDeclaration_in_variableStatement5200 = new BitSet(new long[]{0x0000000000000000L,0x0000000000006080L,0x0000006000000000L});
-    public static final BitSet FOLLOW_semic_in_variableStatement5205 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_identifier_in_variableDeclaration5228 = new BitSet(new long[]{0x0000000000000002L,0x0000020000000000L});
-    public static final BitSet FOLLOW_ASSIGN_in_variableDeclaration5232 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_assignmentExpression_in_variableDeclaration5235 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_identifier_in_variableDeclarationNoIn5250 = new BitSet(new long[]{0x0000000000000002L,0x0000020000000000L});
-    public static final BitSet FOLLOW_ASSIGN_in_variableDeclarationNoIn5254 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_assignmentExpressionNoIn_in_variableDeclarationNoIn5257 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_CONST_in_constStatement5272 = new BitSet(new long[]{0x0000002600020000L,0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_variableDeclaration_in_constStatement5274 = new BitSet(new long[]{0x0000000000000000L,0x0000000000006080L,0x0000006000000000L});
-    public static final BitSet FOLLOW_COMMA_in_constStatement5278 = new BitSet(new long[]{0x0000002600020000L,0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_variableDeclaration_in_constStatement5280 = new BitSet(new long[]{0x0000000000000000L,0x0000000000006080L,0x0000006000000000L});
-    public static final BitSet FOLLOW_semic_in_constStatement5285 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_SEMIC_in_emptyStatement5315 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_expression_in_expressionStatement5334 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x0000006000000000L});
-    public static final BitSet FOLLOW_semic_in_expressionStatement5336 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_IF_in_ifStatement5354 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_LPAREN_in_ifStatement5356 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_expression_in_ifStatement5358 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_RPAREN_in_ifStatement5360 = new BitSet(new long[]{0x0000102FFFCF3CF0L,0x0000001819802540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_statement_in_ifStatement5362 = new BitSet(new long[]{0x0000000000004002L});
-    public static final BitSet FOLLOW_ELSE_in_ifStatement5368 = new BitSet(new long[]{0x0000102FFFCF3CF0L,0x0000001819802540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_statement_in_ifStatement5370 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_doStatement_in_iterationStatement5403 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_whileStatement_in_iterationStatement5408 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_forEachStatement_in_iterationStatement5413 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_forStatement_in_iterationStatement5418 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DO_in_doStatement5430 = new BitSet(new long[]{0x0000102FFFCF3CF0L,0x0000001819802540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_statement_in_doStatement5432 = new BitSet(new long[]{0x0000000080000000L});
-    public static final BitSet FOLLOW_WHILE_in_doStatement5434 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_LPAREN_in_doStatement5436 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_expression_in_doStatement5438 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_RPAREN_in_doStatement5440 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x0000006000000000L});
-    public static final BitSet FOLLOW_semic_in_doStatement5442 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_WHILE_in_whileStatement5467 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_LPAREN_in_whileStatement5470 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_expression_in_whileStatement5473 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_RPAREN_in_whileStatement5475 = new BitSet(new long[]{0x0000102FFFCF3CF0L,0x0000001819802540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_statement_in_whileStatement5478 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FOR_in_forEachStatement5493 = new BitSet(new long[]{0x0000000000020000L});
-    public static final BitSet FOLLOW_EACH_in_forEachStatement5496 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_LPAREN_in_forEachStatement5499 = new BitSet(new long[]{0x0000002E72461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_forEachControl_in_forEachStatement5502 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_RPAREN_in_forEachStatement5504 = new BitSet(new long[]{0x0000102FFFCF3CF0L,0x0000001819802540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_statement_in_forEachStatement5507 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_forControlVar_in_forEachControl5520 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_forControlExpression_in_forEachControl5526 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FOR_in_forStatement5538 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_LPAREN_in_forStatement5541 = new BitSet(new long[]{0x0000002E72461070L,0x0000001819802540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_forControl_in_forStatement5544 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_RPAREN_in_forStatement5546 = new BitSet(new long[]{0x0000102FFFCF3CF0L,0x0000001819802540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_statement_in_forStatement5549 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_forControlVar_in_forControl5560 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_forControlExpression_in_forControl5565 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_forControlSemic_in_forControl5570 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VAR_in_forControlVar5581 = new BitSet(new long[]{0x0000002600020000L,0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_variableDeclarationNoIn_in_forControlVar5583 = new BitSet(new long[]{0x0000000000100000L,0x0000000000006000L});
-    public static final BitSet FOLLOW_IN_in_forControlVar5595 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_expression_in_forControlVar5597 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_COMMA_in_forControlVar5643 = new BitSet(new long[]{0x0000002600020000L,0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_variableDeclarationNoIn_in_forControlVar5645 = new BitSet(new long[]{0x0000000000000000L,0x0000000000006000L});
-    public static final BitSet FOLLOW_SEMIC_in_forControlVar5650 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819802540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_expression_in_forControlVar5654 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
-    public static final BitSet FOLLOW_SEMIC_in_forControlVar5657 = new BitSet(new long[]{0x0000002E52461072L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_expression_in_forControlVar5661 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_expressionNoIn_in_forControlExpression5727 = new BitSet(new long[]{0x0000000000100000L,0x0000000000002000L});
-    public static final BitSet FOLLOW_IN_in_forControlExpression5742 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_expression_in_forControlExpression5746 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_SEMIC_in_forControlExpression5792 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819802540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_expression_in_forControlExpression5796 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
-    public static final BitSet FOLLOW_SEMIC_in_forControlExpression5799 = new BitSet(new long[]{0x0000002E52461072L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_expression_in_forControlExpression5803 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_SEMIC_in_forControlSemic5862 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819802540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_expression_in_forControlSemic5866 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
-    public static final BitSet FOLLOW_SEMIC_in_forControlSemic5869 = new BitSet(new long[]{0x0000002E52461072L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_expression_in_forControlSemic5873 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_CONTINUE_in_continueStatement5927 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x0000806000000000L});
-    public static final BitSet FOLLOW_Identifier_in_continueStatement5932 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x0000006000000000L});
-    public static final BitSet FOLLOW_semic_in_continueStatement5935 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_BREAK_in_breakStatement5954 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x0000806000000000L});
-    public static final BitSet FOLLOW_Identifier_in_breakStatement5959 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x0000006000000000L});
-    public static final BitSet FOLLOW_semic_in_breakStatement5962 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_RETURN_in_returnStatement5981 = new BitSet(new long[]{0x0000002E52461070L,0x00000018198025C0L,0x00E2836000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_expression_in_returnStatement5986 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x0000006000000000L});
-    public static final BitSet FOLLOW_semic_in_returnStatement5989 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_WITH_in_withStatement6006 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_LPAREN_in_withStatement6009 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_expression_in_withStatement6012 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_RPAREN_in_withStatement6014 = new BitSet(new long[]{0x0000102FFFCF3CF0L,0x0000001819802540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_statement_in_withStatement6017 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_SWITCH_in_switchStatement6038 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_LPAREN_in_switchStatement6040 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_expression_in_switchStatement6042 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_RPAREN_in_switchStatement6044 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
-    public static final BitSet FOLLOW_LBRACE_in_switchStatement6046 = new BitSet(new long[]{0x0000000000000900L,0x0000000000000080L});
-    public static final BitSet FOLLOW_defaultClause_in_switchStatement6053 = new BitSet(new long[]{0x0000000000000900L,0x0000000000000080L});
-    public static final BitSet FOLLOW_caseClause_in_switchStatement6059 = new BitSet(new long[]{0x0000000000000900L,0x0000000000000080L});
-    public static final BitSet FOLLOW_RBRACE_in_switchStatement6064 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_CASE_in_caseClause6092 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_expression_in_caseClause6095 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
-    public static final BitSet FOLLOW_COLON_in_caseClause6097 = new BitSet(new long[]{0x0000102FFFCF3CF2L,0x0000001819802540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_statement_in_caseClause6100 = new BitSet(new long[]{0x0000102FFFCF3CF2L,0x0000001819802540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_DEFAULT_in_defaultClause6113 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
-    public static final BitSet FOLLOW_COLON_in_defaultClause6116 = new BitSet(new long[]{0x0000102FFFCF3CF2L,0x0000001819802540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_statement_in_defaultClause6119 = new BitSet(new long[]{0x0000102FFFCF3CF2L,0x0000001819802540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_identifier_in_labelledStatement6136 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
-    public static final BitSet FOLLOW_COLON_in_labelledStatement6138 = new BitSet(new long[]{0x0000102FFFCF3CF0L,0x0000001819802540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_statement_in_labelledStatement6140 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_THROW_in_throwStatement6171 = new BitSet(new long[]{0x0000002E52461070L,0x0000001819800540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_expression_in_throwStatement6176 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x0000006000000000L});
-    public static final BitSet FOLLOW_semic_in_throwStatement6178 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_TRY_in_tryStatement6195 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
-    public static final BitSet FOLLOW_block_in_tryStatement6198 = new BitSet(new long[]{0x0000000000008200L});
-    public static final BitSet FOLLOW_catchClause_in_tryStatement6202 = new BitSet(new long[]{0x0000000000008202L});
-    public static final BitSet FOLLOW_finallyClause_in_tryStatement6205 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_finallyClause_in_tryStatement6210 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_CATCH_in_catchClause6224 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_LPAREN_in_catchClause6227 = new BitSet(new long[]{0x0000002600020000L,0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_identifier_in_catchClause6230 = new BitSet(new long[]{0x0000000000080000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_catchFilter_in_catchClause6232 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_RPAREN_in_catchClause6235 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
-    public static final BitSet FOLLOW_block_in_catchClause6238 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_IF_in_catchFilter6251 = new BitSet(new long[]{0x0000002600020000L,0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_instanceofExpression_in_catchFilter6254 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_identifier_in_instanceofExpression6269 = new BitSet(new long[]{0x0000000000200000L});
-    public static final BitSet FOLLOW_INSTANCEOF_in_instanceofExpression6271 = new BitSet(new long[]{0x0000002600020000L,0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_identifier_in_instanceofExpression6274 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FINALLY_in_finallyClause6287 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
-    public static final BitSet FOLLOW_block_in_finallyClause6290 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FUNCTION_in_functionDeclaration6311 = new BitSet(new long[]{0x0000002600020000L,0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_identifier_in_functionDeclaration6315 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_formalParameterList_in_functionDeclaration6317 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
-    public static final BitSet FOLLOW_functionBody_in_functionDeclaration6319 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FUNCTION_in_functionExpression6346 = new BitSet(new long[]{0x0000002600020000L,0x0000000000000100L,0x0000800000000000L});
-    public static final BitSet FOLLOW_identifier_in_functionExpression6350 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_formalParameterList_in_functionExpression6353 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
-    public static final BitSet FOLLOW_functionBody_in_functionExpression6355 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LPAREN_in_formalParameterList6383 = new BitSet(new long[]{0x0000002600020000L,0x0000000000000200L,0x0000800000000000L});
-    public static final BitSet FOLLOW_identifier_in_formalParameterList6389 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004200L});
-    public static final BitSet FOLLOW_COMMA_in_formalParameterList6393 = new BitSet(new long[]{0x0000002600020000L,0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_identifier_in_formalParameterList6397 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004200L});
-    public static final BitSet FOLLOW_RPAREN_in_formalParameterList6405 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LBRACE_in_functionBody6431 = new BitSet(new long[]{0x0000102FFFCF3CF0L,0x00000018198025C0L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_sourceElement_in_functionBody6433 = new BitSet(new long[]{0x0000102FFFCF3CF0L,0x00000018198025C0L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_RBRACE_in_functionBody6436 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_GET_in_getMethodDeclaration6466 = new BitSet(new long[]{0x0000002600020000L,0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_identifier_in_getMethodDeclaration6471 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_LPAREN_in_getMethodDeclaration6473 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_RPAREN_in_getMethodDeclaration6476 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
-    public static final BitSet FOLLOW_functionBody_in_getMethodDeclaration6479 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_SET_in_setMethodDeclaration6494 = new BitSet(new long[]{0x0000002600020000L,0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_identifier_in_setMethodDeclaration6499 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_LPAREN_in_setMethodDeclaration6501 = new BitSet(new long[]{0x0000002600020000L,0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_identifier_in_setMethodDeclaration6504 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_RPAREN_in_setMethodDeclaration6506 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
-    public static final BitSet FOLLOW_functionBody_in_setMethodDeclaration6509 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_sourceElement_in_program6526 = new BitSet(new long[]{0x0000102FFFCF3CF0L,0x0000001819802540L,0x00E2830000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_EOF_in_program6529 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_functionDeclaration_in_sourceElement6558 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_statement_in_sourceElement6563 = 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});
 
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.dltk.javascript.parser/src/org/eclipse/dltk/javascript/parser/JSVisitor.java b/plugins/org.eclipse.dltk.javascript.parser/src/org/eclipse/dltk/javascript/parser/JSVisitor.java
index 88ea254..2ab0265 100644
--- a/plugins/org.eclipse.dltk.javascript.parser/src/org/eclipse/dltk/javascript/parser/JSVisitor.java
+++ b/plugins/org.eclipse.dltk.javascript.parser/src/org/eclipse/dltk/javascript/parser/JSVisitor.java
@@ -53,6 +53,10 @@
 
 			case JSParser.Identifier:
 			case JSParser.WXML:
+			case JSParser.GET:
+			case JSParser.SET:
+			case JSParser.EACH:
+			case JSParser.NAMESPACE:
 				return visitIdentifier(node);
 
 			case JSParser.ARGS:
@@ -175,7 +179,7 @@
 			case JSParser.NAMEDVALUE:
 				return visitPropertyInitializer(node);
 
-			case JSParser.EACH:
+			case JSParser.FOREACH:
 				return visitForEachInStatement(node);
 
 			case JSParser.IF:
@@ -223,10 +227,10 @@
 			case JSParser.VOID:
 				return visitVoid(node);
 
-			case JSParser.GET:
+			case JSParser.GETTER:
 				return visitGet(node);
 
-			case JSParser.SET:
+			case JSParser.SETTER:
 				return visitSet(node);
 
 			case JSParser.TYPEOF:
@@ -247,7 +251,7 @@
 			case JSParser.XMLLiteral:
 				return visitXmlLiteral(node);
 
-			case JSParser.NAMESPACE:
+			case JSParser.DEFAULT_XML_NAMESPACE:
 				return visitNamespace(node);
 
 			case JSParser.XmlAttribute: