<?php declare(strict_types=1);

namespace PhpParser\Parser;

use PhpParser\Error;
use PhpParser\Modifiers;
use PhpParser\Node;
use PhpParser\Node\Expr;
use PhpParser\Node\Name;
use PhpParser\Node\Scalar;
use PhpParser\Node\Stmt;

/* This is an automatically GENERATED file, which should not be manually edited.
 * Instead edit one of the following:
 *  * the grammar file grammar/php.y
 *  * the skeleton file grammar/parser.template
 *  * the preprocessing script grammar/rebuildParsers.php
 */
class Php7 extends \PhpParser\ParserAbstract
{
    public const YYERRTOK = 256;
    public const T_VOID_CAST = 257;
    public const T_THROW = 258;
    public const T_INCLUDE = 259;
    public const T_INCLUDE_ONCE = 260;
    public const T_EVAL = 261;
    public const T_REQUIRE = 262;
    public const T_REQUIRE_ONCE = 263;
    public const T_LOGICAL_OR = 264;
    public const T_LOGICAL_XOR = 265;
    public const T_LOGICAL_AND = 266;
    public const T_PRINT = 267;
    public const T_YIELD = 268;
    public const T_DOUBLE_ARROW = 269;
    public const T_YIELD_FROM = 270;
    public const T_PLUS_EQUAL = 271;
    public const T_MINUS_EQUAL = 272;
    public const T_MUL_EQUAL = 273;
    public const T_DIV_EQUAL = 274;
    public const T_CONCAT_EQUAL = 275;
    public const T_MOD_EQUAL = 276;
    public const T_AND_EQUAL = 277;
    public const T_OR_EQUAL = 278;
    public const T_XOR_EQUAL = 279;
    public const T_SL_EQUAL = 280;
    public const T_SR_EQUAL = 281;
    public const T_POW_EQUAL = 282;
    public const T_COALESCE_EQUAL = 283;
    public const T_COALESCE = 284;
    public const T_BOOLEAN_OR = 285;
    public const T_BOOLEAN_AND = 286;
    public const T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG = 287;
    public const T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG = 288;
    public const T_IS_EQUAL = 289;
    public const T_IS_NOT_EQUAL = 290;
    public const T_IS_IDENTICAL = 291;
    public const T_IS_NOT_IDENTICAL = 292;
    public const T_SPACESHIP = 293;
    public const T_IS_SMALLER_OR_EQUAL = 294;
    public const T_IS_GREATER_OR_EQUAL = 295;
    public const T_SL = 296;
    public const T_SR = 297;
    public const T_INSTANCEOF = 298;
    public const T_INC = 299;
    public const T_DEC = 300;
    public const T_INT_CAST = 301;
    public const T_DOUBLE_CAST = 302;
    public const T_STRING_CAST = 303;
    public const T_ARRAY_CAST = 304;
    public const T_OBJECT_CAST = 305;
    public const T_BOOL_CAST = 306;
    public const T_UNSET_CAST = 307;
    public const T_POW = 308;
    public const T_NEW = 309;
    public const T_CLONE = 310;
    public const T_EXIT = 311;
    public const T_IF = 312;
    public const T_ELSEIF = 313;
    public const T_ELSE = 314;
    public const T_ENDIF = 315;
    public const T_LNUMBER = 316;
    public const T_DNUMBER = 317;
    public const T_STRING = 318;
    public const T_STRING_VARNAME = 319;
    public const T_VARIABLE = 320;
    public const T_NUM_STRING = 321;
    public const T_INLINE_HTML = 322;
    public const T_ENCAPSED_AND_WHITESPACE = 323;
    public const T_CONSTANT_ENCAPSED_STRING = 324;
    public const T_ECHO = 325;
    public const T_DO = 326;
    public const T_WHILE = 327;
    public const T_ENDWHILE = 328;
    public const T_FOR = 329;
    public const T_ENDFOR = 330;
    public const T_FOREACH = 331;
    public const T_ENDFOREACH = 332;
    public const T_DECLARE = 333;
    public const T_ENDDECLARE = 334;
    public const T_AS = 335;
    public const T_SWITCH = 336;
    public const T_MATCH = 337;
    public const T_ENDSWITCH = 338;
    public const T_CASE = 339;
    public const T_DEFAULT = 340;
    public const T_BREAK = 341;
    public const T_CONTINUE = 342;
    public const T_GOTO = 343;
    public const T_FUNCTION = 344;
    public const T_FN = 345;
    public const T_CONST = 346;
    public const T_RETURN = 347;
    public const T_TRY = 348;
    public const T_CATCH = 349;
    public const T_FINALLY = 350;
    public const T_USE = 351;
    public const T_INSTEADOF = 352;
    public const T_GLOBAL = 353;
    public const T_STATIC = 354;
    public const T_ABSTRACT = 355;
    public const T_FINAL = 356;
    public const T_PRIVATE = 357;
    public const T_PROTECTED = 358;
    public const T_PUBLIC = 359;
    public const T_READONLY = 360;
    public const T_PUBLIC_SET = 361;
    public const T_PROTECTED_SET = 362;
    public const T_PRIVATE_SET = 363;
    public const T_VAR = 364;
    public const T_UNSET = 365;
    public const T_ISSET = 366;
    public const T_EMPTY = 367;
    public const T_HALT_COMPILER = 368;
    public const T_CLASS = 369;
    public const T_TRAIT = 370;
    public const T_INTERFACE = 371;
    public const T_ENUM = 372;
    public const T_EXTENDS = 373;
    public const T_IMPLEMENTS = 374;
    public const T_OBJECT_OPERATOR = 375;
    public const T_NULLSAFE_OBJECT_OPERATOR = 376;
    public const T_LIST = 377;
    public const T_ARRAY = 378;
    public const T_CALLABLE = 379;
    public const T_CLASS_C = 380;
    public const T_TRAIT_C = 381;
    public const T_METHOD_C = 382;
    public const T_FUNC_C = 383;
    public const T_PROPERTY_C = 384;
    public const T_LINE = 385;
    public const T_FILE = 386;
    public const T_START_HEREDOC = 387;
    public const T_END_HEREDOC = 388;
    public const T_DOLLAR_OPEN_CURLY_BRACES = 389;
    public const T_CURLY_OPEN = 390;
    public const T_PAAMAYIM_NEKUDOTAYIM = 391;
    public const T_NAMESPACE = 392;
    public const T_NS_C = 393;
    public const T_DIR = 394;
    public const T_NS_SEPARATOR = 395;
    public const T_ELLIPSIS = 396;
    public const T_NAME_FULLY_QUALIFIED = 397;
    public const T_NAME_QUALIFIED = 398;
    public const T_NAME_RELATIVE = 399;
    public const T_ATTRIBUTE = 400;

    protected int $tokenToSymbolMapSize = 401;
    protected int $actionTableSize = 1620;
    protected int $gotoTableSize = 696;

    protected int $invalidSymbol = 173;
    protected int $errorSymbol = 1;
    protected int $defaultAction = -32766;
    protected int $unexpectedTokenRule = 32767;

    protected int $YY2TBLSTATE = 444;
    protected int $numNonLeafStates = 751;

    protected array $symbolToName = array(
        "EOF",
        "error",
        "T_VOID_CAST",
        "T_THROW",
        "T_INCLUDE",
        "T_INCLUDE_ONCE",
        "T_EVAL",
        "T_REQUIRE",
        "T_REQUIRE_ONCE",
        "','",
        "T_LOGICAL_OR",
        "T_LOGICAL_XOR",
        "T_LOGICAL_AND",
        "T_PRINT",
        "T_YIELD",
        "T_DOUBLE_ARROW",
        "T_YIELD_FROM",
        "'='",
        "T_PLUS_EQUAL",
        "T_MINUS_EQUAL",
        "T_MUL_EQUAL",
        "T_DIV_EQUAL",
        "T_CONCAT_EQUAL",
        "T_MOD_EQUAL",
        "T_AND_EQUAL",
        "T_OR_EQUAL",
        "T_XOR_EQUAL",
        "T_SL_EQUAL",
        "T_SR_EQUAL",
        "T_POW_EQUAL",
        "T_COALESCE_EQUAL",
        "'?'",
        "':'",
        "T_COALESCE",
        "T_BOOLEAN_OR",
        "T_BOOLEAN_AND",
        "'|'",
        "'^'",
        "T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG",
        "T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG",
        "T_IS_EQUAL",
        "T_IS_NOT_EQUAL",
        "T_IS_IDENTICAL",
        "T_IS_NOT_IDENTICAL",
        "T_SPACESHIP",
        "'<'",
        "T_IS_SMALLER_OR_EQUAL",
        "'>'",
        "T_IS_GREATER_OR_EQUAL",
        "T_SL",
        "T_SR",
        "'+'",
        "'-'",
        "'.'",
        "'*'",
        "'/'",
        "'%'",
        "'!'",
        "T_INSTANCEOF",
        "'~'",
        "T_INC",
        "T_DEC",
        "T_INT_CAST",
        "T_DOUBLE_CAST",
        "T_STRING_CAST",
        "T_ARRAY_CAST",
        "T_OBJECT_CAST",
        "T_BOOL_CAST",
        "T_UNSET_CAST",
        "'@'",
        "T_POW",
        "'['",
        "T_NEW",
        "T_CLONE",
        "T_EXIT",
        "T_IF",
        "T_ELSEIF",
        "T_ELSE",
        "T_ENDIF",
        "T_LNUMBER",
        "T_DNUMBER",
        "T_STRING",
        "T_STRING_VARNAME",
        "T_VARIABLE",
        "T_NUM_STRING",
        "T_INLINE_HTML",
        "T_ENCAPSED_AND_WHITESPACE",
        "T_CONSTANT_ENCAPSED_STRING",
        "T_ECHO",
        "T_DO",
        "T_WHILE",
        "T_ENDWHILE",
        "T_FOR",
        "T_ENDFOR",
        "T_FOREACH",
        "T_ENDFOREACH",
        "T_DECLARE",
        "T_ENDDECLARE",
        "T_AS",
        "T_SWITCH",
        "T_MATCH",
        "T_ENDSWITCH",
        "T_CASE",
        "T_DEFAULT",
        "T_BREAK",
        "T_CONTINUE",
        "T_GOTO",
        "T_FUNCTION",
        "T_FN",
        "T_CONST",
        "T_RETURN",
        "T_TRY",
        "T_CATCH",
        "T_FINALLY",
        "T_USE",
        "T_INSTEADOF",
        "T_GLOBAL",
        "T_STATIC",
        "T_ABSTRACT",
        "T_FINAL",
        "T_PRIVATE",
        "T_PROTECTED",
        "T_PUBLIC",
        "T_READONLY",
        "T_PUBLIC_SET",
        "T_PROTECTED_SET",
        "T_PRIVATE_SET",
        "T_VAR",
        "T_UNSET",
        "T_ISSET",
        "T_EMPTY",
        "T_HALT_COMPILER",
        "T_CLASS",
        "T_TRAIT",
        "T_INTERFACE",
        "T_ENUM",
        "T_EXTENDS",
        "T_IMPLEMENTS",
        "T_OBJECT_OPERATOR",
        "T_NULLSAFE_OBJECT_OPERATOR",
        "T_LIST",
        "T_ARRAY",
        "T_CALLABLE",
        "T_CLASS_C",
        "T_TRAIT_C",
        "T_METHOD_C",
        "T_FUNC_C",
        "T_PROPERTY_C",
        "T_LINE",
        "T_FILE",
        "T_START_HEREDOC",
        "T_END_HEREDOC",
        "T_DOLLAR_OPEN_CURLY_BRACES",
        "T_CURLY_OPEN",
        "T_PAAMAYIM_NEKUDOTAYIM",
        "T_NAMESPACE",
        "T_NS_C",
        "T_DIR",
        "T_NS_SEPARATOR",
        "T_ELLIPSIS",
        "T_NAME_FULLY_QUALIFIED",
        "T_NAME_QUALIFIED",
        "T_NAME_RELATIVE",
        "T_ATTRIBUTE",
        "';'",
        "']'",
        "'('",
        "')'",
        "'{'",
        "'}'",
        "'`'",
        "'\"'",
        "'$'"
    );

    protected array $tokenToSymbol = array(
            0,  173,  173,  173,  173,  173,  173,  173,  173,  173,
          173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
          173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
          173,  173,  173,   57,  171,  173,  172,   56,  173,  173,
          166,  167,   54,   51,    9,   52,   53,   55,  173,  173,
          173,  173,  173,  173,  173,  173,  173,  173,   32,  164,
           45,   17,   47,   31,   69,  173,  173,  173,  173,  173,
          173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
          173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
          173,   71,  173,  165,   37,  173,  170,  173,  173,  173,
          173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
          173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
          173,  173,  173,  168,   36,  169,   59,  173,  173,  173,
          173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
          173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
          173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
          173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
          173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
          173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
          173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
          173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
          173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
          173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
          173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
          173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
          173,  173,  173,  173,  173,  173,    1,    2,    3,    4,
            5,    6,    7,    8,   10,   11,   12,   13,   14,   15,
           16,   18,   19,   20,   21,   22,   23,   24,   25,   26,
           27,   28,   29,   30,   33,   34,   35,   38,   39,   40,
           41,   42,   43,   44,   46,   48,   49,   50,   58,   60,
           61,   62,   63,   64,   65,   66,   67,   68,   70,   72,
           73,   74,   75,   76,   77,   78,   79,   80,   81,   82,
           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,  138,  139,  140,  141,  142,
          143,  144,  145,  146,  147,  148,  149,  150,  151,  152,
          153,  154,  155,  156,  157,  158,  159,  160,  161,  162,
          163
    );

