diff vendor/nikic/php-parser/lib/PhpParser/Parser/Php5.php @ 17:129ea1e6d783

Update, including to Drupal core 8.6.10
author Chris Cannam
date Thu, 28 Feb 2019 13:21:36 +0000
parents 5fb285c0d0e3
children
line wrap: on
line diff
--- a/vendor/nikic/php-parser/lib/PhpParser/Parser/Php5.php	Tue Jul 10 15:07:59 2018 +0100
+++ b/vendor/nikic/php-parser/lib/PhpParser/Parser/Php5.php	Thu Feb 28 13:21:36 2019 +0000
@@ -17,17 +17,17 @@
  */
 class Php5 extends \PhpParser\ParserAbstract
 {
-    protected $tokenToSymbolMapSize = 392;
-    protected $actionTableSize = 1075;
-    protected $gotoTableSize = 700;
+    protected $tokenToSymbolMapSize = 393;
+    protected $actionTableSize = 1111;
+    protected $gotoTableSize = 647;
 
-    protected $invalidSymbol = 157;
+    protected $invalidSymbol = 158;
     protected $errorSymbol = 1;
     protected $defaultAction = -32766;
     protected $unexpectedTokenRule = 32767;
 
-    protected $YY2TBLSTATE = 406;
-    protected $numNonLeafStates = 671;
+    protected $YY2TBLSTATE = 405;
+    protected $numNonLeafStates = 674;
 
     protected $symbolToName = array(
         "EOF",
@@ -58,6 +58,7 @@
         "T_SL_EQUAL",
         "T_SR_EQUAL",
         "T_POW_EQUAL",
+        "T_COALESCE_EQUAL",
         "'?'",
         "':'",
         "T_COALESCE",
@@ -190,388 +191,396 @@
     );
 
     protected $tokenToSymbol = array(
-            0,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,   53,  156,  157,  153,   52,   35,  157,
-          151,  152,   50,   47,    7,   48,   49,   51,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,   29,  148,
-           41,   15,   43,   28,   65,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,   67,  157,  155,   34,  157,  154,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  149,   33,  150,   55,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,    1,    2,    3,    4,
+            0,  158,  158,  158,  158,  158,  158,  158,  158,  158,
+          158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
+          158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
+          158,  158,  158,   54,  157,  158,  154,   53,   36,  158,
+          152,  153,   51,   48,    7,   49,   50,   52,  158,  158,
+          158,  158,  158,  158,  158,  158,  158,  158,   30,  149,
+           42,   15,   44,   29,   66,  158,  158,  158,  158,  158,
+          158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
+          158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
+          158,   68,  158,  156,   35,  158,  155,  158,  158,  158,
+          158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
+          158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
+          158,  158,  158,  150,   34,  151,   56,  158,  158,  158,
+          158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
+          158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
+          158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
+          158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
+          158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
+          158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
+          158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
+          158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
+          158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
+          158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
+          158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
+          158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
+          158,  158,  158,  158,  158,  158,    1,    2,    3,    4,
             5,    6,    8,    9,   10,   11,   12,   13,   14,   16,
            17,   18,   19,   20,   21,   22,   23,   24,   25,   26,
-           27,   30,   31,   32,   36,   37,   38,   39,   40,   42,
-           44,   45,   46,   54,   56,   57,   58,   59,   60,   61,
-           62,   63,   64,   66,   68,   69,   70,   71,   72,   73,
-           74,   75,   76,   77,   78,   79,   80,   81,  157,  157,
-           82,   83,   84,   85,   86,   87,   88,   89,   90,   91,
+           27,   28,   31,   32,   33,   37,   38,   39,   40,   41,
+           43,   45,   46,   47,   55,   57,   58,   59,   60,   61,
+           62,   63,   64,   65,   67,   69,   70,   71,   72,   73,
+           74,   75,   76,   77,   78,   79,   80,   81,   82,  158,
+          158,   83,   84,   85,   86,   87,   88,   89,   90,   91,
            92,   93,   94,   95,   96,   97,   98,   99,  100,  101,
           102,  103,  104,  105,  106,  107,  108,  109,  110,  111,
           112,  113,  114,  115,  116,  117,  118,  119,  120,  121,
           122,  123,  124,  125,  126,  127,  128,  129,  130,  131,
-          132,  133,  134,  135,  136,  137,  157,  157,  157,  157,
-          157,  157,  138,  139,  140,  141,  142,  143,  144,  145,
-          146,  147
+          132,  133,  134,  135,  136,  137,  138,  158,  158,  158,
+          158,  158,  158,  139,  140,  141,  142,  143,  144,  145,
+          146,  147,  148
     );
 
     protected $action = array(
-          676,  677,  678,  679,  680,-32766,  681,  682,  683,  719,
-          720,  218,  219,  220,  221,  222,  223,  224,  225,  226,
-            0,  227,  228,  229,  230,  231,  232,  233,  234,  235,
-          236,  237,  238,-32766,-32766,-32766,-32766,-32766,-32766,-32766,
-        -32766,-32767,-32767,-32767,-32767,  421,  239,  240,-32766,-32766,
-        -32766,-32766,  684,-32766,  311,-32766,-32766,-32766,-32766,-32766,
-        -32766,-32767,-32767,-32767,-32767,-32767,  685,  686,  687,  688,
-          689,  690,  691, 1180,   10,  751,-32766,-32766,-32766,-32766,
-        -32766,  424,  692,  693,  694,  695,  696,  697,  698,  699,
-          700,  701,  702,  722,  723,  724,  725,  726,  714,  715,
-          716,  717,  718,  703,  704,  705,  706,  707,  708,  709,
-          745,  746,  747,  748,  749,  750,  710,  711,  712,  713,
-          743,  734,  732,  733,  729,  730,  282,  721,  727,  728,
-          735,  736,  738,  737,  739,  740,   54,   55,  425,   56,
-           57,  731,  742,  741,   25,   58,   59,  339,   60,-32766,
-        -32766,-32766,-32766,-32766,-32766,-32766,-32766,-32766,    9,-32767,
-        -32767,-32767,-32767,   52,  327,-32766, 1044,  952,  953,  954,
-          951,  950,  949,  944,-32766,-32766,-32766,   48,  770,  771,
-          828,   61,   62,  125, -272,  206,  815,   63, 1180,   64,
-          293,  294,   65,   66,   67,   68,   69,   70,   71,   72,
-          420,   26,  301,   73,  417,-32766,-32766,-32766,-32766, 1095,
-         1096,  755,  753,  758,-32766,  926,  876,  474,-32766,-32766,
-        -32766,  829,  410,-32766,  309,-32766, 1062,-32766,-32766,-32766,
-        -32766,-32766,-32766,  215,  216,  217,  437,-32766,-32766,-32766,
-        -32766,-32766,-32766,-32766,-32766,  122,  498,  952,  953,  954,
-          951,  950,  949,  202,  482,  483,  284,  627,  127,  118,
-          900,  901,  339,  484,  485, -219, 1101, 1102, 1103, 1104,
-         1098, 1099,  312,  499,  353,  423,  433,  499, 1105, 1100,
-          433,  525, -223,-32766,-32766,   41,  422,  335,  323,  907,
-          324,  426, -125, -125, -125,   -4,  829,  473,  101,  102,
-          103,  817,  303, 1044,   40,   21,  427, -125,  475, -125,
-          476, -125,  477, -125,  104,  428,  215,  216,  217,   31,
-           32,  429,  430,  628,   33,  478,  433,  819,   74,  592,
-          930,  351,  352,  479,  480,  877,  202,  243, 1107,  481,
-          297,  769,  800,  847,  431,  432,  300,  236,  237,  238,
-           35,  105,  106,  107,  108,  109,  110,  111,  112,  113,
-          114,  115,  116,  239,  240, 1044,  426,  416,  831,  642,
-         -125,  829,  473,  215,  216,  217,  817, 1146,  241,   40,
-           21,  427,  350,  475,  447,  476, 1107,  477,  297, 1044,
-          428,  983,  985,  202,   31,   32,  429,  430,  408,   33,
-          478, 1195, 1222,   74,  322, 1223,  351,  352,  479,  480,
-        -32766,-32766,-32766, 1044,  481,  814,  925,  762,  847,  431,
-          432,-32767,-32767,-32767,-32767,   96,   97,   98,   99,  100,
-        -32766,   20,-32766,-32766,-32766,-32766, 1194,  123,  336,  810,
-          484,  426,   36,  831,  642,   -4,  829,  473,  900,  901,
-          338,  817,  126, 1044,   40,   21,  427,  906,  475,  299,
-          476,  499,  477, -501,  433,  428, -203, -203, -203,   31,
-           32,  429,  430,  217,   33,  478,  285,  758,   74,  551,
-         1213,  351,  352,  479,  480,-32766,-32766,-32766,  334,  481,
-           51,  202,  800,  847,  431,  432, 1044,  755,   30,  758,
-          126,-32766,-32766,-32766,  448,-32766,  331,-32766,-32766,-32766,
-           49,  450,  753,-32766,-32766,-32766,  426, 1044,  831,  642,
-         -203,-32766,  473,-32766,-32766,  812,  817,-32766,-32766,   40,
-           21,  427, 1072,  475,  121,  476,  202,  477,   29,  296,
-          428, -204, -204, -204,   31,   32,  429,  430,  117,   33,
-          478,  418, 1044,   74,  207,  829,  351,  352,  479,  480,
-          215,  216,  217,  499,  481,  208,  433,  800,  847,  431,
-          432,  438,  120,  335, 1044,  298,   78,   79,   80,-32766,
-          202,  239,  240,  645,  128,   98,   99,  100,  335,  233,
-          234,  235,  119,  831,  642, -204,   34,  295,   81,   82,
-           83,   84,   85,   86,   87,   88,   89,   90,   91,   92,
-           93,   94,   95,   96,   97,   98,   99,  100,  101,  102,
-          103,  246,  303,  244,  829,  426,  216,  217,  215,  216,
-          217,  473,  808,  499,  104,  817,  433,  131,   40,   21,
-          427,  583,  475,   77,  476,  202,  477,  335,  202,  428,
-          462,  598,  648,   31,   32,  429,  829,  443,   33,  478,
-          644,  245,   74,  457,   22,  351,  352,-32766,-32766,-32766,
-          132,  361,  209,  481,  770,  771,  605,  606,  941,  658,
-          929,  670,  763,  647,  646,  -82,  840,-32766,  303,  649,
-          652,  130,  827,  315,  426,  104,-32766,   53,   46,   47,
-          473,  301,  831,  642,  817,   44,   45,   40,   21,  427,
-          129,  475,   43,  476,   50,  477,  611,  753,  428,  531,
-          758,  755,   31,   32,  429,  829,  426,   33,  478,  756,
-        -32766,   74,  473,  957,  351,  352,  817,  586,  636,   40,
-           21,  427,  481,  475,  446,  476,  615,  477,  849,  848,
-          428,  326, 1106,  655,   31,   32,  429,  829,  623,   33,
-          478,  330,  281,   74,  449,   11,  351,  352,  -80,  589,
-           12,  863,  642,  602,  481, 1145,  328,  467,  441, -219,
-            0,  603,  411,    0,    0,  650,    0,    0,    0,    0,
-            0,    0,    0,    0,    0,  426,    0, -502,    0,    0,
-            0,  473,    0,  831,  642,  817,  325, -501,   40,   21,
-          427,  308,  475,  310,  476,  484,  477, 1152,    0,  428,
-            0,    0,    0,   31,   32,  429,  829,  426,   33,  478,
-            6,  360,   74,  473, -410,  351,  352,  817, -402,    5,
-           40,   21,  427,  481,  475,   14,  476, -411,  477,  842,
-          412,  428,  533,  443,  394,   31,   32,  429,  386,  385,
-           33,  478,  374,  816,   74,  663,  662,  351,  352,   39,
-           38,  767,  831,  642,  766,  481,  809,  811,  935,  813,
-          825,  933,  768,  818,  934,  937,  936,  859,  861,  864,
-          803,  871,  870,  879,  820,  805,  426,  826,  869,  407,
-          333,  332,  473,  124,  831,  642,  817,  406,   77,   40,
-           21,  427,  667,  475,  666,  476,  242,  477,  665,  660,
-          428,  657,  656,  654,   31,   32,  429,  653,  651,   33,
-          478,  643,  340,   74,  210,  211,  351,  352,  942,  834,
-          212, 1047,  213,  843,  481,  772,  775,  774,  868, 1218,
-         1188, 1186, 1171, 1184,  204, 1086,  918, 1192, 1182,  210,
-          211,  773, 1095, 1096, 1058,  212,-32766,  213,  844,  845,
-         1097, 1046,  836,  831,  642,  307, 1220,  764,  765,  204,
-         1221, 1219,  801,  664,  461,  846,    0, 1095, 1096,  306,
-          409,-32766,  305,  304,   24, 1097,   27,  292,  291,  283,
-          415,   28,   37,   42,   75,  205,   76,-32766,    0, -220,
-         1048, 1024, 1023, 1088,  576, 1111,  908,  572, 1052, 1101,
-         1102, 1103, 1104, 1098, 1099,  384, 1049,  633,  566,  471,
-          466, 1105, 1100,  465,  458,  379,   18,   17,  214,  286,
-        -32766,   16,  572,  609, 1101, 1102, 1103, 1104, 1098, 1099,
-          384, 1042, -420,    0, 1166, 1165, 1105, 1100, 1112, 1216,
-         1085, 1183, 1055,  214, 1170,-32766, 1185,    0, 1071, 1056,
-         1057, 1054, 1053,    0, 1151
+          679,  680,  681,  682,  683,    0,  684,  685,  686,  722,
+          723,  220,  221,  222,  223,  224,  225,  226,  227,  228,
+          208,  229,  230,  231,  232,  233,  234,  235,  236,  237,
+          238,  239,  240,-32766,-32766,-32766,-32766,-32766,-32766,-32766,
+        -32766,-32767,-32767,-32767,-32767,  124,  241,  242,-32766,-32766,
+        -32766,-32766,-32766,  687,-32766,   30,-32766,-32766,-32766,-32766,
+        -32766,-32766,-32767,-32767,-32767,-32767,-32767,  688,  689,  690,
+          691,  692,  693,  694, 1185,  415,  754,  956,  957,  958,
+          955,  954,  953,  695,  696,  697,  698,  699,  700,  701,
+          702,  703,  704,  705,  725,  726,  727,  728,  729,  717,
+          718,  719,  720,  721,  706,  707,  708,  709,  710,  711,
+          712,  748,  749,  750,  751,  752,  753,  713,  714,  715,
+          716,  746,  737,  735,  736,  732,  733,  281,  724,  730,
+          731,  738,  739,  741,  740,  742,  743,   54,   55,  424,
+           56,   57,  734,  745,  744,  423,   58,   59,  338,   60,
+        -32766,-32766,-32766,-32766,-32766,-32766,-32766,-32766,-32766,-32766,
+        -32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,   96,   97,
+           98,   99,  100,  330,  101,  102,  103,  831,  302,-32766,
+        -32766,-32766,-32766,   61,   62,  758, 1049,  761,  296,   63,
+          104,   64,  292,  293,   65,   66,   67,   68,   69,   70,
+           71,   72,  349,   26,  300,   73,  416,-32766,-32766,-32766,
+          219, 1100, 1101,  758,-32766,  761,-32766,-32766,-32766,  473,
+         1077, 1049,  832,-32766,-32766,-32766,  333,  283,-32766,  204,
+        -32766,-32766,-32766,-32766,-32766,-32766,   48,-32766,  436,-32766,
+        -32766,-32766,-32766,-32766,-32766,  296,-32766,-32766,  497,  352,
+          422,  498,  310,  550,  432, 1199,  481,  482,   52,  437,
+          446,  334,  903,  904,  298,  483,  484, -219, 1106, 1107,
+         1108, 1109, 1103, 1104,  311,  498,  773,  774,  432,  498,
+         1110, 1105,  432,  217,  218,  219,-32766,   41,-32766,  334,
+          322, 1067,  323,  425, -125, -125, -125,   -4,  832,  472,
+          127, 1049,  419,  820,  204,  909,   40,   21,  426, -125,
+          474, -125,  475, -125,  476, -125,  756,  427,  119,  308,
+          409,   31,   32,  428,  429,  822,   33,  477,  218,  219,
+           74,  421,  756,  350,  351,  478,  479,-32766,-32766,-32766,
+          123,  480,   25,  879,  803,  850,  430,  431,  204, 1049,
+           49,  956,  957,  958,  955,  954,  953,  127,-32766,   36,
+        -32766,-32766,-32766,-32766,  630,  903,  904,  299,  832,  425,
+          834,  645, -125, 1200,  761,  472, 1049, 1218,  498,  820,
+          447,  432,   40,   21,  426, 1185,  474, -223,  475,   10,
+          476,  817,  929,  427,-32766,-32766,-32766,   31,   32,  428,
+          429,  407,   33,  477,  129,  420,   74,  321,  334,  350,
+          351,  478,  479,  217,  218,  219, 1049,  480,-32766,-32766,
+          765,  850,  430,  431,-32766,-32766,  238,  239,  240,   51,
+          631, 1150,  120,  432,  204,   29,  295,  934,  832,  425,
+          210,  335,  241,  242,  772,  472,  834,  645,   -4,  820,
+          417, 1049,   40,   21,  426,  128,  474,  592,  475,  338,
+          476,  483,  880,  427, -203, -203, -203,   31,   32,  428,
+          429,  337,   33,  477,  122,  297,   74,   20,-32766,  350,
+          351,  478,  479,-32766,-32766,-32766,  815,  480,  910,  246,
+          803,  850,  430,  431,-32766,-32766,-32766,    9,  132,  217,
+          218,  219,  583,  326,-32766, 1049,-32766,-32766,-32766,  425,
+          524,  121,  948,  813, 1112,  472,  834,  645, -203,  820,
+          204,  245,   40,   21,  426,  248,  474,  247,  475,  284,
+          476,  930,  449,  427, -204, -204, -204,   31,   32,  428,
+          429,  118,   33,  477, -254,  832,   74,  818,  209,  350,
+          351,  478,  479,  811,  217,  218,  219,  480, 1151,  243,
+          803,  850,  430,  431,-32766,-32766,-32766, 1112,   78,   79,
+           80,  235,  236,  237,  648,  204,   98,   99,  100,   77,
+          211, 1227,  131,  334, 1228,-32766,  834,  645, -204,   34,
+          204,   81,   82,   83,   84,   85,   86,   87,   88,   89,
+           90,   91,   92,   93,   94,   95,   96,   97,   98,   99,
+          100,  101,  102,  103,  832,  302,  425,  217,  218,  219,
+          241,  242,  472, 1049, 1049,  498,  820,  104,  432,   40,
+           21,  426,  830,  474,  659,  475,  442,  476,  204,  647,
+          427,  843,  126,  649,   31,   32,  428,  294,  656,   33,
+          477,  461,  599,   74,  456,   22,  350,  351,  773,  774,
+          832,  133,  360,  314,  480,  606,  607,  945,  665,  933,
+          673,  766,  651,  -82,-32766,  302,   53,  104,  614,  758,
+          961,  530,   43,   44,   45,  425,  300,   46,  626,  653,
+           50,  472,   47,  834,  645,  820,  130,  639,   40,   21,
+          426,  759,  474,  756,  475,  604,  476, -273,  445,  427,
+          761,  832,-32766,   31,   32,  428,  852,  327,   33,  477,
+          586,  -80,   74,  851,  329,  350,  351, 1111,  618, 1157,
+           11,  425,  448,  480,  280,  603, -404,  472,  589,  440,
+          662,  820,  845,  466,   40,   21,  426,  610,  474,    0,
+          475,    0,  476,    0,    0,  427,    0,  832,  324,   31,
+           32,  428,  834,  645,   33,  477,    0,    0,   74,    0,
+            0,  350,  351,  325,  483,  309,  307, -504, -503,  480,
+            0,    0,  425,    0,    0,    0,  657,    0,  472,    0,
+            0,    0,  820,   14,    5,   40,   21,  426,    6,  474,
+          359,  475,  668,  476, -412,   12,  427, -413,  866,  645,
+           31,   32,  428,  442,  384,   33,  477,  411,  410,   74,
+          385,  393,  350,  351,  373,  532,  832,  847,  425,  812,
+          480,   39,   38,  882,  472,  823,  771,  821,  820,  939,
+          808,   40,   21,  426,  669,  474,  770,  475,  244,  476,
+          829,  938,  427,  941,  814,  769,   31,   32,  428,  834,
+          645,   33,  477,  816,  828,   74,  212,  213,  350,  351,
+          874,  806,  214,  940,  215,  867,  480,  864,  819,  862,
+          937,  873, 1047,  331,   77,  646,  206,  650,  652,  654,
+          655,  658,  660,  661, 1100, 1101,  663,  425,-32766,  664,
+          332,  405, 1102,  472,  406,  834,  645,  820,  125,   42,
+           40,   21,  426,  775,  474,  778,  475,  777,  476,  872,
+          670,  427,  804, 1224,  460,   31,   32,  428, 1223, 1193,
+           33,  477, 1191, 1176,   74, 1189, 1091,  350,  351,  921,
+         1197, 1187,  871,  946,  837,  480, 1052,  846, 1051,  571,
+          839, 1106, 1107, 1108, 1109, 1103, 1104,  383, 1063,  212,
+          213,  776, 1225, 1110, 1105,  214,  848,  215,  767, 1028,
+          216,  849,-32766,  768,  834,  645,   37, 1226, -422,  206,
+           28,  414,  408,  339,   75,   76,  306, 1100, 1101,  305,
+          304,-32766,  303,   27,   24, 1102,   35,  105,  106,  107,
+          108,  109,  110,  111,  112,  113,  114,  115,  116,  117,
+          291,  290,  282,-32766,  207,    0,  575, 1029, 1053, -220,
+         1093, -219,   16, 1116,  911, 1057, 1054,  636,  565,  470,
+          465,  464,  457,  378,   18,   17,    0,  285,  988,  990,
+         1171, 1170,  571, 1117, 1106, 1107, 1108, 1109, 1103, 1104,
+          383, 1221, 1090, 1188, 1060, 1175, 1110, 1105, 1190, 1076,
+         1061, 1062, 1059,  216, 1058,-32766, 1156,    0,    0,    0,
+            0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+            0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+            0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+            0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+         -503
     );
 
     protected $actionCheck = array(
-            2,    3,    4,    5,    6,    8,    8,    9,   10,   11,
-           12,   31,   32,   33,   34,   35,   36,   37,   38,   39,
-            0,   41,   42,   43,   44,   45,   46,   47,   48,   49,
-           50,   51,   52,    8,    9,   10,   31,   32,   33,   34,
-           35,   36,   37,   38,   39,    7,   66,   67,   31,   32,
-           33,   34,   54,   28,    7,   30,   31,   32,   33,   34,
-           35,   36,   37,   38,   39,   40,   68,   69,   70,   71,
-           72,   73,   74,   79,    7,   77,   31,   32,   33,   34,
-           35,    7,   84,   85,   86,   87,   88,   89,   90,   91,
+            2,    3,    4,    5,    6,    0,    8,    9,   10,   11,
+           12,   32,   33,   34,   35,   36,   37,   38,   39,   40,
+            7,   42,   43,   44,   45,   46,   47,   48,   49,   50,
+           51,   52,   53,    8,    9,   10,   32,   33,   34,   35,
+           36,   37,   38,   39,   40,    7,   67,   68,   32,   33,
+           34,   35,   36,   55,   29,    7,   31,   32,   33,   34,
+           35,   36,   37,   38,   39,   40,   41,   69,   70,   71,
+           72,   73,   74,   75,   80,    7,   78,  113,  114,  115,
+          116,  117,  118,   85,   86,   87,   88,   89,   90,   91,
            92,   93,   94,   95,   96,   97,   98,   99,  100,  101,
           102,  103,  104,  105,  106,  107,  108,  109,  110,  111,
           112,  113,  114,  115,  116,  117,  118,  119,  120,  121,
-          122,  123,  124,  125,  126,  127,   13,  129,  130,  131,
-          132,  133,  134,  135,  136,  137,    2,    3,    4,    5,
-            6,  143,  144,  145,    7,   11,   12,  153,   14,   31,
-           32,   33,   34,   35,   36,   37,   38,   39,  103,   41,
-           42,   43,   44,   67,  109,   79,   12,  112,  113,  114,
-          115,  116,  117,  118,    8,    9,   10,   67,  102,  103,
-            1,   47,   48,   29,   79,    7,  148,   53,   79,   55,
-           56,   57,   58,   59,   60,   61,   62,   63,   64,   65,
-            7,   67,   68,   69,   70,    8,    9,   10,  103,   75,
-           76,   77,   77,   79,  109,  148,   29,   83,    8,    9,
-           10,    1,  146,  118,  128,   28,  152,   30,   31,   32,
-           33,   34,   35,    8,    9,   10,  102,  151,   28,  153,
-           30,   31,   32,   33,   34,  149,  112,  112,  113,  114,
-          115,  116,  117,   28,  120,  121,    7,   77,  149,  149,
-          130,  131,  153,  129,  130,  152,  132,  133,  134,  135,
-          136,  137,  138,  143,    7,    7,  146,  143,  144,  145,
-          146,   82,  152,    8,    9,  151,    7,  153,  154,  152,
-          156,   71,   72,   73,   74,    0,    1,   77,   50,   51,
-           52,   81,   54,   12,   84,   85,   86,   87,   88,   89,
-           90,   91,   92,   93,   66,   95,    8,    9,   10,   99,
-          100,  101,  102,  143,  104,  105,  146,  148,  108,   82,
-          150,  111,  112,  113,  114,  148,   28,   29,  139,  119,
-           35,  148,  122,  123,  124,  125,   35,   50,   51,   52,
-           15,   16,   17,   18,   19,   20,   21,   22,   23,   24,
-           25,   26,   27,   66,   67,   12,   71,    7,  148,  149,
-          150,    1,   77,    8,    9,   10,   81,  152,   13,   84,
-           85,   86,    7,   88,   29,   90,  139,   92,   35,   12,
-           95,   56,   57,   28,   99,  100,  101,  102,  103,  104,
-          105,  152,   77,  108,  109,   80,  111,  112,  113,  114,
-            8,    9,   10,   12,  119,  148,  148,  122,  123,  124,
-          125,   41,   42,   43,   44,   45,   46,   47,   48,   49,
-           28,  152,   30,   31,   32,   33,    1,    7,  143,  148,
-          129,   71,   13,  148,  149,  150,    1,   77,  130,  131,
-           67,   81,  147,   12,   84,   85,   86,  152,   88,    7,
-           90,  143,   92,  128,  146,   95,   96,   97,   98,   99,
-          100,  101,  102,   10,  104,  105,   35,   79,  108,   78,
-           82,  111,  112,  113,  114,    8,    9,   10,    7,  119,
-           67,   28,  122,  123,  124,  125,   12,   77,    7,   79,
-          147,    8,    9,   10,  149,   28,    7,   30,   31,   32,
-           67,  128,   77,   31,   32,   33,   71,   12,  148,  149,
-          150,   28,   77,   30,   31,  148,   81,   31,   32,   84,
-           85,   86,  112,   88,   13,   90,   28,   92,  140,  141,
-           95,   96,   97,   98,   99,  100,  101,  102,   15,  104,
-          105,  123,   12,  108,   15,    1,  111,  112,  113,  114,
-            8,    9,   10,  143,  119,   15,  146,  122,  123,  124,
-          125,  151,  149,  153,   12,   35,    8,    9,   10,  151,
-           28,   66,   67,   29,  149,   47,   48,   49,  153,   47,
-           48,   49,  149,  148,  149,  150,   28,   35,   30,   31,
-           32,   33,   34,   35,   36,   37,   38,   39,   40,   41,
-           42,   43,   44,   45,   46,   47,   48,   49,   50,   51,
-           52,   15,   54,   15,    1,   71,    9,   10,    8,    9,
-           10,   77,  148,  143,   66,   81,  146,  149,   84,   85,
-           86,  153,   88,  149,   90,   28,   92,  153,   28,   95,
-           72,   73,   29,   99,  100,  101,    1,  146,  104,  105,
-          149,   15,  108,   72,   73,  111,  112,    8,    9,   10,
-           97,   98,   15,  119,  102,  103,  106,  107,  148,  149,
-          148,  149,  148,  149,   29,   29,   35,   28,   54,   29,
-           29,   29,   29,   29,   71,   66,   31,   67,   67,   67,
-           77,   68,  148,  149,   81,   67,   67,   84,   85,   86,
-           67,   88,   67,   90,   67,   92,   74,   77,   95,   82,
-           79,   77,   99,  100,  101,    1,   71,  104,  105,   77,
-           82,  108,   77,   79,  111,  112,   81,   87,   89,   84,
-           85,   86,  119,   88,   86,   90,   93,   92,  123,  123,
-           95,  127,  139,   29,   99,  100,  101,    1,   91,  104,
-          105,  126,   94,  108,   94,   94,  111,  112,   94,   96,
-          142,  148,  149,   96,  119,  155,  110,  102,  102,  152,
-           -1,  109,  146,   -1,   -1,   29,   -1,   -1,   -1,   -1,
-           -1,   -1,   -1,   -1,   -1,   71,   -1,  128,   -1,   -1,
-           -1,   77,   -1,  148,  149,   81,  126,  128,   84,   85,
-           86,  128,   88,  128,   90,  129,   92,  139,   -1,   95,
-           -1,   -1,   -1,   99,  100,  101,    1,   71,  104,  105,
-          142,  142,  108,   77,  142,  111,  112,   81,  142,  142,
-           84,   85,   86,  119,   88,  142,   90,  142,   92,  147,
-          146,   95,  146,  146,  146,   99,  100,  101,  146,  146,
-          104,  105,  146,  148,  108,  148,  148,  111,  112,  148,
-          148,  148,  148,  149,  148,  119,  148,  148,  148,  148,
-          148,  148,  148,  148,  148,  148,  148,  148,  148,  148,
-          148,  148,  148,  148,  148,  148,   71,  148,  150,  149,
-          149,  149,   77,  149,  148,  149,   81,  149,  149,   84,
-           85,   86,  149,   88,  149,   90,   29,   92,  149,  149,
-           95,  149,  149,  149,   99,  100,  101,  149,  149,  104,
-          105,  149,  151,  108,   47,   48,  111,  112,  150,  150,
-           53,  150,   55,  150,  119,  150,  150,  150,  150,  150,
-          150,  150,  150,  150,   67,  150,  150,  150,  150,   47,
-           48,  150,   75,   76,  150,   53,   79,   55,  150,  150,
-           83,  150,  150,  148,  149,  151,  150,  150,  150,   67,
-          150,  150,  150,  150,  150,  150,   -1,   75,   76,  151,
-          151,   79,  151,  151,  151,   83,  151,  151,  151,  151,
-          151,  151,  151,  151,  151,  151,  151,  151,   -1,  152,
-          152,  152,  152,  152,  152,  152,  152,  130,  152,  132,
-          133,  134,  135,  136,  137,  138,  152,  152,  152,  152,
-          152,  144,  145,  152,  152,  152,  152,  152,  151,  153,
-          153,  152,  130,  155,  132,  133,  134,  135,  136,  137,
-          138,  154,  154,   -1,  155,  155,  144,  145,  155,  155,
-          155,  155,  155,  151,  155,  153,  155,   -1,  155,  155,
-          155,  155,  155,   -1,  156
+          122,  123,  124,  125,  126,  127,  128,   13,  130,  131,
+          132,  133,  134,  135,  136,  137,  138,    2,    3,    4,
+            5,    6,  144,  145,  146,    7,   11,   12,  154,   14,
+           32,   33,   34,   35,   36,   37,   38,   39,   40,    8,
+           42,   43,   44,   45,   42,   43,   44,   45,   46,   47,
+           48,   49,   50,    7,   51,   52,   53,    1,   55,   32,
+           33,   34,   35,   48,   49,   78,   12,   80,   36,   54,
+           67,   56,   57,   58,   59,   60,   61,   62,   63,   64,
+           65,   66,    7,   68,   69,   70,   71,    8,    9,   10,
+           10,   76,   77,   78,   80,   80,    8,    9,   10,   84,
+          113,   12,    1,    8,    9,   10,    7,    7,   29,   29,
+           31,   32,   33,   34,   35,   36,   68,   29,  103,   31,
+           32,   33,   34,   35,   29,   36,   31,   32,  113,    7,
+            7,  144,    7,   79,  147,    1,  121,  122,   68,  152,
+           30,  154,  131,  132,    7,  130,  131,  153,  133,  134,
+          135,  136,  137,  138,  139,  144,  103,  104,  147,  144,
+          145,  146,  147,    8,    9,   10,  152,  152,  154,  154,
+          155,  153,  157,   72,   73,   74,   75,    0,    1,   78,
+          148,   12,    7,   82,   29,  153,   85,   86,   87,   88,
+           89,   90,   91,   92,   93,   94,   78,   96,  150,  129,
+          147,  100,  101,  102,  103,  149,  105,  106,    9,   10,
+          109,    7,   78,  112,  113,  114,  115,    8,    9,   10,
+          150,  120,    7,   30,  123,  124,  125,  126,   29,   12,
+           68,  113,  114,  115,  116,  117,  118,  148,   29,   13,
+           31,   32,   33,   34,   78,  131,  132,   36,    1,   72,
+          149,  150,  151,  153,   80,   78,   12,   83,  144,   82,
+          150,  147,   85,   86,   87,   80,   89,  153,   91,    7,
+           93,  149,  149,   96,    8,    9,   10,  100,  101,  102,
+          103,  104,  105,  106,  150,    7,  109,  110,  154,  112,
+          113,  114,  115,    8,    9,   10,   12,  120,    8,    9,
+          123,  124,  125,  126,   32,   33,   51,   52,   53,   68,
+          144,  156,  150,  147,   29,  141,  142,  151,    1,   72,
+           15,  144,   67,   68,  149,   78,  149,  150,  151,   82,
+          124,   12,   85,   86,   87,  150,   89,   83,   91,  154,
+           93,  130,  149,   96,   97,   98,   99,  100,  101,  102,
+          103,   68,  105,  106,   13,   36,  109,  153,  152,  112,
+          113,  114,  115,    8,    9,   10,  149,  120,  153,   15,
+          123,  124,  125,  126,   32,   33,   34,  104,  150,    8,
+            9,   10,  154,  110,   29,   12,   31,   32,   33,   72,
+           83,  150,  119,  149,  140,   78,  149,  150,  151,   82,
+           29,   30,   85,   86,   87,   15,   89,   15,   91,   36,
+           93,  149,  129,   96,   97,   98,   99,  100,  101,  102,
+          103,   15,  105,  106,  151,    1,  109,  149,   15,  112,
+          113,  114,  115,  149,    8,    9,   10,  120,  153,   13,
+          123,  124,  125,  126,    8,    9,   10,  140,    8,    9,
+           10,   48,   49,   50,   30,   29,   48,   49,   50,  150,
+           15,   78,   30,  154,   81,   29,  149,  150,  151,   29,
+           29,   31,   32,   33,   34,   35,   36,   37,   38,   39,
+           40,   41,   42,   43,   44,   45,   46,   47,   48,   49,
+           50,   51,   52,   53,    1,   55,   72,    8,    9,   10,
+           67,   68,   78,   12,   12,  144,   82,   67,  147,   85,
+           86,   87,   30,   89,   30,   91,  147,   93,   29,  150,
+           96,   36,   30,   30,  100,  101,  102,   36,   30,  105,
+          106,   73,   74,  109,   73,   74,  112,  113,  103,  104,
+            1,   98,   99,   30,  120,  107,  108,  149,  150,  149,
+          150,  149,  150,   30,   32,   55,   68,   67,   75,   78,
+           80,   83,   68,   68,   68,   72,   69,   68,   92,   30,
+           68,   78,   68,  149,  150,   82,   68,   90,   85,   86,
+           87,   78,   89,   78,   91,  110,   93,   80,   87,   96,
+           80,    1,   83,  100,  101,  102,  124,  111,  105,  106,
+           88,   95,  109,  124,  127,  112,  113,  140,   94,  140,
+           95,   72,   95,  120,   95,   97,  143,   78,   97,  103,
+           30,   82,  148,  103,   85,   86,   87,  156,   89,   -1,
+           91,   -1,   93,   -1,   -1,   96,   -1,    1,  127,  100,
+          101,  102,  149,  150,  105,  106,   -1,   -1,  109,   -1,
+           -1,  112,  113,  128,  130,  129,  129,  129,  129,  120,
+           -1,   -1,   72,   -1,   -1,   -1,   30,   -1,   78,   -1,
+           -1,   -1,   82,  143,  143,   85,   86,   87,  143,   89,
+          143,   91,  149,   93,  143,  143,   96,  143,  149,  150,
+          100,  101,  102,  147,  147,  105,  106,  147,  147,  109,
+          147,  147,  112,  113,  147,  147,    1,  151,   72,  149,
+          120,  149,  149,  149,   78,  149,  149,  149,   82,  149,
+          149,   85,   86,   87,  149,   89,  149,   91,   30,   93,
+          149,  149,   96,  149,  149,  149,  100,  101,  102,  149,
+          150,  105,  106,  149,  149,  109,   48,   49,  112,  113,
+          149,  149,   54,  149,   56,  149,  120,  149,  149,  149,
+          149,  149,  155,  150,  150,  150,   68,  150,  150,  150,
+          150,  150,  150,  150,   76,   77,  150,   72,   80,  150,
+          150,  150,   84,   78,  150,  149,  150,   82,  150,  152,
+           85,   86,   87,  151,   89,  151,   91,  151,   93,  151,
+          151,   96,  151,  151,  151,  100,  101,  102,  151,  151,
+          105,  106,  151,  151,  109,  151,  151,  112,  113,  151,
+          151,  151,  151,  151,  151,  120,  151,  151,  151,  131,
+          151,  133,  134,  135,  136,  137,  138,  139,  151,   48,
+           49,  151,  151,  145,  146,   54,  151,   56,  151,  153,
+          152,  151,  154,  151,  149,  150,  152,  151,  155,   68,
+          152,  152,  152,  152,  152,  152,  152,   76,   77,  152,
+          152,   80,  152,  152,  152,   84,   15,   16,   17,   18,
+           19,   20,   21,   22,   23,   24,   25,   26,   27,   28,
+          152,  152,  152,  152,  152,   -1,  153,  153,  153,  153,
+          153,  153,  153,  153,  153,  153,  153,  153,  153,  153,
+          153,  153,  153,  153,  153,  153,   -1,  154,   57,   58,
+          156,  156,  131,  156,  133,  134,  135,  136,  137,  138,
+          139,  156,  156,  156,  156,  156,  145,  146,  156,  156,
+          156,  156,  156,  152,  156,  154,  157,   -1,   -1,   -1,
+           -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+           -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+           -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+           -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+          129
     );
 
     protected $actionBase = array(
-            0,  220,  295,  445,  370,  109,  109,  180,  730,   -2,
-           -2,  135,   -2,   -2,   -2,  655,  756,  724,  756,  554,
-          623,  825,  825,  825,  305,  353,  562,  562,  861,  401,
-          562,  484,  291,  377,  154,  441,  540,  505,  505,  505,
-          505,  134,  134,  505,  505,  505,  505,  505,  505,  505,
-          505,  505,  505,  505,  505,  505,  505,  505,  505,  505,
-          505,  505,  505,  505,  505,  505,  505,  505,  505,  505,
-          505,  505,  505,  505,  505,  505,  505,  505,  505,  505,
-          505,  505,  505,  505,  505,  505,  505,  505,  505,  505,
-          505,  505,  505,  505,  505,  505,  505,  505,  505,  505,
-          505,  505,  505,  505,  505,  505,  505,  505,  505,  505,
-          505,  505,  505,  505,  505,  505,  505,  505,  505,  505,
-          505,  505,  505,  505,  505,  505,  505,  505,  505,  505,
-          505,  505,  505,  187,  179,  521,  429,  728,  729,  731,
-          732,  858,  668,  859,  799,  800,  662,  801,  802,  803,
-          805,  806,  834,  807,  888,  808,  568,  568,  568,  568,
-          568,  568,  568,  568,  568,  568,  568,   -3,  365,  225,
-          308,  620,  275,  552,  552,  552,  552,  552,  552,  552,
-          166,  166,  166,  166,  166,  166,  166,  166,  166,  166,
-          166,  166,  166,  166,  166,  166,  166,  617,  659,  659,
-          659,  463,  887,  508,  912,  912,  912,  912,  912,  912,
-          912,  912,  912,  912,  912,  912,  912,  912,  912,  912,
-          912,  912,  912,  912,  912,  912,  912,  912,  912,  912,
-          912,  912,  912,  912,  912,  912,  912,  912,  912,  912,
-          912,  912,  912,  912,  912,  912,  912,  493,  -20,  -20,
-          477,  665,  402,  496,  210,  482,  197,   25,   25,   25,
-           25,   25,   17,   45,    5,    5,    5,    5,  335,  380,
-          380,  380,  380,  118,  118,  118,  118,  835,  819,  818,
-          814,  311,  311,  686,  686,  633,  754,  538,  538,  542,
-          542,  420,  420,  420,  420,  420,  420,  420,  420,  420,
-          420,  428,  105,  856,  130,  130,  130,  130,  435,  435,
-          435,  318,  199,  678,  918,  318,  248,  248,  248,  297,
-          297,  297,   76,  637,  398,   86,   86,   86,   86,  398,
-           86,   86,  572,  572,  572,  494,  511,  648,  325,  488,
-          490,  443,  673,  798,  677,  748,  532,  705,   96,  636,
-          704,  886,  676,  886,  591,  578,  570,  696,  355,  842,
-           -6,  187,  530,  423,  634,  715,  193,  726,  267,   38,
-          383,  534,  110,  279,  752,  723,  862,  860,  249,  669,
-          634,  634,  634,  137,  247,  751,  758,  110,  113,  515,
-          515,  515,  515,  797,  750,  515,  515,  515,  515,  796,
-          795,   67,  268,  811,   74,  733,  644,  644,  640,  640,
-          644,  644,  644,  644,  654,  651,  644,  850,  843,  843,
-          640,  641,  640,  654,  651,  852,  852,  852,  852,  640,
-          651,  640,  640,  644,  640,  843,  843,  651,  633,  843,
-          491,  651,  680,  644,  635,  635,  852,  718,  717,  640,
-          640,  624,  843,  843,  843,  624,  651,  852,  672,  702,
-          178,  843,  852,  664,  641,  664,  672,  651,  664,  641,
-          641,  664,   20,  656,  645,  851,  853,  839,  782,  626,
-          625,  847,  846,  855,  848,  845,  663,  706,  734,  735,
-          533,  638,  639,  631,  632,  697,  647,  683,  676,  707,
-          629,  629,  629,  679,  688,  679,  629,  629,  629,  629,
-          629,  629,  629,  629,  917,  692,  689,  685,  658,  749,
-          539,  716,  670,  550,  770,  613,  706,  706,  832,  874,
-          883,  898,  897,  652,  842,  876,  679,  907,  722,  430,
-          657,  841,  833,  713,  712,  679,  838,  679,  769,  679,
-          866,  831,  643,  830,  706,  828,  629,  864,  916,  915,
-          914,  913,  911,  909,  899,  906,  630,  905,  747,  650,
-          882,   47,  854,  696,  628,  708,  746,  499,  904,  827,
-          679,  679,  765,  759,  679,  763,  745,  721,  889,  744,
-          881,  903,  613,  878,  679,  675,  900,  499,  660,  642,
-          857,  653,  743,  849,  863,  781,  779,  608,  646,  826,
-          661,  742,  885,  884,  627,  741,  778,  606,  774,  667,
-          822,  773,  824,  740,  821,  793,  875,  674,  707,  703,
-          666,  671,  649,  772,  791,  877,  739,  738,  737,  789,
-          736,  788,    0,    0,    0,    0,    0,    0,    0,    0,
+            0,  221,  297,  437,  367,  305,  305,  286,  690,   -2,
+           -2,  238,   -2,   -2,   -2,  613,  756,  710,  756,  544,
+          659,  825,  825,  825,  152,  209,  611,  611,  867,  174,
+          611,  404,  364,  337,  612,  493,  439,  289,  289,  289,
+          289,  135,  135,  289,  289,  289,  289,  289,  289,  289,
+          289,  289,  289,  289,  289,  289,  289,  289,  289,  289,
+          289,  289,  289,  289,  289,  289,  289,  289,  289,  289,
+          289,  289,  289,  289,  289,  289,  289,  289,  289,  289,
+          289,  289,  289,  289,  289,  289,  289,  289,  289,  289,
+          289,  289,  289,  289,  289,  289,  289,  289,  289,  289,
+          289,  289,  289,  289,  289,  289,  289,  289,  289,  289,
+          289,  289,  289,  289,  289,  289,  289,  289,  289,  289,
+          289,  289,  289,  289,  289,  289,  289,  289,  289,  289,
+          289,  289,  289,  289,  313,  176,  461,  346,  680,  705,
+          714,  715,  865,  639,  864,  777,  778,  552,  781,  782,
+          784,  785,  788,  773,  789,  591,  790,  560,  560,  560,
+          560,  560,  560,  560,  560,  560,  560,  560,  151,  546,
+          405,  491,  275,  410,  609,  609,  609,  609,  609,  609,
+          609,  386,  386,  386,  386,  386,  386,  386,  386,  386,
+          386,  386,  386,  386,  386,  386,  386,  386,  386,  319,
+          556,  556,  556,  200,  818,  561,  911,  911,  911,  911,
+          911,  911,  911,  911,  911,  911,  911,  911,  911,  911,
+          911,  911,  911,  911,  911,  911,  911,  911,  911,  911,
+          911,  911,  911,  911,  911,  911,  911,  911,  911,  911,
+          911,  911,  911,  911,  911,  911,  911,  911,  911,  215,
+          -21,  -21,  475,  642,  329,  392,  208,  462,  199,   25,
+           25,   25,   25,   25,  147,   16,    4,    4,    4,    4,
+          981,  122,  122,  122,  122,  118,  118,  118,  118,  393,
+          331,  331,  644,  644,  617,  758,  528,  528,  523,  523,
+          107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
+          326,  627,  861,  234,  234,  234,  234,  254,  254,  254,
+          131,  427,  589,  909,  131,  123,  123,  123,  375,  375,
+          375,  173,  598,  294,  134,  134,  134,  134,  294,  134,
+          134,  555,  555,  555,  429,  489,  629,  503,  348,  481,
+          282,  641,  791,  638,  768,  520,  664,  190,  671,  670,
+          883,  636,  883,  581,  578,  558,  593,  230,  840,   -6,
+          313,  518,  361,  620,  729,  295,  706,  242,  398,  403,
+          522,  168,  324,  733,  697,  863,  816,  220,  648,  620,
+          620,  620,  335,  374,  750,  751,  168,  114,  553,  553,
+          553,  553,  766,  754,  553,  553,  553,  553,  764,  762,
+          382,  243,  810,  138,  731,  601,  601,  625,  625,  601,
+          601,  601,  601,  600,  605,  601,  828,  842,  842,  625,
+          630,  625,  600,  605,  757,  757,  757,  757,  625,  605,
+          625,  625,  601,  625,  842,  842,  605,  617,  842,   48,
+          605,  631,  601,  597,  597,  757,  653,  695,  625,  625,
+          645,  842,  842,  842,  645,  605,  757,  595,  594,   13,
+          842,  757,  633,  630,  633,  595,  605,  633,  630,  630,
+          633,    5,  643,  614,  824,  832,  830,  735,  599,  592,
+          859,  858,  833,  860,  841,  602,  678,  687,  688,  526,
+          615,  616,  619,  624,  651,  622,  647,  636,  666,  610,
+          610,  610,  649,  655,  649,  610,  610,  610,  610,  610,
+          610,  610,  610,  908,  661,  657,  646,  621,  701,  533,
+          677,  637,  425,  737,  587,  678,  678,  771,  873,  880,
+          823,  727,  623,  840,  875,  649,  898,  683,   38,  565,
+          838,  769,  667,  673,  649,  837,  649,  738,  649,  872,
+          772,  628,  826,  678,  822,  610,  871,  906,  905,  904,
+          903,  902,  899,  884,  897,  608,  896,  691,  632,  879,
+          245,  862,  593,  662,  674,  686,  820,  166,  895,  817,
+          649,  649,  739,  734,  649,  740,  684,  682,  869,  732,
+          878,  887,  587,  877,  649,  640,  815,  885,  166,  618,
+          603,  866,  634,  721,  829,  870,  831,  741,  474,  512,
+          811,  676,  807,  604,  722,  882,  881,  868,  726,  742,
+          510,  743,  596,  799,  746,  834,  728,  797,  796,  874,
+          626,  666,  650,  606,  635,  607,  749,  795,  876,  730,
+          724,  704,  793,  702,  792,    0,    0,    0,    0,    0,
             0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
             0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-            0,    0,  134,  134,  134,  134,   -2,   -2,   -2,   -2,
-            0,    0,   -2,    0,    0,    0,  134,  134,  134,  134,
-          134,  134,  134,  134,  134,  134,  134,  134,  134,  134,
-          134,  134,  134,  134,  134,  134,  134,  134,  134,  134,
-          134,  134,    0,    0,  134,  134,  134,  134,  134,  134,
-          134,  134,  134,  134,  134,  134,  134,  134,  134,  134,
-          134,  134,  134,  134,  134,  134,  134,  134,  134,  134,
-          134,  134,  134,  134,  134,  134,  134,  134,  134,  134,
-          134,  134,  134,  134,  134,  134,  134,  134,  134,  134,
-          134,  134,  134,  134,  134,  134,  134,  134,  134,  134,
-          134,  134,  134,  134,  134,  134,  134,  134,  134,  134,
-          134,  134,  134,  134,  134,  134,  134,  134,  134,  134,
-          134,  134,  134,  134,  134,  134,  134,  134,  134,  134,
-          134,  134,  134,  134,  568,  568,  568,  568,  568,  568,
-          568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
-          568,  568,  568,  568,  568,  568,  568,    0,    0,    0,
-            0,    0,    0,    0,    0,    0,    0,    0,  568,  -20,
-          -20,  -20,  -20,  568,  -20,  -20,  -20,  -20,  -20,  -20,
-          -20,  568,  568,  568,  568,  568,  568,  568,  568,  568,
-          568,  568,  568,  568,  568,  568,  568,  568,  -20,  568,
-          568,  568,  -20,  420,  -20,  420,  420,  420,  420,  420,
-          420,  420,  420,  420,  420,  420,  420,  420,  420,  420,
-          420,  420,  420,  420,  420,  420,  420,  420,  420,  420,
-          420,  420,  420,  420,  420,  420,  420,  420,  420,  420,
-          420,  420,  420,  420,  420,  420,  420,  420,  568,    0,
-            0,  568,  -20,  568,  -20,  568,  -20,  568,  568,  568,
-          568,  568,  568,  -20,  -20,  -20,  -20,  -20,  -20,    0,
-          248,  248,  248,  248,  -20,  -20,  -20,  -20,   55,   55,
-           55,   55,  420,  420,  420,  420,  420,  420,  248,  248,
-          297,  297,    0,    0,    0,    0,    0,    0,    0,    0,
-            0,    0,  420,   55,  420,  644,  644,  644,  644,  641,
-          641,  641,  644,  398,  398,  398,  644,    0,    0,    0,
-            0,    0,    0,  644,  398,    0,  420,  420,  420,  420,
-            0,  420,  420,  644,  644,  644,  641,  644,  398,  641,
-          641,  644,  843,  573,  573,  573,  573,  499,  110,    0,
-          644,  644,  641,  641,  641,    0,    0,    0,  843,    0,
-          640,    0,    0,    0,    0,  629,  430,    0,  375,    0,
-            0,    0,    0,    0,    0,  652,  375,  452,  452,    0,
-          630,  629,  629,  629,    0,    0,  652,  652,    0,    0,
-            0,    0,    0,    0,  481,  652,    0,    0,    0,    0,
-          481,  360,    0,    0,  360,    0,  499
+            0,    0,    0,    0,    0,  135,  135,  135,  135,   -2,
+           -2,   -2,   -2,    0,    0,   -2,    0,    0,    0,  135,
+          135,  135,  135,  135,  135,  135,  135,  135,  135,  135,
+          135,  135,  135,  135,  135,  135,  135,  135,  135,  135,
+          135,  135,  135,  135,  135,    0,    0,  135,  135,  135,
+          135,  135,  135,  135,  135,  135,  135,  135,  135,  135,
+          135,  135,  135,  135,  135,  135,  135,  135,  135,  135,
+          135,  135,  135,  135,  135,  135,  135,  135,  135,  135,
+          135,  135,  135,  135,  135,  135,  135,  135,  135,  135,
+          135,  135,  135,  135,  135,  135,  135,  135,  135,  135,
+          135,  135,  135,  135,  135,  135,  135,  135,  135,  135,
+          135,  135,  135,  135,  135,  135,  135,  135,  135,  135,
+          135,  135,  135,  135,  135,  135,  135,  135,  135,  135,
+          135,  135,  135,  135,  135,  135,  135,  135,  560,  560,
+          560,  560,  560,  560,  560,  560,  560,  560,  560,  560,
+          560,  560,  560,  560,  560,  560,  560,  560,  560,  560,
+          560,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+            0,    0,  560,  -21,  -21,  -21,  -21,  560,  -21,  -21,
+          -21,  -21,  -21,  -21,  -21,  560,  560,  560,  560,  560,
+          560,  560,  560,  560,  560,  560,  560,  560,  560,  560,
+          560,  560,  560,  -21,  560,  560,  560,  -21,  107,  -21,
+          107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
+          107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
+          107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
+          107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
+          107,  107,  107,  560,    0,    0,  560,  -21,  560,  -21,
+          560,  -21,  560,  560,  560,  560,  560,  560,  -21,  -21,
+          -21,  -21,  -21,  -21,    0,  123,  123,  123,  123,  -21,
+          -21,  -21,  -21,  -36,  107,  107,  107,  107,  107,  107,
+          123,  123,  375,  375,    0,    0,    0,    0,    0,    0,
+            0,    0,    0,    0,  107,  -36,  107,  601,  601,  601,
+          601,  630,  630,  630,  601,  294,  294,  294,  601,    0,
+            0,    0,    0,    0,    0,  601,  294,    0,  107,  107,
+          107,  107,    0,  107,  107,  601,  601,  601,  630,  601,
+          294,  630,  630,  601,  842,  563,  563,  563,  563,  166,
+          168,    0,  601,  601,  630,  630,  630,    0,    0,    0,
+          842,    0,  625,    0,    0,    0,    0,  610,   38,    0,
+          195,    0,    0,    0,    0,    0,    0,  623,  195,  257,
+          257,    0,  608,  610,  610,  610,    0,    0,  623,  623,
+            0,    0,    0,    0,    0,    0,  219,  623,    0,    0,
+            0,    0,  219,   68,    0,    0,   68,    0,  166
     );
 
     protected $actionDefault = array(
             3,32767,32767,32767,32767,32767,32767,32767,32767,32767,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
-        32767,32767,32767,32767,32767,32767,  530,  530,32767,32767,
-          485,32767,32767,32767,32767,32767,32767,  291,  291,  291,
-        32767,32767,32767,  518,  518,  518,  518,  518,  518,  518,
-          518,  518,  518,  518,32767,32767,32767,32767,32767,  373,
+        32767,32767,32767,32767,32767,32767,  532,  532,32767,32767,
+          487,32767,32767,32767,32767,32767,32767,  292,  292,  292,
+        32767,32767,32767,  520,  520,  520,  520,  520,  520,  520,
+          520,  520,  520,  520,32767,32767,32767,32767,32767,  375,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
@@ -579,134 +588,129 @@
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
-        32767,32767,32767,32767,32767,  379,  535,32767,32767,32767,
+        32767,32767,32767,32767,32767,32767,  381,  537,32767,32767,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
-        32767,32767,32767,32767,32767,32767,  354,  355,  357,  358,
-          290,  519,  240,  380,  534,  289,  242,  318,  489,32767,
-        32767,32767,  320,  119,  251,  196,  488,  122,  288,  227,
-          372,  374,  319,  295,  300,  301,  302,  303,  304,  305,
-          306,  307,  308,  309,  310,  311,  294,  445,  351,  350,
-          349,  447,32767,  446,  482,  482,  485,32767,32767,32767,
+        32767,32767,32767,32767,32767,32767,32767,  356,  357,  359,
+          360,  291,  521,  240,  382,  536,  290,  242,  320,  491,
+        32767,32767,32767,  322,  119,  251,  196,  490,  122,  289,
+          227,  374,  376,  321,  296,  301,  302,  303,  304,  305,
+          306,  307,  308,  309,  310,  311,  312,  313,  295,  447,
+          353,  352,  351,  449,32767,  448,  484,  484,  487,32767,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
-        32767,32767,32767,32767,32767,32767,32767,  316,  473,  472,
-          317,  443,  321,  444,  323,  448,  322,  339,  340,  337,
-          338,  341,  450,  449,  466,  467,  464,  465,  293,  342,
-          343,  344,  345,  468,  469,  470,  471,  274,  274,  274,
-          274,32767,32767,  529,  529,32767,32767,  330,  331,  457,
-          458,32767,32767,32767,32767,32767,32767,32767,32767,32767,
-        32767,32767,  275,32767,  231,  231,  231,  231,32767,32767,
-        32767,  231,32767,32767,32767,32767,  325,  326,  324,  452,
-          453,  451,32767,  419,32767,32767,32767,32767,32767,  421,
+        32767,32767,32767,32767,32767,32767,32767,32767,32767,  318,
+          475,  474,  319,  445,  323,  446,  325,  450,  324,  341,
+          342,  339,  340,  343,  452,  451,  468,  469,  466,  467,
+          294,  344,  345,  346,  347,  470,  471,  472,  473,  275,
+        32767,32767,  531,  531,32767,32767,  332,  333,  459,  460,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
-        32767,  490,32767,32767,32767,32767,32767,  503,  408,32767,
-        32767,32767,  401,32767,  215,  217,  164,  476,32767,32767,
-        32767,32767,32767,  508,  335,32767,32767,32767,32767,32767,
-          544,32767,  503,32767,32767,32767,32767,32767,32767,  348,
-          327,  328,  329,32767,32767,32767,32767,  507,  501,  460,
-          461,  462,  463,32767,32767,  454,  455,  456,  459,32767,
+        32767,  276,32767,  231,  231,  231,  231,32767,32767,32767,
+          231,32767,32767,32767,32767,  327,  328,  326,  454,  455,
+          453,32767,  421,32767,32767,32767,32767,32767,  423,32767,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
-        32767,32767,32767,32767,32767,  168,32767,  416,  422,  422,
-        32767,32767,32767,32767,  168,32767,32767,32767,32767,32767,
-          168,32767,32767,32767,32767,  506,  505,  168,32767,  402,
-          484,  168,  181,32767,  179,  179,32767,  201,  201,32767,
-        32767,  183,  477,  496,32767,  183,  168,32767,  390,  170,
-          484,32767,32767,  233,32767,  233,  390,  168,  233,32767,
-        32767,  233,32767,   84,  426,32767,32767,32767,32767,32767,
-        32767,32767,32767,32767,32767,32767,32767,  403,32767,32767,
-        32767,  369,  370,  479,  492,32767,  493,32767,  401,32767,
-          333,  334,  336,  313,32767,  315,  359,  360,  361,  362,
-          363,  364,  365,  367,32767,  406,32767,  409,32767,32767,
-        32767,   86,  111,  250,32767,  542,   86,  404,32767,32767,
-          298,  542,32767,32767,32767,32767,  537,32767,32767,  292,
-        32767,32767,32767,   86,   86,  246,32767,  166,32767,  527,
-        32767,  543,32767,  501,  405,32767,  332,32767,32767,32767,
-        32767,32767,32767,32767,32767,32767,  502,32767,32767,32767,
-        32767,  222,32767,  439,32767,   86,32767,  182,32767,32767,
-          296,  241,32767,32767,  536,32767,32767,32767,32767,32767,
-        32767,32767,32767,32767,  167,32767,32767,  184,32767,32767,
-          501,32767,32767,32767,32767,32767,32767,32767,  287,32767,
-        32767,32767,32767,32767,  501,32767,32767,  226,32767,32767,
-        32767,32767,32767,32767,32767,32767,32767,   84,   60,32767,
-          268,32767,32767,32767,32767,32767,32767,32767,32767,32767,
-        32767,32767,  124,  124,    3,  124,  124,    3,  124,  124,
-          124,  124,  124,  124,  124,  124,  124,  124,  124,  209,
-          253,  212,  201,  201,  161,  253,  253,  253,  124,  124,
-          260
+          492,32767,32767,32767,32767,32767,  505,  410,32767,32767,
+        32767,  403,32767,  215,  217,  164,  478,32767,32767,32767,
+        32767,32767,  510,  337,32767,32767,32767,32767,32767,  546,
+        32767,  505,32767,32767,32767,32767,32767,32767,  350,  329,
+          330,  331,32767,32767,32767,32767,  509,  503,  462,  463,
+          464,  465,32767,32767,  456,  457,  458,  461,32767,32767,
+        32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
+        32767,32767,32767,32767,  168,32767,  418,  424,  424,32767,
+        32767,32767,32767,  168,32767,32767,32767,32767,32767,  168,
+        32767,32767,32767,32767,  508,  507,  168,32767,  404,  486,
+          168,  181,32767,  179,  179,32767,  201,  201,32767,32767,
+          183,  479,  498,32767,  183,  168,32767,  392,  170,  486,
+        32767,32767,  233,32767,  233,  392,  168,  233,32767,32767,
+          233,32767,   84,  428,32767,32767,32767,32767,32767,32767,
+        32767,32767,32767,32767,32767,32767,  405,32767,32767,32767,
+          371,  372,  481,  494,32767,  495,32767,  403,32767,  335,
+          336,  338,  315,32767,  317,  361,  362,  363,  364,  365,
+          366,  367,  369,32767,  408,32767,  411,32767,32767,32767,
+           86,  111,  250,32767,  544,   86,  406,32767,32767,  299,
+          544,32767,32767,32767,32767,  539,32767,32767,  293,32767,
+        32767,32767,   86,   86,  246,32767,  166,32767,  529,32767,
+          545,32767,  503,  407,32767,  334,32767,32767,32767,32767,
+        32767,32767,32767,32767,32767,  504,32767,32767,32767,32767,
+          222,32767,  441,32767,   86,32767,32767,  182,32767,32767,
+          297,  241,32767,32767,  538,32767,32767,32767,32767,32767,
+        32767,32767,32767,32767,  167,32767,32767,32767,  184,32767,
+        32767,  503,32767,32767,32767,32767,32767,32767,32767,  288,
+        32767,32767,32767,32767,32767,32767,32767,  503,32767,32767,
+          226,32767,32767,32767,32767,32767,32767,32767,32767,32767,
+           84,   60,32767,  269,32767,32767,32767,32767,32767,32767,
+        32767,32767,32767,32767,32767,  124,  124,    3,  124,  124,
+          253,    3,  253,  124,  253,  253,  124,  124,  124,  124,
+          124,  124,  124,  124,  124,  124,  209,  212,  201,  201,
+          161,  124,  124,  261
     );
 
     protected $goto = array(
-          162,  162,  136,  136,  141,  144,  136,  137,  138,  139,
-          146,  183,  164,  160,  160,  160,  160,  141,  141,  161,
-          161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-          156,  157,  158,  159,  180,  135,  181,  500,  501,  364,
-          502,  506,  507,  508,  509,  510,  511,  512,  513,  970,
-          140,  142,  143,  145,  167,  172,  182,  198,  247,  250,
-          252,  254,  256,  257,  258,  259,  260,  261,  269,  270,
-          271,  272,  287,  288,  316,  317,  318,  380,  381,  382,
-          556,  184,  185,  186,  187,  188,  189,  190,  191,  192,
-          193,  194,  195,  196,  147,  148,  149,  163,  150,  165,
-          151,  199,  166,  152,  153,  154,  200,  155,  133,  629,
-          574,  761,  574,  574,  574,  574,  574,  574,  574,  574,
-          574,  574,  574,  574,  574,  574,  574,  574,  574,  574,
-          574,  574,  574,  574,  574,  574,  574,  574,  574,  574,
-          574,  574,  574,  574,  574,  574,  574,  574,  574,  574,
-          574,  574,  574,  574,  574, 1108,  637, 1108, 1108, 1108,
-         1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108,
-         1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108,
-         1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108,
-         1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108,
-          343,  791,  504,  504,  504,  504,  504,  504,  517,  515,
-          517,  515,  504,  504,  504,  504,  504,  504,  504,  504,
-          504,  504,  516,  557,  516,    8,  760,  529,  892,  892,
-         1199, 1199,  754,  856,  856,  856,  856,  170,  851,  857,
-          529,  529,  173,  174,  175,  389,  390,  391,  392,  169,
-          197,  201,  203,  251,  253,  255,  262,  263,  264,  265,
-          266,  267,  273,  274,  275,  276,  289,  290,  319,  320,
-          321,  395,  396,  397,  398,  171,  176,  248,  249,  177,
-          178,  179,  388,  614,  549,  549,  580,  545,  590,  593,
-          635,  822,  547,  547,  503,  505,  536,  553,  581,  584,
-          594,  600,  530, 1177,  573, 1177,  573,  573,  573,  573,
+          163,  163,  137,  137,  142,  145,  137,  138,  139,  140,
+          147,  184,  165,  161,  161,  161,  161,  142,  142,  162,
+          162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+          157,  158,  159,  160,  181,  136,  182,  499,  500,  363,
+          501,  505,  506,  507,  508,  509,  510,  511,  512,  974,
+          141,  143,  144,  146,  168,  173,  183,  200,  249,  252,
+          254,  256,  258,  259,  260,  261,  262,  263,  271,  272,
+          273,  274,  286,  287,  315,  316,  317,  379,  380,  381,
+          555,  185,  186,  187,  188,  189,  190,  191,  192,  193,
+          194,  195,  196,  197,  198,  148,  149,  150,  164,  151,
+          166,  152,  201,  167,  153,  154,  155,  202,  156,  134,
+          632,  573,  794,  573,  573,  573,  573,  573,  573,  573,
           573,  573,  573,  573,  573,  573,  573,  573,  573,  573,
           573,  573,  573,  573,  573,  573,  573,  573,  573,  573,
           573,  573,  573,  573,  573,  573,  573,  573,  573,  573,
-          573,  573,  573,  573,  573,  573,  573,  573,  573,  618,
-          521,  555,  621,  862,  579,  362,  597,  346,  405,  910,
-          526,  526,  526,  550,  526,  558,  559,  560,  561,  562,
-          563,  564,  565,  567,  596,  587,  612,  544,  526,  278,
-          279,  280, 1203,  439,  439,  439,  439,  439,  439, 1084,
-         1083,  784,  604,  439,  439,  439,  439,  439,  439,  439,
-          439,  439,  439, 1073,  365, 1073,  899,  899,  899,  899,
-         1210, 1210, 1157,  899,  344,  345,  613,  899,  784,  784,
-         1196,  329,  314,    3,    4,  377, 1210, 1073, 1073, 1073,
-         1073, 1017, 1073, 1073,  526,  526, 1209, 1209,  543,  575,
-          526,  526,  470,  896,  526,  905, 1169,  370,  370,  370,
-          399,  349, 1209, 1191, 1191, 1191,  780,  371,  370,  370,
-         1212,  527, 1066,  375,  370,  778,  914,  403,  372,  372,
-          372,  554,  370, 1224, 1059,  777,  777,  759,  788,  785,
-          785,  785,  787,  919,  956,  776,  916,  523,  916,  866,
-          878,  860,  858,  860,  659,  372,  518,  887,  882,  387,
-          542,  668,  661,  569,  541,  601,  889,  619,  620,  885,
-          624,  625,  632,  634,  639,  641,  948,  452,  454,  940,
-          640,  455,  468, 1089, 1109,  622,  938, 1064, 1176,  585,
-         1176, 1027,   19,   15,  358, 1193, 1193, 1193,  359, 1154,
-         1069, 1070,    0,    0, 1066,  534,  968,    0,    0,  546,
-            0,    0,  568,  520,  540,    0,  523, 1067, 1168, 1067,
-            0,    0, 1175,   23,  459,  520, 1068,  540,  610,    0,
-            0,    0,    0,    0,  519,   13,  524,  442,    0,  444,
+          573,  573,  573,  573,  573,  573, 1113,  342, 1113, 1113,
+         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
+         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
+         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
+         1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
+         1113,  503,  503,  503,  503,  503,  503,  514,  640,  514,
+          764,  503,  503,  503,  503,  503,  503,  503,  503,  503,
+          503,  515,  763,  515,  895,  895, 1204, 1204,  529,  587,
+          615,  859,  859,  859,  859,  171,  854,  860, 1089, 1088,
+          174,  175,  176,  388,  389,  390,  391,  170,  199,  203,
+          205,  253,  255,  257,  264,  265,  266,  267,  268,  269,
+          275,  276,  277,  278,  288,  289,  318,  319,  320,  394,
+          395,  396,  397,  172,  177,  250,  251,  178,  179,  180,
+          757,  387,  617,  548,  548,  580,  544, 1215, 1215,  328,
+          313,  546,  546,  502,  504,  535,  552,  581,  584,  594,
+          601,  825,  621, 1215,  516,  624,  516,  572,  361,  572,
+          572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
+          572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
+          572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
+          572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
+          572,  572,  557,  558,  559,  560,  561,  562,  563,  564,
+          566,  597,  520,  556,    3,    4,  596,  528,  611,  612,
+          951,  554,  525,  525,  525,  579,  525,  865,  343,  344,
+          528,  528,  549,  438,  438,  438,  438,  438,  438,  543,
+          525,  913,  952,  438,  438,  438,  438,  438,  438,  438,
+          438,  438,  438, 1078, 1208, 1078,  902,  902,  902,  902,
+          590,  593,  638,  902,  598,  345,  404,  902, 1182,  364,
+         1182,  605,  616,  369,  369,  369, 1162, 1078, 1078, 1078,
+         1078,  787, 1078, 1078,  369,  369, 1181, 1201, 1181, 1174,
+          369,  376,  469, 1198, 1198, 1198,  525,  525,  369, 1229,
+          542,  574,  525,  525, 1022, 1071,  525,  899,  787,  787,
+          908,  348,  919,  522,  919,  398,  370,  783,  374,  917,
+         1180,  972,  781,  526,  541,  671,  667,  568,  402, 1064,
+          922,  602,  762,  553,  892,  622,  623,  888,  627,  628,
+          635,  637,  642,  644,  791,  881,  863,  861,  863,  666,
+         1094,  517,  890,  885, 1196, 1196, 1196,  869, 1032,   19,
+           15,  357,  960,  454, 1159,  780,  780,  358, 1069,  788,
+          788,  788,  790,  467,  533,  779,    0,  585,  545,  567,
+            0,    0,  522, 1074, 1075,    0,    0, 1071,    0,    0,
+           23, 1214, 1214,  458,    0,  613,  371,  371,  371,    0,
+         1072, 1173, 1072,    0,   13,  540,    0, 1214,    0, 1073,
+          451,  453,  944,  643,    0, 1217,    0, 1114,  625,  942,
+            0,    0,    0,  371,    0,  620,    0,  386,    0,    0,
+         1070,  629,    0,    0,    0,    0,    0,    0,    0,    0,
             0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-            0,    0,    0,    0,  783, 1217,    0,    0,    0,  617,
-            0,    0,    0,    0, 1065,  626,    0,    0,    0,    0,
-            0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-            0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-            0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-            0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-            0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-            0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-            0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-            0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-            0,    0,    0,    0,    0,    0,    0,    0,    0,  535
+            0,    0,    0,    0,  519,  539,    0,    0,    0,    0,
+            0,    0,    0,    0,    0,    0,  519,    0,  539,    0,
+            0,    0,    0,    0,  534,  518,    0,  523,  441,    0,
+          443,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+            0,    0,    0,    0,    0,  786, 1222
     );
 
     protected $gotoCheck = array(
@@ -720,102 +724,97 @@
            42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
            42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
            42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
-           42,   42,   42,   42,   42,   42,   42,   42,   42,   56,
-           66,   15,   66,   66,   66,   66,   66,   66,   66,   66,
+           42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
+           56,   66,   28,   66,   66,   66,   66,   66,   66,   66,
            66,   66,   66,   66,   66,   66,   66,   66,   66,   66,
            66,   66,   66,   66,   66,   66,   66,   66,   66,   66,
            66,   66,   66,   66,   66,   66,   66,   66,   66,   66,
-           66,   66,   66,   66,   66,  123,    8,  123,  123,  123,
-          123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
-          123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
-          123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
-          123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
-           69,   28,  114,  114,  114,  114,  114,  114,  119,   66,
-          119,   66,  114,  114,  114,  114,  114,  114,  114,  114,
-          114,  114,  114,   46,  114,   94,   14,   46,   74,   74,
-           74,   74,    5,   66,   66,   66,   66,   26,   66,   66,
-           46,   46,   26,   26,   26,   26,   26,   26,   26,   26,
+           66,   66,   66,   66,   66,   66,  124,   69,  124,  124,
+          124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
+          124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
+          124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
+          124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
+          124,  115,  115,  115,  115,  115,  115,   66,    8,   66,
+           15,  115,  115,  115,  115,  115,  115,  115,  115,  115,
+          115,  115,   14,  115,   74,   74,   74,   74,   99,   39,
+           39,   66,   66,   66,   66,   26,   66,   66,  122,  122,
            26,   26,   26,   26,   26,   26,   26,   26,   26,   26,
            26,   26,   26,   26,   26,   26,   26,   26,   26,   26,
            26,   26,   26,   26,   26,   26,   26,   26,   26,   26,
-           26,   26,   50,   50,   50,   50,   50,   50,   59,   59,
-           59,   49,   50,   50,   50,   50,   50,   50,   50,   50,
-           50,   50,   98,  115,   56,  115,   56,   56,   56,   56,
+           26,   26,   26,   26,   26,   26,   26,   26,   26,   26,
+            5,   50,   50,   50,   50,   50,   50,  140,  140,  123,
+          123,   50,   50,   50,   50,   50,   50,   50,   50,   50,
+           50,   49,   60,  140,  120,   60,  120,   56,   60,   56,
            56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
            56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
            56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
-           56,   56,   56,   56,   56,   56,   56,   56,   56,   60,
-           10,    2,   60,   32,    2,   60,   67,   67,   67,   81,
-           10,   10,   10,  106,   10,  107,  107,  107,  107,  107,
-          107,  107,  107,  107,  107,   39,   39,   10,   10,   64,
-           64,   64,  137,   56,   56,   56,   56,   56,   56,  121,
-          121,   22,  124,   56,   56,   56,   56,   56,   56,   56,
-           56,   56,   56,   56,   45,   56,   56,   56,   56,   56,
-          139,  139,  128,   56,   69,   69,   48,   56,   22,   22,
-          135,  122,  122,   29,   29,   47,  139,   56,   56,   56,
-           56,   99,   56,   56,   10,   10,  138,  138,   10,   10,
-           10,   10,   56,   76,   10,   78,   79,   12,   12,   12,
-           21,   17,  138,    8,    8,    8,   24,   11,   12,   12,
-          138,   10,   79,   16,   12,   23,   82,   20,  120,  120,
-          120,   10,   12,   12,  110,   22,   22,   13,   25,   22,
-           22,   22,   22,   83,   96,   22,   12,   12,   12,   68,
-           13,   13,   13,   13,   13,  120,   13,   13,   13,  120,
-           31,   71,   31,   31,    8,   31,   31,   31,   31,   31,
-           31,   31,   31,   31,   31,   31,   94,    7,    7,    7,
-            7,   62,  105,   33,    7,    7,    7,  112,  116,   63,
-          116,   33,   33,   33,   33,  116,  116,  116,   57,  127,
-           79,   79,   -1,   -1,   79,   57,   98,   -1,   -1,   57,
-           -1,   -1,   33,    8,    8,   -1,   12,   79,   79,   79,
-           -1,   -1,  116,   33,   57,    8,   79,    8,   33,   -1,
-           -1,   -1,   -1,   -1,    8,   57,    8,    8,   -1,    8,
+           56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
+           56,   56,  108,  108,  108,  108,  108,  108,  108,  108,
+          108,  108,   10,   46,   29,   29,   64,   46,   64,   64,
+           95,    2,   10,   10,   10,    2,   10,   32,   69,   69,
+           46,   46,  107,   56,   56,   56,   56,   56,   56,   10,
+           10,   81,   95,   56,   56,   56,   56,   56,   56,   56,
+           56,   56,   56,   56,  138,   56,   56,   56,   56,   56,
+           59,   59,   59,   56,   67,   67,   67,   56,  116,   45,
+          116,  125,   48,   12,   12,   12,  129,   56,   56,   56,
+           56,   22,   56,   56,   12,   12,  117,  136,  117,   79,
+           12,   47,   56,  117,  117,  117,   10,   10,   12,   12,
+           10,   10,   10,   10,  100,   79,   10,   76,   22,   22,
+           78,   17,   12,   12,   12,   21,   11,   24,   16,   82,
+          117,   99,   23,   10,   31,   71,   31,   31,   20,  111,
+           83,   31,   13,   10,   31,   31,   31,   31,   31,   31,
+           31,   31,   31,   31,   25,   13,   13,   13,   13,   13,
+           33,   13,   13,   13,    8,    8,    8,   68,   33,   33,
+           33,   33,   97,   62,  128,   22,   22,   57,  113,   22,
+           22,   22,   22,  106,   57,   22,   -1,   63,   57,   33,
+           -1,   -1,   12,   79,   79,   -1,   -1,   79,   -1,   -1,
+           33,  139,  139,   57,   -1,   33,  121,  121,  121,   -1,
+           79,   79,   79,   -1,   57,    8,   -1,  139,   -1,   79,
+            7,    7,    7,    7,   -1,  139,   -1,    7,    7,    7,
+           -1,   -1,   -1,  121,   -1,   12,   -1,  121,   -1,   -1,
+           12,   12,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
            -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-           -1,   -1,   -1,   -1,    8,    8,   -1,   -1,   -1,   12,
-           -1,   -1,   -1,   -1,   12,   12,   -1,   -1,   -1,   -1,
-           -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-           -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-           -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-           -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-           -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-           -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-           -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-           -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-           -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   98
+           -1,   -1,   -1,   -1,    8,    8,   -1,   -1,   -1,   -1,
+           -1,   -1,   -1,   -1,   -1,   -1,    8,   -1,    8,   -1,
+           -1,   -1,   -1,   -1,   99,    8,   -1,    8,    8,   -1,
+            8,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+           -1,   -1,   -1,   -1,   -1,    8,    8
     );
 
     protected $gotoBase = array(
-            0,    0, -293,    0,    0,  221,    0,  512,  145,    0,
-           28,  121,  135,  475,  224,  109,  114,  129,    0,    0,
-           60,  117,   69,  115,  122,   58,   35,    0,  191, -245,
-            0, -143,  333,  106,    0,    0,    0,    0,    0,  337,
-            0,    0,  -24,    0,    0,  364,  199,  133,  134,  273,
-            1,    0,    0,    0,    0,    0,  102,  108,    0,  -17,
-         -116,    0,   76,   74, -286,    0,  -92,   30,   67, -248,
-            0,  140,    0,    0,  -53,    0,  132,    0,  130,  105,
-            0,  334,  113,   62,    0,    0,    0,    0,    0,    0,
-            0,    0,    0,    0,  214,    0,   61,    0,  261,  128,
-            0,    0,    0,    0,    0,   56,  336,  321,    0,    0,
-           55,    0,  103,    0,  -79,    2,  227,    0,    0,  -93,
-          160,   80,   98,  -47,  187,    0,    0,   79,  206,    0,
-            0,    0,    0,    0,    0,  136,    0,  352,  123,   97,
-            0,    0
+            0,    0, -276,    0,    0,  269,    0,  555,  197,    0,
+           41,  131,  112,  480,  220,  208,  120,  140,    0,    0,
+           72,  133,  110,  123,  134,   75,   31,    0,  102, -307,
+            0, -172,  357,   84,    0,    0,    0,    0,    0,  191,
+            0,    0,  -24,    0,    0,  379,  339,  150,  141,  283,
+            1,    0,    0,    0,    0,    0,  103,   88,    0,  106,
+         -162,    0,   69,   73, -286,    0,  -93,   89,   86, -290,
+            0,  115,    0,    0,  -56,    0,  147,    0,  146,   99,
+            0,  366,  117,   60,    0,    0,    0,    0,    0,    0,
+            0,    0,    0,    0,    0,   91,    0,   90,    0,  187,
+          152,    0,    0,    0,    0,    0,   58,  355,  308,    0,
+            0,   61,    0,   95,    0,  -79,  118,  136,    0,    0,
+            4,  239,  -70,  -33,  -48,  214,    0,    0,   55,  218,
+            0,    0,    0,    0,    0,    0,  154,    0,  374,  229,
+          -25,    0,    0
     );
 
     protected $gotoDefault = array(
-        -32768,  472,  672,    2,  673,  744,  752,  607,  486,  638,
-          487,  522, 1187,  797,  798,  799,  367,  413,  488,  366,
-          400,  393,  786,  779,  781,  789,  168,  401,  792,    1,
-          794,  528,  830, 1018,  354,  802,  355,  599,  804,  538,
-          806,  807,  134,  368,  369,  539,  489,  376,  588,  821,
-          268,  373,  823,  356,  824,  833,  357,  469,  464,  570,
-          616,  434,  451,  582,  277,  548, 1081,  577,  865,  342,
-          873,  669,  881,  884,  490,  571,  895,  456,  903, 1094,
-          383,  909,  915,  920,  923,  414,  402,  595,  927,  928,
-            7,  932,  630,  631,  947,  302,  955,  608,  969,  419,
-         1037, 1039,  491,  492,  532,  463,  514,  537,  493, 1060,
-          445,  404, 1063,  494,  495,  435,  436, 1078,  348, 1162,
-          347,  453,  313, 1149,  591, 1113,  460, 1202, 1158,  341,
-          496,  497,  363, 1181,  378, 1197,  440, 1204, 1211,  337,
-          552,  578
+        -32768,  471,  675,    2,  676,  747,  755,  608,  485,  641,
+          486,  521, 1192,  800,  801,  802,  366,  412,  487,  365,
+          399,  392,  789,  782,  784,  792,  169,  400,  795,    1,
+          797,  527,  833, 1023,  353,  805,  354,  600,  807,  537,
+          809,  810,  135,  367,  368,  538,  488,  375,  588,  824,
+          270,  372,  826,  355,  827,  836,  356,  468,  463,  569,
+          619,  433,  450,  582,  576,  547, 1086,  577,  868,  341,
+          876,  672,  884,  887,  489,  570,  898,  455,  906, 1099,
+          382,  912,  918,  923,  279,  926,  413,  401,  595,  931,
+          932,    7,  936,  633,  634,    8,  301,  959,  609,  973,
+          418, 1042, 1044,  490,  491,  531,  462,  513,  536,  492,
+         1065,  444,  403, 1068,  493,  494,  434,  435, 1083,  347,
+         1167,  346,  452,  312, 1154,  591, 1118,  459, 1207, 1163,
+          340,  495,  496,  362, 1186,  377, 1202,  439, 1209, 1216,
+          336,  551,  578
     );
 
     protected $ruleToNonTerminal = array(
@@ -844,11 +843,11 @@
            48,   48,   59,   59,   75,   75,   76,   76,   78,   78,
            78,   77,   77,   60,   60,   79,   79,   79,   80,   80,
            81,   81,   81,   43,   43,   82,   82,   82,   44,   44,
-           83,   83,   64,   64,   84,   84,   84,   84,   89,   89,
-           90,   90,   91,   91,   91,   91,   91,   92,   93,   93,
-           88,   88,   85,   85,   87,   87,   95,   95,   94,   94,
-           94,   94,   94,   94,   86,   86,   97,   96,   96,   45,
-           45,   39,   39,   42,   42,   42,   42,   42,   42,   42,
+           83,   83,   84,   84,   64,   85,   85,   85,   85,   90,
+           90,   91,   91,   92,   92,   92,   92,   92,   93,   94,
+           94,   89,   89,   86,   86,   88,   88,   96,   96,   95,
+           95,   95,   95,   95,   95,   87,   87,   98,   97,   97,
+           45,   45,   39,   39,   42,   42,   42,   42,   42,   42,
            42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
            42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
            42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
@@ -856,25 +855,25 @@
            42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
            42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
            42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
-           42,   42,   42,   42,   42,   42,   42,   33,   33,   46,
-           46,  102,  102,  103,  103,  103,  103,  109,   98,   98,
-          105,  105,  111,  111,  112,  113,  113,  113,  113,  113,
-          113,   66,   66,   56,   56,   56,   99,   99,  117,  117,
-          114,  114,  118,  118,  118,  118,  100,  100,  100,  104,
-          104,  104,  110,  110,  123,  123,  123,  123,  123,  123,
-          123,  123,  123,  123,  123,  123,  123,   26,   26,   26,
-           26,   26,   26,  125,  125,  125,  125,  125,  125,  125,
-          125,  125,  125,  125,  125,  125,  125,  125,  125,  125,
-          125,  125,  125,  125,  125,  125,  125,  125,  125,  125,
-          125,  125,  125,  125,  125,  125,  108,  108,  101,  101,
-          101,  101,  124,  124,  127,  127,  126,  126,  128,  128,
-           50,   50,   50,   50,  130,  130,  129,  129,  129,  129,
-          129,  131,  131,  116,  116,  119,  119,  115,  115,  133,
-          132,  132,  132,  132,  120,  120,  120,  120,  107,  107,
-          121,  121,  121,  121,   74,  134,  134,  135,  135,  135,
-          106,  106,  136,  136,  137,  137,  137,  137,  122,  122,
-          122,  122,  139,  140,  138,  138,  138,  138,  138,  138,
-          138,  141,  141,  141
+           42,   42,   42,   42,   42,   42,   42,   42,   42,   33,
+           33,   46,   46,  103,  103,  104,  104,  104,  104,  110,
+           99,   99,  106,  106,  112,  112,  113,  114,  114,  114,
+          114,  114,  114,   66,   66,   56,   56,   56,  100,  100,
+          118,  118,  115,  115,  119,  119,  119,  119,  101,  101,
+          101,  105,  105,  105,  111,  111,  124,  124,  124,  124,
+          124,  124,  124,  124,  124,  124,  124,  124,  124,   26,
+           26,   26,   26,   26,   26,  126,  126,  126,  126,  126,
+          126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
+          126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
+          126,  126,  126,  126,  126,  126,  126,  126,  109,  109,
+          102,  102,  102,  102,  125,  125,  128,  128,  127,  127,
+          129,  129,   50,   50,   50,   50,  131,  131,  130,  130,
+          130,  130,  130,  132,  132,  117,  117,  120,  120,  116,
+          116,  134,  133,  133,  133,  133,  121,  121,  121,  121,
+          108,  108,  122,  122,  122,  122,   74,  135,  135,  136,
+          136,  136,  107,  107,  137,  137,  138,  138,  138,  138,
+          123,  123,  123,  123,  140,  141,  139,  139,  139,  139,
+          139,  139,  139,  142,  142,  142
     );
 
     protected $ruleToLength = array(
@@ -903,37 +902,37 @@
             2,    1,    1,    0,    1,    3,    4,    6,    1,    1,
             1,    0,    1,    0,    2,    2,    3,    3,    1,    3,
             1,    2,    2,    3,    1,    1,    2,    4,    3,    1,
-            1,    3,    2,    0,    3,    3,    9,    3,    1,    3,
-            0,    2,    4,    5,    4,    4,    4,    3,    1,    1,
-            1,    3,    1,    1,    0,    1,    1,    2,    1,    1,
-            1,    1,    1,    1,    1,    3,    1,    1,    3,    3,
-            1,    0,    1,    1,    3,    3,    4,    4,    1,    2,
+            1,    3,    2,    0,    1,    3,    3,    9,    3,    1,
+            3,    0,    2,    4,    5,    4,    4,    4,    3,    1,
+            1,    1,    3,    1,    1,    0,    1,    1,    2,    1,
+            1,    1,    1,    1,    1,    1,    3,    1,    1,    3,
+            3,    1,    0,    1,    1,    3,    3,    4,    4,    1,
+            2,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+            3,    3,    3,    3,    2,    2,    2,    2,    3,    3,
+            3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+            3,    3,    3,    3,    3,    2,    2,    2,    2,    3,
+            3,    3,    3,    3,    3,    3,    3,    3,    3,    1,
+            3,    5,    4,    3,    4,    4,    2,    2,    2,    2,
+            2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
+            1,    1,    1,    3,    2,    1,    2,   10,   11,    3,
+            3,    2,    4,    4,    3,    4,    4,    4,    4,    7,
+            3,    2,    0,    4,    1,    3,    2,    2,    4,    6,
+            2,    2,    4,    1,    1,    1,    2,    3,    1,    1,
+            1,    1,    1,    1,    3,    3,    4,    4,    0,    2,
+            1,    0,    1,    1,    0,    1,    1,    1,    1,    1,
+            1,    1,    1,    1,    1,    1,    1,    3,    2,    1,
+            3,    1,    4,    3,    1,    3,    3,    3,    3,    3,
             3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
             3,    3,    2,    2,    2,    2,    3,    3,    3,    3,
-            3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-            3,    3,    3,    2,    2,    2,    2,    3,    3,    3,
-            3,    3,    3,    3,    3,    3,    3,    1,    3,    5,
-            4,    3,    4,    4,    2,    2,    2,    2,    2,    2,
-            2,    2,    2,    2,    2,    2,    2,    2,    1,    1,
-            1,    3,    2,    1,    2,   10,   11,    3,    3,    2,
-            4,    4,    3,    4,    4,    4,    4,    7,    3,    2,
-            0,    4,    1,    3,    2,    2,    4,    6,    2,    2,
-            4,    1,    1,    1,    2,    3,    1,    1,    1,    1,
-            1,    1,    3,    3,    4,    4,    0,    2,    1,    0,
-            1,    1,    0,    1,    1,    1,    1,    1,    1,    1,
-            1,    1,    1,    1,    1,    3,    2,    1,    3,    1,
-            4,    3,    1,    3,    3,    3,    3,    3,    3,    3,
-            3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-            2,    2,    2,    2,    3,    3,    3,    3,    3,    3,
-            3,    3,    5,    4,    4,    3,    1,    3,    1,    1,
-            3,    3,    0,    2,    0,    1,    3,    1,    3,    1,
-            1,    1,    1,    1,    6,    4,    3,    4,    2,    4,
-            4,    1,    3,    1,    2,    1,    1,    4,    1,    1,
-            3,    6,    4,    4,    4,    4,    1,    4,    0,    1,
-            1,    3,    1,    1,    4,    3,    1,    1,    1,    0,
-            0,    2,    3,    1,    3,    1,    4,    2,    2,    2,
-            1,    2,    1,    1,    1,    4,    3,    3,    3,    6,
-            3,    1,    1,    1
+            3,    3,    3,    3,    5,    4,    4,    3,    1,    3,
+            1,    1,    3,    3,    0,    2,    0,    1,    3,    1,
+            3,    1,    1,    1,    1,    1,    6,    4,    3,    4,
+            2,    4,    4,    1,    3,    1,    2,    1,    1,    4,
+            1,    1,    3,    6,    4,    4,    4,    4,    1,    4,
+            0,    1,    1,    3,    1,    1,    4,    3,    1,    1,
+            1,    0,    0,    2,    3,    1,    3,    1,    4,    2,
+            2,    2,    1,    2,    1,    1,    1,    4,    3,    3,
+            3,    6,    3,    1,    1,    1
     );
 
     protected function initReduceCallbacks() {
@@ -1713,480 +1712,483 @@
                  $this->semValue = new Stmt\StaticVar($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             252 => function ($stackPos) {
-                 $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 if ($this->semStack[$stackPos-(2-2)] !== null) { $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; }
             },
             253 => function ($stackPos) {
                  $this->semValue = array();
             },
             254 => function ($stackPos) {
+                 $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($startAttributes + $this->endAttributes); } else { $nop = null; };
+            if ($nop !== null) { $this->semStack[$stackPos-(1-1)][] = $nop; } $this->semValue = $this->semStack[$stackPos-(1-1)];
+            },
+            255 => function ($stackPos) {
                  $this->semValue = new Stmt\Property($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); $this->checkProperty($this->semValue, $stackPos-(3-1));
             },
-            255 => function ($stackPos) {
+            256 => function ($stackPos) {
                  $this->semValue = new Stmt\ClassConst($this->semStack[$stackPos-(3-2)], 0, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            256 => function ($stackPos) {
+            257 => function ($stackPos) {
                  $this->semValue = new Stmt\ClassMethod($this->semStack[$stackPos-(9-4)], ['type' => $this->semStack[$stackPos-(9-1)], 'byRef' => $this->semStack[$stackPos-(9-3)], 'params' => $this->semStack[$stackPos-(9-6)], 'returnType' => $this->semStack[$stackPos-(9-8)], 'stmts' => $this->semStack[$stackPos-(9-9)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
             $this->checkClassMethod($this->semValue, $stackPos-(9-1));
             },
-            257 => function ($stackPos) {
+            258 => function ($stackPos) {
                  $this->semValue = new Stmt\TraitUse($this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            258 => function ($stackPos) {
+            259 => function ($stackPos) {
                  $this->semValue = array();
             },
-            259 => function ($stackPos) {
+            260 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(3-2)];
             },
-            260 => function ($stackPos) {
+            261 => function ($stackPos) {
                  $this->semValue = array();
             },
-            261 => function ($stackPos) {
+            262 => function ($stackPos) {
                  $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
-            262 => function ($stackPos) {
+            263 => function ($stackPos) {
                  $this->semValue = new Stmt\TraitUseAdaptation\Precedence($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
-            263 => function ($stackPos) {
+            264 => function ($stackPos) {
                  $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(5-1)][0], $this->semStack[$stackPos-(5-1)][1], $this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-4)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
             },
-            264 => function ($stackPos) {
+            265 => function ($stackPos) {
                  $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], $this->semStack[$stackPos-(4-3)], null, $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
-            265 => function ($stackPos) {
-                 $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], null, $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
-            },
             266 => function ($stackPos) {
                  $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], null, $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             267 => function ($stackPos) {
+                 $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], null, $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+            },
+            268 => function ($stackPos) {
                  $this->semValue = array($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)]);
             },
-            268 => function ($stackPos) {
+            269 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
-            269 => function ($stackPos) {
+            270 => function ($stackPos) {
                  $this->semValue = array(null, $this->semStack[$stackPos-(1-1)]);
             },
-            270 => function ($stackPos) {
+            271 => function ($stackPos) {
                  $this->semValue = null;
             },
-            271 => function ($stackPos) {
+            272 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(3-2)];
             },
-            272 => function ($stackPos) {
+            273 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
-            273 => function ($stackPos) {
-                 $this->semValue = 0;
-            },
             274 => function ($stackPos) {
                  $this->semValue = 0;
             },
             275 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = 0;
             },
             276 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             277 => function ($stackPos) {
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+            },
+            278 => function ($stackPos) {
                  $this->checkModifier($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $stackPos-(2-2)); $this->semValue = $this->semStack[$stackPos-(2-1)] | $this->semStack[$stackPos-(2-2)];
             },
-            278 => function ($stackPos) {
+            279 => function ($stackPos) {
                  $this->semValue = Stmt\Class_::MODIFIER_PUBLIC;
             },
-            279 => function ($stackPos) {
+            280 => function ($stackPos) {
                  $this->semValue = Stmt\Class_::MODIFIER_PROTECTED;
             },
-            280 => function ($stackPos) {
+            281 => function ($stackPos) {
                  $this->semValue = Stmt\Class_::MODIFIER_PRIVATE;
             },
-            281 => function ($stackPos) {
+            282 => function ($stackPos) {
                  $this->semValue = Stmt\Class_::MODIFIER_STATIC;
             },
-            282 => function ($stackPos) {
+            283 => function ($stackPos) {
                  $this->semValue = Stmt\Class_::MODIFIER_ABSTRACT;
             },
-            283 => function ($stackPos) {
+            284 => function ($stackPos) {
                  $this->semValue = Stmt\Class_::MODIFIER_FINAL;
             },
-            284 => function ($stackPos) {
+            285 => function ($stackPos) {
                  $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
-            285 => function ($stackPos) {
+            286 => function ($stackPos) {
                  $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
-            286 => function ($stackPos) {
+            287 => function ($stackPos) {
                  $this->semValue = new Node\VarLikeIdentifier(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
-            287 => function ($stackPos) {
+            288 => function ($stackPos) {
                  $this->semValue = new Stmt\PropertyProperty($this->semStack[$stackPos-(1-1)], null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
-            288 => function ($stackPos) {
+            289 => function ($stackPos) {
                  $this->semValue = new Stmt\PropertyProperty($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            289 => function ($stackPos) {
+            290 => function ($stackPos) {
                  $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
-            290 => function ($stackPos) {
+            291 => function ($stackPos) {
                  $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
-            291 => function ($stackPos) {
+            292 => function ($stackPos) {
                  $this->semValue = array();
             },
-            292 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
-            },
             293 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             294 => function ($stackPos) {
-                 $this->semValue = new Expr\Assign($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             295 => function ($stackPos) {
                  $this->semValue = new Expr\Assign($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             296 => function ($stackPos) {
-                 $this->semValue = new Expr\AssignRef($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Assign($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             297 => function ($stackPos) {
                  $this->semValue = new Expr\AssignRef($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             298 => function ($stackPos) {
+                 $this->semValue = new Expr\AssignRef($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+            },
+            299 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
-            299 => function ($stackPos) {
+            300 => function ($stackPos) {
                  $this->semValue = new Expr\Clone_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
-            300 => function ($stackPos) {
+            301 => function ($stackPos) {
                  $this->semValue = new Expr\AssignOp\Plus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            301 => function ($stackPos) {
+            302 => function ($stackPos) {
                  $this->semValue = new Expr\AssignOp\Minus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            302 => function ($stackPos) {
+            303 => function ($stackPos) {
                  $this->semValue = new Expr\AssignOp\Mul($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            303 => function ($stackPos) {
+            304 => function ($stackPos) {
                  $this->semValue = new Expr\AssignOp\Div($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            304 => function ($stackPos) {
+            305 => function ($stackPos) {
                  $this->semValue = new Expr\AssignOp\Concat($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            305 => function ($stackPos) {
+            306 => function ($stackPos) {
                  $this->semValue = new Expr\AssignOp\Mod($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            306 => function ($stackPos) {
+            307 => function ($stackPos) {
                  $this->semValue = new Expr\AssignOp\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            307 => function ($stackPos) {
+            308 => function ($stackPos) {
                  $this->semValue = new Expr\AssignOp\BitwiseOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            308 => function ($stackPos) {
+            309 => function ($stackPos) {
                  $this->semValue = new Expr\AssignOp\BitwiseXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            309 => function ($stackPos) {
+            310 => function ($stackPos) {
                  $this->semValue = new Expr\AssignOp\ShiftLeft($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            310 => function ($stackPos) {
+            311 => function ($stackPos) {
                  $this->semValue = new Expr\AssignOp\ShiftRight($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            311 => function ($stackPos) {
+            312 => function ($stackPos) {
                  $this->semValue = new Expr\AssignOp\Pow($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            312 => function ($stackPos) {
+            313 => function ($stackPos) {
+                 $this->semValue = new Expr\AssignOp\Coalesce($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+            },
+            314 => function ($stackPos) {
                  $this->semValue = new Expr\PostInc($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
-            313 => function ($stackPos) {
+            315 => function ($stackPos) {
                  $this->semValue = new Expr\PreInc($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
-            314 => function ($stackPos) {
+            316 => function ($stackPos) {
                  $this->semValue = new Expr\PostDec($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
-            315 => function ($stackPos) {
+            317 => function ($stackPos) {
                  $this->semValue = new Expr\PreDec($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
-            316 => function ($stackPos) {
+            318 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\BooleanOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            317 => function ($stackPos) {
+            319 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\BooleanAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            318 => function ($stackPos) {
+            320 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\LogicalOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            319 => function ($stackPos) {
+            321 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\LogicalAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            320 => function ($stackPos) {
+            322 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\LogicalXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            321 => function ($stackPos) {
+            323 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\BitwiseOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            322 => function ($stackPos) {
+            324 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            323 => function ($stackPos) {
+            325 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\BitwiseXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            324 => function ($stackPos) {
+            326 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\Concat($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            325 => function ($stackPos) {
+            327 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\Plus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            326 => function ($stackPos) {
+            328 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\Minus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            327 => function ($stackPos) {
+            329 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\Mul($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            328 => function ($stackPos) {
+            330 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\Div($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            329 => function ($stackPos) {
+            331 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\Mod($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            330 => function ($stackPos) {
+            332 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\ShiftLeft($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            331 => function ($stackPos) {
+            333 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\ShiftRight($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            332 => function ($stackPos) {
+            334 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\Pow($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            333 => function ($stackPos) {
+            335 => function ($stackPos) {
                  $this->semValue = new Expr\UnaryPlus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
-            334 => function ($stackPos) {
+            336 => function ($stackPos) {
                  $this->semValue = new Expr\UnaryMinus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
-            335 => function ($stackPos) {
+            337 => function ($stackPos) {
                  $this->semValue = new Expr\BooleanNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
-            336 => function ($stackPos) {
+            338 => function ($stackPos) {
                  $this->semValue = new Expr\BitwiseNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
-            337 => function ($stackPos) {
+            339 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\Identical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            338 => function ($stackPos) {
+            340 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\NotIdentical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            339 => function ($stackPos) {
+            341 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\Equal($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            340 => function ($stackPos) {
+            342 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\NotEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            341 => function ($stackPos) {
+            343 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\Spaceship($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            342 => function ($stackPos) {
+            344 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\Smaller($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            343 => function ($stackPos) {
+            345 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\SmallerOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            344 => function ($stackPos) {
+            346 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\Greater($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            345 => function ($stackPos) {
+            347 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\GreaterOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            346 => function ($stackPos) {
+            348 => function ($stackPos) {
                  $this->semValue = new Expr\Instanceof_($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            347 => function ($stackPos) {
+            349 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
-            348 => function ($stackPos) {
+            350 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(3-2)];
             },
-            349 => function ($stackPos) {
+            351 => function ($stackPos) {
                  $this->semValue = new Expr\Ternary($this->semStack[$stackPos-(5-1)], $this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-5)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
             },
-            350 => function ($stackPos) {
+            352 => function ($stackPos) {
                  $this->semValue = new Expr\Ternary($this->semStack[$stackPos-(4-1)], null, $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
-            351 => function ($stackPos) {
+            353 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\Coalesce($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            352 => function ($stackPos) {
+            354 => function ($stackPos) {
                  $this->semValue = new Expr\Isset_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
-            353 => function ($stackPos) {
+            355 => function ($stackPos) {
                  $this->semValue = new Expr\Empty_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
-            354 => function ($stackPos) {
+            356 => function ($stackPos) {
                  $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
-            355 => function ($stackPos) {
+            357 => function ($stackPos) {
                  $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE_ONCE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
-            356 => function ($stackPos) {
+            358 => function ($stackPos) {
                  $this->semValue = new Expr\Eval_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
-            357 => function ($stackPos) {
+            359 => function ($stackPos) {
                  $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
-            358 => function ($stackPos) {
+            360 => function ($stackPos) {
                  $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE_ONCE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
-            359 => function ($stackPos) {
+            361 => function ($stackPos) {
                  $this->semValue = new Expr\Cast\Int_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
-            360 => function ($stackPos) {
-                 $this->semValue = new Expr\Cast\Double($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
-            },
-            361 => function ($stackPos) {
+            362 => function ($stackPos) {
+                 $attrs = $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes;
+            $attrs['kind'] = $this->getFloatCastKind($this->semStack[$stackPos-(2-1)]);
+            $this->semValue = new Expr\Cast\Double($this->semStack[$stackPos-(2-2)], $attrs);
+            },
+            363 => function ($stackPos) {
                  $this->semValue = new Expr\Cast\String_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
-            362 => function ($stackPos) {
+            364 => function ($stackPos) {
                  $this->semValue = new Expr\Cast\Array_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
-            363 => function ($stackPos) {
+            365 => function ($stackPos) {
                  $this->semValue = new Expr\Cast\Object_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
-            364 => function ($stackPos) {
+            366 => function ($stackPos) {
                  $this->semValue = new Expr\Cast\Bool_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
-            365 => function ($stackPos) {
+            367 => function ($stackPos) {
                  $this->semValue = new Expr\Cast\Unset_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
-            366 => function ($stackPos) {
+            368 => function ($stackPos) {
                  $attrs = $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes;
             $attrs['kind'] = strtolower($this->semStack[$stackPos-(2-1)]) === 'exit' ? Expr\Exit_::KIND_EXIT : Expr\Exit_::KIND_DIE;
             $this->semValue = new Expr\Exit_($this->semStack[$stackPos-(2-2)], $attrs);
             },
-            367 => function ($stackPos) {
+            369 => function ($stackPos) {
                  $this->semValue = new Expr\ErrorSuppress($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
-            368 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
-            },
-            369 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
-            },
             370 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             371 => function ($stackPos) {
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+            },
+            372 => function ($stackPos) {
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+            },
+            373 => function ($stackPos) {
                  $this->semValue = new Expr\ShellExec($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            372 => function ($stackPos) {
+            374 => function ($stackPos) {
                  $this->semValue = new Expr\Print_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
-            373 => function ($stackPos) {
+            375 => function ($stackPos) {
                  $this->semValue = new Expr\Yield_(null, null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
-            374 => function ($stackPos) {
+            376 => function ($stackPos) {
                  $this->semValue = new Expr\YieldFrom($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
-            375 => function ($stackPos) {
+            377 => function ($stackPos) {
                  $this->semValue = new Expr\Closure(['static' => false, 'byRef' => $this->semStack[$stackPos-(10-2)], 'params' => $this->semStack[$stackPos-(10-4)], 'uses' => $this->semStack[$stackPos-(10-6)], 'returnType' => $this->semStack[$stackPos-(10-7)], 'stmts' => $this->semStack[$stackPos-(10-9)]], $this->startAttributeStack[$stackPos-(10-1)] + $this->endAttributes);
             },
-            376 => function ($stackPos) {
+            378 => function ($stackPos) {
                  $this->semValue = new Expr\Closure(['static' => true, 'byRef' => $this->semStack[$stackPos-(11-3)], 'params' => $this->semStack[$stackPos-(11-5)], 'uses' => $this->semStack[$stackPos-(11-7)], 'returnType' => $this->semStack[$stackPos-(11-8)], 'stmts' => $this->semStack[$stackPos-(11-10)]], $this->startAttributeStack[$stackPos-(11-1)] + $this->endAttributes);
             },
-            377 => function ($stackPos) {
+            379 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(3-2)];
             },
-            378 => function ($stackPos) {
+            380 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(3-2)];
             },
-            379 => function ($stackPos) {
+            381 => function ($stackPos) {
                  $this->semValue = new Expr\Yield_($this->semStack[$stackPos-(2-2)], null, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
-            380 => function ($stackPos) {
+            382 => function ($stackPos) {
                  $this->semValue = new Expr\Yield_($this->semStack[$stackPos-(4-4)], $this->semStack[$stackPos-(4-2)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
-            381 => function ($stackPos) {
+            383 => function ($stackPos) {
                  $attrs = $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes; $attrs['kind'] = Expr\Array_::KIND_LONG;
             $this->semValue = new Expr\Array_($this->semStack[$stackPos-(4-3)], $attrs);
             },
-            382 => function ($stackPos) {
+            384 => function ($stackPos) {
                  $attrs = $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes; $attrs['kind'] = Expr\Array_::KIND_SHORT;
             $this->semValue = new Expr\Array_($this->semStack[$stackPos-(3-2)], $attrs);
             },
-            383 => function ($stackPos) {
+            385 => function ($stackPos) {
                  $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
-            384 => function ($stackPos) {
+            386 => function ($stackPos) {
                  $attrs = $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes; $attrs['kind'] = ($this->semStack[$stackPos-(4-1)][0] === "'" || ($this->semStack[$stackPos-(4-1)][1] === "'" && ($this->semStack[$stackPos-(4-1)][0] === 'b' || $this->semStack[$stackPos-(4-1)][0] === 'B')) ? Scalar\String_::KIND_SINGLE_QUOTED : Scalar\String_::KIND_DOUBLE_QUOTED);
             $this->semValue = new Expr\ArrayDimFetch(new Scalar\String_(Scalar\String_::parse($this->semStack[$stackPos-(4-1)]), $attrs), $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
-            385 => function ($stackPos) {
+            387 => function ($stackPos) {
                  $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
-            386 => function ($stackPos) {
+            388 => function ($stackPos) {
                  $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
-            387 => function ($stackPos) {
+            389 => function ($stackPos) {
                  $this->semValue = array(new Stmt\Class_(null, ['type' => 0, 'extends' => $this->semStack[$stackPos-(7-3)], 'implements' => $this->semStack[$stackPos-(7-4)], 'stmts' => $this->semStack[$stackPos-(7-6)]], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes), $this->semStack[$stackPos-(7-2)]);
             $this->checkClass($this->semValue[0], -1);
             },
-            388 => function ($stackPos) {
+            390 => function ($stackPos) {
                  $this->semValue = new Expr\New_($this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            389 => function ($stackPos) {
+            391 => function ($stackPos) {
                  list($class, $ctorArgs) = $this->semStack[$stackPos-(2-2)]; $this->semValue = new Expr\New_($class, $ctorArgs, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
-            390 => function ($stackPos) {
+            392 => function ($stackPos) {
                  $this->semValue = array();
             },
-            391 => function ($stackPos) {
+            393 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(4-3)];
             },
-            392 => function ($stackPos) {
+            394 => function ($stackPos) {
                  $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
-            393 => function ($stackPos) {
+            395 => function ($stackPos) {
                  $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
-            394 => function ($stackPos) {
+            396 => function ($stackPos) {
                  $this->semValue = new Expr\ClosureUse($this->semStack[$stackPos-(2-2)], $this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
-            395 => function ($stackPos) {
+            397 => function ($stackPos) {
                  $this->semValue = new Expr\FuncCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
-            396 => function ($stackPos) {
+            398 => function ($stackPos) {
                  $this->semValue = new Expr\StaticCall($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
-            397 => function ($stackPos) {
+            399 => function ($stackPos) {
                  $this->semValue = new Expr\StaticCall($this->semStack[$stackPos-(6-1)], $this->semStack[$stackPos-(6-4)], $this->semStack[$stackPos-(6-6)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
             },
-            398 => function ($stackPos) {
+            400 => function ($stackPos) {
                  $this->semValue = $this->fixupPhp5StaticPropCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
-            399 => function ($stackPos) {
+            401 => function ($stackPos) {
                  $this->semValue = new Expr\FuncCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
-            400 => function ($stackPos) {
+            402 => function ($stackPos) {
                  $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
-            401 => function ($stackPos) {
-                 $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
-            },
-            402 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
-            },
             403 => function ($stackPos) {
                  $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             404 => function ($stackPos) {
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+            },
+            405 => function ($stackPos) {
+                 $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+            },
+            406 => function ($stackPos) {
                  $this->semValue = new Name\FullyQualified($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
-            405 => function ($stackPos) {
+            407 => function ($stackPos) {
                  $this->semValue = new Name\Relative($this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            406 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
-            },
-            407 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
-            },
             408 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
@@ -2200,250 +2202,247 @@
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             412 => function ($stackPos) {
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+            },
+            413 => function ($stackPos) {
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+            },
+            414 => function ($stackPos) {
                  $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            413 => function ($stackPos) {
+            415 => function ($stackPos) {
                  $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            414 => function ($stackPos) {
+            416 => function ($stackPos) {
                  $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
-            415 => function ($stackPos) {
+            417 => function ($stackPos) {
                  $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
-            416 => function ($stackPos) {
+            418 => function ($stackPos) {
                  $this->semValue = null;
             },
-            417 => function ($stackPos) {
+            419 => function ($stackPos) {
                  $this->semValue = null;
             },
-            418 => function ($stackPos) {
+            420 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
-            419 => function ($stackPos) {
+            421 => function ($stackPos) {
                  $this->semValue = array();
             },
-            420 => function ($stackPos) {
+            422 => function ($stackPos) {
                  $this->semValue = array(new Scalar\EncapsedStringPart(Scalar\String_::parseEscapeSequences($this->semStack[$stackPos-(1-1)], '`', false), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes));
             },
-            421 => function ($stackPos) {
+            423 => function ($stackPos) {
                  foreach ($this->semStack[$stackPos-(1-1)] as $s) { if ($s instanceof Node\Scalar\EncapsedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '`', false); } }; $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
-            422 => function ($stackPos) {
+            424 => function ($stackPos) {
                  $this->semValue = array();
             },
-            423 => function ($stackPos) {
+            425 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
-            424 => function ($stackPos) {
+            426 => function ($stackPos) {
                  $this->semValue = $this->parseLNumber($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes, true);
             },
-            425 => function ($stackPos) {
+            427 => function ($stackPos) {
                  $this->semValue = new Scalar\DNumber(Scalar\DNumber::parse($this->semStack[$stackPos-(1-1)]), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
-            426 => function ($stackPos) {
+            428 => function ($stackPos) {
                  $attrs = $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes; $attrs['kind'] = ($this->semStack[$stackPos-(1-1)][0] === "'" || ($this->semStack[$stackPos-(1-1)][1] === "'" && ($this->semStack[$stackPos-(1-1)][0] === 'b' || $this->semStack[$stackPos-(1-1)][0] === 'B')) ? Scalar\String_::KIND_SINGLE_QUOTED : Scalar\String_::KIND_DOUBLE_QUOTED);
             $this->semValue = new Scalar\String_(Scalar\String_::parse($this->semStack[$stackPos-(1-1)], false), $attrs);
             },
-            427 => function ($stackPos) {
+            429 => function ($stackPos) {
                  $this->semValue = new Scalar\MagicConst\Line($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
-            428 => function ($stackPos) {
+            430 => function ($stackPos) {
                  $this->semValue = new Scalar\MagicConst\File($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
-            429 => function ($stackPos) {
+            431 => function ($stackPos) {
                  $this->semValue = new Scalar\MagicConst\Dir($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
-            430 => function ($stackPos) {
+            432 => function ($stackPos) {
                  $this->semValue = new Scalar\MagicConst\Class_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
-            431 => function ($stackPos) {
+            433 => function ($stackPos) {
                  $this->semValue = new Scalar\MagicConst\Trait_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
-            432 => function ($stackPos) {
+            434 => function ($stackPos) {
                  $this->semValue = new Scalar\MagicConst\Method($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
-            433 => function ($stackPos) {
+            435 => function ($stackPos) {
                  $this->semValue = new Scalar\MagicConst\Function_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
-            434 => function ($stackPos) {
+            436 => function ($stackPos) {
                  $this->semValue = new Scalar\MagicConst\Namespace_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
-            435 => function ($stackPos) {
-                 $attrs = $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes; $attrs['kind'] = strpos($this->semStack[$stackPos-(3-1)], "'") === false ? Scalar\String_::KIND_HEREDOC : Scalar\String_::KIND_NOWDOC; preg_match('/\A[bB]?<<<[ \t]*[\'"]?([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)[\'"]?(?:\r\n|\n|\r)\z/', $this->semStack[$stackPos-(3-1)], $matches); $attrs['docLabel'] = $matches[1];;
-            $this->semValue = new Scalar\String_(Scalar\String_::parseDocString($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-2)], false), $attrs);
-            },
-            436 => function ($stackPos) {
-                 $attrs = $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes; $attrs['kind'] = strpos($this->semStack[$stackPos-(2-1)], "'") === false ? Scalar\String_::KIND_HEREDOC : Scalar\String_::KIND_NOWDOC; preg_match('/\A[bB]?<<<[ \t]*[\'"]?([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)[\'"]?(?:\r\n|\n|\r)\z/', $this->semStack[$stackPos-(2-1)], $matches); $attrs['docLabel'] = $matches[1];;
-            $this->semValue = new Scalar\String_('', $attrs);
-            },
             437 => function ($stackPos) {
+                 $this->semValue = $this->parseDocString($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes, $this->startAttributeStack[$stackPos-(3-3)] + $this->endAttributeStack[$stackPos-(3-3)], false);
+            },
+            438 => function ($stackPos) {
+                 $this->semValue = $this->parseDocString($this->semStack[$stackPos-(2-1)], '', $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes, $this->startAttributeStack[$stackPos-(2-2)] + $this->endAttributeStack[$stackPos-(2-2)], false);
+            },
+            439 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
-            438 => function ($stackPos) {
+            440 => function ($stackPos) {
                  $this->semValue = new Expr\ClassConstFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            439 => function ($stackPos) {
+            441 => function ($stackPos) {
                  $this->semValue = new Expr\ConstFetch($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
-            440 => function ($stackPos) {
+            442 => function ($stackPos) {
                  $this->semValue = new Expr\Array_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
-            441 => function ($stackPos) {
+            443 => function ($stackPos) {
                  $this->semValue = new Expr\Array_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            442 => function ($stackPos) {
+            444 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
-            443 => function ($stackPos) {
+            445 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\BooleanOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            444 => function ($stackPos) {
+            446 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\BooleanAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            445 => function ($stackPos) {
+            447 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\LogicalOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            446 => function ($stackPos) {
+            448 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\LogicalAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            447 => function ($stackPos) {
+            449 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\LogicalXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            448 => function ($stackPos) {
+            450 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\BitwiseOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            449 => function ($stackPos) {
+            451 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            450 => function ($stackPos) {
+            452 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\BitwiseXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            451 => function ($stackPos) {
+            453 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\Concat($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            452 => function ($stackPos) {
+            454 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\Plus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            453 => function ($stackPos) {
+            455 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\Minus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            454 => function ($stackPos) {
+            456 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\Mul($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            455 => function ($stackPos) {
+            457 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\Div($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            456 => function ($stackPos) {
+            458 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\Mod($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            457 => function ($stackPos) {
+            459 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\ShiftLeft($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            458 => function ($stackPos) {
+            460 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\ShiftRight($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            459 => function ($stackPos) {
+            461 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\Pow($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            460 => function ($stackPos) {
+            462 => function ($stackPos) {
                  $this->semValue = new Expr\UnaryPlus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
-            461 => function ($stackPos) {
+            463 => function ($stackPos) {
                  $this->semValue = new Expr\UnaryMinus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
-            462 => function ($stackPos) {
+            464 => function ($stackPos) {
                  $this->semValue = new Expr\BooleanNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
-            463 => function ($stackPos) {
+            465 => function ($stackPos) {
                  $this->semValue = new Expr\BitwiseNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
-            464 => function ($stackPos) {
+            466 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\Identical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            465 => function ($stackPos) {
+            467 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\NotIdentical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            466 => function ($stackPos) {
+            468 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\Equal($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            467 => function ($stackPos) {
+            469 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\NotEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            468 => function ($stackPos) {
+            470 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\Smaller($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            469 => function ($stackPos) {
+            471 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\SmallerOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            470 => function ($stackPos) {
+            472 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\Greater($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            471 => function ($stackPos) {
+            473 => function ($stackPos) {
                  $this->semValue = new Expr\BinaryOp\GreaterOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            472 => function ($stackPos) {
+            474 => function ($stackPos) {
                  $this->semValue = new Expr\Ternary($this->semStack[$stackPos-(5-1)], $this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-5)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
             },
-            473 => function ($stackPos) {
+            475 => function ($stackPos) {
                  $this->semValue = new Expr\Ternary($this->semStack[$stackPos-(4-1)], null, $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
-            474 => function ($stackPos) {
+            476 => function ($stackPos) {
                  $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
-            475 => function ($stackPos) {
+            477 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(3-2)];
             },
-            476 => function ($stackPos) {
+            478 => function ($stackPos) {
                  $this->semValue = new Expr\ConstFetch($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
-            477 => function ($stackPos) {
+            479 => function ($stackPos) {
                  $this->semValue = new Expr\ClassConstFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            478 => function ($stackPos) {
+            480 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
-            479 => function ($stackPos) {
+            481 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
-            480 => function ($stackPos) {
+            482 => function ($stackPos) {
                  $attrs = $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes; $attrs['kind'] = Scalar\String_::KIND_DOUBLE_QUOTED;
             foreach ($this->semStack[$stackPos-(3-2)] as $s) { if ($s instanceof Node\Scalar\EncapsedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '"', true); } }; $this->semValue = new Scalar\Encapsed($this->semStack[$stackPos-(3-2)], $attrs);
             },
-            481 => function ($stackPos) {
-                 $attrs = $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes; $attrs['kind'] = strpos($this->semStack[$stackPos-(3-1)], "'") === false ? Scalar\String_::KIND_HEREDOC : Scalar\String_::KIND_NOWDOC; preg_match('/\A[bB]?<<<[ \t]*[\'"]?([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)[\'"]?(?:\r\n|\n|\r)\z/', $this->semStack[$stackPos-(3-1)], $matches); $attrs['docLabel'] = $matches[1];;
-            foreach ($this->semStack[$stackPos-(3-2)] as $s) { if ($s instanceof Node\Scalar\EncapsedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, null, true); } } $s->value = preg_replace('~(\r\n|\n|\r)\z~', '', $s->value); if ('' === $s->value) array_pop($this->semStack[$stackPos-(3-2)]);; $this->semValue = new Scalar\Encapsed($this->semStack[$stackPos-(3-2)], $attrs);
-            },
-            482 => function ($stackPos) {
+            483 => function ($stackPos) {
+                 $this->semValue = $this->parseDocString($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes, $this->startAttributeStack[$stackPos-(3-3)] + $this->endAttributeStack[$stackPos-(3-3)], true);
+            },
+            484 => function ($stackPos) {
                  $this->semValue = array();
             },
-            483 => function ($stackPos) {
+            485 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
-            484 => function ($stackPos) {
+            486 => function ($stackPos) {
                 $this->semValue = $this->semStack[$stackPos];
             },
-            485 => function ($stackPos) {
+            487 => function ($stackPos) {
                 $this->semValue = $this->semStack[$stackPos];
             },
-            486 => function ($stackPos) {
+            488 => function ($stackPos) {
                  $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
-            487 => function ($stackPos) {
+            489 => function ($stackPos) {
                  $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
-            488 => function ($stackPos) {
+            490 => function ($stackPos) {
                  $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(3-3)], $this->semStack[$stackPos-(3-1)], false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            489 => function ($stackPos) {
+            491 => function ($stackPos) {
                  $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
-            490 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
-            },
-            491 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
-            },
             492 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
@@ -2451,65 +2450,65 @@
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             494 => function ($stackPos) {
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+            },
+            495 => function ($stackPos) {
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+            },
+            496 => function ($stackPos) {
                  $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-5)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
             },
-            495 => function ($stackPos) {
+            497 => function ($stackPos) {
                  $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
-            496 => function ($stackPos) {
+            498 => function ($stackPos) {
                  $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            497 => function ($stackPos) {
+            499 => function ($stackPos) {
                  $this->semValue = new Expr\MethodCall($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
-            498 => function ($stackPos) {
+            500 => function ($stackPos) {
                  $this->semValue = new Expr\FuncCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
-            499 => function ($stackPos) {
+            501 => function ($stackPos) {
                  $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
-            500 => function ($stackPos) {
+            502 => function ($stackPos) {
                  $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
-            501 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
-            },
-            502 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(3-2)];
-            },
             503 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             504 => function ($stackPos) {
-                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(3-2)];
             },
             505 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             506 => function ($stackPos) {
+                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+            },
+            507 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
-            507 => function ($stackPos) {
-                 $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
-            },
             508 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             509 => function ($stackPos) {
+                 $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+            },
+            510 => function ($stackPos) {
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+            },
+            511 => function ($stackPos) {
                  $var = substr($this->semStack[$stackPos-(1-1)], 1); $this->semValue = \is_string($var) ? new Node\VarLikeIdentifier($var, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes) : $var;
             },
-            510 => function ($stackPos) {
+            512 => function ($stackPos) {
                  $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            511 => function ($stackPos) {
+            513 => function ($stackPos) {
                  $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(6-1)], $this->semStack[$stackPos-(6-5)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
             },
-            512 => function ($stackPos) {
-                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
-            },
-            513 => function ($stackPos) {
-                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
-            },
             514 => function ($stackPos) {
                  $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
@@ -2517,117 +2516,123 @@
                  $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             516 => function ($stackPos) {
+                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+            },
+            517 => function ($stackPos) {
+                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+            },
+            518 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
-            517 => function ($stackPos) {
+            519 => function ($stackPos) {
                  $this->semValue = new Expr\Variable($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
-            518 => function ($stackPos) {
+            520 => function ($stackPos) {
                  $this->semValue = null;
             },
-            519 => function ($stackPos) {
+            521 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
-            520 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
-            },
-            521 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(3-2)];
-            },
             522 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             523 => function ($stackPos) {
+                 $this->semValue = $this->semStack[$stackPos-(3-2)];
+            },
+            524 => function ($stackPos) {
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+            },
+            525 => function ($stackPos) {
                  $this->semValue = new Expr\Error($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->errorState = 2;
             },
-            524 => function ($stackPos) {
+            526 => function ($stackPos) {
                  $this->semValue = new Expr\List_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
-            525 => function ($stackPos) {
+            527 => function ($stackPos) {
                  $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
-            526 => function ($stackPos) {
+            528 => function ($stackPos) {
                  $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
-            527 => function ($stackPos) {
+            529 => function ($stackPos) {
                  $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
-            528 => function ($stackPos) {
+            530 => function ($stackPos) {
                  $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
-            529 => function ($stackPos) {
+            531 => function ($stackPos) {
                  $this->semValue = null;
             },
-            530 => function ($stackPos) {
+            532 => function ($stackPos) {
                  $this->semValue = array();
             },
-            531 => function ($stackPos) {
+            533 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
-            532 => function ($stackPos) {
+            534 => function ($stackPos) {
                  $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
-            533 => function ($stackPos) {
+            535 => function ($stackPos) {
                  $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
-            534 => function ($stackPos) {
+            536 => function ($stackPos) {
                  $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(3-3)], $this->semStack[$stackPos-(3-1)], false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            535 => function ($stackPos) {
+            537 => function ($stackPos) {
                  $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
-            536 => function ($stackPos) {
+            538 => function ($stackPos) {
                  $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(4-4)], $this->semStack[$stackPos-(4-1)], true, $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
-            537 => function ($stackPos) {
+            539 => function ($stackPos) {
                  $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(2-2)], null, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
-            538 => function ($stackPos) {
+            540 => function ($stackPos) {
                  $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
-            539 => function ($stackPos) {
+            541 => function ($stackPos) {
                  $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
-            540 => function ($stackPos) {
+            542 => function ($stackPos) {
                  $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
-            541 => function ($stackPos) {
+            543 => function ($stackPos) {
                  $this->semValue = array($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)]);
             },
-            542 => function ($stackPos) {
+            544 => function ($stackPos) {
                  $this->semValue = new Scalar\EncapsedStringPart($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
-            543 => function ($stackPos) {
+            545 => function ($stackPos) {
                  $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
-            544 => function ($stackPos) {
+            546 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
-            545 => function ($stackPos) {
+            547 => function ($stackPos) {
                  $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
-            546 => function ($stackPos) {
+            548 => function ($stackPos) {
                  $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            547 => function ($stackPos) {
+            549 => function ($stackPos) {
                  $this->semValue = new Expr\Variable($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            548 => function ($stackPos) {
+            550 => function ($stackPos) {
                  $this->semValue = new Expr\Variable($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            549 => function ($stackPos) {
+            551 => function ($stackPos) {
                  $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-4)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
             },
-            550 => function ($stackPos) {
+            552 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(3-2)];
             },
-            551 => function ($stackPos) {
+            553 => function ($stackPos) {
                  $this->semValue = new Scalar\String_($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
-            552 => function ($stackPos) {
+            554 => function ($stackPos) {
                  $this->semValue = $this->parseNumString($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
-            553 => function ($stackPos) {
+            555 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
         ];