    protected array $action = array(
          134,  135,  136,  574,  137,  138, 1046,  763,  764,  765,
          139,   41,  387,  388,  447,  336,-32766,-32766,-32766, -628,
          838,  494,  432,    0,  875, -625,  876, -628, 1092, 1352,
        -32766,-32766,-32766, -625, -338,  757,  756,-32766,    4,-32766,
        -32766,-32766,-32766,-32766,-32766,-32766,-32767,-32767,-32767,-32767,
        -32767,-32766, -195,-32766,-32766,  766, 1142, 1143, 1144, 1138,
         1137, 1136, 1145, 1139, 1140, 1141,  387,  388,  305,  271,
           54,  390,  770,  771,  772,  773,  432,  846,  433,-32766,
        -32766,-32766,  480,  481,  297,  827,  774,  775,  776,  777,
          778,  779,  780,  781,  782,  783,  803,  575,  804,  805,
          806,  807,  795,  796,  352,  353,  798,  799,  784,  785,
          786,  788,  789,  790,  363,  830,  831,  832,  833,  834,
          576, -194,  305,  849,  791,  792,  577,  578,    5,  815,
          813,  814,  826,  810,  811, 1310,    3,  579,  580,  809,
          581,  582,  583,  584, -581,  585,  586,  757,  756,  109,
          110,  111,  812,  587,  588,  626,  140,  495,  134,  135,
          136,  574,  137,  138, 1081,  763,  764,  765,  139,   41,
        -32766,   29, 1043, 1038, 1037, 1036, 1042, 1039, 1040, 1041,
        -32766,-32766,-32766, -628, 1397, -628, 1092, 1398,  243, -625,
         1283, -625, -338,  757,  756, 1055,   87,-32766,-32766,-32766,
          335,-32766,  954,-32766,-32766,-32766,-32766,-32766,-32766,-32766,
         -195, -581, -581,  766,-32766,-32766,-32766,  847,-32766,  296,
        -32766,-32766,-32766,-32766,-32766, 1368,  429,  271,   54,  390,
          770,  771,  772,  773,   38,-32766,  433,-32766,-32766,-32766,
        -32766, -581,  620,  827,  774,  775,  776,  777,  778,  779,
          780,  781,  782,  783,  803,  575,  804,  805,  806,  807,
          795,  796,  352,  353,  798,  799,  784,  785,  786,  788,
          789,  790,  363,  830,  831,  832,  833,  834,  576, -194,
         -579,  141,  791,  792,  577,  578,  848,  815,  813,  814,
          826,  810,  811,  433,  302,  579,  580,  809,  581,  582,
          583,  584,  145,  585,  586,  838,  335,  469,  470,  471,
          812,  587,  588,  840,  140,  843,  134,  135,  136,  574,
          137,  138, 1079,  763,  764,  765,  139,   41, 1142, 1143,
         1144, 1138, 1137, 1136, 1145, 1139, 1140, 1141,  149,  242,
         -275,-32766,-32766,-32766, 1092,   27, 1283, -579, -579, 1078,
          256,  757,  756,-32767,-32767,-32767,-32767,  107,  108,  109,
          110,  111,-32766, -579,-32766,-32766,-32766,  316,  500,  737,
         1131,  766, 1285, 1284, 1286, -585, 1372, -579, -382,  293,
         -382, 1117,  429, 1005, 1371,  271,   54,  390,  770,  771,
          772,  773,  146,  842,  433,  844,  335,  757,  756,   52,
          724,  827,  774,  775,  776,  777,  778,  779,  780,  781,
          782,  783,  803,  575,  804,  805,  806,  807,  795,  796,
          352,  353,  798,  799,  784,  785,  786,  788,  789,  790,
          363,  830,  831,  832,  833,  834,  576, -577,  320, -578,
          791,  792,  577,  578, -576,  815,  813,  814,  826,  810,
          811, 1094,  332,  579,  580,  809,  581,  582,  583,  584,
          -85,  585,  586,  958,  957, 1052,  306,  307,  812,  587,
          588,  838,  140,  570,  134,  135,  136,  574,  137,  138,
         1083,  763,  764,  765,  139,   41,  348,  112,  113,  114,
         1055,  281,-32766,-32766,-32766, 1283,  131,-32766,-32766,-32766,
          349, 1283, 1092,  115, -577, -577, -578, -578,-32766,  757,
          756, -576, -576,  956,  289, 1006,  974,  975,-32766, 1055,
         -577,  976, -578,-32766,-32766,-32766,  -85, -576,  132,  766,
          970,  429, -584, 1055, -577,  377, -578,  429, 1322, -583,
          381, -576,  397,  271,   54,  390,  770,  771,  772,  773,
         1116,  399,  433,   10,  749,  451,  875,  296,  876,  827,
          774,  775,  776,  777,  778,  779,  780,  781,  782,  783,
          803,  575,  804,  805,  806,  807,  795,  796,  352,  353,
          798,  799,  784,  785,  786,  788,  789,  790,  363,  830,
          831,  832,  833,  834,  576,  -50,  669,   23,  791,  792,
          577,  578,-32766,  815,  813,  814,  826,  810,  811,  452,
         -575,  579,  580,  809,  581,  582,  583,  584,  847,  585,
          586, 1387,   88,   89,   90,  144,  812,  587,  588,  453,
          140,  787,  758,  759,  760,  761,  762,  153,  763,  764,
          765,  800,  801,   40, 1283,   91,   92,   93,   94,   95,
           96,   97,   98,   99,  100,  101,  102,  103,  104,  105,
          106,  107,  108,  109,  110,  111,  112,  113,  114, 1052,
          281,-32766, 1283,  603, 1283,  389,  388, -575, -575, -619,
          429, -619,  115,  688,  689,  432,  766,   39,  253,  152,
          415,  385,  386, -575, 1055,-32766,  297, 1290,  660,  661,
          767,  768,  769,  770,  771,  772,  773, -575,  429,  836,
          429,  391,  392,   53,  454,  853,  827,  774,  775,  776,
          777,  778,  779,  780,  781,  782,  783,  803,  825,  804,
          805,  806,  807,  795,  796,  797,  824,  798,  799,  784,
          785,  786,  788,  789,  790,  829,  830,  831,  832,  833,
          834,  835,  154,  156,  157,  791,  792,  793,  794, 1283,
          815,  813,  814,  826,  810,  811,  158,  -78,  802,  808,
          809,  816,  817,  819,  818,  293,  820,  821,  160,  847,
          308,  309,-32766,  812,  823,  822,   55,   56,   57,   58,
          526,   59,   60,  -58,   36, 1281,  380,   61,   62,  -57,
           63,  -87,   31,  272,  129,  130,  142, 1055,  143,  148,
          133,  161,  162,  163,  847,  164,  757,  756, 1314, 1054,
          165, -309,  -84,  281, 1283,  702,  115,  698,  150,  -78,
          847,  296,  -73,  -72,  -71,   64,   65,-32766, 1285, 1284,
         1286,   66,  -70,   67,  250,  251,   68,   69,   70,   71,
           72,   73,   74,   75, 1276,   31,  272,   48,  449, 1283,
          429,  703,   80, 1316, 1317,  528,  -69,  847,  335, 1052,
          -68, 1314,  542,  -67, 1302, 1303, 1304, 1305, 1307, 1299,
         1300,  -66,  -65,  933,  534,  704,  705, 1306, 1301,  -46,
          -18,  384,  383,   42, 1055,  429,  280,   78,  290,  738,
          741,  347,  331,  335, 1285, 1284, 1286, 1276,  932,    2,
          289,  151,  294,  538,  539,  295, -305,  285,  289,  286,
          291,  292,  341,  838,  541,  542,  298, 1302, 1303, 1304,
         1305, 1307, 1299, 1300,  304,  299,  713,   79,  950, 1149,
         1306, 1301,  590, 1399, 1285, 1284, 1286,  305,   -4,  933,
           76,-32766,   13,  670,  330,  331,  335,  527, -154, -154,
         -154,  477,  715,  313,  971,  691,  310,  923,  675,  319,
           46,   22,  529, -154,  530, -154,  531, -154,  532, -154,
          311,  533, 1321, -541,  596,  505,   49,   50,  455,  382,
          676,  692,   51,  535,-32766, 1323,  952,  624,  375, -531,
          974,  975, -613,  305,  933,  536,  658,  846,    0,    0,
          537, 1311,    0,  909,  970, -110, -110, -110, -278,    0,
            0,    0,    0,  527,   44,    0,   11,   30,    0, 1290,
            0,    0,  379,  923,    0,    0,   46,   22,  529,   45,
          530,    0,  531,    0,  532,    0,  935,  533,    0,    0,
          722, -154,   49,   50,  455,  382,  858,  445,   51,  535,
          -16, 1338,  303, 1356,  375,  746,  974,  975,  747,  866,
          914,  536, 1015,  992,  999,  933,  537,  989,  527,  540,
          970, -110, -110, -110, 1000,  912,  987, 1120,  923, 1123,
         1124,   46,   22,  529, 1121,  530, 1122,  531, 1128,  532,
         1390,  663,  533,   21, -253, -253, -253,   49,   50,  455,
          382,  847,  935,   51,  535, -612,  722,   -4, -611,  375,
         -585,  974,  975, -584, -583, -582,  536, -525,    1,   32,
           33,  537,   43,   47,  909,  970, -110, -110, -110,   77,
           81,   82,   83,   84,   85,   86, -110, -110,  147,  527,
         1115, -110,  155,  159,  248,  337,  364,  365,  366,  923,
         -110,  367,   46,   22,  529,  368,  530,  935,  531,-32766,
          532,  722, -253,  533,  369, -252, -252, -252,   49,   50,
          455,  382,  370,  371,   51,  535,  372,  373,  374,  376,
          375,  305,  974,  975,   80,  757,  756,  536,  446,  569,
          335, -276,  537, -275, 1290,  909,  970, -110, -110, -110,
           35,  116,  117,  118,  119,  120,  121,  122,  123,  124,
          125,  126,  127,  128,   15,   16,   17,   18,   31,  273,
           20,  413,  496,  497,  504,  507,  508,  509,  935,  510,
          847,   37,  722, -252, 1314,  514,  515,  516,  524,  601,
          933, -110,  708, 1191, 1193, 1231, -110, 1312, -110, 1082,
         1080, 1061, 1271,  312, -575, 1057, -110, -110, -110, -110,
         -110, -110, -110, -110, -110, -110, -110, -280, -102,   14,
         1276,  727,   19,   24,  302,  412,  847,  615,  621,  649,
          714, 1235, 1289, 1232,  933, 1369,  414,  541,  542,  329,
         1302, 1303, 1304, 1305, 1307, 1299, 1300,  378,  723,  726,
          730,  731,  733, 1306, 1301,  734,  735, 1315, -357,  736,
          740, -110, -110,   78,  527,  728, -110,  933,  331,  335,
          725, -575, -575,  418,  923, -110,  743,   46,   22,  529,
          910,  530, 1394,  531,-32766,  532, 1396, -575,  533,  869,
          868,  964, 1007,   49,   50,  455, 1395,  963,  729,   51,
          535, -575, 1249,  961,  962,  375,  305,  965,  527,   80,
         1264,  933,  335,  943,  953,  335,  941,  537,  923,  997,
          998,   46,   22,  529,  647,  530, 1393,  531, 1350,  532,
         1339, 1357,  533, 1366,    0,    0,    0,   49,   50,  455,
            0,  527,  732,   51,  535,    0,    0,    0,  933,  375,
            0,  923,    0,  935,   46,   22,  529,  722,  530,    0,
          531,  537,  532,    0,    0,  533,    0,    0,    0,    0,
           49,   50,  455,    0,    0,    0,   51,  535,    0,  739,
            0,    0,  375,    0,    0,  527,    0,    0,    0,    0,
            0,    0,  933,    0,  537,  923,    0,  935,   46,   22,
          529,  722,  530,    0,  531,    0,  532,    0,    0,  533,
            0,    0,    0,    0,   49,   50,  455,    0,    0,    0,
           51,  535,  527,    0,    0,    0,  375,    0,    0,    0,
          991,    0,  923,    0,  722,   46,   22,  529,  537,  530,
            0,  531,    0,  532,    0,    0,  533,    0,   31,  273,
            0,   49,   50,  455,    0,    0,    0,   51,  535,    0,
          847,    0,    0,  375, 1314,    0,  527,    0,    0,    0,
            0,    0,    0,    0,  935,  537,  923,    0,  722,   46,
           22,  529,    0,  530,    0,  531,    0,  532,    0,    0,
          533,    0,    0,    0,    0,   49,   50,  455,    0,    0,
         1276,   51,  535,    0,    0,    0,    0,  375,    0,    0,
            0,  935,    0,    0,    0,  722,    0,    0,  542,  537,
         1302, 1303, 1304, 1305, 1307, 1299, 1300,    0,    0,    0,
            0,    0,    0, 1306, 1301,    0,    0,    0,    0,    0,
            0,    0,    0,   78,    0,    0,    0,    0,  331,  335,
            0,    0,    0,    0,    0,  935,    0,    0,    0,  722
    );

    protected array $actionCheck = array(
            3,    4,    5,    6,    7,    8,    1,   10,   11,   12,
           13,   14,  107,  108,  109,   71,   10,   11,   12,    1,
           81,   32,  117,    0,  107,    1,  109,    9,   31,    1,
           10,   11,   12,    9,    9,   38,   39,   31,    9,   33,
           34,   35,   36,   37,   38,   39,   40,   41,   42,   43,
           44,   31,    9,   33,   34,   58,  117,  118,  119,  120,
          121,  122,  123,  124,  125,  126,  107,  108,  163,   72,
           73,   74,   75,   76,   77,   78,  117,  160,   81,   10,
           11,   12,  138,  139,   31,   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,    9,  163,    1,  127,  128,  129,  130,    9,  132,
          133,  134,  135,  136,  137,    1,    9,  140,  141,  142,
          143,  144,  145,  146,   71,  148,  149,   38,   39,   51,
           52,   53,  155,  156,  157,   52,  159,  168,    3,    4,
            5,    6,    7,    8,  167,   10,   11,   12,   13,   14,
          117,    9,  119,  120,  121,  122,  123,  124,  125,  126,
           10,   11,   12,  165,   81,  167,   31,   84,   15,  165,
           81,  167,  167,   38,   39,  142,  168,   10,   11,   12,
          172,   31,    1,   33,   34,   35,   36,   37,   38,   39,
          167,  138,  139,   58,   10,   11,   12,   83,   31,  166,
           33,   34,   35,   36,   37,    1,  117,   72,   73,   74,
           75,   76,   77,   78,    9,   31,   81,   33,   34,   35,
           36,  168,    1,   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,  167,
           71,    9,  127,  128,  129,  130,  164,  132,  133,  134,
          135,  136,  137,   81,  167,  140,  141,  142,  143,  144,
          145,  146,  168,  148,  149,   81,  172,  133,  134,  135,
          155,  156,  157,   81,  159,   81,    3,    4,    5,    6,
            7,    8,  167,   10,   11,   12,   13,   14,  117,  118,
          119,  120,  121,  122,  123,  124,  125,  126,    9,   98,
          167,   10,   11,   12,   31,  102,   81,  138,  139,    1,
            9,   38,   39,   45,   46,   47,   48,   49,   50,   51,
           52,   53,   31,  154,   33,   34,   35,    9,  103,  168,
          127,   58,  160,  161,  162,  166,    1,  168,  107,   31,
          109,  169,  117,   32,    9,   72,   73,   74,   75,   76,
           77,   78,  168,  161,   81,  161,  172,   38,   39,   71,
          168,   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,   71,    9,   71,
          127,  128,  129,  130,   71,  132,  133,  134,  135,  136,
          137,   31,    9,  140,  141,  142,  143,  144,  145,  146,
           32,  148,  149,   73,   74,  117,  138,  139,  155,  156,
          157,   81,  159,   86,    3,    4,    5,    6,    7,    8,
          167,   10,   11,   12,   13,   14,    9,   54,   55,   56,
          142,   58,   10,   11,  117,   81,  168,   10,   11,   12,
            9,   81,   31,   70,  138,  139,  138,  139,  117,   38,
           39,  138,  139,  123,  166,  164,  118,  119,   31,  142,
          154,  123,  154,   10,   11,   12,   98,  154,   15,   58,
          132,  117,  166,  142,  168,    9,  168,  117,  151,  166,
            9,  168,    9,   72,   73,   74,   75,   76,   77,   78,
          164,  107,   81,  109,  168,    9,  107,  166,  109,   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,   32,   76,   77,  127,  128,
          129,  130,   10,  132,  133,  134,  135,  136,  137,    9,
           71,  140,  141,  142,  143,  144,  145,  146,   83,  148,
          149,   86,   10,   11,   12,   32,  155,  156,  157,    9,
          159,    3,    4,    5,    6,    7,    8,   15,   10,   11,
           12,   13,   14,   31,   81,   33,   34,   35,   36,   37,
           38,   39,   40,   41,   42,   43,   44,   45,   46,   47,
           48,   49,   50,   51,   52,   53,   54,   55,   56,  117,
           58,  117,   81,   82,   81,  107,  108,  138,  139,  165,
          117,  167,   70,   76,   77,  117,   58,  152,  153,  102,
          103,  107,  108,  154,  142,  141,   31,    1,  112,  113,
           72,   73,   74,   75,   76,   77,   78,  168,  117,   81,
          117,  107,  108,   71,    9,    9,   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,   15,   15,   15,  127,  128,  129,  130,   81,
          132,  133,  134,  135,  136,  137,   15,   17,  140,  141,
          142,  143,  144,  145,  146,   31,  148,  149,   15,   83,
          138,  139,  117,  155,  156,  157,    2,    3,    4,    5,
            6,    7,    8,   17,   15,  117,  154,   13,   14,   17,
           16,   32,   71,   72,   17,   17,   17,  142,   17,   17,
          168,   17,   17,   17,   83,   17,   38,   39,   87,  141,
           17,   36,   32,   58,   81,   81,   70,   78,   71,   32,
           83,  166,   32,   32,   32,   51,   52,  141,  160,  161,
          162,   57,   32,   59,   60,   61,   62,   63,   64,   65,
           66,   67,   68,   69,  123,   71,   72,   73,   74,   81,
          117,  117,  166,   79,   80,   81,   32,   83,  172,  117,
           32,   87,  141,   32,  143,  144,  145,  146,  147,  148,
          149,   32,   32,    1,  100,  141,  142,  156,  157,   32,
           32,  107,  108,   32,  142,  117,   32,  166,   32,   32,
           32,  117,  171,  172,  160,  161,  162,  123,   32,  166,
          166,   32,   38,  129,  130,   38,   36,   36,  166,   36,
           36,   36,   36,   81,  140,  141,   38,  143,  144,  145,
          146,  147,  148,  149,  150,   38,   81,  159,   39,   83,
          156,  157,   90,   84,  160,  161,  162,  163,    0,    1,
          166,   86,   98,   91,  170,  171,  172,   75,   76,   77,
           78,   98,   93,  115,  132,   95,  136,   85,   97,  136,
           88,   89,   90,   91,   92,   93,   94,   95,   96,   97,
          137,   99,  151,  154,  158,   98,  104,  105,  106,  107,
          101,  101,  110,  111,  141,  151,  159,  158,  116,  154,
          118,  119,  166,  163,    1,  123,  114,  160,   -1,   -1,
          128,  165,   -1,  131,  132,  133,  134,  135,  167,   -1,
           -1,   -1,   -1,   75,  164,   -1,  154,  154,   -1,    1,
           -1,   -1,  154,   85,   -1,   -1,   88,   89,   90,  164,
           92,   -1,   94,   -1,   96,   -1,  164,   99,   -1,   -1,
          168,  169,  104,  105,  106,  107,  165,  109,  110,  111,
           32,  165,  114,  165,  116,  164,  118,  119,  164,  164,
          164,  123,  164,  164,  164,    1,  128,  164,   75,  131,
          132,  133,  134,  135,  164,  164,  164,  164,   85,  164,
          164,   88,   89,   90,  164,   92,  164,   94,  164,   96,
          165,  165,   99,  155,  101,  102,  103,  104,  105,  106,
          107,   83,  164,  110,  111,  166,  168,  169,  166,  116,
          166,  118,  119,  166,  166,  166,  123,  166,  166,  166,
          166,  128,  166,  166,  131,  132,  133,  134,  135,  166,
          166,  166,  166,  166,  166,  166,  118,  119,  166,   75,
            1,  123,  166,  166,  166,  166,  166,  166,  166,   85,
          132,  166,   88,   89,   90,  166,   92,  164,   94,  141,
           96,  168,  169,   99,  166,  101,  102,  103,  104,  105,
          106,  107,  166,  166,  110,  111,  166,  166,  166,  166,
          116,  163,  118,  119,  166,   38,   39,  123,  166,  166,
          172,  167,  128,  167,    1,  131,  132,  133,  134,  135,
           17,   18,   19,   20,   21,   22,   23,   24,   25,   26,
           27,   28,   29,   30,  167,  167,  167,  167,   71,   72,
          167,  167,  167,  167,  167,  167,  167,  167,  164,  167,
           83,  168,  168,  169,   87,  167,  167,  167,  167,  167,
            1,  102,  167,   60,   61,  167,  107,  167,  109,  167,
          167,  167,  167,  114,   71,  167,  117,  118,  119,  120,
          121,  122,  123,  124,  125,  126,  127,  167,  167,  167,
          123,   32,  167,  167,  167,  167,   83,  167,  167,  167,
          167,  167,  167,  167,    1,  167,  169,  140,  141,  168,
          143,  144,  145,  146,  147,  148,  149,  168,  168,  168,
          168,  168,  168,  156,  157,  168,  168,  171,  169,  168,
          168,  118,  119,  166,   75,   32,  123,    1,  171,  172,
          168,  138,  139,  169,   85,  132,  169,   88,   89,   90,
          169,   92,  169,   94,  141,   96,  169,  154,   99,  169,
          169,  169,  169,  104,  105,  106,  169,  169,   32,  110,
          111,  168,  170,  169,  169,  116,  163,  169,   75,  166,
          169,    1,  172,  169,  169,  172,  169,  128,   85,  169,
          169,   88,   89,   90,  169,   92,  169,   94,  169,   96,
          169,  169,   99,  169,   -1,   -1,   -1,  104,  105,  106,
           -1,   75,   32,  110,  111,   -1,   -1,   -1,    1,  116,
           -1,   85,   -1,  164,   88,   89,   90,  168,   92,   -1,
           94,  128,   96,   -1,   -1,   99,   -1,   -1,   -1,   -1,
          104,  105,  106,   -1,   -1,   -1,  110,  111,   -1,   32,
           -1,   -1,  116,   -1,   -1,   75,   -1,   -1,   -1,   -1,
           -1,   -1,    1,   -1,  128,   85,   -1,  164,   88,   89,
           90,  168,   92,   -1,   94,   -1,   96,   -1,   -1,   99,
           -1,   -1,   -1,   -1,  104,  105,  106,   -1,   -1,   -1,
          110,  111,   75,   -1,   -1,   -1,  116,   -1,   -1,   -1,
          164,   -1,   85,   -1,  168,   88,   89,   90,  128,   92,
           -1,   94,   -1,   96,   -1,   -1,   99,   -1,   71,   72,
           -1,  104,  105,  106,   -1,   -1,   -1,  110,  111,   -1,
           83,   -1,   -1,  116,   87,   -1,   75,   -1,   -1,   -1,
           -1,   -1,   -1,   -1,  164,  128,   85,   -1,  168,   88,
           89,   90,   -1,   92,   -1,   94,   -1,   96,   -1,   -1,
           99,   -1,   -1,   -1,   -1,  104,  105,  106,   -1,   -1,
          123,  110,  111,   -1,   -1,   -1,   -1,  116,   -1,   -1,
           -1,  164,   -1,   -1,   -1,  168,   -1,   -1,  141,  128,
          143,  144,  145,  146,  147,  148,  149,   -1,   -1,   -1,
           -1,   -1,   -1,  156,  157,   -1,   -1,   -1,   -1,   -1,
           -1,   -1,   -1,  166,   -1,   -1,   -1,   -1,  171,  172,
           -1,   -1,   -1,   -1,   -1,  164,   -1,   -1,   -1,  168
    );

    protected array $actionBase = array(
            0,  155,   -3,  313,  471,  471,  882,  948, 1003, 1074,
          744,  134,  212,  -61, 1293, 1370, 1370, 1407, 1370, 1249,
         1326,  232, 1451, 1451, 1451,  932,  855,  628,  628,  855,
          628,  778,  778,  778,  778,  109,  109,  265,  265,  591,
          593,  563,  420,  414,  414,  414,  414,  414,  743,  414,
          414,  414,  414,  414,  743,  414,  414,  414,  414,  414,
          414,  414,  414,  414,  414,  414,  414,  414,  414,  414,
          414,  414,  414,  414,  414,  414,  414,  414,  414,  414,
          414,  414,  414,  414,  414,  414,  414,  414,  414,  414,
          414,  414,  414,  414,  414,  414,  414,  414,  414,  414,
          414,  414,  414,  414,  414,  414,  414,  414,  414,  414,
          414,  414,  414,  414,  414,  414,  414,  414,  414,  414,
          414,  414,  414,  414,  414,  414,  414,  414,  414,  414,
          414,  414,  414,  414,  414,  414,  414,  414,  414,  414,
          414,  414,  414,  414,  414,  414,  414,  414,  414,  414,
          414,  414,  414,  414,  414,  414,  414,  414,  414,  414,
          414,  414,  414,  414,  414,  414,  122,  351,  127,  241,
          779, 1117, 1124, 1120, 1125, 1115, 1112, 1118, 1121, 1126,
         1217, 1219,  879, 1221, 1222, 1215, 1224, 1122,  936, 1116,
         1123,  612,  612,  612,  612,  612,  612,  612,  612,  612,
          612,  612,  612,  612,  612,  612,  612,  612,  612,  612,
          612,  612,  612,  612,  612,  612,  612,  612,  612,  592,
          513,  482,   69,   69,   69,   69,   69,   69,   69,   69,
           69,   69,   69,   69,   69,   69,   69,   69,   69,   69,
           69,   69, 1157, 1157,  487,  487,  487,   20, 1437,  731,
         1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,  331,  204,
         1193,  187,  170,  170,    6,    6,    6,    6,    6, 1149,
           53, 1028, 1203, 1203,  308,  308,  308,  308,  243,  271,
          348,  696,  -95,  665,  -41,  752,  752,   98,   98,  552,
          552,  391,  391,  552,  552,  552,  377,  377,  377,  377,
          209,  366,  373,  -83,  387,  853,  224,  224,  224,  224,
          853,  853,  853,  853,  844, 1146,  853,  990, 1008,  853,
          853,  368,  539,  539,  642,  433,  433,  433,  539,  449,
          535,  535,  449,  398,  535,   28,  103,  554,  832,  568,
          514,  554,   73,  328,   24,   18,  847,  584,  847, 1111,
          865,  865,  857,  800,  934, 1162, 1128,  889, 1210,  890,
         1211,  174,  -56,  797, 1110, 1110, 1110, 1110, 1110, 1110,
         1110, 1110, 1110, 1110, 1110, 1200,  359, 1111,  234, 1200,
         1200, 1200,  359,  359,  359,  359,  359,  359,  359,  359,
          858,  359,  359,  586,  234,  520,  607,  234,  886,  359,
          845,  122,  122,  122,  122,  122,  122,  122,  122,  122,
          122,  122,  -11,  122,  122,  351,  201,  201,  122,  386,
            5,  201,  201,  201,  201,  122,  122,  122,  122,  584,
          765,  826,  604,  428,  839,  112,  765,  765,  765,   25,
          173,   43,  785,  880,  444,  842,  842,  842,  856,  962,
          962,  842,  747,  842,  856,  842,  842,  962,  962,  840,
          962,  272,  546,  477,  531,  600,  962,  358,  842,  842,
          842,  842,  833,  962,   29,  119,  620,  842,  341,  329,
          842,  842,  833,  830,  866,  843,  962,  962,  962,  833,
          526,  843,  843,  843,  901,  904,  892,  864,  443,  429,
          706,  225,  899,  864,  864,  842,  533,  892,  864,  892,
          864,  837,  864,  864,  864,  892,  864,  747,  491,  864,
          794,  795,  705,  162,  864,   23,  973,  974,  769,  975,
          966,  976, 1032,  977,  978, 1140,  961,  988,  967,  979,
         1033,  964,  963,  876,  787,  788,  872,  829,  959,  756,
          756,  756,  954,  957,  756,  756,  756,  756,  756,  756,
          756,  756,  787,  846,  878,  852,  991,  789,  791, 1082,
          831, 1171, 1192,  990,  973,  978,  790,  967,  979,  964,
          963,  850,  849,  838,  841,  834,  810,  801,  802,  861,
          982,  860,  792, 1063,  992, 1167, 1131,  995,  999, 1064,
         1088,  905, 1090, 1173,  757, 1177, 1180,  891, 1016, 1141,
          756,  952,  836,  896, 1008,  958,  787,  898, 1092, 1093,
         1057, 1073, 1065, 1066, 1139,  863,  859,  935, 1181, 1017,
         1020, 1021, 1142, 1143,  875, 1058,  851, 1067,  887, 1127,
         1068, 1069, 1070, 1072, 1144, 1182, 1147,  949, 1148,  906,
          862, 1034,  871, 1183,  622,  884,  885,  897, 1023,  737,
          989, 1151, 1164, 1187, 1078, 1079, 1080, 1188, 1194,  986,
          908, 1059,  870, 1060, 1036,  909,  910,  738,  888, 1094,
          881,  883,  877,  739,  751, 1195, 1198, 1201,  987,  867,
          749,  913,  920, 1095,  874, 1098, 1204,  763,  921, 1205,
         1085,  796,  798,  750,  782,  776,  803,  869, 1152,  873,
          848,  854, 1022,  798,  868,  922, 1207,  923,  925,  926,
         1081,  930,    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,  784,  784,  784,  784,  784,  784,  784,  784,
          784,  628,  628,  628,  628,  784,  784,  784,  784,  784,
          784,  784,  628,  784,  784,  784,  628,  628,    0,    0,
          628,    0,  784,  784,  784,  784,  784,  784,  784,  784,
          784,  784,  784,  784,  784,  784,  784,  784,  784,  784,
          784,  784,  784,  784,  784,  784,  784,  784,  784,  784,
          784,  784,  784,  784,  784,  784,  784,  784,  784,  784,
          784,  784,  784,  784,  784,  784,  784,  784,  784,  784,
          784,  784,  784,  784,  784,  784,  784,  784,  784,  784,
          784,  784,  784,  784,  784,  784,  784,  784,  784,  784,
          784,  784,  784,  784,  784,  784,  784,  784,  784,  784,
          784,  784,  784,  784,  784,  784,  784,  784,  784,  784,
          784,  784,  784,  784,  784,  784,  784,  784,  784,  784,
          784,  784,  784,  784,  784,  784,  784,  784,  784,  784,
          784,  784,  784,  784,  784,  784,  784,  784,  784,  784,
          784,  784,  784,  784,  784,  784,  784,  784,  784,  784,
          784,  784,  784,  784,  784,  784,  784,  612,  612,  612,
          612,  612,  612,  612,  612,  612,  612,  612,  612,  612,
          612,  612,  612,  612,  612,  612,  612,  612,  612,  612,
          612,  612,    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,
          612,  612,  612,  612,  612,  612,  612,  612,  612,  612,
          612,  612,  612,  612,  612,  612,  612,  612,  612,  612,
          612,  612,  612,  678,  678,  612,  612,  612,  612,  678,
          678,  678,  678,  678,  678,  678,  678,  678,  678,  612,
          612,    0,  612,  612,  612,  612,  612,  612,  612,  612,
          840,  678,  678,  678,  678,  433,  433,  433,  433,  211,
          211,  678,  678,  398,  678,  398,  678,  678,  433,  433,
          678,  678,  678,  678,  678,  678,  678,  678,  678,  678,
          678,    0,    0,    0,  234,  535,  678,  747,  747,  747,
          747,  678,  678,  678,  678,  535,  535,  678,  390,  390,
          678,  678,    0,    0,    0,    0,    0,    0,    0,    0,
          234,    0,    0,  234,    0,    0,  747,  747,  678,  398,
          840,  375,  678,    0,    0,    0,    0,  234,  747,  234,
          359,  535,  535,  359,  359,  201,  122,  375,  587,  587,
          587,  587,    0,    0,  584,  840,  840,  840,  840,  840,
          840,  840,  840,  840,  840,  840,  747,    0,  840,    0,
          747,  747,  747,    0,    0,    0,    0,    0,    0,    0,
            0,  962,    0,    0,    0,    0,    0,    0,    0,  747,
            0,  962,    0,    0,    0,    0,    0,    0,    0,    0,
            0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
            0,  747,    0,    0,    0,    0,    0,    0,    0,    0,
            0,  756,  863,    0,    0,  863,    0,  756,  756,  756,
            0,    0,    0,  888,  874
    );

    protected array $actionDefault = array(
            3,32767,32767,32767,  102,  102,32767,32767,32767,32767,
        32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
        32767,32767,32767,32767,32767,32767,32767,32767,32767,  100,
        32767,  631,  631,  631,  631,32767,32767,  257,  102,32767,
        32767,  500,32767,  415,  415,  415,32767,32767,32767,  573,
          573,  573,  573,  573,   17,32767,32767,32767,32767,32767,
        32767,32767,  500,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,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,   36,    7,    8,   10,   11,   49,
          340,  100,32767,32767,32767,32767,32767,32767,32767,  102,
        32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
        32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
          624,32767,32767,32767,32767,32767,32767,32767,32767,32767,
        32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
        32767,  403,  494,  504,  482,  483,  485,  486,  414,  574,
          630,  344,  627,  339,  413,  146,  354,  342,  245,  261,
          505,  262,  506,  509,  510,  218,  400,  150,  151,  446,
          501,  448,  499,  503,  447,  420,  427,  428,  429,  430,
          431,  432,  433,  434,  435,  436,  437,  438,  439,  418,
          419,  502,32767,32767,  479,  478,  477,  444,32767,32767,
        32767,32767,32767,32767,32767,32767,  102,32767,  445,  449,
          417,  452,  450,  451,  468,  469,  466,  467,  470,32767,
          323,32767,32767,32767,  471,  472,  473,  474,  381,  379,
        32767,32767,  111,  323,  111,32767,32767,  459,  460,32767,
        32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
          517,  567,  476,32767,32767,32767,32767,32767,32767,32767,
        32767,32767,32767,32767,32767,32767,  102,32767,32767,32767,
          100,  569,  441,  443,  537,  454,  455,  453,  421,32767,
          542,32767,  102,32767,  544,32767,32767,32767,32767,32767,
        32767,32767,  568,32767,  575,  575,32767,  530,  100,  196,
        32767,  543,  196,  196,32767,32767,32767,32767,32767,32767,
        32767,32767,  638,  530,  110,  110,  110,  110,  110,  110,
          110,  110,  110,  110,  110,32767,  196,  110,32767,32767,
        32767,  100,  196,  196,  196,  196,  196,  196,  196,  196,
          545,  196,  196,  191,32767,  271,  273,  102,  592,  196,
          547,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,  530,
          464,  139,32767,  532,  139,  575,  456,  457,  458,  575,
          575,  575,  319,  296,32767,32767,32767,32767,32767,  545,
          545,  100,  100,  100,  100,32767,32767,32767,32767,  111,
          516,   99,   99,   99,   99,   99,  103,  101,32767,32767,
        32767,32767,  226,32767,  101,  101,   99,32767,  101,  101,
        32767,32767,  226,  228,  215,  230,32767,  596,  597,  226,
          101,  230,  230,  230,  250,  250,  519,  325,  101,   99,
          101,  101,  198,  325,  325,32767,  101,  519,  325,  519,
          325,  200,  325,  325,  325,  519,  325,32767,  101,  325,
          217,  403,   99,   99,  325,32767,32767,32767,  532,32767,
        32767,32767,32767,32767,32767,32767,  225,32767,32767,32767,
        32767,32767,32767,32767,32767,  562,32767,  580,  594,  462,
          463,  465,  579,  577,  487,  488,  489,  490,  491,  492,
          493,  496,  626,32767,  536,32767,32767,32767,  353,32767,
          636,32767,32767,32767,    9,   74,  525,   42,   43,   51,
           57,  551,  552,  553,  554,  548,  549,  555,  550,32767,
        32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
        32767,32767,32767,  637,32767,  575,32767,32767,32767,32767,
          461,  557,  602,32767,32767,  576,  629,32767,32767,32767,
        32767,32767,32767,32767,32767,  139,32767,32767,32767,32767,
        32767,32767,32767,32767,32767,32767,  562,32767,  137,32767,
        32767,32767,32767,32767,32767,32767,32767,  558,32767,32767,
        32767,  575,32767,32767,32767,32767,  321,  318,32767,32767,
        32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
        32767,32767,32767,32767,  575,32767,32767,32767,32767,32767,
          298,32767,  315,32767,32767,32767,32767,32767,32767,32767,
        32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
        32767,  399,  532,  301,  303,  304,32767,32767,32767,32767,
          375,32767,32767,32767,32767,32767,32767,32767,32767,32767,
        32767,32767,  153,  153,    3,    3,  356,  153,  153,  153,
          356,  356,  153,  356,  356,  356,  153,  153,  153,  153,
          153,  153,  283,  186,  265,  268,  250,  250,  153,  367,
          153
    );

    protected array $goto = array(
          201,  168,  201,  201,  201, 1053,  926,  709,  927,  667,
          668,  595,  685,  686,  687,  745,  650,  652, 1085,  358,
          672,  634,  671,  718,  696,  699, 1025,  707,  716, 1021,
          170,  170,  170,  170,  225,  202,  198,  198,  180,  182,
          220,  207,  198,  198,  198,  198,  198, 1177,  199,  199,
          199,  199,  199, 1177,  192,  193,  194,  195,  196,  197,
          222,  220,  223,  549,  550,  430,  551,  554,  555,  556,
          557,  558,  559,  560,  561,  171,  172,  173,  200,  174,
          175,  176,  169,  177,  178,  179,  181,  219,  221,  224,
          244,  247,  258,  259,  261,  262,  263,  264,  265,  266,
          267,  268,  274,  275,  276,  277,  287,  288,  325,  326,
          327,  436,  437,  438,  610,  226,  227,  228,  229,  230,
          231,  232,  233,  234,  235,  236,  237,  238,  239,  240,
          183,  241,  184,  193,  194,  195,  196,  197,  222,  203,
          204,  205,  206,  245,  185,  186,  187,  208,  204,  188,
          246,  167,  209,  210,  189,  211,  212,  213,  190,  214,
          215,  191,  216,  217,  218,  284,  282,  284,  284,  867,
         1084, 1086, 1088,  612,  254,  254,  254,  254,  254,  440,
          674,  611, 1127, 1134, 1135,  435,  328,  322,  323,  344,
          605,  439,  345,  441,  651,  721,  491,  520,  712,  434,
         1125,  625,  845,  493,  252,  252,  252,  252,  249,  255,
          361,  361,  361,  361,  864,  922,  917,  918,  931,  873,
          919,  870,  920,  921,  871,  874,  362,  925,  878,  982,
          419,  717,  877,  442, 1059, 1058,  362,  362,  865, 1114,
         1109, 1110, 1111, 1258,  959,  845,  442,  845, 1259, 1262,
          960, 1263,  362,  362, 1060, 1060,  362,  839, 1400,  678,
         1071, 1067, 1068,  706,  428, 1053, 1282, 1282, 1282,  568,
          359,  360,  362,  362,  841, 1053, 1282,  990, 1053,  706,
         1053, 1053,  706,  350, 1053, 1053, 1053, 1053, 1053, 1053,
         1053, 1053, 1053, 1053, 1053,  906,  863,  906,  906,  899,
         1282,  403,  406,  613,  617, 1282, 1282, 1282, 1282,  351,
          350, 1282, 1062, 1063, 1282, 1282, 1365, 1365, 1365, 1365,
         1344,  573,  566,  473,  602, 1056, 1056,  955,  955,  694,
          967, 1226,  939, 1048, 1064, 1065,  940,  564,  564,  564,
         1014,  356,  521,  986,  860,  744,  860,  564,  565, 1023,
         1018,  317,  566,  573,  597,  598,  318,  608,  614, 1011,
          630,  631,  479,  479,    8,  512,    9,  513,   28,  334,
          315,  466,  479,  519,  568, 1373,  984,  984,  984,  984,
         1360, 1361,  466,  636,  636,  978,  985,  606,  628, 1313,
         1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1332,
         1332,  860,  468,  401,  468, 1332, 1332, 1332, 1332, 1332,
         1332, 1332, 1332, 1332, 1332,  257,  257,  623,  637,  640,
          641,  642,  643,  664,  665,  666,  720,  600,  459,  673,
          459,  459,  459, 1355, 1355, 1355,  552,  552, 1173, 1275,
         1077,  448,  552, 1355,  552,  552,  552,  552,  552,  552,
          552,  552,  695,  450,  857,  567,  592,  567,  488, 1358,
         1359,  567,  679,  592,  346,  404,  472,  629, 1367, 1367,
         1367, 1367,  886,  278,  973,  333,  333,  333,  482,  609,
          483,  484,  883,  562,  562,  562,  562,  891,  616,  410,
         1391, 1392, 1329, 1329, 1273,  881, 1033, 1351, 1329, 1329,
         1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329,  644,  646,
          648,  893, 1098,  748,  880,  889, 1277,  411,  489, 1102,
          895,  860,    0,  459,  459,  459,  459,  459,  459,  459,
          459,  459,  459,  459,  995, 1044,  459, 1100,  553,  553,
         1148, 1353, 1353, 1100,  553,  553,  553,  553,  553,  553,
          553,  553,  553,  553,  618,  619,  416,  417,  944, 1163,
            0,  683,    0,  684,    0,  421,  422,  423,    0,  697,
         1030,    0,  424, 1278, 1279,    0, 1265,  354,  885,    0,
          677, 1009,  855,    0,    0,    0,  879, 1383, 1383, 1265,
            0,  894,  882, 1097, 1101,    0,    0,    0, 1272,    0,
            0,    0, 1280, 1341, 1342,  993,    0, 1383,    0,    0,
            0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
            0,    0,    0, 1386, 1386,    0,    0,    0,  983,    0,
            0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
            0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
            0, 1146,  898,    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, 1028, 1028
    );

    protected array $gotoCheck = array(
           42,   42,   42,   42,   42,   73,   65,   73,   65,   86,
           86,   48,   86,   86,   86,   48,   48,   48,  130,   97,
           48,   56,   56,    9,   48,   48,   48,   48,   48,   48,
           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,   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,   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,   42,   42,   42,
           42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
           42,   42,   42,   42,   42,   23,   23,   23,   23,   15,
          129,  129,  129,  133,    5,    5,    5,    5,    5,   66,
           66,    8,    8,  147,  147,   66,   66,   66,   66,   66,
           66,   66,   66,   66,   66,    8,   84,    8,    8,   13,
            8,   13,   12,   84,    5,    5,    5,    5,    5,    5,
           24,   24,   24,   24,   26,   15,   15,   15,   15,   15,
           15,   15,   15,   15,   15,   15,   14,   15,   15,   93,
           93,   93,   15,  118,  119,  119,   14,   14,   27,   15,
           15,   15,   15,   79,   79,   12,  118,   12,   79,   79,
           79,   79,   14,   14,  118,  118,   14,    6,   14,  118,
          118,  118,  118,    7,   43,   73,   73,   73,   73,   14,
           97,   97,   14,   14,    7,   73,   73,   49,   73,    7,
           73,   73,    7,  176,   73,   73,   73,   73,   73,   73,
           73,   73,   73,   73,   73,   25,   25,   25,   25,   45,
           73,   59,   59,   59,   59,   73,   73,   73,   73,  176,
          176,   73,  120,  120,   73,   73,    9,    9,    9,    9,
           14,   76,   76,  158,  180,   89,   89,    9,    9,   89,
           89,  158,   73,   89,   89,   89,   73,   19,   19,   19,
           50,  187,   14,   50,   22,   50,   22,   19,   50,   50,
           50,   76,   76,   76,   76,   76,   76,   76,   76,  103,
           76,   76,  156,  156,   46,  162,   46,  162,   76,  177,
          177,   19,  156,  162,   14,  189,   19,   19,   19,   19,
          186,  186,   19,  108,  108,   19,   19,    2,    2,  108,
          108,  108,  108,  108,  108,  108,  108,  108,  108,  178,
          178,   22,   83,   62,   83,  178,  178,  178,  178,  178,
          178,  178,  178,  178,  178,    5,    5,   81,   81,   81,
           81,   81,   81,   81,   81,   81,   81,  104,   23,   64,
           23,   23,   23,  133,  133,  133,  164,  164,  157,   14,
          115,  113,  164,  133,  164,  164,  164,  164,  164,  164,
          164,  164,  117,   83,   18,    9,    9,    9,  184,  184,
          184,    9,  121,    9,   29,    9,    9,   80,  133,  133,
          133,  133,   39,   24,   92,   24,   24,   24,    9,    9,
            9,    9,   37,  107,  107,  107,  107,    9,  107,   28,
            9,    9,  179,  179,  168,   35,  110,  133,  179,  179,
          179,  179,  179,  179,  179,  179,  179,  179,   85,   85,
           85,   35,  132,   99,   35,    9,   20,   31,  159,  135,
           41,   22,   -1,   23,   23,   23,   23,   23,   23,   23,
           23,   23,   23,   23,   96,  114,   23,  133,  181,  181,
          150,  133,  133,  133,  181,  181,  181,  181,  181,  181,
          181,  181,  181,  181,   17,   17,   82,   82,   17,   17,
           -1,   82,   -1,   82,   -1,   82,   82,   82,   -1,   82,
           17,   -1,   82,   20,   20,   -1,   20,   82,   17,   -1,
           17,   17,   20,   -1,   -1,   -1,   17,  190,  190,   20,
           -1,   16,   16,   16,   16,   -1,   -1,   -1,   17,   -1,
           -1,   -1,   20,   20,   20,   16,   -1,  190,   -1,   -1,
           -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
           -1,   -1,   -1,  190,  190,   -1,   -1,   -1,   16,   -1,
           -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
           -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
           -1,   16,   16,   -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,  107,  107
    );

    protected array $gotoBase = array(
            0,    0, -337,    0,    0,  173,  244,  253,  170,   10,
            0,    0, -101, -147,  -78, -186,  129,   80,  138,   66,
          116,    0,   62,  159,  204,  289,  207,  231,  143,  161,
            0,   70,    0,    0,    0,  117,    0,  134,    0,  140,
            0,   69,   -1,  238,    0,  270, -384,    0, -712,  257,
          326,    0,    0,    0,    0,    0,  -23,    0,    0,  251,
            0,    0,  357,    0,  186,  -10,  -63,    0,    0,    0,
            0,    0,    0,   -5,    0,    0,  -31,    0,    0, -173,
          149,   52,   53,  120, -286,   17, -721,    0,    0,   40,
            0,    0,  136,  -82,    0,    0,   81, -476,    0,   98,
            0,    0,    0,  321,  380,    0,    0,  452,  141,    0,
          119,    0,    0,  158,   14,  160,    0,  163,  -37,  -51,
           21,  166,    0,    0,    0,    0,    0,    0,    0,  167,
           16,    0,  131,  162,    0,   67,    0,    0,    0,    0,
            0,    0,    0,    0,    0,    0,    0,  -95,    0,    0,
           86,    0,    0,    0,    0,    0,  325,  189,   50,   68,
            0,    0, -142,    0,  194,    0,    0,    0,  118,    0,
            0,    0,    0,    0,    0,    0,  -21,   39,  157,  250,
          292,  296,    0,    0,  151,    0,    1,  308,    0,  341,
          273,    0,    0
    );

    protected array $gotoDefault = array(
        -32768,  525,  752,    7,  753,  948,  828,  837,  589,  543,
          719,  355,  638,  431, 1349,  924, 1162,  607,  856, 1291,
         1297,  467,  859,  339,  742,  936,  907,  908,  407,  394,
          872,  405,  662,  639,  506,  892,  463,  884,  498,  887,
          462,  896,  166,  427,  523,  900,    6,  903,  571,  934,
          988,  395,  911,  396,  690,  913,  591,  915,  916,  402,
          408,  409, 1167,  599,  635,  928,  260,  593,  929,  393,
          930,  938,  398,  400,  700,  478,  517,  511,  420, 1129,
          594,  622,  659,  456,  485,  633,  645,  632,  492,  443,
          425,  338,  972,  980,  499,  476,  994,  357, 1002,  750,
         1175,  653,  501, 1010,  654, 1017, 1020,  544,  545,  490,
         1032,  270, 1035,  502, 1045,   26,  680, 1050, 1051,  681,
          655, 1073,  656,  682,  657, 1075,  475, 1176,  474, 1087,
         1096,  464, 1099, 1337,  465, 1103,  269, 1106,  283,  426,
          444, 1112, 1113,   12, 1119,  710,  711,   25,  279,  522,
         1147,  701,-32768,-32768,-32768,-32768,  461, 1174,  460, 1246,
         1248,  572,  503, 1266,  300, 1269,  693,  518, 1274,  457,
         1340,  458,  546,  486,  324,  547, 1384,  314,  342,  321,
          563,  301,  343,  548,  487, 1346, 1354,  340,   34, 1374,
         1385,  604,  627
    );

    protected array $ruleToNonTerminal = array(
            0,    1,    3,    3,    2,    5,    5,    6,    6,    6,
            6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
            6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
            6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
            6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
            6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
            6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
            6,    6,    6,    6,    6,    6,    6,    7,    7,    7,
            7,    7,    7,    7,    7,    8,    8,    9,   10,   11,
           11,   11,   12,   12,   13,   13,   14,   15,   15,   16,
           16,   17,   17,   18,   18,   21,   21,   22,   23,   23,
           24,   24,    4,    4,    4,    4,    4,    4,    4,    4,
            4,    4,    4,    4,   29,   29,   30,   30,   32,   34,
           34,   28,   36,   36,   33,   38,   38,   35,   35,   37,
           37,   39,   39,   31,   40,   40,   41,   43,   44,   44,
           45,   45,   46,   46,   48,   47,   47,   47,   47,   49,
           49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
           49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
           49,   49,   49,   25,   25,   50,   69,   69,   72,   72,
           71,   70,   70,   63,   75,   75,   76,   76,   77,   77,
           78,   78,   79,   79,   80,   80,   80,   80,   26,   26,
           27,   27,   27,   27,   27,   88,   88,   90,   90,   83,
           83,   91,   91,   92,   92,   92,   84,   84,   87,   87,
           85,   85,   93,   94,   94,   57,   57,   65,   65,   68,
           68,   68,   67,   95,   95,   96,   58,   58,   58,   58,
           97,   97,   98,   98,   99,   99,  100,  101,  101,  102,
          102,  103,  103,   55,   55,   51,   51,  105,   53,   53,
          106,   52,   52,   54,   54,   64,   64,   64,   64,   81,
           81,  109,  109,  111,  111,  112,  112,  112,  112,  112,
          112,  112,  112,  110,  110,  110,  115,  115,  115,  115,
           89,   89,  118,  118,  118,  119,  119,  116,  116,  120,
          120,  122,  122,  123,  123,  117,  124,  124,  121,  125,
          125,  125,  125,  113,  113,   82,   82,   82,   20,   20,
          127,  127,  127,  128,  128,  128,  126,  126,  130,  130,
          130,  130,  130,  130,  129,  129,   60,  131,  131,  132,
           61,  134,  134,  135,  135,  136,  136,   86,  137,  137,
          137,  137,  137,  137,  137,  142,  142,  143,  143,  144,
          144,  144,  144,  144,  145,  146,  146,  141,  141,  138,
          138,  140,  140,  148,  148,  147,  147,  147,  147,  147,
          147,  147,  147,  147,  147,  139,  149,  149,  151,  150,
          150,  152,  152,  114,  153,  153,  155,  155,  155,  154,
          154,   62,  104,  156,  156,   56,   56,   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,   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,   42,   42,   42,   42,   42,
           42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
           42,   42,   42,  163,  164,  164,  165,  157,  157,  162,
          162,  166,  167,  167,  168,  169,  170,  170,  170,  170,
           19,   19,   73,   73,   73,   73,  158,  158,  158,  158,
          172,  172,  161,  161,  161,  159,  159,  178,  178,  178,
          178,  178,  178,  178,  178,  178,  178,  179,  179,  179,
          108,  181,  181,  181,  181,  160,  160,  160,  160,  160,
          160,  160,  160,   59,   59,  175,  175,  175,  175,  175,
          182,  182,  171,  171,  171,  171,  183,  183,  183,  183,
          183,  183,   74,   74,   66,   66,   66,   66,  133,  133,
          133,  133,  186,  185,  174,  174,  174,  174,  174,  174,
          174,  173,  173,  173,  184,  184,  184,  184,  107,  180,
          188,  188,  187,  187,  189,  189,  189,  189,  189,  189,
          189,  189,  177,  177,  177,  177,  176,  191,  190,  190,
          190,  190,  190,  190,  190,  190,  192,  192,  192,  192
    );

    protected array $ruleToLength = array(
            1,    1,    2,    0,    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,    1,    1,    0,
            1,    0,    1,    1,    2,    1,    3,    4,    1,    2,
            0,    1,    1,    1,    1,    4,    3,    5,    4,    3,
            4,    1,    3,    4,    1,    1,    8,    7,    2,    3,
            1,    2,    3,    1,    2,    3,    1,    1,    3,    1,
            3,    1,    2,    2,    3,    1,    3,    2,    3,    1,
            3,    3,    2,    0,    1,    1,    1,    1,    1,    3,
            7,   10,    5,    7,    9,    5,    3,    3,    3,    3,
            3,    3,    1,    2,    5,    7,    9,    6,    5,    6,
            3,    2,    1,    1,    1,    1,    0,    2,    1,    3,
            8,    0,    4,    2,    1,    3,    0,    1,    0,    1,
            0,    1,    3,    1,    1,    1,    1,    1,    8,    9,
            7,    8,    7,    6,    8,    0,    2,    0,    2,    1,
            2,    1,    2,    1,    1,    1,    0,    2,    0,    2,
            0,    2,    2,    1,    3,    1,    4,    1,    4,    1,
            1,    4,    2,    1,    3,    3,    3,    4,    4,    5,
            0,    2,    4,    3,    1,    1,    7,    0,    2,    1,
            3,    3,    4,    1,    4,    0,    2,    5,    0,    2,
            6,    0,    2,    0,    3,    1,    2,    1,    1,    2,
            0,    1,    3,    0,    2,    1,    1,    1,    1,    1,
            1,    1,    1,    7,    9,    6,    1,    2,    1,    1,
            1,    1,    1,    1,    1,    1,    3,    3,    3,    1,
            3,    3,    3,    3,    3,    1,    3,    3,    1,    1,
            2,    1,    1,    0,    1,    0,    2,    2,    2,    4,
            2,    4,    4,    3,    1,    3,    1,    3,    2,    2,
            1,    1,    3,    3,    1,    1,    2,    3,    1,    1,
            2,    3,    1,    1,    3,    2,    0,    1,    5,    5,
            6,   10,    3,    5,    1,    1,    3,    0,    2,    4,
            5,    4,    4,    4,    3,    1,    1,    1,    1,    1,
            1,    0,    1,    1,    2,    1,    1,    1,    1,    1,
            1,    1,    1,    1,    1,    2,    1,    3,    1,    1,
            3,    0,    2,    0,    5,    8,    1,    3,    3,    0,
            2,    2,    2,    3,    1,    0,    1,    1,    3,    3,
            3,    4,    4,    1,    1,    2,    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,    3,    2,    2,    2,    2,    3,    3,    3,    3,
            3,    3,    3,    3,    3,    3,    3,    5,    4,    3,
            4,    4,    2,    2,    4,    2,    2,    2,    2,    2,
            2,    2,    2,    2,    2,    2,    2,    1,    3,    2,
            1,    2,    4,    2,    2,    8,    9,    8,    9,    9,
           10,    9,   10,    8,    3,    2,    2,    1,    1,    0,
            4,    2,    1,    3,    2,    1,    2,    2,    2,    4,
            1,    1,    1,    1,    1,    1,    1,    1,    3,    1,
            1,    1,    0,    1,    1,    0,    1,    1,    1,    1,
            1,    1,    1,    1,    1,    1,    1,    3,    5,    3,
            3,    4,    1,    1,    3,    1,    1,    1,    1,    1,
            3,    2,    3,    0,    1,    1,    3,    1,    1,    1,
            1,    1,    1,    3,    1,    1,    1,    4,    4,    1,
            4,    4,    0,    1,    1,    1,    3,    3,    1,    4,
            2,    2,    1,    3,    1,    4,    4,    3,    3,    3,
            3,    1,    3,    1,    1,    3,    1,    1,    4,    1,
            1,    1,    3,    1,    1,    2,    1,    3,    4,    3,
            2,    0,    2,    2,    1,    2,    1,    1,    1,    4,
            3,    3,    3,    3,    6,    3,    1,    1,    2,    1
    );

    protected function initReduceCallbacks(): void {
        $this->reduceCallbacks = [
            0 => null,
            1 => static function ($self, $stackPos) {
                 $self->semValue = $self->handleNamespaces($self->semStack[$stackPos-(1-1)]);
            },
            2 => static function ($self, $stackPos) {
                 if ($self->semStack[$stackPos-(2-2)] !== null) { $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; } $self->semValue = $self->semStack[$stackPos-(2-1)];;
            },
            3 => static function ($self, $stackPos) {
                 $self->semValue = array();
            },
            4 => static function ($self, $stackPos) {
                 $nop = $self->maybeCreateZeroLengthNop($self->tokenPos);;
            if ($nop !== null) { $self->semStack[$stackPos-(1-1)][] = $nop; } $self->semValue = $self->semStack[$stackPos-(1-1)];
            },
            5 => null,
            6 => null,
            7 => null,
            8 => null,
            9 => null,
            10 => null,
            11 => null,
            12 => null,
            13 => null,
            14 => null,
            15 => null,
            16 => null,
            17 => null,
            18 => null,
            19 => null,
            20 => null,
            21 => null,
            22 => null,
            23 => null,
            24 => null,
            25 => null,
            26 => null,
            27 => null,
            28 => null,
            29 => null,
            30 => null,
            31 => null,
            32 => null,
            33 => null,
            34 => null,
            35 => null,
            36 => null,
            37 => null,
            38 => null,
            39 => null,
            40 => null,
            41 => null,
            42 => null,
            43 => null,
            44 => null,
            45 => null,
            46 => null,
            47 => null,
            48 => null,
            49 => null,
            50 => null,
            51 => null,
            52 => null,
            53 => null,
            54 => null,
            55 => null,
            56 => null,
            57 => null,
            58 => null,
            59 => null,
            60 => null,
            61 => null,
            62 => null,
            63 => null,
            64 => null,
            65 => null,
            66 => null,
            67 => null,
            68 => null,
            69 => null,
            70 => null,
            71 => null,
            72 => null,
            73 => null,
            74 => null,
            75 => null,
            76 => static function ($self, $stackPos) {
                 $self->semValue = $self->semStack[$stackPos-(1-1)]; if ($self->semValue === "<?=") $self->emitError(new Error('Cannot use "<?=" as an identifier', $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])));
            },
            77 => null,
            78 => null,
            79 => null,
            80 => null,
            81 => null,
            82 => null,
            83 => null,
            84 => null,
            85 => static function ($self, $stackPos) {
                 $self->semValue = new Node\Identifier($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            86 => static function ($self, $stackPos) {
                 $self->semValue = new Node\Identifier($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            87 => static function ($self, $stackPos) {
                 $self->semValue = new Node\Identifier($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            88 => static function ($self, $stackPos) {
                 $self->semValue = new Node\Identifier($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            89 => static function ($self, $stackPos) {
                 $self->semValue = new Name($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            90 => static function ($self, $stackPos) {
                 $self->semValue = new Name($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            91 => static function ($self, $stackPos) {
                 $self->semValue = new Name($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            92 => static function ($self, $stackPos) {
                 $self->semValue = new Name($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            93 => static function ($self, $stackPos) {
                 $self->semValue = new Name($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            94 => null,
            95 => static function ($self, $stackPos) {
                 $self->semValue = new Name(substr($self->semStack[$stackPos-(1-1)], 1), $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            96 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\Variable(substr($self->semStack[$stackPos-(1-1)], 1), $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            97 => static function ($self, $stackPos) {
                 /* nothing */
            },
            98 => static function ($self, $stackPos) {
                 /* nothing */
            },
            99 => static function ($self, $stackPos) {
                 /* nothing */
            },
            100 => static function ($self, $stackPos) {
                 $self->emitError(new Error('A trailing comma is not allowed here', $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])));
            },
            101 => null,
            102 => null,
            103 => static function ($self, $stackPos) {
                 $self->semValue = new Node\Attribute($self->semStack[$stackPos-(1-1)], [], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            104 => static function ($self, $stackPos) {
                 $self->semValue = new Node\Attribute($self->semStack[$stackPos-(2-1)], $self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
            },
            105 => static function ($self, $stackPos) {
                 $self->semValue = array($self->semStack[$stackPos-(1-1)]);
            },
            106 => static function ($self, $stackPos) {
                 $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
            },
            107 => static function ($self, $stackPos) {
                 $self->semValue = new Node\AttributeGroup($self->semStack[$stackPos-(4-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]));
            },
            108 => static function ($self, $stackPos) {
                 $self->semValue = array($self->semStack[$stackPos-(1-1)]);
            },
            109 => static function ($self, $stackPos) {
                 $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)];
            },
            110 => static function ($self, $stackPos) {
                 $self->semValue = [];
            },
            111 => null,
            112 => null,
            113 => null,
            114 => null,
            115 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\HaltCompiler($self->handleHaltCompiler(), $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]));
            },
            116 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\Namespace_($self->semStack[$stackPos-(3-2)], null, $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            $self->semValue->setAttribute('kind', Stmt\Namespace_::KIND_SEMICOLON);
            $self->checkNamespace($self->semValue);
            },
            117 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\Namespace_($self->semStack[$stackPos-(5-2)], $self->semStack[$stackPos-(5-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos]));
            $self->semValue->setAttribute('kind', Stmt\Namespace_::KIND_BRACED);
            $self->checkNamespace($self->semValue);
            },
            118 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\Namespace_(null, $self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]));
            $self->semValue->setAttribute('kind', Stmt\Namespace_::KIND_BRACED);
            $self->checkNamespace($self->semValue);
            },
            119 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\Use_($self->semStack[$stackPos-(3-2)], Stmt\Use_::TYPE_NORMAL, $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            120 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\Use_($self->semStack[$stackPos-(4-3)], $self->semStack[$stackPos-(4-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]));
            },
            121 => null,
            122 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\Const_($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]), []);
            },
            123 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\Const_($self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]), $self->semStack[$stackPos-(4-1)]);
            $self->checkConstantAttributes($self->semValue);
            },
            124 => static function ($self, $stackPos) {
                 $self->semValue = Stmt\Use_::TYPE_FUNCTION;
            },
            125 => static function ($self, $stackPos) {
                 $self->semValue = Stmt\Use_::TYPE_CONSTANT;
            },
            126 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\GroupUse($self->semStack[$stackPos-(8-3)], $self->semStack[$stackPos-(8-6)], $self->semStack[$stackPos-(8-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(8-1)], $self->tokenEndStack[$stackPos]));
            },
            127 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\GroupUse($self->semStack[$stackPos-(7-2)], $self->semStack[$stackPos-(7-5)], Stmt\Use_::TYPE_UNKNOWN, $self->getAttributes($self->tokenStartStack[$stackPos-(7-1)], $self->tokenEndStack[$stackPos]));
            },
            128 => null,
            129 => static function ($self, $stackPos) {
                 $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
            },
            130 => static function ($self, $stackPos) {
                 $self->semValue = array($self->semStack[$stackPos-(1-1)]);
            },
            131 => null,
            132 => static function ($self, $stackPos) {
                 $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
            },
            133 => static function ($self, $stackPos) {
                 $self->semValue = array($self->semStack[$stackPos-(1-1)]);
            },
            134 => null,
            135 => static function ($self, $stackPos) {
                 $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
            },
            136 => static function ($self, $stackPos) {
                 $self->semValue = array($self->semStack[$stackPos-(1-1)]);
            },
            137 => static function ($self, $stackPos) {
                 $self->semValue = new Node\UseItem($self->semStack[$stackPos-(1-1)], null, Stmt\Use_::TYPE_UNKNOWN, $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); $self->checkUseUse($self->semValue, $stackPos-(1-1));
            },
            138 => static function ($self, $stackPos) {
                 $self->semValue = new Node\UseItem($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], Stmt\Use_::TYPE_UNKNOWN, $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); $self->checkUseUse($self->semValue, $stackPos-(3-3));
            },
            139 => static function ($self, $stackPos) {
                 $self->semValue = new Node\UseItem($self->semStack[$stackPos-(1-1)], null, Stmt\Use_::TYPE_UNKNOWN, $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); $self->checkUseUse($self->semValue, $stackPos-(1-1));
            },
            140 => static function ($self, $stackPos) {
                 $self->semValue = new Node\UseItem($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], Stmt\Use_::TYPE_UNKNOWN, $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); $self->checkUseUse($self->semValue, $stackPos-(3-3));
            },
            141 => static function ($self, $stackPos) {
                 $self->semValue = $self->semStack[$stackPos-(1-1)]; $self->semValue->type = Stmt\Use_::TYPE_NORMAL;
            },
            142 => static function ($self, $stackPos) {
                 $self->semValue = $self->semStack[$stackPos-(2-2)]; $self->semValue->type = $self->semStack[$stackPos-(2-1)];
            },
            143 => null,
            144 => static function ($self, $stackPos) {
                 $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
            },
            145 => static function ($self, $stackPos) {
                 $self->semValue = array($self->semStack[$stackPos-(1-1)]);
            },
            146 => static function ($self, $stackPos) {
                 $self->semValue = new Node\Const_($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            147 => null,
            148 => static function ($self, $stackPos) {
                 $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
            },
            149 => static function ($self, $stackPos) {
                 $self->semValue = array($self->semStack[$stackPos-(1-1)]);
            },
            150 => static function ($self, $stackPos) {
                 $self->semValue = new Node\Const_(new Node\Identifier($self->semStack[$stackPos-(3-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)],  $self->tokenEndStack[$stackPos-(3-1)])), $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            151 => static function ($self, $stackPos) {
                 $self->semValue = new Node\Const_(new Node\Identifier($self->semStack[$stackPos-(3-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)],  $self->tokenEndStack[$stackPos-(3-1)])), $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            152 => static function ($self, $stackPos) {
                 if ($self->semStack[$stackPos-(2-2)] !== null) { $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; } $self->semValue = $self->semStack[$stackPos-(2-1)];;
            },
            153 => static function ($self, $stackPos) {
                 $self->semValue = array();
            },
            154 => static function ($self, $stackPos) {
                 $nop = $self->maybeCreateZeroLengthNop($self->tokenPos);;
            if ($nop !== null) { $self->semStack[$stackPos-(1-1)][] = $nop; } $self->semValue = $self->semStack[$stackPos-(1-1)];
            },
            155 => null,
            156 => null,
            157 => null,
            158 => static function ($self, $stackPos) {
                 throw new Error('__HALT_COMPILER() can only be used from the outermost scope', $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            159 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\Block($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            160 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\If_($self->semStack[$stackPos-(7-3)], ['stmts' => $self->semStack[$stackPos-(7-5)], 'elseifs' => $self->semStack[$stackPos-(7-6)], 'else' => $self->semStack[$stackPos-(7-7)]], $self->getAttributes($self->tokenStartStack[$stackPos-(7-1)], $self->tokenEndStack[$stackPos]));
            },
            161 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\If_($self->semStack[$stackPos-(10-3)], ['stmts' => $self->semStack[$stackPos-(10-6)], 'elseifs' => $self->semStack[$stackPos-(10-7)], 'else' => $self->semStack[$stackPos-(10-8)]], $self->getAttributes($self->tokenStartStack[$stackPos-(10-1)], $self->tokenEndStack[$stackPos]));
            },
            162 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\While_($self->semStack[$stackPos-(5-3)], $self->semStack[$stackPos-(5-5)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos]));
            },
            163 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\Do_($self->semStack[$stackPos-(7-5)], $self->semStack[$stackPos-(7-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(7-1)], $self->tokenEndStack[$stackPos]));
            },
            164 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\For_(['init' => $self->semStack[$stackPos-(9-3)], 'cond' => $self->semStack[$stackPos-(9-5)], 'loop' => $self->semStack[$stackPos-(9-7)], 'stmts' => $self->semStack[$stackPos-(9-9)]], $self->getAttributes($self->tokenStartStack[$stackPos-(9-1)], $self->tokenEndStack[$stackPos]));
            },
            165 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\Switch_($self->semStack[$stackPos-(5-3)], $self->semStack[$stackPos-(5-5)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos]));
            },
            166 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\Break_($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            167 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\Continue_($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            168 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\Return_($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            169 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\Global_($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            170 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\Static_($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            171 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\Echo_($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            172 => static function ($self, $stackPos) {

        $self->semValue = new Stmt\InlineHTML($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
        $self->semValue->setAttribute('hasLeadingNewline', $self->inlineHtmlHasLeadingNewline($stackPos-(1-1)));

            },
            173 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\Expression($self->semStack[$stackPos-(2-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
            },
            174 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\Unset_($self->semStack[$stackPos-(5-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos]));
            },
            175 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\Foreach_($self->semStack[$stackPos-(7-3)], $self->semStack[$stackPos-(7-5)][0], ['keyVar' => null, 'byRef' => $self->semStack[$stackPos-(7-5)][1], 'stmts' => $self->semStack[$stackPos-(7-7)]], $self->getAttributes($self->tokenStartStack[$stackPos-(7-1)], $self->tokenEndStack[$stackPos]));
            },
            176 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\Foreach_($self->semStack[$stackPos-(9-3)], $self->semStack[$stackPos-(9-7)][0], ['keyVar' => $self->semStack[$stackPos-(9-5)], 'byRef' => $self->semStack[$stackPos-(9-7)][1], 'stmts' => $self->semStack[$stackPos-(9-9)]], $self->getAttributes($self->tokenStartStack[$stackPos-(9-1)], $self->tokenEndStack[$stackPos]));
            },
            177 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\Foreach_($self->semStack[$stackPos-(6-3)], new Expr\Error($self->getAttributes($self->tokenStartStack[$stackPos-(6-4)],  $self->tokenEndStack[$stackPos-(6-4)])), ['stmts' => $self->semStack[$stackPos-(6-6)]], $self->getAttributes($self->tokenStartStack[$stackPos-(6-1)], $self->tokenEndStack[$stackPos]));
            },
            178 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\Declare_($self->semStack[$stackPos-(5-3)], $self->semStack[$stackPos-(5-5)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos]));
            },
            179 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\TryCatch($self->semStack[$stackPos-(6-3)], $self->semStack[$stackPos-(6-5)], $self->semStack[$stackPos-(6-6)], $self->getAttributes($self->tokenStartStack[$stackPos-(6-1)], $self->tokenEndStack[$stackPos])); $self->checkTryCatch($self->semValue);
            },
            180 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\Goto_($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            181 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\Label($self->semStack[$stackPos-(2-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
            },
            182 => static function ($self, $stackPos) {
                 $self->semValue = null; /* means: no statement */
            },
            183 => null,
            184 => static function ($self, $stackPos) {
                 $self->semValue = $self->maybeCreateNop($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]);
            },
            185 => static function ($self, $stackPos) {
                 if ($self->semStack[$stackPos-(1-1)] instanceof Stmt\Block) { $self->semValue = $self->semStack[$stackPos-(1-1)]->stmts; } else if ($self->semStack[$stackPos-(1-1)] === null) { $self->semValue = []; } else { $self->semValue = [$self->semStack[$stackPos-(1-1)]]; };
            },
            186 => static function ($self, $stackPos) {
                 $self->semValue = array();
            },
            187 => static function ($self, $stackPos) {
                 $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)];
            },
            188 => static function ($self, $stackPos) {
                 $self->semValue = array($self->semStack[$stackPos-(1-1)]);
            },
            189 => static function ($self, $stackPos) {
                 $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
            },
            190 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\Catch_($self->semStack[$stackPos-(8-3)], $self->semStack[$stackPos-(8-4)], $self->semStack[$stackPos-(8-7)], $self->getAttributes($self->tokenStartStack[$stackPos-(8-1)], $self->tokenEndStack[$stackPos]));
            },
            191 => static function ($self, $stackPos) {
                 $self->semValue = null;
            },
            192 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\Finally_($self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]));
            },
            193 => null,
            194 => static function ($self, $stackPos) {
                 $self->semValue = array($self->semStack[$stackPos-(1-1)]);
            },
            195 => static function ($self, $stackPos) {
                 $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
            },
            196 => static function ($self, $stackPos) {
                 $self->semValue = false;
            },
            197 => static function ($self, $stackPos) {
                 $self->semValue = true;
            },
            198 => static function ($self, $stackPos) {
                 $self->semValue = false;
            },
            199 => static function ($self, $stackPos) {
                 $self->semValue = true;
            },
            200 => static function ($self, $stackPos) {
                 $self->semValue = false;
            },
            201 => static function ($self, $stackPos) {
                 $self->semValue = true;
            },
            202 => static function ($self, $stackPos) {
                 $self->semValue = $self->semStack[$stackPos-(3-2)];
            },
            203 => static function ($self, $stackPos) {
                 $self->semValue = [];
            },
            204 => null,
            205 => static function ($self, $stackPos) {
                 $self->semValue = new Node\Identifier($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            206 => static function ($self, $stackPos) {
                 $self->semValue = new Node\Identifier($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            207 => static function ($self, $stackPos) {
                 $self->semValue = new Node\Identifier($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            208 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\Function_($self->semStack[$stackPos-(8-3)], ['byRef' => $self->semStack[$stackPos-(8-2)], 'params' => $self->semStack[$stackPos-(8-5)], 'returnType' => $self->semStack[$stackPos-(8-7)], 'stmts' => $self->semStack[$stackPos-(8-8)], 'attrGroups' => []], $self->getAttributes($self->tokenStartStack[$stackPos-(8-1)], $self->tokenEndStack[$stackPos]));
            },
            209 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\Function_($self->semStack[$stackPos-(9-4)], ['byRef' => $self->semStack[$stackPos-(9-3)], 'params' => $self->semStack[$stackPos-(9-6)], 'returnType' => $self->semStack[$stackPos-(9-8)], 'stmts' => $self->semStack[$stackPos-(9-9)], 'attrGroups' => $self->semStack[$stackPos-(9-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(9-1)], $self->tokenEndStack[$stackPos]));
            },
            210 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\Class_($self->semStack[$stackPos-(7-2)], ['type' => $self->semStack[$stackPos-(7-1)], 'extends' => $self->semStack[$stackPos-(7-3)], 'implements' => $self->semStack[$stackPos-(7-4)], 'stmts' => $self->semStack[$stackPos-(7-6)], 'attrGroups' => []], $self->getAttributes($self->tokenStartStack[$stackPos-(7-1)], $self->tokenEndStack[$stackPos]));
            $self->checkClass($self->semValue, $stackPos-(7-2));
            },
            211 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\Class_($self->semStack[$stackPos-(8-3)], ['type' => $self->semStack[$stackPos-(8-2)], 'extends' => $self->semStack[$stackPos-(8-4)], 'implements' => $self->semStack[$stackPos-(8-5)], 'stmts' => $self->semStack[$stackPos-(8-7)], 'attrGroups' => $self->semStack[$stackPos-(8-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(8-1)], $self->tokenEndStack[$stackPos]));
            $self->checkClass($self->semValue, $stackPos-(8-3));
            },
            212 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\Interface_($self->semStack[$stackPos-(7-3)], ['extends' => $self->semStack[$stackPos-(7-4)], 'stmts' => $self->semStack[$stackPos-(7-6)], 'attrGroups' => $self->semStack[$stackPos-(7-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(7-1)], $self->tokenEndStack[$stackPos]));
            $self->checkInterface($self->semValue, $stackPos-(7-3));
            },
            213 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\Trait_($self->semStack[$stackPos-(6-3)], ['stmts' => $self->semStack[$stackPos-(6-5)], 'attrGroups' => $self->semStack[$stackPos-(6-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(6-1)], $self->tokenEndStack[$stackPos]));
            },
            214 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\Enum_($self->semStack[$stackPos-(8-3)], ['scalarType' => $self->semStack[$stackPos-(8-4)], 'implements' => $self->semStack[$stackPos-(8-5)], 'stmts' => $self->semStack[$stackPos-(8-7)], 'attrGroups' => $self->semStack[$stackPos-(8-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(8-1)], $self->tokenEndStack[$stackPos]));
            $self->checkEnum($self->semValue, $stackPos-(8-3));
            },
            215 => static function ($self, $stackPos) {
                 $self->semValue = null;
            },
            216 => static function ($self, $stackPos) {
                 $self->semValue = $self->semStack[$stackPos-(2-2)];
            },
            217 => static function ($self, $stackPos) {
                 $self->semValue = null;
            },
            218 => static function ($self, $stackPos) {
                 $self->semValue = $self->semStack[$stackPos-(2-2)];
            },
            219 => static function ($self, $stackPos) {
                 $self->semValue = 0;
            },
            220 => null,
            221 => null,
            222 => static function ($self, $stackPos) {
                 $self->checkClassModifier($self->semStack[$stackPos-(2-1)], $self->semStack[$stackPos-(2-2)], $stackPos-(2-2)); $self->semValue = $self->semStack[$stackPos-(2-1)] | $self->semStack[$stackPos-(2-2)];
            },
            223 => static function ($self, $stackPos) {
                 $self->semValue = Modifiers::ABSTRACT;
            },
            224 => static function ($self, $stackPos) {
                 $self->semValue = Modifiers::FINAL;
            },
            225 => static function ($self, $stackPos) {
                 $self->semValue = Modifiers::READONLY;
            },
            226 => static function ($self, $stackPos) {
                 $self->semValue = null;
            },
            227 => static function ($self, $stackPos) {
                 $self->semValue = $self->semStack[$stackPos-(2-2)];
            },
            228 => static function ($self, $stackPos) {
                 $self->semValue = array();
            },
            229 => static function ($self, $stackPos) {
                 $self->semValue = $self->semStack[$stackPos-(2-2)];
            },
            230 => static function ($self, $stackPos) {
                 $self->semValue = array();
            },
            231 => static function ($self, $stackPos) {
                 $self->semValue = $self->semStack[$stackPos-(2-2)];
            },
            232 => null,
            233 => static function ($self, $stackPos) {
                 $self->semValue = array($self->semStack[$stackPos-(1-1)]);
            },
            234 => static function ($self, $stackPos) {
                 $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
            },
            235 => null,
            236 => static function ($self, $stackPos) {
                 $self->semValue = $self->semStack[$stackPos-(4-2)];
            },
            237 => null,
            238 => static function ($self, $stackPos) {
                 $self->semValue = $self->semStack[$stackPos-(4-2)];
            },
            239 => static function ($self, $stackPos) {
                 if ($self->semStack[$stackPos-(1-1)] instanceof Stmt\Block) { $self->semValue = $self->semStack[$stackPos-(1-1)]->stmts; } else if ($self->semStack[$stackPos-(1-1)] === null) { $self->semValue = []; } else { $self->semValue = [$self->semStack[$stackPos-(1-1)]]; };
            },
            240 => static function ($self, $stackPos) {
                 $self->semValue = null;
            },
            241 => static function ($self, $stackPos) {
                 $self->semValue = $self->semStack[$stackPos-(4-2)];
            },
            242 => null,
            243 => static function ($self, $stackPos) {
                 $self->semValue = array($self->semStack[$stackPos-(1-1)]);
            },
            244 => static function ($self, $stackPos) {
                 $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
            },
            245 => static function ($self, $stackPos) {
                 $self->semValue = new Node\DeclareItem($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            246 => static function ($self, $stackPos) {
                 $self->semValue = $self->semStack[$stackPos-(3-2)];
            },
            247 => static function ($self, $stackPos) {
                 $self->semValue = $self->semStack[$stackPos-(4-3)];
            },
            248 => static function ($self, $stackPos) {
                 $self->semValue = $self->semStack[$stackPos-(4-2)];
            },
            249 => static function ($self, $stackPos) {
                 $self->semValue = $self->semStack[$stackPos-(5-3)];
            },
            250 => static function ($self, $stackPos) {
                 $self->semValue = array();
            },
            251 => static function ($self, $stackPos) {
                 $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)];
            },
            252 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\Case_($self->semStack[$stackPos-(4-2)], $self->semStack[$stackPos-(4-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]));
            },
            253 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\Case_(null, $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            254 => null,
            255 => null,
            256 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\Match_($self->semStack[$stackPos-(7-3)], $self->semStack[$stackPos-(7-6)], $self->getAttributes($self->tokenStartStack[$stackPos-(7-1)], $self->tokenEndStack[$stackPos]));
            },
            257 => static function ($self, $stackPos) {
                 $self->semValue = [];
            },
            258 => null,
            259 => static function ($self, $stackPos) {
                 $self->semValue = array($self->semStack[$stackPos-(1-1)]);
            },
            260 => static function ($self, $stackPos) {
                 $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
            },
            261 => static function ($self, $stackPos) {
                 $self->semValue = new Node\MatchArm($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            262 => static function ($self, $stackPos) {
                 $self->semValue = new Node\MatchArm(null, $self->semStack[$stackPos-(4-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]));
            },
            263 => static function ($self, $stackPos) {
                 $self->semValue = $self->semStack[$stackPos-(1-1)];
            },
            264 => static function ($self, $stackPos) {
                 $self->semValue = $self->semStack[$stackPos-(4-2)];
            },
            265 => static function ($self, $stackPos) {
                 $self->semValue = array();
            },
            266 => static function ($self, $stackPos) {
                 $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)];
            },
            267 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\ElseIf_($self->semStack[$stackPos-(5-3)], $self->semStack[$stackPos-(5-5)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos]));
            },
            268 => static function ($self, $stackPos) {
                 $self->semValue = array();
            },
            269 => static function ($self, $stackPos) {
                 $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)];
            },
            270 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\ElseIf_($self->semStack[$stackPos-(6-3)], $self->semStack[$stackPos-(6-6)], $self->getAttributes($self->tokenStartStack[$stackPos-(6-1)], $self->tokenEndStack[$stackPos])); $self->fixupAlternativeElse($self->semValue);
            },
            271 => static function ($self, $stackPos) {
                 $self->semValue = null;
            },
            272 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\Else_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
            },
            273 => static function ($self, $stackPos) {
                 $self->semValue = null;
            },
            274 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\Else_($self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); $self->fixupAlternativeElse($self->semValue);
            },
            275 => static function ($self, $stackPos) {
                 $self->semValue = array($self->semStack[$stackPos-(1-1)], false);
            },
            276 => static function ($self, $stackPos) {
                 $self->semValue = array($self->semStack[$stackPos-(2-2)], true);
            },
            277 => static function ($self, $stackPos) {
                 $self->semValue = array($self->semStack[$stackPos-(1-1)], false);
            },
            278 => static function ($self, $stackPos) {
                 $self->semValue = array($self->fixupArrayDestructuring($self->semStack[$stackPos-(1-1)]), false);
            },
            279 => null,
            280 => static function ($self, $stackPos) {
                 $self->semValue = array();
            },
            281 => static function ($self, $stackPos) {
                 $self->semValue = array($self->semStack[$stackPos-(1-1)]);
            },
            282 => static function ($self, $stackPos) {
                 $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
            },
            283 => static function ($self, $stackPos) {
                 $self->semValue = 0;
            },
            284 => static function ($self, $stackPos) {
                 $self->checkModifier($self->semStack[$stackPos-(2-1)], $self->semStack[$stackPos-(2-2)], $stackPos-(2-2)); $self->semValue = $self->semStack[$stackPos-(2-1)] | $self->semStack[$stackPos-(2-2)];
            },
            285 => static function ($self, $stackPos) {
                 $self->semValue = Modifiers::PUBLIC;
            },
            286 => static function ($self, $stackPos) {
                 $self->semValue = Modifiers::PROTECTED;
            },
            287 => static function ($self, $stackPos) {
                 $self->semValue = Modifiers::PRIVATE;
            },
            288 => static function ($self, $stackPos) {
                 $self->semValue = Modifiers::PUBLIC_SET;
            },
            289 => static function ($self, $stackPos) {
                 $self->semValue = Modifiers::PROTECTED_SET;
            },
            290 => static function ($self, $stackPos) {
                 $self->semValue = Modifiers::PRIVATE_SET;
            },
            291 => static function ($self, $stackPos) {
                 $self->semValue = Modifiers::READONLY;
            },
            292 => static function ($self, $stackPos) {
                 $self->semValue = Modifiers::FINAL;
            },
            293 => static function ($self, $stackPos) {
                 $self->semValue = new Node\Param($self->semStack[$stackPos-(7-6)], null, $self->semStack[$stackPos-(7-3)], $self->semStack[$stackPos-(7-4)], $self->semStack[$stackPos-(7-5)], $self->getAttributes($self->tokenStartStack[$stackPos-(7-1)], $self->tokenEndStack[$stackPos]), $self->semStack[$stackPos-(7-2)], $self->semStack[$stackPos-(7-1)], $self->semStack[$stackPos-(7-7)]);
            $self->checkParam($self->semValue);
            $self->addPropertyNameToHooks($self->semValue);
            },
            294 => static function ($self, $stackPos) {
                 $self->semValue = new Node\Param($self->semStack[$stackPos-(9-6)], $self->semStack[$stackPos-(9-8)], $self->semStack[$stackPos-(9-3)], $self->semStack[$stackPos-(9-4)], $self->semStack[$stackPos-(9-5)], $self->getAttributes($self->tokenStartStack[$stackPos-(9-1)], $self->tokenEndStack[$stackPos]), $self->semStack[$stackPos-(9-2)], $self->semStack[$stackPos-(9-1)], $self->semStack[$stackPos-(9-9)]);
            $self->checkParam($self->semValue);
            $self->addPropertyNameToHooks($self->semValue);
            },
            295 => static function ($self, $stackPos) {
                 $self->semValue = new Node\Param(new Expr\Error($self->getAttributes($self->tokenStartStack[$stackPos-(6-1)], $self->tokenEndStack[$stackPos])), null, $self->semStack[$stackPos-(6-3)], $self->semStack[$stackPos-(6-4)], $self->semStack[$stackPos-(6-5)], $self->getAttributes($self->tokenStartStack[$stackPos-(6-1)], $self->tokenEndStack[$stackPos]), $self->semStack[$stackPos-(6-2)], $self->semStack[$stackPos-(6-1)]);
            },
            296 => null,
            297 => static function ($self, $stackPos) {
                 $self->semValue = new Node\NullableType($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
            },
            298 => static function ($self, $stackPos) {
                 $self->semValue = new Node\UnionType($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            299 => null,
            300 => null,
            301 => static function ($self, $stackPos) {
                 $self->semValue = new Node\Name('static', $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            302 => static function ($self, $stackPos) {
                 $self->semValue = $self->handleBuiltinTypes($self->semStack[$stackPos-(1-1)]);
            },
            303 => static function ($self, $stackPos) {
                 $self->semValue = new Node\Identifier('array', $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            304 => static function ($self, $stackPos) {
                 $self->semValue = new Node\Identifier('callable', $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            305 => null,
            306 => static function ($self, $stackPos) {
                 $self->semValue = $self->semStack[$stackPos-(3-2)];
            },
            307 => static function ($self, $stackPos) {
                 $self->semValue = array($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)]);
            },
            308 => static function ($self, $stackPos) {
                 $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
            },
            309 => null,
            310 => static function ($self, $stackPos) {
                 $self->semValue = $self->semStack[$stackPos-(3-2)];
            },
            311 => static function ($self, $stackPos) {
                 $self->semValue = array($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)]);
            },
            312 => static function ($self, $stackPos) {
                 $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
            },
            313 => static function ($self, $stackPos) {
                 $self->semValue = array($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)]);
            },
            314 => static function ($self, $stackPos) {
                 $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
            },
            315 => static function ($self, $stackPos) {
                 $self->semValue = new Node\IntersectionType($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            316 => static function ($self, $stackPos) {
                 $self->semValue = array($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)]);
            },
            317 => static function ($self, $stackPos) {
                 $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
            },
            318 => static function ($self, $stackPos) {
                 $self->semValue = new Node\IntersectionType($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            319 => null,
            320 => static function ($self, $stackPos) {
                 $self->semValue = new Node\NullableType($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
            },
            321 => static function ($self, $stackPos) {
                 $self->semValue = new Node\UnionType($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            322 => null,
            323 => static function ($self, $stackPos) {
                 $self->semValue = null;
            },
            324 => null,
            325 => static function ($self, $stackPos) {
                 $self->semValue = null;
            },
            326 => static function ($self, $stackPos) {
                 $self->semValue = $self->semStack[$stackPos-(2-2)];
            },
            327 => static function ($self, $stackPos) {
                 $self->semValue = null;
            },
            328 => static function ($self, $stackPos) {
                 $self->semValue = array();
            },
            329 => static function ($self, $stackPos) {
                 $self->semValue = $self->semStack[$stackPos-(4-2)];
            },
            330 => static function ($self, $stackPos) {
                 $self->semValue = array();
            },
            331 => static function ($self, $stackPos) {
                 $self->semValue = $self->semStack[$stackPos-(4-2)];
            },
            332 => static function ($self, $stackPos) {
                 $self->semValue = array(new Node\Arg($self->semStack[$stackPos-(4-2)], false, false, $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])));
            },
            333 => static function ($self, $stackPos) {
                 $self->semValue = array(new Node\Arg($self->semStack[$stackPos-(3-1)], false, false, $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)],  $self->tokenEndStack[$stackPos-(3-1)])), $self->semStack[$stackPos-(3-3)]);
            },
            334 => static function ($self, $stackPos) {
                 $self->semValue = array($self->semStack[$stackPos-(1-1)]);
            },
            335 => static function ($self, $stackPos) {
                 $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
            },
            336 => static function ($self, $stackPos) {
                 $self->semValue = array($self->semStack[$stackPos-(1-1)]);
            },
            337 => static function ($self, $stackPos) {
                 $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
            },
            338 => static function ($self, $stackPos) {
                 $self->semValue = new Node\Arg($self->semStack[$stackPos-(2-2)], true, false, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
            },
            339 => static function ($self, $stackPos) {
                 $self->semValue = new Node\Arg($self->semStack[$stackPos-(2-2)], false, true, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
            },
            340 => static function ($self, $stackPos) {
                 $self->semValue = new Node\VariadicPlaceholder($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            341 => static function ($self, $stackPos) {
                 $self->semValue = new Node\ArgPlaceholder(null, $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            342 => static function ($self, $stackPos) {
                 $self->semValue = new Node\Arg($self->semStack[$stackPos-(3-3)], false, false, $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]), $self->semStack[$stackPos-(3-1)]);
            },
            343 => static function ($self, $stackPos) {
                 $self->semValue = new Node\ArgPlaceholder($self->semStack[$stackPos-(3-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            344 => static function ($self, $stackPos) {
                 $self->semValue = new Node\Arg($self->semStack[$stackPos-(1-1)], false, false, $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            345 => static function ($self, $stackPos) {
                 $self->semValue = $self->semStack[$stackPos-(1-1)];
            },
            346 => null,
            347 => static function ($self, $stackPos) {
                 $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
            },
            348 => static function ($self, $stackPos) {
                 $self->semValue = array($self->semStack[$stackPos-(1-1)]);
            },
            349 => null,
            350 => null,
            351 => static function ($self, $stackPos) {
                 $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
            },
            352 => static function ($self, $stackPos) {
                 $self->semValue = array($self->semStack[$stackPos-(1-1)]);
            },
            353 => static function ($self, $stackPos) {
                 $self->semValue = new Node\StaticVar($self->semStack[$stackPos-(1-1)], null, $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            354 => static function ($self, $stackPos) {
                 $self->semValue = new Node\StaticVar($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            355 => static function ($self, $stackPos) {
                 if ($self->semStack[$stackPos-(2-2)] !== null) { $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)]; } else { $self->semValue = $self->semStack[$stackPos-(2-1)]; }
            },
            356 => static function ($self, $stackPos) {
                 $self->semValue = array();
            },
            357 => static function ($self, $stackPos) {
                 $nop = $self->maybeCreateZeroLengthNop($self->tokenPos);;
            if ($nop !== null) { $self->semStack[$stackPos-(1-1)][] = $nop; } $self->semValue = $self->semStack[$stackPos-(1-1)];
            },
            358 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\Property($self->semStack[$stackPos-(5-2)], $self->semStack[$stackPos-(5-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos]), $self->semStack[$stackPos-(5-3)], $self->semStack[$stackPos-(5-1)]);
            },
            359 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\ClassConst($self->semStack[$stackPos-(5-4)], $self->semStack[$stackPos-(5-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos]), $self->semStack[$stackPos-(5-1)]);
            $self->checkClassConst($self->semValue, $stackPos-(5-2));
            },
            360 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\ClassConst($self->semStack[$stackPos-(6-5)], $self->semStack[$stackPos-(6-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(6-1)], $self->tokenEndStack[$stackPos]), $self->semStack[$stackPos-(6-1)], $self->semStack[$stackPos-(6-4)]);
            $self->checkClassConst($self->semValue, $stackPos-(6-2));
            },
            361 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\ClassMethod($self->semStack[$stackPos-(10-5)], ['type' => $self->semStack[$stackPos-(10-2)], 'byRef' => $self->semStack[$stackPos-(10-4)], 'params' => $self->semStack[$stackPos-(10-7)], 'returnType' => $self->semStack[$stackPos-(10-9)], 'stmts' => $self->semStack[$stackPos-(10-10)], 'attrGroups' => $self->semStack[$stackPos-(10-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(10-1)], $self->tokenEndStack[$stackPos]));
            $self->checkClassMethod($self->semValue, $stackPos-(10-2));
            },
            362 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\TraitUse($self->semStack[$stackPos-(3-2)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            363 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\EnumCase($self->semStack[$stackPos-(5-3)], $self->semStack[$stackPos-(5-4)], $self->semStack[$stackPos-(5-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos]));
            },
            364 => static function ($self, $stackPos) {
                 $self->semValue = null; /* will be skipped */
            },
            365 => static function ($self, $stackPos) {
                 $self->semValue = array();
            },
            366 => static function ($self, $stackPos) {
                 $self->semValue = $self->semStack[$stackPos-(3-2)];
            },
            367 => static function ($self, $stackPos) {
                 $self->semValue = array();
            },
            368 => static function ($self, $stackPos) {
                 $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)];
            },
            369 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\TraitUseAdaptation\Precedence($self->semStack[$stackPos-(4-1)][0], $self->semStack[$stackPos-(4-1)][1], $self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]));
            },
            370 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\TraitUseAdaptation\Alias($self->semStack[$stackPos-(5-1)][0], $self->semStack[$stackPos-(5-1)][1], $self->semStack[$stackPos-(5-3)], $self->semStack[$stackPos-(5-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos]));
            },
            371 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\TraitUseAdaptation\Alias($self->semStack[$stackPos-(4-1)][0], $self->semStack[$stackPos-(4-1)][1], $self->semStack[$stackPos-(4-3)], null, $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]));
            },
            372 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\TraitUseAdaptation\Alias($self->semStack[$stackPos-(4-1)][0], $self->semStack[$stackPos-(4-1)][1], null, $self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]));
            },
            373 => static function ($self, $stackPos) {
                 $self->semValue = new Stmt\TraitUseAdaptation\Alias($self->semStack[$stackPos-(4-1)][0], $self->semStack[$stackPos-(4-1)][1], null, $self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]));
            },
            374 => static function ($self, $stackPos) {
                 $self->semValue = array($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)]);
            },
            375 => null,
            376 => static function ($self, $stackPos) {
                 $self->semValue = array(null, $self->semStack[$stackPos-(1-1)]);
            },
            377 => static function ($self, $stackPos) {
                 $self->semValue = null;
            },
            378 => null,
            379 => null,
            380 => static function ($self, $stackPos) {
                 $self->semValue = 0;
            },
            381 => static function ($self, $stackPos) {
                 $self->semValue = 0;
            },
            382 => null,
            383 => null,
            384 => static function ($self, $stackPos) {
                 $self->checkModifier($self->semStack[$stackPos-(2-1)], $self->semStack[$stackPos-(2-2)], $stackPos-(2-2)); $self->semValue = $self->semStack[$stackPos-(2-1)] | $self->semStack[$stackPos-(2-2)];
            },
            385 => static function ($self, $stackPos) {
                 $self->semValue = Modifiers::PUBLIC;
            },
            386 => static function ($self, $stackPos) {
                 $self->semValue = Modifiers::PROTECTED;
            },
            387 => static function ($self, $stackPos) {
                 $self->semValue = Modifiers::PRIVATE;
            },
            388 => static function ($self, $stackPos) {
                 $self->semValue = Modifiers::PUBLIC_SET;
            },
            389 => static function ($self, $stackPos) {
                 $self->semValue = Modifiers::PROTECTED_SET;
            },
            390 => static function ($self, $stackPos) {
                 $self->semValue = Modifiers::PRIVATE_SET;
            },
            391 => static function ($self, $stackPos) {
                 $self->semValue = Modifiers::STATIC;
            },
            392 => static function ($self, $stackPos) {
                 $self->semValue = Modifiers::ABSTRACT;
            },
            393 => static function ($self, $stackPos) {
                 $self->semValue = Modifiers::FINAL;
            },
            394 => static function ($self, $stackPos) {
                 $self->semValue = Modifiers::READONLY;
            },
            395 => null,
            396 => static function ($self, $stackPos) {
                 $self->semValue = array($self->semStack[$stackPos-(1-1)]);
            },
            397 => static function ($self, $stackPos) {
                 $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
            },
            398 => static function ($self, $stackPos) {
                 $self->semValue = new Node\VarLikeIdentifier(substr($self->semStack[$stackPos-(1-1)], 1), $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            399 => static function ($self, $stackPos) {
                 $self->semValue = new Node\PropertyItem($self->semStack[$stackPos-(1-1)], null, $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            400 => static function ($self, $stackPos) {
                 $self->semValue = new Node\PropertyItem($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            401 => static function ($self, $stackPos) {
                 $self->semValue = [];
            },
            402 => static function ($self, $stackPos) {
                 $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)];
            },
            403 => static function ($self, $stackPos) {
                 $self->semValue = [];
            },
            404 => static function ($self, $stackPos) {
                 $self->semValue = new Node\PropertyHook($self->semStack[$stackPos-(5-4)], $self->semStack[$stackPos-(5-5)], ['flags' => $self->semStack[$stackPos-(5-2)], 'byRef' => $self->semStack[$stackPos-(5-3)], 'params' => [], 'attrGroups' => $self->semStack[$stackPos-(5-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos]));
            $self->checkPropertyHook($self->semValue, null);
            },
            405 => static function ($self, $stackPos) {
                 $self->semValue = new Node\PropertyHook($self->semStack[$stackPos-(8-4)], $self->semStack[$stackPos-(8-8)], ['flags' => $self->semStack[$stackPos-(8-2)], 'byRef' => $self->semStack[$stackPos-(8-3)], 'params' => $self->semStack[$stackPos-(8-6)], 'attrGroups' => $self->semStack[$stackPos-(8-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(8-1)], $self->tokenEndStack[$stackPos]));
            $self->checkPropertyHook($self->semValue, $stackPos-(8-5));
            },
            406 => static function ($self, $stackPos) {
                 $self->semValue = null;
            },
            407 => static function ($self, $stackPos) {
                 $self->semValue = $self->semStack[$stackPos-(3-2)];
            },
            408 => static function ($self, $stackPos) {
                 $self->semValue = $self->semStack[$stackPos-(3-2)];
            },
            409 => static function ($self, $stackPos) {
                 $self->semValue = 0;
            },
            410 => static function ($self, $stackPos) {
                 $self->checkPropertyHookModifiers($self->semStack[$stackPos-(2-1)], $self->semStack[$stackPos-(2-2)], $stackPos-(2-2)); $self->semValue = $self->semStack[$stackPos-(2-1)] | $self->semStack[$stackPos-(2-2)];
            },
            411 => null,
            412 => null,
            413 => static function ($self, $stackPos) {
                 $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
            },
            414 => static function ($self, $stackPos) {
                 $self->semValue = array($self->semStack[$stackPos-(1-1)]);
            },
            415 => static function ($self, $stackPos) {
                 $self->semValue = array();
            },
            416 => null,
            417 => null,
            418 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\Assign($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            419 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\Assign($self->fixupArrayDestructuring($self->semStack[$stackPos-(3-1)]), $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            420 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\Assign($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            421 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\AssignRef($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]));
            },
            422 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\AssignRef($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]));
            if (!$self->phpVersion->allowsAssignNewByReference()) {
                $self->emitError(new Error('Cannot assign new by reference', $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])));
            }

            },
            423 => null,
            424 => null,
            425 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\FuncCall(new Node\Name($self->semStack[$stackPos-(2-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)],  $self->tokenEndStack[$stackPos-(2-1)])), $self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
            },
            426 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\Clone_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
            },
            427 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\AssignOp\Plus($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            428 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\AssignOp\Minus($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            429 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\AssignOp\Mul($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            430 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\AssignOp\Div($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            431 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\AssignOp\Concat($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            432 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\AssignOp\Mod($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            433 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\AssignOp\BitwiseAnd($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            434 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\AssignOp\BitwiseOr($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            435 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\AssignOp\BitwiseXor($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            436 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\AssignOp\ShiftLeft($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            437 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\AssignOp\ShiftRight($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            438 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\AssignOp\Pow($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            439 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\AssignOp\Coalesce($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            440 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\PostInc($self->semStack[$stackPos-(2-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
            },
            441 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\PreInc($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
            },
            442 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\PostDec($self->semStack[$stackPos-(2-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
            },
            443 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\PreDec($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
            },
            444 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\BinaryOp\BooleanOr($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            445 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\BinaryOp\BooleanAnd($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            446 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\BinaryOp\LogicalOr($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            447 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\BinaryOp\LogicalAnd($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            448 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\BinaryOp\LogicalXor($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            449 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\BinaryOp\BitwiseOr($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            450 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\BinaryOp\BitwiseAnd($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            451 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\BinaryOp\BitwiseAnd($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            452 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\BinaryOp\BitwiseXor($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            453 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\BinaryOp\Concat($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            454 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\BinaryOp\Plus($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            455 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\BinaryOp\Minus($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            456 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\BinaryOp\Mul($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            457 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\BinaryOp\Div($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            458 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\BinaryOp\Mod($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            459 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\BinaryOp\ShiftLeft($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            460 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\BinaryOp\ShiftRight($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            461 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\BinaryOp\Pow($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            462 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\UnaryPlus($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
            },
            463 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\UnaryMinus($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
            },
            464 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\BooleanNot($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
            },
            465 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\BitwiseNot($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
            },
            466 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\BinaryOp\Identical($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            467 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\BinaryOp\NotIdentical($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            468 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\BinaryOp\Equal($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            469 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\BinaryOp\NotEqual($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            470 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\BinaryOp\Spaceship($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            471 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\BinaryOp\Smaller($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            472 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\BinaryOp\SmallerOrEqual($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            473 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\BinaryOp\Greater($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            474 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\BinaryOp\GreaterOrEqual($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            475 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\Instanceof_($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            476 => static function ($self, $stackPos) {

          $self->semValue = $self->semStack[$stackPos-(3-2)];
          if ($self->semValue instanceof Expr\ArrowFunction) {
              $self->parenthesizedArrowFunctions->offsetSet($self->semValue);
          }

            },
            477 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\Ternary($self->semStack[$stackPos-(5-1)], $self->semStack[$stackPos-(5-3)], $self->semStack[$stackPos-(5-5)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos]));
            },
            478 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\Ternary($self->semStack[$stackPos-(4-1)], null, $self->semStack[$stackPos-(4-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]));
            },
            479 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\BinaryOp\Coalesce($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            480 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\Isset_($self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]));
            },
            481 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\Empty_($self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]));
            },
            482 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\Include_($self->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
            },
            483 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\Include_($self->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE_ONCE, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
            },
            484 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\Eval_($self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]));
            },
            485 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\Include_($self->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
            },
            486 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\Include_($self->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE_ONCE, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
            },
            487 => static function ($self, $stackPos) {
                 $attrs = $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]);
            $attrs['kind'] = $self->getIntCastKind($self->semStack[$stackPos-(2-1)]);
            $self->semValue = new Expr\Cast\Int_($self->semStack[$stackPos-(2-2)], $attrs);
            },
            488 => static function ($self, $stackPos) {
                 $attrs = $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]);
            $attrs['kind'] = $self->getFloatCastKind($self->semStack[$stackPos-(2-1)]);
            $self->semValue = new Expr\Cast\Double($self->semStack[$stackPos-(2-2)], $attrs);
            },
            489 => static function ($self, $stackPos) {
                 $attrs = $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]);
            $attrs['kind'] = $self->getStringCastKind($self->semStack[$stackPos-(2-1)]);
            $self->semValue = new Expr\Cast\String_($self->semStack[$stackPos-(2-2)], $attrs);
            },
            490 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\Cast\Array_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
            },
            491 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\Cast\Object_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
            },
            492 => static function ($self, $stackPos) {
                 $attrs = $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]);
            $attrs['kind'] = $self->getBoolCastKind($self->semStack[$stackPos-(2-1)]);
            $self->semValue = new Expr\Cast\Bool_($self->semStack[$stackPos-(2-2)], $attrs);
            },
            493 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\Cast\Unset_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
            },
            494 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\Cast\Void_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
            },
            495 => static function ($self, $stackPos) {
                 $self->semValue = $self->createExitExpr($self->semStack[$stackPos-(2-1)], $stackPos-(2-1), $self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
            },
            496 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\ErrorSuppress($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
            },
            497 => null,
            498 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\ShellExec($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            499 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\Print_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
            },
            500 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\Yield_(null, null, $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            501 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\Yield_($self->semStack[$stackPos-(2-2)], null, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
            },
            502 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\Yield_($self->semStack[$stackPos-(4-4)], $self->semStack[$stackPos-(4-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]));
            },
            503 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\YieldFrom($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
            },
            504 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\Throw_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
            },
            505 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\ArrowFunction(['static' => false, 'byRef' => $self->semStack[$stackPos-(8-2)], 'params' => $self->semStack[$stackPos-(8-4)], 'returnType' => $self->semStack[$stackPos-(8-6)], 'expr' => $self->semStack[$stackPos-(8-8)], 'attrGroups' => []], $self->getAttributes($self->tokenStartStack[$stackPos-(8-1)], $self->tokenEndStack[$stackPos]));
            },
            506 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\ArrowFunction(['static' => true, 'byRef' => $self->semStack[$stackPos-(9-3)], 'params' => $self->semStack[$stackPos-(9-5)], 'returnType' => $self->semStack[$stackPos-(9-7)], 'expr' => $self->semStack[$stackPos-(9-9)], 'attrGroups' => []], $self->getAttributes($self->tokenStartStack[$stackPos-(9-1)], $self->tokenEndStack[$stackPos]));
            },
            507 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\Closure(['static' => false, 'byRef' => $self->semStack[$stackPos-(8-2)], 'params' => $self->semStack[$stackPos-(8-4)], 'uses' => $self->semStack[$stackPos-(8-6)], 'returnType' => $self->semStack[$stackPos-(8-7)], 'stmts' => $self->semStack[$stackPos-(8-8)], 'attrGroups' => []], $self->getAttributes($self->tokenStartStack[$stackPos-(8-1)], $self->tokenEndStack[$stackPos]));
            },
            508 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\Closure(['static' => true, 'byRef' => $self->semStack[$stackPos-(9-3)], 'params' => $self->semStack[$stackPos-(9-5)], 'uses' => $self->semStack[$stackPos-(9-7)], 'returnType' => $self->semStack[$stackPos-(9-8)], 'stmts' => $self->semStack[$stackPos-(9-9)], 'attrGroups' => []], $self->getAttributes($self->tokenStartStack[$stackPos-(9-1)], $self->tokenEndStack[$stackPos]));
            },
            509 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\ArrowFunction(['static' => false, 'byRef' => $self->semStack[$stackPos-(9-3)], 'params' => $self->semStack[$stackPos-(9-5)], 'returnType' => $self->semStack[$stackPos-(9-7)], 'expr' => $self->semStack[$stackPos-(9-9)], 'attrGroups' => $self->semStack[$stackPos-(9-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(9-1)], $self->tokenEndStack[$stackPos]));
            },
            510 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\ArrowFunction(['static' => true, 'byRef' => $self->semStack[$stackPos-(10-4)], 'params' => $self->semStack[$stackPos-(10-6)], 'returnType' => $self->semStack[$stackPos-(10-8)], 'expr' => $self->semStack[$stackPos-(10-10)], 'attrGroups' => $self->semStack[$stackPos-(10-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(10-1)], $self->tokenEndStack[$stackPos]));
            },
            511 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\Closure(['static' => false, 'byRef' => $self->semStack[$stackPos-(9-3)], 'params' => $self->semStack[$stackPos-(9-5)], 'uses' => $self->semStack[$stackPos-(9-7)], 'returnType' => $self->semStack[$stackPos-(9-8)], 'stmts' => $self->semStack[$stackPos-(9-9)], 'attrGroups' => $self->semStack[$stackPos-(9-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(9-1)], $self->tokenEndStack[$stackPos]));
            },
            512 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\Closure(['static' => true, 'byRef' => $self->semStack[$stackPos-(10-4)], 'params' => $self->semStack[$stackPos-(10-6)], 'uses' => $self->semStack[$stackPos-(10-8)], 'returnType' => $self->semStack[$stackPos-(10-9)], 'stmts' => $self->semStack[$stackPos-(10-10)], 'attrGroups' => $self->semStack[$stackPos-(10-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(10-1)], $self->tokenEndStack[$stackPos]));
            },
            513 => static function ($self, $stackPos) {
                 $self->semValue = array(new Stmt\Class_(null, ['type' => $self->semStack[$stackPos-(8-2)], 'extends' => $self->semStack[$stackPos-(8-4)], 'implements' => $self->semStack[$stackPos-(8-5)], 'stmts' => $self->semStack[$stackPos-(8-7)], 'attrGroups' => $self->semStack[$stackPos-(8-1)]], $self->getAttributes($self->tokenStartStack[$stackPos-(8-1)], $self->tokenEndStack[$stackPos])), $self->semStack[$stackPos-(8-3)]);
            $self->checkClass($self->semValue[0], -1);
            },
            514 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\New_($self->semStack[$stackPos-(3-2)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            515 => static function ($self, $stackPos) {
                 list($class, $ctorArgs) = $self->semStack[$stackPos-(2-2)]; $self->semValue = new Expr\New_($class, $ctorArgs, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
            },
            516 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\New_($self->semStack[$stackPos-(2-2)], [], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
            },
            517 => null,
            518 => null,
            519 => static function ($self, $stackPos) {
                 $self->semValue = array();
            },
            520 => static function ($self, $stackPos) {
                 $self->semValue = $self->semStack[$stackPos-(4-3)];
            },
            521 => null,
            522 => static function ($self, $stackPos) {
                 $self->semValue = array($self->semStack[$stackPos-(1-1)]);
            },
            523 => static function ($self, $stackPos) {
                 $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
            },
            524 => static function ($self, $stackPos) {
                 $self->semValue = new Node\ClosureUse($self->semStack[$stackPos-(2-2)], $self->semStack[$stackPos-(2-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
            },
            525 => static function ($self, $stackPos) {
                 $self->semValue = new Name($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            526 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\FuncCall($self->semStack[$stackPos-(2-1)], $self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
            },
            527 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\FuncCall($self->semStack[$stackPos-(2-1)], $self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
            },
            528 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\FuncCall($self->semStack[$stackPos-(2-1)], $self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
            },
            529 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\StaticCall($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-3)], $self->semStack[$stackPos-(4-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]));
            },
            530 => static function ($self, $stackPos) {
                 $self->semValue = new Name($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            531 => null,
            532 => static function ($self, $stackPos) {
                 $self->semValue = new Name($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            533 => static function ($self, $stackPos) {
                 $self->semValue = new Name($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            534 => static function ($self, $stackPos) {
                 $self->semValue = new Name\FullyQualified(substr($self->semStack[$stackPos-(1-1)], 1), $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            535 => static function ($self, $stackPos) {
                 $self->semValue = new Name\Relative(substr($self->semStack[$stackPos-(1-1)], 10), $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            536 => null,
            537 => null,
            538 => static function ($self, $stackPos) {
                 $self->semValue = $self->semStack[$stackPos-(3-2)];
            },
            539 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\Error($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); $self->errorState = 2;
            },
            540 => null,
            541 => null,
            542 => static function ($self, $stackPos) {
                 $self->semValue = array();
            },
            543 => static function ($self, $stackPos) {
                 $self->semValue = array($self->semStack[$stackPos-(1-1)]); foreach ($self->semValue as $s) { if ($s instanceof Node\InterpolatedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '`', $self->phpVersion->supportsUnicodeEscapes()); } };
            },
            544 => static function ($self, $stackPos) {
                 foreach ($self->semStack[$stackPos-(1-1)] as $s) { if ($s instanceof Node\InterpolatedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '`', $self->phpVersion->supportsUnicodeEscapes()); } }; $self->semValue = $self->semStack[$stackPos-(1-1)];
            },
            545 => static function ($self, $stackPos) {
                 $self->semValue = array();
            },
            546 => null,
            547 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\ConstFetch($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            548 => static function ($self, $stackPos) {
                 $self->semValue = new Scalar\MagicConst\Line($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            549 => static function ($self, $stackPos) {
                 $self->semValue = new Scalar\MagicConst\File($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            550 => static function ($self, $stackPos) {
                 $self->semValue = new Scalar\MagicConst\Dir($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            551 => static function ($self, $stackPos) {
                 $self->semValue = new Scalar\MagicConst\Class_($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            552 => static function ($self, $stackPos) {
                 $self->semValue = new Scalar\MagicConst\Trait_($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            553 => static function ($self, $stackPos) {
                 $self->semValue = new Scalar\MagicConst\Method($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            554 => static function ($self, $stackPos) {
                 $self->semValue = new Scalar\MagicConst\Function_($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            555 => static function ($self, $stackPos) {
                 $self->semValue = new Scalar\MagicConst\Namespace_($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            556 => static function ($self, $stackPos) {
                 $self->semValue = new Scalar\MagicConst\Property($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            557 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\ClassConstFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            558 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\ClassConstFetch($self->semStack[$stackPos-(5-1)], $self->semStack[$stackPos-(5-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(5-1)], $self->tokenEndStack[$stackPos]));
            },
            559 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\ClassConstFetch($self->semStack[$stackPos-(3-1)], new Expr\Error($self->getAttributes($self->tokenStartStack[$stackPos-(3-3)],  $self->tokenEndStack[$stackPos-(3-3)])), $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); $self->errorState = 2;
            },
            560 => static function ($self, $stackPos) {
                 $attrs = $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]); $attrs['kind'] = Expr\Array_::KIND_SHORT;
            $self->semValue = new Expr\Array_($self->semStack[$stackPos-(3-2)], $attrs);
            },
            561 => static function ($self, $stackPos) {
                 $attrs = $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]); $attrs['kind'] = Expr\Array_::KIND_LONG;
            $self->semValue = new Expr\Array_($self->semStack[$stackPos-(4-3)], $attrs);
            $self->createdArrays->offsetSet($self->semValue);
            },
            562 => static function ($self, $stackPos) {
                 $self->semValue = $self->semStack[$stackPos-(1-1)]; $self->createdArrays->offsetSet($self->semValue);
            },
            563 => static function ($self, $stackPos) {
                 $self->semValue = Scalar\String_::fromString($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]), $self->phpVersion->supportsUnicodeEscapes());
            },
            564 => static function ($self, $stackPos) {
                 $attrs = $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]); $attrs['kind'] = Scalar\String_::KIND_DOUBLE_QUOTED;
            foreach ($self->semStack[$stackPos-(3-2)] as $s) { if ($s instanceof Node\InterpolatedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '"', $self->phpVersion->supportsUnicodeEscapes()); } }; $self->semValue = new Scalar\InterpolatedString($self->semStack[$stackPos-(3-2)], $attrs);
            },
            565 => static function ($self, $stackPos) {
                 $self->semValue = $self->parseLNumber($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]), $self->phpVersion->allowsInvalidOctals());
            },
            566 => static function ($self, $stackPos) {
                 $self->semValue = Scalar\Float_::fromString($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            567 => null,
            568 => null,
            569 => null,
            570 => static function ($self, $stackPos) {
                 $self->semValue = $self->parseDocString($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-2)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]), $self->getAttributes($self->tokenStartStack[$stackPos-(3-3)],  $self->tokenEndStack[$stackPos-(3-3)]), true);
            },
            571 => static function ($self, $stackPos) {
                 $self->semValue = $self->parseDocString($self->semStack[$stackPos-(2-1)], '', $self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]), $self->getAttributes($self->tokenStartStack[$stackPos-(2-2)],  $self->tokenEndStack[$stackPos-(2-2)]), true);
            },
            572 => static function ($self, $stackPos) {
                 $self->semValue = $self->parseDocString($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-2)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]), $self->getAttributes($self->tokenStartStack[$stackPos-(3-3)],  $self->tokenEndStack[$stackPos-(3-3)]), true);
            },
            573 => static function ($self, $stackPos) {
                 $self->semValue = null;
            },
            574 => null,
            575 => null,
            576 => static function ($self, $stackPos) {
                 $self->semValue = $self->semStack[$stackPos-(3-2)];
            },
            577 => null,
            578 => null,
            579 => null,
            580 => null,
            581 => null,
            582 => null,
            583 => static function ($self, $stackPos) {
                 $self->semValue = $self->semStack[$stackPos-(3-2)];
            },
            584 => null,
            585 => null,
            586 => null,
            587 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\ArrayDimFetch($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]));
            },
            588 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\ArrayDimFetch($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]));
            },
            589 => null,
            590 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\MethodCall($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-3)], $self->semStack[$stackPos-(4-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]));
            },
            591 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\NullsafeMethodCall($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-3)], $self->semStack[$stackPos-(4-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]));
            },
            592 => static function ($self, $stackPos) {
                 $self->semValue = null;
            },
            593 => null,
            594 => null,
            595 => null,
            596 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\PropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            597 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\NullsafePropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            598 => null,
            599 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\Variable($self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]));
            },
            600 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\Variable($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
            },
            601 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\Variable(new Expr\Error($self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])), $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos])); $self->errorState = 2;
            },
            602 => static function ($self, $stackPos) {
                 $var = $self->semStack[$stackPos-(1-1)]->name; $self->semValue = \is_string($var) ? new Node\VarLikeIdentifier($var, $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])) : $var;
            },
            603 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\StaticPropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            604 => null,
            605 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\ArrayDimFetch($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]));
            },
            606 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\ArrayDimFetch($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]));
            },
            607 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\PropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            608 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\NullsafePropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            609 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\StaticPropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            610 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\StaticPropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            611 => null,
            612 => static function ($self, $stackPos) {
                 $self->semValue = $self->semStack[$stackPos-(3-2)];
            },
            613 => null,
            614 => null,
            615 => static function ($self, $stackPos) {
                 $self->semValue = $self->semStack[$stackPos-(3-2)];
            },
            616 => null,
            617 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\Error($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); $self->errorState = 2;
            },
            618 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\List_($self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])); $self->semValue->setAttribute('kind', Expr\List_::KIND_LIST);
            $self->postprocessList($self->semValue);
            },
            619 => static function ($self, $stackPos) {
                 $self->semValue = $self->semStack[$stackPos-(1-1)]; $end = count($self->semValue)-1; if ($self->semValue[$end]->value instanceof Expr\Error) array_pop($self->semValue);
            },
            620 => null,
            621 => static function ($self, $stackPos) {
                 /* do nothing -- prevent default action of $$=$self->semStack[$1]. See $551. */
            },
            622 => static function ($self, $stackPos) {
                 $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
            },
            623 => static function ($self, $stackPos) {
                 $self->semValue = array($self->semStack[$stackPos-(1-1)]);
            },
            624 => static function ($self, $stackPos) {
                 $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(1-1)], null, false, $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            625 => static function ($self, $stackPos) {
                 $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(2-2)], null, true, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
            },
            626 => static function ($self, $stackPos) {
                 $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(1-1)], null, false, $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            627 => static function ($self, $stackPos) {
                 $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(3-3)], $self->semStack[$stackPos-(3-1)], false, $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            628 => static function ($self, $stackPos) {
                 $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(4-4)], $self->semStack[$stackPos-(4-1)], true, $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]));
            },
            629 => static function ($self, $stackPos) {
                 $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(3-3)], $self->semStack[$stackPos-(3-1)], false, $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            630 => static function ($self, $stackPos) {
                 $self->semValue = new Node\ArrayItem($self->semStack[$stackPos-(2-2)], null, false, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]), true);
            },
            631 => static function ($self, $stackPos) {
                 /* Create an Error node now to remember the position. We'll later either report an error,
             or convert this into a null element, depending on whether this is a creation or destructuring context. */
          $attrs = $self->createEmptyElemAttributes($self->tokenPos);
          $self->semValue = new Node\ArrayItem(new Expr\Error($attrs), null, false, $attrs);
            },
            632 => static function ($self, $stackPos) {
                 $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)];
            },
            633 => static function ($self, $stackPos) {
                 $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)];
            },
            634 => static function ($self, $stackPos) {
                 $self->semValue = array($self->semStack[$stackPos-(1-1)]);
            },
            635 => static function ($self, $stackPos) {
                 $self->semValue = array($self->semStack[$stackPos-(2-1)], $self->semStack[$stackPos-(2-2)]);
            },
            636 => static function ($self, $stackPos) {
                 $attrs = $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]); $attrs['rawValue'] = $self->semStack[$stackPos-(1-1)]; $self->semValue = new Node\InterpolatedStringPart($self->semStack[$stackPos-(1-1)], $attrs);
            },
            637 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\Variable($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            638 => null,
            639 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\ArrayDimFetch($self->semStack[$stackPos-(4-1)], $self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]));
            },
            640 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\PropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            641 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\NullsafePropertyFetch($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            642 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\Variable($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            643 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\Variable($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
            },
            644 => static function ($self, $stackPos) {
                 $self->semValue = new Expr\ArrayDimFetch($self->semStack[$stackPos-(6-2)], $self->semStack[$stackPos-(6-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(6-1)], $self->tokenEndStack[$stackPos]));
            },
            645 => static function ($self, $stackPos) {
                 $self->semValue = $self->semStack[$stackPos-(3-2)];
            },
            646 => static function ($self, $stackPos) {
                 $self->semValue = new Scalar\String_($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            647 => static function ($self, $stackPos) {
                 $self->semValue = $self->parseNumString($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
            },
            648 => static function ($self, $stackPos) {
                 $self->semValue = $self->parseNumString('-' . $self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
            },
            649 => null,
        ];
    }
}
