diff -pruN 5.4.0-3/.github/workflows/main.yml 5.6.1-2/.github/workflows/main.yml
--- 5.4.0-3/.github/workflows/main.yml	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/.github/workflows/main.yml	2025-08-13 20:13:15.000000000 +0000
@@ -39,6 +39,7 @@ jobs:
           - "8.2"
           - "8.3"
           - "8.4"
+          - "8.5"
       fail-fast: false
     steps:
       - name: "Checkout"
diff -pruN 5.4.0-3/CHANGELOG.md 5.6.1-2/CHANGELOG.md
--- 5.4.0-3/CHANGELOG.md	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/CHANGELOG.md	2025-08-13 20:13:15.000000000 +0000
@@ -1,3 +1,46 @@
+Version 5.6.1 (2025-08-13)
+--------------------------
+
+### Fixed
+
+* Fixed `Param::isPublic()` for parameters with asymmetric visibility keyword.
+* Fixed PHP 8.5 deprecation warnings for `SplObjectStorage` methods.
+
+### Added
+
+* Added cast `kind` attributes to `Cast\Int_`, `Cast\Bool_` and `Cast\String_`.
+  These allow distinguishing the deprecated versions of these casts.
+
+Version 5.6.0 (2025-07-27)
+--------------------------
+
+### Added
+
+* [8.5] Added support for `clone` with arbitrary function arguments. This will be parsed as an
+  `Expr\FuncCall` node, instead of the usual `Expr\Clone_` node.
+* [8.5] Permit declaration of `function clone` for use in stubs.
+* [8.5] Added support for the pipe operator, represented by `Expr\BinaryOp\Pipe`.
+* [8.5] Added support for the `(void)` cast, represented by `Expr\Cast\Void_`.
+* [8.5] Added support for the `final` modifier on promoted properties.
+* Added `CallLike::getArg()` to fetch an argument by position and name.
+
+Version 5.5.0 (2025-05-31)
+--------------------------
+
+### Added
+
+* [8.5] Added support for attributes on constants. `Stmt\Const_` now has an `attrGroups` subnode.
+* Added `weakReferences` option to `NodeConnectingVisitor` and `ParentConnectingVisitor`. This
+  will create the parent/next/prev references as WeakReferences, to avoid making the AST cyclic
+  and thus increasing GC pressure.
+
+### Changed
+
+* Attributes on parameters are now printed on separate lines if the pretty printer target version
+  is PHP 7.4 or older (which is the default). This allows them to be interpreted as comments,
+  instead of causing a parse error. Specify a target version of PHP 8.0 or newer to restore the
+  previous behavior.
+
 Version 5.4.0 (2024-12-30)
 --------------------------
 
diff -pruN 5.4.0-3/Makefile 5.6.1-2/Makefile
--- 5.4.0-3/Makefile	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/Makefile	2025-08-13 20:13:15.000000000 +0000
@@ -8,3 +8,6 @@ phpstan: tools/vendor
 
 php-cs-fixer: tools/vendor
 	php tools/vendor/bin/php-cs-fixer fix
+
+tests:
+	php vendor/bin/phpunit
\ No newline at end of file
diff -pruN 5.4.0-3/UPGRADE-5.0.md 5.6.1-2/UPGRADE-5.0.md
--- 5.4.0-3/UPGRADE-5.0.md	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/UPGRADE-5.0.md	2025-08-13 20:13:15.000000000 +0000
@@ -37,7 +37,7 @@ The `ParserFactory::create()` method has
  * `createForHostVersion()`: Use this if you're parsing code for the PHP version you're running on.
  * `createForVersion()`: Use this if you know the PHP version of the code you want to parse.
 
-The `createForNewestSupportedVersion()` and `creatForHostVersion()` are available since PHP-Parser 4.18.0, to allow libraries to support PHP-Parser 4 and 5 at the same time more easily.
+The `createForNewestSupportedVersion()` and `createForHostVersion()` are available since PHP-Parser 4.18.0, to allow libraries to support PHP-Parser 4 and 5 at the same time more easily.
 
 In all cases, the PHP version is a fairly weak hint that is only used on a best-effort basis. The parser will usually accept code for newer versions if it does not have any backwards-compatibility implications.
 
@@ -308,7 +308,7 @@ PhpParser\Node\Stmt\Class_::VISIBILITY_M
 
 ### Changes to node constructors
 
-Node constructor arguments accepting types now longer accept plain strings. Either an `Identifier` or `Name` (or `ComplexType`) should be passed instead. This affects the following constructor arguments:
+Node constructor arguments accepting types no longer accept plain strings. Either an `Identifier` or `Name` (or `ComplexType`) should be passed instead. This affects the following constructor arguments:
 
 * The `'returnType'` key of `$subNodes` argument of `Node\Expr\ArrowFunction`.
 * The `'returnType'` key of `$subNodes` argument of `Node\Expr\Closure`.
diff -pruN 5.4.0-3/composer.json 5.6.1-2/composer.json
--- 5.4.0-3/composer.json	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/composer.json	2025-08-13 20:13:15.000000000 +0000
@@ -24,7 +24,7 @@
     },
     "extra": {
         "branch-alias": {
-            "dev-master": "5.0-dev"
+            "dev-master": "5.x-dev"
         }
     },
     "autoload": {
diff -pruN 5.4.0-3/debian/changelog 5.6.1-2/debian/changelog
--- 5.4.0-3/debian/changelog	2025-02-17 19:08:05.000000000 +0000
+++ 5.6.1-2/debian/changelog	2025-08-17 10:07:44.000000000 +0000
@@ -1,3 +1,62 @@
+php-parser (5.6.1-2) unstable; urgency=medium
+
+  * Source only upload
+
+ -- David Prévot <taffit@debian.org>  Sun, 17 Aug 2025 12:07:44 +0200
+
+php-parser (5.6.1-1) unstable; urgency=medium
+
+  * Upload to unstable since Trixie has been released
+
+  [ Nikita Popov ]
+  * Fix Param::isPublic() for param with asymmetric visibility
+  * Avoid deprecated SplObjectStorage::attach/detach
+  * Release PHP-Parser 5.6.1
+
+  [ Matthias Schmidt ]
+  * Add cast kinds for bool, int, string (#1098)
+
+  [ David Prévot ]
+  * Add nocheck hint for bootstraping
+
+ -- David Prévot <taffit@debian.org>  Sun, 17 Aug 2025 10:05:43 +0200
+
+php-parser (5.6.0-1) experimental; urgency=medium
+
+  [ Tim Düsterhus ]
+  * Support declaring functions with name clone (#1090)
+  * Support every argument syntax for `clone()` (#1092)
+
+  [ Caleb White ]
+  * feat: add CallLike::getArg() method (#1089)
+
+  [ Nikita Popov ]
+  * Add support for pipe operator
+  * Add support for void cast
+  * Allow final on promoted properties
+  * Release PHP-Parser 5.6.0
+
+ -- David Prévot <taffit@debian.org>  Fri, 01 Aug 2025 08:16:36 +0200
+
+php-parser (5.5.0-1) experimental; urgency=medium
+
+  * Upload to experimental during the freeze
+
+  [ Nikita Popov ]
+  * Use multi-line attributes for params when targeting PHP <8.0
+  * Release PHP-Parser 5.5.0
+
+  [ Markus Staab ]
+  * Support WeakReferences in NodeConnectingVisitor (#1057)
+
+  [ Daniel Scherzer ]
+  * Add support for attributes on constants
+
+  [ David Prévot ]
+  * Update Standards-Version to 4.7.2
+
+ -- David Prévot <taffit@debian.org>  Tue, 03 Jun 2025 19:28:10 +0200
+
 php-parser (5.4.0-3) unstable; urgency=medium
 
   * Modernize PHPUnit syntax
diff -pruN 5.4.0-3/debian/control 5.6.1-2/debian/control
--- 5.4.0-3/debian/control	2024-07-06 10:52:32.000000000 +0000
+++ 5.6.1-2/debian/control	2025-08-17 08:13:26.000000000 +0000
@@ -8,8 +8,8 @@ Build-Depends: debhelper-compat (= 13),
                dh-sequence-phpcomposer,
                help2man,
                phpab,
-               phpunit
-Standards-Version: 4.7.0
+               phpunit <!nocheck>
+Standards-Version: 4.7.2
 Homepage: https://github.com/nikic/PHP-Parser
 Vcs-Git: https://salsa.debian.org/php-team/pear/php-parser.git
 Vcs-Browser: https://salsa.debian.org/php-team/pear/php-parser
diff -pruN 5.4.0-3/debian/patches/0003-Modernize-PHPUnit-syntax.patch 5.6.1-2/debian/patches/0003-Modernize-PHPUnit-syntax.patch
--- 5.4.0-3/debian/patches/0003-Modernize-PHPUnit-syntax.patch	2025-02-17 19:08:05.000000000 +0000
+++ 5.6.1-2/debian/patches/0003-Modernize-PHPUnit-syntax.patch	2025-08-17 08:03:31.000000000 +0000
@@ -143,7 +143,7 @@ index 0505327..9067cd4 100644
          $node = $this->createPropertyBuilder('test')
              ->setDefault($value)
 diff --git a/test/PhpParser/BuilderFactoryTest.php b/test/PhpParser/BuilderFactoryTest.php
-index 7597a14..03a8b95 100644
+index 4f807c0..0f16b2e 100644
 --- a/test/PhpParser/BuilderFactoryTest.php
 +++ b/test/PhpParser/BuilderFactoryTest.php
 @@ -10,11 +10,10 @@ use PhpParser\Node\Identifier;
@@ -203,7 +203,7 @@ index 1d0f0eb..b2d920b 100644
          $comment = new Comment($commentText);
          $this->assertSame($reformattedText, $comment->getReformattedText());
 diff --git a/test/PhpParser/ConstExprEvaluatorTest.php b/test/PhpParser/ConstExprEvaluatorTest.php
-index fa0484b..5d7b32d 100644
+index 513918e..589c31a 100644
 --- a/test/PhpParser/ConstExprEvaluatorTest.php
 +++ b/test/PhpParser/ConstExprEvaluatorTest.php
 @@ -4,9 +4,10 @@ namespace PhpParser;
@@ -216,9 +216,9 @@ index fa0484b..5d7b32d 100644
 -    /** @dataProvider provideTestEvaluate */
 +    #[DataProvider('provideTestEvaluate')]
      public function testEvaluate($exprString, $expected): void {
-         $parser = new Parser\Php7(new Lexer());
+         $parser = (new ParserFactory())->createForNewestSupportedVersion();
          $expr = $parser->parse('<?php ' . $exprString . ';')[0]->expr;
-@@ -95,9 +96,7 @@ class ConstExprEvaluatorTest extends \PHPUnit\Framework\TestCase {
+@@ -96,9 +97,7 @@ class ConstExprEvaluatorTest extends \PHPUnit\Framework\TestCase {
          $this->assertSame(50, $evaluator->evaluateDirectly($expr));
      }
  
@@ -317,7 +317,7 @@ index 9f1e837..b6cf452 100644
          $jsonDecoder = new JsonDecoder();
          $this->expectException(\RuntimeException::class);
 diff --git a/test/PhpParser/Lexer/EmulativeTest.php b/test/PhpParser/Lexer/EmulativeTest.php
-index 6bb52ec..0d21f5e 100644
+index 2613289..ffe4370 100644
 --- a/test/PhpParser/Lexer/EmulativeTest.php
 +++ b/test/PhpParser/Lexer/EmulativeTest.php
 @@ -8,6 +8,7 @@ use PhpParser\LexerTest;
@@ -414,7 +414,7 @@ index 6bb52ec..0d21f5e 100644
      public function testErrorAfterEmulation($code): void {
          $errorHandler = new ErrorHandler\Collecting();
          $lexer = $this->getLexer();
-@@ -427,9 +412,7 @@ class EmulativeTest extends LexerTest {
+@@ -448,9 +433,7 @@ class EmulativeTest extends LexerTest {
          ];
      }
  
@@ -479,10 +479,10 @@ index 1c8295e..7b99a0e 100644
          $nameContext = new NameContext(new ErrorHandler\Throwing());
          $nameContext->startNamespace(new Name('NS'));
 diff --git a/test/PhpParser/Node/Expr/CallableLikeTest.php b/test/PhpParser/Node/Expr/CallableLikeTest.php
-index c30e21a..f341843 100644
+index 618c972..06b981e 100644
 --- a/test/PhpParser/Node/Expr/CallableLikeTest.php
 +++ b/test/PhpParser/Node/Expr/CallableLikeTest.php
-@@ -6,11 +6,10 @@ use PhpParser\Node\Arg;
+@@ -7,11 +7,10 @@ use PhpParser\Node\Identifier;
  use PhpParser\Node\Name;
  use PhpParser\Node\Scalar\Int_;
  use PhpParser\Node\VariadicPlaceholder;
@@ -541,7 +541,7 @@ index eb25d04..0c3f4d9 100644
          $name = new Name($name);
          $this->assertSame($expected, $name->isSpecialClassName());
 diff --git a/test/PhpParser/Node/ParamTest.php b/test/PhpParser/Node/ParamTest.php
-index c488b65..74cb1bb 100644
+index e4b670c..22200ca 100644
 --- a/test/PhpParser/Node/ParamTest.php
 +++ b/test/PhpParser/Node/ParamTest.php
 @@ -4,6 +4,7 @@ namespace PhpParser\Node;
@@ -814,7 +814,7 @@ index 09ea814..d63f242 100644
          $this->expectException(\LogicException::class);
          $this->expectExceptionMessage($message);
 diff --git a/test/PhpParser/NodeVisitor/NameResolverTest.php b/test/PhpParser/NodeVisitor/NameResolverTest.php
-index e2d5c03..dc3f9a1 100644
+index a50a595..2d2a682 100644
 --- a/test/PhpParser/NodeVisitor/NameResolverTest.php
 +++ b/test/PhpParser/NodeVisitor/NameResolverTest.php
 @@ -7,6 +7,7 @@ use PhpParser\Node;
@@ -825,7 +825,7 @@ index e2d5c03..dc3f9a1 100644
  
  class NameResolverTest extends \PHPUnit\Framework\TestCase {
      private function canonicalize($string) {
-@@ -419,9 +420,7 @@ EOC;
+@@ -433,9 +434,7 @@ EOC;
          $this->assertFalse($stmts[1]->stmts[1]->name->hasAttribute('namespacedName'));
      }
  
diff -pruN 5.4.0-3/debian/tests/control 5.6.1-2/debian/tests/control
--- 5.4.0-3/debian/tests/control	2025-02-17 19:04:00.000000000 +0000
+++ 5.6.1-2/debian/tests/control	2025-08-01 06:12:12.000000000 +0000
@@ -1,3 +1,3 @@
 Test-Command: mkdir --parents vendor && phpabtpl --require nikic/php-parser > debian/autoload.tests.php.tpl && phpab -o vendor/autoload.php -t debian/autoload.tests.php.tpl test/PhpParser && phpunit --exclude-filter testAttributes
-Restrictions: rw-build-tree, allow-stderr
+Restrictions: allow-stderr, rw-build-tree
 Depends: phpab, phpunit, pkg-php-tools, @
diff -pruN 5.4.0-3/doc/component/FAQ.markdown 5.6.1-2/doc/component/FAQ.markdown
--- 5.4.0-3/doc/component/FAQ.markdown	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/doc/component/FAQ.markdown	2025-08-13 20:13:15.000000000 +0000
@@ -51,3 +51,17 @@ obtained through `$node->getAttribute('n
 
 `ParentConnectingVisitor` and `NodeConnectingVisitor` should not be used at the same time. The latter
 includes the functionality of the former.
+
+
+How can I limit the impact of cyclic references in the AST?
+-----
+
+NodeConnectingVisitor adds a parent reference, which introduces a cycle. This means that the AST can now only be collected by the cycle garbage collector.
+This in turn can lead to performance and/or memory issues. 
+
+To break the cyclic references between AST nodes `NodeConnectingVisitor` supports a boolean `$weakReferences` constructor parameter.
+When set to `true`, all attributes added by `NodeConnectingVisitor` will be wrapped into a `WeakReference` object.
+
+After enabling this parameter, the parent node can be obtained through `$node->getAttribute('weak_parent')`,
+the previous node can be obtained through `$node->getAttribute('weak_previous')`, and the next node can be
+obtained through `$node->getAttribute('weak_next')`.
\ No newline at end of file
diff -pruN 5.4.0-3/grammar/php.y 5.6.1-2/grammar/php.y
--- 5.4.0-3/grammar/php.y	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/grammar/php.y	2025-08-13 20:13:15.000000000 +0000
@@ -1,6 +1,7 @@
 %pure_parser
 %expect 2
 
+%right T_VOID_CAST
 %right T_THROW
 %left T_INCLUDE T_INCLUDE_ONCE T_EVAL T_REQUIRE T_REQUIRE_ONCE
 %left ','
@@ -26,6 +27,7 @@
 %left '+' '-' '.'
 #endif
 #if PHP8
+%left T_PIPE
 %left '.'
 %left T_SL T_SR
 %left '+' '-'
@@ -257,7 +259,10 @@ top_statement:
     | T_USE use_declarations semi                           { $$ = Stmt\Use_[$2, Stmt\Use_::TYPE_NORMAL]; }
     | T_USE use_type use_declarations semi                  { $$ = Stmt\Use_[$3, $2]; }
     | group_use_declaration
-    | T_CONST constant_declaration_list semi                { $$ = Stmt\Const_[$2]; }
+    | T_CONST constant_declaration_list semi                { $$ = new Stmt\Const_($2, attributes(), []); }
+    | attributes T_CONST constant_declaration_list semi
+          { $$ = new Stmt\Const_($3, attributes(), $1);
+            $this->checkConstantAttributes($$); }
 ;
 
 use_type:
@@ -468,6 +473,7 @@ fn_identifier:
       identifier_not_reserved
     | T_READONLY                                            { $$ = Node\Identifier[$1]; }
     | T_EXIT                                                { $$ = Node\Identifier[$1]; }
+    | T_CLONE                                               { $$ = Node\Identifier[$1]; }
 ;
 
 function_declaration_statement:
@@ -680,6 +686,7 @@ property_modifier:
     | T_PROTECTED_SET           { $$ = Modifiers::PROTECTED_SET; }
     | T_PRIVATE_SET             { $$ = Modifiers::PRIVATE_SET; }
     | T_READONLY                { $$ = Modifiers::READONLY; }
+    | T_FINAL                   { $$ = Modifiers::FINAL; }
 ;
 
 parameter:
@@ -781,6 +788,22 @@ argument_list:
     | '(' variadic_placeholder ')'                          { init($2); }
 ;
 
+clone_argument_list:
+      '(' ')'                                              { $$ = array(); }
+    | '(' non_empty_clone_argument_list optional_comma ')' { $$ = $2; }
+    | '(' expr ',' ')'                                     { init(Node\Arg[$2, false, false]); }
+    | '(' variadic_placeholder ')'                         { init($2); }
+;
+
+non_empty_clone_argument_list:
+		expr ',' argument
+			{ init(new Node\Arg($1, false, false, stackAttributes(#1)), $3); }
+	|	argument_no_expr
+			{ init($1); }
+	|	non_empty_clone_argument_list ',' argument
+			{ push($1, $3); }
+;
+
 variadic_placeholder:
       T_ELLIPSIS                                            { $$ = Node\VariadicPlaceholder[]; }
 ;
@@ -790,14 +813,18 @@ non_empty_argument_list:
     | non_empty_argument_list ',' argument                  { push($1, $3); }
 ;
 
-argument:
-      expr                                                  { $$ = Node\Arg[$1, false, false]; }
-    | ampersand variable                                    { $$ = Node\Arg[$2, true, false]; }
+argument_no_expr:
+      ampersand variable                                    { $$ = Node\Arg[$2, true, false]; }
     | T_ELLIPSIS expr                                       { $$ = Node\Arg[$2, false, true]; }
     | identifier_maybe_reserved ':' expr
           { $$ = new Node\Arg($3, false, false, attributes(), $1); }
 ;
 
+argument:
+      expr                                                  { $$ = Node\Arg[$1, false, false]; }
+    | argument_no_expr                                      { $$ = $1; }
+;
+
 global_var_list:
       non_empty_global_var_list no_comma
 ;
@@ -1011,6 +1038,7 @@ expr:
           }
     | new_expr
     | match
+    | T_CLONE clone_argument_list                           { $$ = Expr\FuncCall[new Node\Name($1, stackAttributes(#1)), $2]; }
     | T_CLONE expr                                          { $$ = Expr\Clone_[$2]; }
     | variable T_PLUS_EQUAL expr                            { $$ = Expr\AssignOp\Plus      [$1, $3]; }
     | variable T_MINUS_EQUAL expr                           { $$ = Expr\AssignOp\Minus     [$1, $3]; }
@@ -1060,6 +1088,9 @@ expr:
     | expr T_IS_SMALLER_OR_EQUAL expr                       { $$ = Expr\BinaryOp\SmallerOrEqual[$1, $3]; }
     | expr '>' expr                                         { $$ = Expr\BinaryOp\Greater       [$1, $3]; }
     | expr T_IS_GREATER_OR_EQUAL expr                       { $$ = Expr\BinaryOp\GreaterOrEqual[$1, $3]; }
+#if PHP8
+    | expr T_PIPE expr                                      { $$ = Expr\BinaryOp\Pipe[$1, $3]; }
+#endif
     | expr T_INSTANCEOF class_name_reference                { $$ = Expr\Instanceof_[$1, $3]; }
     | '(' expr ')'                                          { $$ = $2; }
     | expr '?' expr ':' expr                                { $$ = Expr\Ternary[$1, $3,   $5]; }
@@ -1072,16 +1103,26 @@ expr:
     | T_EVAL '(' expr ')'                                   { $$ = Expr\Eval_[$3]; }
     | T_REQUIRE expr                                        { $$ = Expr\Include_[$2, Expr\Include_::TYPE_REQUIRE]; }
     | T_REQUIRE_ONCE expr                                   { $$ = Expr\Include_[$2, Expr\Include_::TYPE_REQUIRE_ONCE]; }
-    | T_INT_CAST expr                                       { $$ = Expr\Cast\Int_    [$2]; }
+    | T_INT_CAST expr
+          { $attrs = attributes();
+            $attrs['kind'] = $this->getIntCastKind($1);
+            $$ = new Expr\Cast\Int_($2, $attrs); }
     | T_DOUBLE_CAST expr
           { $attrs = attributes();
             $attrs['kind'] = $this->getFloatCastKind($1);
             $$ = new Expr\Cast\Double($2, $attrs); }
-    | T_STRING_CAST expr                                    { $$ = Expr\Cast\String_ [$2]; }
+    | T_STRING_CAST expr
+          { $attrs = attributes();
+            $attrs['kind'] = $this->getStringCastKind($1);
+            $$ = new Expr\Cast\String_($2, $attrs); }
     | T_ARRAY_CAST expr                                     { $$ = Expr\Cast\Array_  [$2]; }
     | T_OBJECT_CAST expr                                    { $$ = Expr\Cast\Object_ [$2]; }
-    | T_BOOL_CAST expr                                      { $$ = Expr\Cast\Bool_   [$2]; }
+    | T_BOOL_CAST expr
+          { $attrs = attributes();
+            $attrs['kind'] = $this->getBoolCastKind($1);
+            $$ = new Expr\Cast\Bool_($2, $attrs); }
     | T_UNSET_CAST expr                                     { $$ = Expr\Cast\Unset_  [$2]; }
+    | T_VOID_CAST expr                                      { $$ = Expr\Cast\Void_   [$2]; }
     | T_EXIT ctor_arguments
           { $$ = $this->createExitExpr($1, #1, $2, attributes()); }
     | '@' expr                                              { $$ = Expr\ErrorSuppress[$2]; }
@@ -1234,8 +1275,9 @@ dereferenceable_scalar:
       T_ARRAY '(' array_pair_list ')'
           { $attrs = attributes(); $attrs['kind'] = Expr\Array_::KIND_LONG;
             $$ = new Expr\Array_($3, $attrs);
-            $this->createdArrays->attach($$); }
-    | array_short_syntax                                    { $$ = $1; $this->createdArrays->attach($$); }
+            $this->createdArrays->offsetSet($$); }
+    | array_short_syntax
+	      { $$ = $1; $this->createdArrays->offsetSet($$); }
     | T_CONSTANT_ENCAPSED_STRING
           { $$ = Scalar\String_::fromString($1, attributes(), $this->phpVersion->supportsUnicodeEscapes()); }
     | '"' encaps_list '"'
diff -pruN 5.4.0-3/lib/PhpParser/ConstExprEvaluator.php 5.6.1-2/lib/PhpParser/ConstExprEvaluator.php
--- 5.4.0-3/lib/PhpParser/ConstExprEvaluator.php	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/lib/PhpParser/ConstExprEvaluator.php	2025-08-13 20:13:15.000000000 +0000
@@ -215,6 +215,9 @@ class ConstExprEvaluator {
             case '<':   return $this->evaluate($l) <   $this->evaluate($r);
             case '<=':  return $this->evaluate($l) <=  $this->evaluate($r);
             case '<=>': return $this->evaluate($l) <=> $this->evaluate($r);
+            case '|>':
+                $lval = $this->evaluate($l);
+                return $this->evaluate($r)($lval);
         }
 
         throw new \Exception('Should not happen');
diff -pruN 5.4.0-3/lib/PhpParser/Lexer/Emulative.php 5.6.1-2/lib/PhpParser/Lexer/Emulative.php
--- 5.4.0-3/lib/PhpParser/Lexer/Emulative.php	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/lib/PhpParser/Lexer/Emulative.php	2025-08-13 20:13:15.000000000 +0000
@@ -11,11 +11,13 @@ use PhpParser\Lexer\TokenEmulator\EnumTo
 use PhpParser\Lexer\TokenEmulator\ExplicitOctalEmulator;
 use PhpParser\Lexer\TokenEmulator\MatchTokenEmulator;
 use PhpParser\Lexer\TokenEmulator\NullsafeTokenEmulator;
+use PhpParser\Lexer\TokenEmulator\PipeOperatorEmulator;
 use PhpParser\Lexer\TokenEmulator\PropertyTokenEmulator;
 use PhpParser\Lexer\TokenEmulator\ReadonlyFunctionTokenEmulator;
 use PhpParser\Lexer\TokenEmulator\ReadonlyTokenEmulator;
 use PhpParser\Lexer\TokenEmulator\ReverseEmulator;
 use PhpParser\Lexer\TokenEmulator\TokenEmulator;
+use PhpParser\Lexer\TokenEmulator\VoidCastEmulator;
 use PhpParser\PhpVersion;
 use PhpParser\Token;
 
@@ -47,6 +49,8 @@ class Emulative extends Lexer {
             new ReadonlyFunctionTokenEmulator(),
             new PropertyTokenEmulator(),
             new AsymmetricVisibilityTokenEmulator(),
+            new PipeOperatorEmulator(),
+            new VoidCastEmulator(),
         ];
 
         // Collect emulators that are relevant for the PHP version we're running
diff -pruN 5.4.0-3/lib/PhpParser/Lexer/TokenEmulator/PipeOperatorEmulator.php 5.6.1-2/lib/PhpParser/Lexer/TokenEmulator/PipeOperatorEmulator.php
--- 5.4.0-3/lib/PhpParser/Lexer/TokenEmulator/PipeOperatorEmulator.php	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.1-2/lib/PhpParser/Lexer/TokenEmulator/PipeOperatorEmulator.php	2025-08-13 20:13:15.000000000 +0000
@@ -0,0 +1,45 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Lexer\TokenEmulator;
+
+use PhpParser\Lexer\TokenEmulator\TokenEmulator;
+use PhpParser\PhpVersion;
+use PhpParser\Token;
+
+class PipeOperatorEmulator extends TokenEmulator {
+    public function getPhpVersion(): PhpVersion {
+        return PhpVersion::fromComponents(8, 5);
+    }
+
+    public function isEmulationNeeded(string $code): bool {
+        return \strpos($code, '|>') !== false;
+    }
+
+    public function emulate(string $code, array $tokens): array {
+        for ($i = 0, $c = count($tokens); $i < $c; ++$i) {
+            $token = $tokens[$i];
+            if ($token->text === '|' && isset($tokens[$i + 1]) && $tokens[$i + 1]->text === '>') {
+                array_splice($tokens, $i, 2, [
+                    new Token(\T_PIPE, '|>', $token->line, $token->pos),
+                ]);
+                $c--;
+            }
+        }
+        return $tokens;
+    }
+
+    public function reverseEmulate(string $code, array $tokens): array {
+        for ($i = 0, $c = count($tokens); $i < $c; ++$i) {
+            $token = $tokens[$i];
+            if ($token->id === \T_PIPE) {
+                array_splice($tokens, $i, 1, [
+                    new Token(\ord('|'), '|', $token->line, $token->pos),
+                    new Token(\ord('>'), '>', $token->line, $token->pos + 1),
+                ]);
+                $i++;
+                $c++;
+            }
+        }
+        return $tokens;
+    }
+}
diff -pruN 5.4.0-3/lib/PhpParser/Lexer/TokenEmulator/VoidCastEmulator.php 5.6.1-2/lib/PhpParser/Lexer/TokenEmulator/VoidCastEmulator.php
--- 5.4.0-3/lib/PhpParser/Lexer/TokenEmulator/VoidCastEmulator.php	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.1-2/lib/PhpParser/Lexer/TokenEmulator/VoidCastEmulator.php	2025-08-13 20:13:15.000000000 +0000
@@ -0,0 +1,98 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Lexer\TokenEmulator;
+
+use PhpParser\PhpVersion;
+use PhpParser\Token;
+
+class VoidCastEmulator extends TokenEmulator {
+    public function getPhpVersion(): PhpVersion {
+        return PhpVersion::fromComponents(8, 5);
+    }
+
+    public function isEmulationNeeded(string $code): bool {
+        return (bool)\preg_match('/\([ \t]*void[ \t]*\)/i', $code);
+    }
+
+    public function emulate(string $code, array $tokens): array {
+        for ($i = 0, $c = count($tokens); $i < $c; ++$i) {
+            $token = $tokens[$i];
+            if ($token->text !== '(') {
+                continue;
+            }
+
+            $numTokens = 1;
+            $text = '(';
+            $j = $i + 1;
+            if ($j < $c && $tokens[$j]->id === \T_WHITESPACE && preg_match('/[ \t]+/', $tokens[$j]->text)) {
+                $text .= $tokens[$j]->text;
+                $numTokens++;
+                $j++;
+            }
+
+            if ($j >= $c || $tokens[$j]->id !== \T_STRING || \strtolower($tokens[$j]->text) !== 'void') {
+                continue;
+            }
+
+            $text .= $tokens[$j]->text;
+            $numTokens++;
+            $k = $j + 1;
+            if ($k < $c && $tokens[$k]->id === \T_WHITESPACE && preg_match('/[ \t]+/', $tokens[$k]->text)) {
+                $text .= $tokens[$k]->text;
+                $numTokens++;
+                $k++;
+            }
+
+            if ($k >= $c || $tokens[$k]->text !== ')') {
+                continue;
+            }
+
+            $text .= ')';
+            $numTokens++;
+            array_splice($tokens, $i, $numTokens, [
+                new Token(\T_VOID_CAST, $text, $token->line, $token->pos),
+            ]);
+            $c -= $numTokens - 1;
+        }
+        return $tokens;
+    }
+
+    public function reverseEmulate(string $code, array $tokens): array {
+        for ($i = 0, $c = count($tokens); $i < $c; ++$i) {
+            $token = $tokens[$i];
+            if ($token->id !== \T_VOID_CAST) {
+                continue;
+            }
+
+            if (!preg_match('/^\(([ \t]*)(void)([ \t]*)\)$/i', $token->text, $match)) {
+                throw new \LogicException('Unexpected T_VOID_CAST contents');
+            }
+
+            $newTokens = [];
+            $pos = $token->pos;
+
+            $newTokens[] = new Token(\ord('('), '(', $token->line, $pos);
+            $pos++;
+
+            if ($match[1] !== '') {
+                $newTokens[] = new Token(\T_WHITESPACE, $match[1], $token->line, $pos);
+                $pos += \strlen($match[1]);
+            }
+
+            $newTokens[] = new Token(\T_STRING, $match[2], $token->line, $pos);
+            $pos += \strlen($match[2]);
+
+            if ($match[3] !== '') {
+                $newTokens[] = new Token(\T_WHITESPACE, $match[3], $token->line, $pos);
+                $pos += \strlen($match[3]);
+            }
+
+            $newTokens[] = new Token(\ord(')'), ')', $token->line, $pos);
+
+            array_splice($tokens, $i, 1, $newTokens);
+            $i += \count($newTokens) - 1;
+            $c += \count($newTokens) - 1;
+        }
+        return $tokens;
+    }
+}
diff -pruN 5.4.0-3/lib/PhpParser/Node/Expr/BinaryOp/Pipe.php 5.6.1-2/lib/PhpParser/Node/Expr/BinaryOp/Pipe.php
--- 5.4.0-3/lib/PhpParser/Node/Expr/BinaryOp/Pipe.php	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.1-2/lib/PhpParser/Node/Expr/BinaryOp/Pipe.php	2025-08-13 20:13:15.000000000 +0000
@@ -0,0 +1,15 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class Pipe extends BinaryOp {
+    public function getOperatorSigil(): string {
+        return '|>';
+    }
+
+    public function getType(): string {
+        return 'Expr_BinaryOp_Pipe';
+    }
+}
diff -pruN 5.4.0-3/lib/PhpParser/Node/Expr/CallLike.php 5.6.1-2/lib/PhpParser/Node/Expr/CallLike.php
--- 5.4.0-3/lib/PhpParser/Node/Expr/CallLike.php	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/lib/PhpParser/Node/Expr/CallLike.php	2025-08-13 20:13:15.000000000 +0000
@@ -32,4 +32,29 @@ abstract class CallLike extends Expr {
         assert(!$this->isFirstClassCallable());
         return $this->getRawArgs();
     }
+
+    /**
+     * Retrieves a specific argument from the raw arguments.
+     *
+     * Returns the named argument that matches the given `$name`, or the
+     * positional (unnamed) argument that exists at the given `$position`,
+     * otherwise, returns `null` for first-class callables or if no match is found.
+     */
+    public function getArg(string $name, int $position): ?Arg {
+        if ($this->isFirstClassCallable()) {
+            return null;
+        }
+        foreach ($this->getRawArgs() as $i => $arg) {
+            if ($arg->unpack) {
+                continue;
+            }
+            if (
+                ($arg->name !== null && $arg->name->toString() === $name)
+                || ($arg->name === null && $i === $position)
+            ) {
+                return $arg;
+            }
+        }
+        return null;
+    }
 }
diff -pruN 5.4.0-3/lib/PhpParser/Node/Expr/Cast/Bool_.php 5.6.1-2/lib/PhpParser/Node/Expr/Cast/Bool_.php
--- 5.4.0-3/lib/PhpParser/Node/Expr/Cast/Bool_.php	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/lib/PhpParser/Node/Expr/Cast/Bool_.php	2025-08-13 20:13:15.000000000 +0000
@@ -5,6 +5,10 @@ namespace PhpParser\Node\Expr\Cast;
 use PhpParser\Node\Expr\Cast;
 
 class Bool_ extends Cast {
+    // For use in "kind" attribute
+    public const KIND_BOOL = 1; // "bool" syntax
+    public const KIND_BOOLEAN = 2; // "boolean" syntax
+
     public function getType(): string {
         return 'Expr_Cast_Bool';
     }
diff -pruN 5.4.0-3/lib/PhpParser/Node/Expr/Cast/Int_.php 5.6.1-2/lib/PhpParser/Node/Expr/Cast/Int_.php
--- 5.4.0-3/lib/PhpParser/Node/Expr/Cast/Int_.php	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/lib/PhpParser/Node/Expr/Cast/Int_.php	2025-08-13 20:13:15.000000000 +0000
@@ -5,6 +5,10 @@ namespace PhpParser\Node\Expr\Cast;
 use PhpParser\Node\Expr\Cast;
 
 class Int_ extends Cast {
+    // For use in "kind" attribute
+    public const KIND_INT = 1; // "int" syntax
+    public const KIND_INTEGER = 2; // "integer" syntax
+
     public function getType(): string {
         return 'Expr_Cast_Int';
     }
diff -pruN 5.4.0-3/lib/PhpParser/Node/Expr/Cast/String_.php 5.6.1-2/lib/PhpParser/Node/Expr/Cast/String_.php
--- 5.4.0-3/lib/PhpParser/Node/Expr/Cast/String_.php	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/lib/PhpParser/Node/Expr/Cast/String_.php	2025-08-13 20:13:15.000000000 +0000
@@ -5,6 +5,10 @@ namespace PhpParser\Node\Expr\Cast;
 use PhpParser\Node\Expr\Cast;
 
 class String_ extends Cast {
+    // For use in "kind" attribute
+    public const KIND_STRING = 1; // "string" syntax
+    public const KIND_BINARY = 2; // "binary" syntax
+
     public function getType(): string {
         return 'Expr_Cast_String';
     }
diff -pruN 5.4.0-3/lib/PhpParser/Node/Expr/Cast/Void_.php 5.6.1-2/lib/PhpParser/Node/Expr/Cast/Void_.php
--- 5.4.0-3/lib/PhpParser/Node/Expr/Cast/Void_.php	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.1-2/lib/PhpParser/Node/Expr/Cast/Void_.php	2025-08-13 20:13:15.000000000 +0000
@@ -0,0 +1,11 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\Cast;
+
+use PhpParser\Node\Expr\Cast;
+
+class Void_ extends Cast {
+    public function getType(): string {
+        return 'Expr_Cast_Void';
+    }
+}
diff -pruN 5.4.0-3/lib/PhpParser/Node/MatchArm.php 5.6.1-2/lib/PhpParser/Node/MatchArm.php
--- 5.4.0-3/lib/PhpParser/Node/MatchArm.php	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/lib/PhpParser/Node/MatchArm.php	2025-08-13 20:13:15.000000000 +0000
@@ -8,7 +8,6 @@ use PhpParser\NodeAbstract;
 class MatchArm extends NodeAbstract {
     /** @var null|list<Node\Expr> */
     public ?array $conds;
-    /** @var Node\Expr */
     public Expr $body;
 
     /**
diff -pruN 5.4.0-3/lib/PhpParser/Node/Param.php 5.6.1-2/lib/PhpParser/Node/Param.php
--- 5.4.0-3/lib/PhpParser/Node/Param.php	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/lib/PhpParser/Node/Param.php	2025-08-13 20:13:15.000000000 +0000
@@ -77,7 +77,7 @@ class Param extends NodeAbstract {
             return true;
         }
 
-        if ($this->hooks === []) {
+        if (!$this->isPromoted()) {
             return false;
         }
 
diff -pruN 5.4.0-3/lib/PhpParser/Node/Stmt/ClassLike.php 5.6.1-2/lib/PhpParser/Node/Stmt/ClassLike.php
--- 5.4.0-3/lib/PhpParser/Node/Stmt/ClassLike.php	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/lib/PhpParser/Node/Stmt/ClassLike.php	2025-08-13 20:13:15.000000000 +0000
@@ -17,7 +17,7 @@ abstract class ClassLike extends Node\St
     public ?Node\Name $namespacedName;
 
     /**
-     * @return TraitUse[]
+     * @return list<TraitUse>
      */
     public function getTraitUses(): array {
         $traitUses = [];
@@ -30,7 +30,7 @@ abstract class ClassLike extends Node\St
     }
 
     /**
-     * @return ClassConst[]
+     * @return list<ClassConst>
      */
     public function getConstants(): array {
         $constants = [];
@@ -43,7 +43,7 @@ abstract class ClassLike extends Node\St
     }
 
     /**
-     * @return Property[]
+     * @return list<Property>
      */
     public function getProperties(): array {
         $properties = [];
@@ -78,7 +78,7 @@ abstract class ClassLike extends Node\St
     /**
      * Gets all methods defined directly in this class/interface/trait
      *
-     * @return ClassMethod[]
+     * @return list<ClassMethod>
      */
     public function getMethods(): array {
         $methods = [];
diff -pruN 5.4.0-3/lib/PhpParser/Node/Stmt/Const_.php 5.6.1-2/lib/PhpParser/Node/Stmt/Const_.php
--- 5.4.0-3/lib/PhpParser/Node/Stmt/Const_.php	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/lib/PhpParser/Node/Stmt/Const_.php	2025-08-13 20:13:15.000000000 +0000
@@ -7,20 +7,28 @@ use PhpParser\Node;
 class Const_ extends Node\Stmt {
     /** @var Node\Const_[] Constant declarations */
     public array $consts;
+    /** @var Node\AttributeGroup[] PHP attribute groups */
+    public array $attrGroups;
 
     /**
      * Constructs a const list node.
      *
      * @param Node\Const_[] $consts Constant declarations
      * @param array<string, mixed> $attributes Additional attributes
+     * @param list<Node\AttributeGroup> $attrGroups PHP attribute groups
      */
-    public function __construct(array $consts, array $attributes = []) {
+    public function __construct(
+        array $consts,
+        array $attributes = [],
+        array $attrGroups = []
+    ) {
         $this->attributes = $attributes;
+        $this->attrGroups = $attrGroups;
         $this->consts = $consts;
     }
 
     public function getSubNodeNames(): array {
-        return ['consts'];
+        return ['attrGroups', 'consts'];
     }
 
     public function getType(): string {
diff -pruN 5.4.0-3/lib/PhpParser/NodeDumper.php 5.6.1-2/lib/PhpParser/NodeDumper.php
--- 5.4.0-3/lib/PhpParser/NodeDumper.php	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/lib/PhpParser/NodeDumper.php	2025-08-13 20:13:15.000000000 +0000
@@ -145,7 +145,7 @@ class NodeDumper {
         } elseif ($node instanceof Comment) {
             $this->res .= \str_replace("\n", $this->nl, $node->getReformattedText());
         } elseif (\is_string($node)) {
-            $this->res .= \str_replace("\n", $this->nl, (string)$node);
+            $this->res .= \str_replace("\n", $this->nl, $node);
         } elseif (\is_int($node) || \is_float($node)) {
             $this->res .= $node;
         } elseif (null === $node) {
diff -pruN 5.4.0-3/lib/PhpParser/NodeVisitor/FindingVisitor.php 5.6.1-2/lib/PhpParser/NodeVisitor/FindingVisitor.php
--- 5.4.0-3/lib/PhpParser/NodeVisitor/FindingVisitor.php	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/lib/PhpParser/NodeVisitor/FindingVisitor.php	2025-08-13 20:13:15.000000000 +0000
@@ -12,7 +12,7 @@ use PhpParser\NodeVisitorAbstract;
 class FindingVisitor extends NodeVisitorAbstract {
     /** @var callable Filter callback */
     protected $filterCallback;
-    /** @var Node[] Found nodes */
+    /** @var list<Node> Found nodes */
     protected array $foundNodes;
 
     public function __construct(callable $filterCallback) {
@@ -24,7 +24,7 @@ class FindingVisitor extends NodeVisitor
      *
      * Nodes are returned in pre-order.
      *
-     * @return Node[] Found nodes
+     * @return list<Node> Found nodes
      */
     public function getFoundNodes(): array {
         return $this->foundNodes;
diff -pruN 5.4.0-3/lib/PhpParser/NodeVisitor/NameResolver.php 5.6.1-2/lib/PhpParser/NodeVisitor/NameResolver.php
--- 5.4.0-3/lib/PhpParser/NodeVisitor/NameResolver.php	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/lib/PhpParser/NodeVisitor/NameResolver.php	2025-08-13 20:13:15.000000000 +0000
@@ -120,6 +120,7 @@ class NameResolver extends NodeVisitorAb
             foreach ($node->consts as $const) {
                 $this->addNamespacedName($const);
             }
+            $this->resolveAttrGroups($node);
         } elseif ($node instanceof Stmt\ClassConst) {
             if (null !== $node->type) {
                 $node->type = $this->resolveType($node->type);
diff -pruN 5.4.0-3/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php 5.6.1-2/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php
--- 5.4.0-3/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php	2025-08-13 20:13:15.000000000 +0000
@@ -9,10 +9,12 @@ use PhpParser\NodeVisitorAbstract;
  * Visitor that connects a child node to its parent node
  * as well as its sibling nodes.
  *
- * On the child node, the parent node can be accessed through
+ * With <code>$weakReferences=false</code> on the child node, the parent node can be accessed through
  * <code>$node->getAttribute('parent')</code>, the previous
  * node can be accessed through <code>$node->getAttribute('previous')</code>,
  * and the next node can be accessed through <code>$node->getAttribute('next')</code>.
+ *
+ * With <code>$weakReferences=true</code> attribute names are prefixed by "weak_", e.g. "weak_parent".
  */
 final class NodeConnectingVisitor extends NodeVisitorAbstract {
     /**
@@ -25,6 +27,12 @@ final class NodeConnectingVisitor extend
      */
     private $previous;
 
+    private bool $weakReferences;
+
+    public function __construct(bool $weakReferences = false) {
+        $this->weakReferences = $weakReferences;
+    }
+
     public function beforeTraverse(array $nodes) {
         $this->stack    = [];
         $this->previous = null;
@@ -32,12 +40,26 @@ final class NodeConnectingVisitor extend
 
     public function enterNode(Node $node) {
         if (!empty($this->stack)) {
-            $node->setAttribute('parent', $this->stack[count($this->stack) - 1]);
+            $parent = $this->stack[count($this->stack) - 1];
+            if ($this->weakReferences) {
+                $node->setAttribute('weak_parent', \WeakReference::create($parent));
+            } else {
+                $node->setAttribute('parent', $parent);
+            }
         }
 
-        if ($this->previous !== null && $this->previous->getAttribute('parent') === $node->getAttribute('parent')) {
-            $node->setAttribute('previous', $this->previous);
-            $this->previous->setAttribute('next', $node);
+        if ($this->previous !== null) {
+            if (
+                $this->weakReferences
+            ) {
+                if ($this->previous->getAttribute('weak_parent') === $node->getAttribute('weak_parent')) {
+                    $node->setAttribute('weak_previous', \WeakReference::create($this->previous));
+                    $this->previous->setAttribute('weak_next', \WeakReference::create($node));
+                }
+            } elseif ($this->previous->getAttribute('parent') === $node->getAttribute('parent')) {
+                $node->setAttribute('previous', $this->previous);
+                $this->previous->setAttribute('next', $node);
+            }
         }
 
         $this->stack[] = $node;
diff -pruN 5.4.0-3/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php 5.6.1-2/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php
--- 5.4.0-3/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php	2025-08-13 20:13:15.000000000 +0000
@@ -11,8 +11,10 @@ use function count;
 /**
  * Visitor that connects a child node to its parent node.
  *
- * On the child node, the parent node can be accessed through
+ * With <code>$weakReferences=false</code> on the child node, the parent node can be accessed through
  * <code>$node->getAttribute('parent')</code>.
+ *
+ * With <code>$weakReferences=true</code> the attribute name is "weak_parent" instead.
  */
 final class ParentConnectingVisitor extends NodeVisitorAbstract {
     /**
@@ -20,13 +22,24 @@ final class ParentConnectingVisitor exte
      */
     private array $stack = [];
 
+    private bool $weakReferences;
+
+    public function __construct(bool $weakReferences = false) {
+        $this->weakReferences = $weakReferences;
+    }
+
     public function beforeTraverse(array $nodes) {
         $this->stack = [];
     }
 
     public function enterNode(Node $node) {
         if (!empty($this->stack)) {
-            $node->setAttribute('parent', $this->stack[count($this->stack) - 1]);
+            $parent = $this->stack[count($this->stack) - 1];
+            if ($this->weakReferences) {
+                $node->setAttribute('weak_parent', \WeakReference::create($parent));
+            } else {
+                $node->setAttribute('parent', $parent);
+            }
         }
 
         $this->stack[] = $node;
diff -pruN 5.4.0-3/lib/PhpParser/Parser/Php7.php 5.6.1-2/lib/PhpParser/Parser/Php7.php
--- 5.4.0-3/lib/PhpParser/Parser/Php7.php	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/lib/PhpParser/Parser/Php7.php	2025-08-13 20:13:15.000000000 +0000
@@ -19,165 +19,167 @@ use PhpParser\Node\Stmt;
 class Php7 extends \PhpParser\ParserAbstract
 {
     public const YYERRTOK = 256;
-    public const T_THROW = 257;
-    public const T_INCLUDE = 258;
-    public const T_INCLUDE_ONCE = 259;
-    public const T_EVAL = 260;
-    public const T_REQUIRE = 261;
-    public const T_REQUIRE_ONCE = 262;
-    public const T_LOGICAL_OR = 263;
-    public const T_LOGICAL_XOR = 264;
-    public const T_LOGICAL_AND = 265;
-    public const T_PRINT = 266;
-    public const T_YIELD = 267;
-    public const T_DOUBLE_ARROW = 268;
-    public const T_YIELD_FROM = 269;
-    public const T_PLUS_EQUAL = 270;
-    public const T_MINUS_EQUAL = 271;
-    public const T_MUL_EQUAL = 272;
-    public const T_DIV_EQUAL = 273;
-    public const T_CONCAT_EQUAL = 274;
-    public const T_MOD_EQUAL = 275;
-    public const T_AND_EQUAL = 276;
-    public const T_OR_EQUAL = 277;
-    public const T_XOR_EQUAL = 278;
-    public const T_SL_EQUAL = 279;
-    public const T_SR_EQUAL = 280;
-    public const T_POW_EQUAL = 281;
-    public const T_COALESCE_EQUAL = 282;
-    public const T_COALESCE = 283;
-    public const T_BOOLEAN_OR = 284;
-    public const T_BOOLEAN_AND = 285;
-    public const T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG = 286;
-    public const T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG = 287;
-    public const T_IS_EQUAL = 288;
-    public const T_IS_NOT_EQUAL = 289;
-    public const T_IS_IDENTICAL = 290;
-    public const T_IS_NOT_IDENTICAL = 291;
-    public const T_SPACESHIP = 292;
-    public const T_IS_SMALLER_OR_EQUAL = 293;
-    public const T_IS_GREATER_OR_EQUAL = 294;
-    public const T_SL = 295;
-    public const T_SR = 296;
-    public const T_INSTANCEOF = 297;
-    public const T_INC = 298;
-    public const T_DEC = 299;
-    public const T_INT_CAST = 300;
-    public const T_DOUBLE_CAST = 301;
-    public const T_STRING_CAST = 302;
-    public const T_ARRAY_CAST = 303;
-    public const T_OBJECT_CAST = 304;
-    public const T_BOOL_CAST = 305;
-    public const T_UNSET_CAST = 306;
-    public const T_POW = 307;
-    public const T_NEW = 308;
-    public const T_CLONE = 309;
-    public const T_EXIT = 310;
-    public const T_IF = 311;
-    public const T_ELSEIF = 312;
-    public const T_ELSE = 313;
-    public const T_ENDIF = 314;
-    public const T_LNUMBER = 315;
-    public const T_DNUMBER = 316;
-    public const T_STRING = 317;
-    public const T_STRING_VARNAME = 318;
-    public const T_VARIABLE = 319;
-    public const T_NUM_STRING = 320;
-    public const T_INLINE_HTML = 321;
-    public const T_ENCAPSED_AND_WHITESPACE = 322;
-    public const T_CONSTANT_ENCAPSED_STRING = 323;
-    public const T_ECHO = 324;
-    public const T_DO = 325;
-    public const T_WHILE = 326;
-    public const T_ENDWHILE = 327;
-    public const T_FOR = 328;
-    public const T_ENDFOR = 329;
-    public const T_FOREACH = 330;
-    public const T_ENDFOREACH = 331;
-    public const T_DECLARE = 332;
-    public const T_ENDDECLARE = 333;
-    public const T_AS = 334;
-    public const T_SWITCH = 335;
-    public const T_MATCH = 336;
-    public const T_ENDSWITCH = 337;
-    public const T_CASE = 338;
-    public const T_DEFAULT = 339;
-    public const T_BREAK = 340;
-    public const T_CONTINUE = 341;
-    public const T_GOTO = 342;
-    public const T_FUNCTION = 343;
-    public const T_FN = 344;
-    public const T_CONST = 345;
-    public const T_RETURN = 346;
-    public const T_TRY = 347;
-    public const T_CATCH = 348;
-    public const T_FINALLY = 349;
-    public const T_USE = 350;
-    public const T_INSTEADOF = 351;
-    public const T_GLOBAL = 352;
-    public const T_STATIC = 353;
-    public const T_ABSTRACT = 354;
-    public const T_FINAL = 355;
-    public const T_PRIVATE = 356;
-    public const T_PROTECTED = 357;
-    public const T_PUBLIC = 358;
-    public const T_READONLY = 359;
-    public const T_PUBLIC_SET = 360;
-    public const T_PROTECTED_SET = 361;
-    public const T_PRIVATE_SET = 362;
-    public const T_VAR = 363;
-    public const T_UNSET = 364;
-    public const T_ISSET = 365;
-    public const T_EMPTY = 366;
-    public const T_HALT_COMPILER = 367;
-    public const T_CLASS = 368;
-    public const T_TRAIT = 369;
-    public const T_INTERFACE = 370;
-    public const T_ENUM = 371;
-    public const T_EXTENDS = 372;
-    public const T_IMPLEMENTS = 373;
-    public const T_OBJECT_OPERATOR = 374;
-    public const T_NULLSAFE_OBJECT_OPERATOR = 375;
-    public const T_LIST = 376;
-    public const T_ARRAY = 377;
-    public const T_CALLABLE = 378;
-    public const T_CLASS_C = 379;
-    public const T_TRAIT_C = 380;
-    public const T_METHOD_C = 381;
-    public const T_FUNC_C = 382;
-    public const T_PROPERTY_C = 383;
-    public const T_LINE = 384;
-    public const T_FILE = 385;
-    public const T_START_HEREDOC = 386;
-    public const T_END_HEREDOC = 387;
-    public const T_DOLLAR_OPEN_CURLY_BRACES = 388;
-    public const T_CURLY_OPEN = 389;
-    public const T_PAAMAYIM_NEKUDOTAYIM = 390;
-    public const T_NAMESPACE = 391;
-    public const T_NS_C = 392;
-    public const T_DIR = 393;
-    public const T_NS_SEPARATOR = 394;
-    public const T_ELLIPSIS = 395;
-    public const T_NAME_FULLY_QUALIFIED = 396;
-    public const T_NAME_QUALIFIED = 397;
-    public const T_NAME_RELATIVE = 398;
-    public const T_ATTRIBUTE = 399;
+    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 = 400;
-    protected int $actionTableSize = 1286;
-    protected int $gotoTableSize = 646;
+    protected int $tokenToSymbolMapSize = 401;
+    protected int $actionTableSize = 1578;
+    protected int $gotoTableSize = 698;
 
-    protected int $invalidSymbol = 172;
+    protected int $invalidSymbol = 173;
     protected int $errorSymbol = 1;
     protected int $defaultAction = -32766;
     protected int $unexpectedTokenRule = 32767;
 
-    protected int $YY2TBLSTATE = 437;
-    protected int $numNonLeafStates = 742;
+    protected int $YY2TBLSTATE = 445;
+    protected int $numNonLeafStates = 754;
 
     protected array $symbolToName = array(
         "EOF",
         "error",
+        "T_VOID_CAST",
         "T_THROW",
         "T_INCLUDE",
         "T_INCLUDE_ONCE",
@@ -351,37 +353,37 @@ class Php7 extends \PhpParser\ParserAbst
     );
 
     protected array $tokenToSymbol = array(
-            0,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-          172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-          172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-          172,  172,  172,   56,  170,  172,  171,   55,  172,  172,
-          165,  166,   53,   50,    8,   51,   52,   54,  172,  172,
-          172,  172,  172,  172,  172,  172,  172,  172,   31,  163,
-           44,   16,   46,   30,   68,  172,  172,  172,  172,  172,
-          172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-          172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-          172,   70,  172,  164,   36,  172,  169,  172,  172,  172,
-          172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-          172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-          172,  172,  172,  167,   35,  168,   58,  172,  172,  172,
-          172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-          172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-          172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-          172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-          172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-          172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-          172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-          172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-          172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-          172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-          172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-          172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-          172,  172,  172,  172,  172,  172,    1,    2,    3,    4,
-            5,    6,    7,    9,   10,   11,   12,   13,   14,   15,
-           17,   18,   19,   20,   21,   22,   23,   24,   25,   26,
-           27,   28,   29,   32,   33,   34,   37,   38,   39,   40,
-           41,   42,   43,   45,   47,   48,   49,   57,   59,   60,
-           61,   62,   63,   64,   65,   66,   67,   69,   71,   72,
+            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,
@@ -390,544 +392,611 @@ class Php7 extends \PhpParser\ParserAbst
           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
+          153,  154,  155,  156,  157,  158,  159,  160,  161,  162,
+          163
     );
 
     protected array $action = array(
-          128,  129,  130,  565,  131,  132,  944,  754,  755,  756,
-          133,   38,  838,  485,  561, 1365,-32766,-32766,-32766,    0,
-          829, 1122, 1123, 1124, 1118, 1117, 1116, 1125, 1119, 1120,
-         1121,-32766,-32766,-32766, -332,  748,  747,-32766,  840,-32766,
+          133,  134,  135,  575,  136,  137, 1049,  766,  767,  768,
+          138,   41,  850, -341,  495, 1390,-32766,-32766,-32766, 1008,
+          841, 1145, 1146, 1147, 1141, 1140, 1139, 1148, 1142, 1143,
+         1144,-32766,-32766,-32766, -195,  760,  759,-32766, -194,-32766,
         -32766,-32766,-32766,-32766,-32766,-32766,-32767,-32767,-32767,-32767,
-        -32767,   24,-32766, 1034, -568,  757, 1122, 1123, 1124, 1118,
-         1117, 1116, 1125, 1119, 1120, 1121,    2,  381,  382,  265,
-          134,  384,  761,  762,  763,  764, 1111,  425,  426, 1300,
-          329,   36,  248,   26,  291,  818,  765,  766,  767,  768,
-          769,  770,  771,  772,  773,  774,  794,  566,  795,  796,
-          797,  798,  786,  787,  346,  347,  789,  790,  775,  776,
-          777,  779,  780,  781,  357,  821,  822,  823,  824,  825,
-          567, -568, -568,  299,  782,  783,  568,  569, -194,  806,
-          804,  805,  817,  801,  802,   35, -193,  570,  571,  800,
-          572,  573,  574,  575,-32766,  576,  577,  471,  472,  486,
-          238, -568,  803,  578,  579, -371,  135, -371,  128,  129,
-          130,  565,  131,  132, 1067,  754,  755,  756,  133,   38,
-        -32766,  136,  728, 1027, 1026, 1025, 1031, 1028, 1029, 1030,
-        -32766,-32766,-32766,-32767,-32767,-32767,-32767,  101,  102,  103,
-          104,  105, -332,  748,  747, 1043,  923,-32766,-32766,-32766,
-          839,-32766,  145,-32766,-32766,-32766,-32766,-32766,-32766,-32766,
-        -32766,-32766,-32766,  757,-32766,-32766,-32766,  611,-32766,  290,
-        -32766,-32766,-32766,-32766,-32766,  834,  718,  265,  134,  384,
-          761,  762,  763,  764, -615,-32766,  426,-32766,-32766,-32766,
-        -32766, -615,  251,  818,  765,  766,  767,  768,  769,  770,
-          771,  772,  773,  774,  794,  566,  795,  796,  797,  798,
-          786,  787,  346,  347,  789,  790,  775,  776,  777,  779,
-          780,  781,  357,  821,  822,  823,  824,  825,  567,  913,
-          426,  310,  782,  783,  568,  569, -194,  806,  804,  805,
-          817,  801,  802, 1288, -193,  570,  571,  800,  572,  573,
-          574,  575, -273,  576,  577,  835,   82,   83,   84,  -85,
-          803,  578,  579,  237,  148,  778,  749,  750,  751,  752,
-          753,  150,  754,  755,  756,  791,  792,   37,-32766,   85,
-           86,   87,   88,   89,   90,   91,   92,   93,   94,   95,
-           96,   97,   98,   99,  100,  101,  102,  103,  104,  105,
-          106,  107,  108, 1043,  276,-32766,-32766,-32766,  925, 1263,
-         1262, 1264,  713,  831,  312,  393,  109,    7, 1097,   47,
-          757,-32766,-32766,-32766,  838,  -85,-32766, 1095,-32766,-32766,
-        -32766, 1268,-32766,-32766,  758,  759,  760,  761,  762,  763,
-          764,  994,-32766,  827,-32766,-32766,  923, -615,  324, -615,
-          818,  765,  766,  767,  768,  769,  770,  771,  772,  773,
-          774,  794,  816,  795,  796,  797,  798,  786,  787,  788,
-          815,  789,  790,  775,  776,  777,  779,  780,  781,  820,
-          821,  822,  823,  824,  825,  826,  300,  301,  342,  782,
-          783,  784,  785,  833,  806,  804,  805,  817,  801,  802,
-          715, 1040,  793,  799,  800,  807,  808,  810,  809,  140,
-          811,  812,  838,  327,  343,-32766,  125,  803,  814,  813,
-           49,   50,   51,  517,   52,   53, 1043, -110,  371,  913,
-           54,   55, -110,   56, -110, -566,-32766,-32766,-32766,  306,
-         1043,  126, -110, -110, -110, -110, -110, -110, -110, -110,
-         -110, -110, -110, -612, 1096,  106,  107,  108,  740,  276,
-         -612,  963,  964,-32766,  290,  287,  965, 1330,   57,   58,
-        -32766,  109,  375,  995,   59,  959,   60,  245,  246,   61,
-           62,   63,   64,   65,   66,   67,   68,-32766,   28,  267,
-           69,  441,  518,  391, -346,   74, 1294, 1295,  519,  443,
-          838,  327, -566, -566, 1292,   42,   20,  520,  925,  521,
-          923,  522,  713,  523, -564,  693,  524,  525, -566,  923,
-          444,   44,   45,  447,  378,  377,  -78,   46,  526,  923,
-         -572,  445, -566,  369,  341, 1346,  103,  104,  105, -563,
-         1254,  923,  383,  382,  446,  528,  529,  530,  865,  719,
-          866,  694,  425,  461,  462,  463,  844,  532,  533,  720,
-         1280, 1281, 1282, 1283, 1285, 1277, 1278,  298,  865,  151,
-          866,  723,  153, 1284, 1279,  695,  696, 1263, 1262, 1264,
-          299, -564, -564,   70, -153, -153, -153,  322,  323,  327,
-          154,   -4,  923,  913, 1263, 1262, 1264, -564,  155, -153,
-          283, -153,  913, -153,  157, -153, -563, -563,   33, -571,
-         1350, -564,  913,  -58,  829,  376, -612, 1349, -612,  748,
-          747,  837, -563, -606,  913, -606,  963,  964,  -57,  748,
-          747,  527,  123,   81, -570, 1040, -563,  327,  617,  899,
-          959, -110, -110, -110,   32,  110,  111,  112,  113,  114,
-          115,  116,  117,  118,  119,  120,  121,  122,  124, -565,
-         1043,  947,   28,  268,  149,  408,  923, 1375,  829,  137,
-         1376,  138,  925,  144,  838,  913,  713, -153, 1292,  660,
-           21,  925,  679,  680,  283,  713,  158, 1170, 1172,  379,
-          380,  980,  385,  386,  159,  713,  730,  376, -562,  438,
-         1066,  141,  160,  925,  297,  327,  161,  713,  963,  964,
-          946,  651,  652,  527, 1254,  -87,  162, -306,  748,  747,
-          -84,  531,  959, -110, -110, -110, -565, -565,  -78,  287,
-         1268,  532,  533,  -73, 1280, 1281, 1282, 1283, 1285, 1277,
-         1278,  -72, -565,  -71,  -70,   11, 1261, 1284, 1279,  913,
-          -69,  748,  747,  -68,  925,-32766, -565,   72,  713,   -4,
-          -16, 1261,  323,  327,  -67, -562, -562,  291,-32766,-32766,
-        -32766,  -66,-32766,  -65,-32766,  -46,-32766,  -18,  142,-32766,
-          275, -562, 1259,  284,-32766,-32766,-32766,  729,-32766,  732,
-        -32766,-32766,  922,  147, 1261, -562,-32766,  422,   28,  267,
-         -302,-32766,-32766,-32766,  279,-32766, 1042,-32766,-32766,-32766,
-          838,  838,-32766,  288, 1292, 1040,  280,-32766,-32766,-32766,
-          285,  286,  335,-32766,-32766, 1263, 1262, 1264,  925,-32766,
-          422,  289,  713,   28,  268,  292,  293,  276,  940,   73,
-         1043,-32766,  109,  689,  146,  838, -110, -110, -562, 1292,
-         1254, -110,  829,-32766, 1377,  704,  582,   10,  661,  838,
-         -110, 1129,  706,  649,  283,  307,  960,-32766,  533,-32766,
-         1280, 1281, 1282, 1283, 1285, 1277, 1278,  682, 1043,  305,
-          -50,  468, 1299, 1284, 1279, 1254,  666, -528,  496,  667,
-          304,  299,  683,   72,   74, 1301,  588,-32766,  323,  327,
-          327, -518,  290,  533,   40, 1280, 1281, 1282, 1283, 1285,
-         1277, 1278,    8,  139,    0, -562, -562,   27, 1284, 1279,
-         -276,  407,    0,-32766,    0,    0,    0,    0,   72, 1261,
-          311, -562,    0,  323,  327,    0,-32766,-32766,-32766,    0,
-        -32766,  373,-32766,    0,-32766, -562,    0,-32766,    0,    0,
-          615,    0,-32766,-32766,-32766,  923,-32766,    0,-32766,-32766,
-          942, 1289, 1261,  837,-32766,  422,   41,  299,   34,-32766,
-        -32766,-32766,  737,-32766,  738,-32766,-32766,-32766,  923,  857,
-        -32766,  904, 1004,  981,  988,-32766,-32766,-32766,  978,-32766,
-          989,-32766,-32766,  902,  976, 1261, 1100,-32766,  422,   48,
-         1103, 1104,-32766,-32766,-32766, 1101,-32766, 1102,-32766,-32766,
-        -32766, 1108, -600,-32766,  849, 1316, 1334,  491,-32766,-32766,
-        -32766, 1368,-32766,  654,-32766,-32766, -599, -598, 1261,  595,
-        -32766,  422, -572, -571, 1268,-32766,-32766,-32766,  913,-32766,
-         -570,-32766,-32766,-32766, -569, -512,-32766, -274,    1,   29,
-           30,-32766,-32766,-32766, -251, -251, -251,-32766,-32766,   39,
-          376,  913,   43,-32766,  422,   71,  302,  303,   75,   76,
-           77,  963,  964,   78,   79,-32766,  527, -250, -250, -250,
-         -273,   80,  374,  376,  899,  959, -110, -110, -110,  143,
-          152,  156,  243,  331,  963,  964,  127,  358,  359,  527,
-          360,  361,  362,  363,  364,  365,  366,  899,  959, -110,
-         -110, -110,-32766,   13,  367,  838,  368,  925, 1261,   14,
-          370,  713, -251,  439,  560,-32766,-32766,-32766,   15,-32766,
-           16,-32766,   18,-32766,  406,  487,-32766,  488,  495,  498,
-          925,-32766,-32766,-32766,  713, -250,  499,-32766,-32766,  500,
-         -110, -110,  501,-32766,  422, -110,  505,  506,  507,  515,
-          593,  699, 1069, 1210, -110,-32766, 1290, 1068, 1049, 1249,
-         1045, -278, -102,-32766,   12,   17,   22,  296,  405,  607,
-          612,  640,  705, 1214, 1267, 1211, 1347,    0,  321,  372,
-          714,  717,  721,  722,  724,  299,  725,  726,   74,  727,
-         1227,  731,  716,    0,  327,  411, 1293,  734,  900, 1372,
-         1374,  860,  859,  953,  996, 1373,  952,  950,  951,  954,
-         1242,  933,  943,  931,  986,  987,  638, 1371, 1328, 1317,
-         1335, 1344,    0,    0,    0,  327
+        -32767,    0,-32766,    3,    4,  769, 1145, 1146, 1147, 1141,
+         1140, 1139, 1148, 1142, 1143, 1144,  388,  389,  448,  272,
+           53,  391,  773,  774,  775,  776,  433,    5,  434,  571,
+          337,   39,  254,   29,  298,  830,  777,  778,  779,  780,
+          781,  782,  783,  784,  785,  786,  806,  576,  807,  808,
+          809,  810,  798,  799,  353,  354,  801,  802,  787,  788,
+          789,  791,  792,  793,  364,  833,  834,  835,  836,  837,
+          577, -382,  306, -382,  794,  795,  578,  579,  244,  818,
+          816,  817,  829,  813,  814, 1313,   38,  580,  581,  812,
+          582,  583,  584,  585, 1325,  586,  587,  481,  482, -628,
+          496, 1009,  815,  588,  589,  140,  139, -628,  133,  134,
+          135,  575,  136,  137, 1085,  766,  767,  768,  138,   41,
+        -32766, -341, 1046, 1041, 1040, 1039, 1045, 1042, 1043, 1044,
+        -32766,-32766,-32766,-32767,-32767,-32767,-32767,  106,  107,  108,
+          109,  110, -195,  760,  759, 1058, -194,-32766,-32766,-32766,
+          149,-32766,  852,-32766,-32766,-32766,-32766,-32766,-32766,-32766,
+          936,  303,  257,  769,-32766,-32766,-32766,  850,-32766,  297,
+        -32766,-32766,-32766,-32766,-32766, 1371, 1355,  272,   53,  391,
+          773,  774,  775,  776, -625,-32766,  434,-32766,-32766,-32766,
+        -32766,  730, -625,  830,  777,  778,  779,  780,  781,  782,
+          783,  784,  785,  786,  806,  576,  807,  808,  809,  810,
+          798,  799,  353,  354,  801,  802,  787,  788,  789,  791,
+          792,  793,  364,  833,  834,  835,  836,  837,  577, -579,
+         -275,  317,  794,  795,  578,  579, -577,  818,  816,  817,
+          829,  813,  814,  957,  926,  580,  581,  812,  582,  583,
+          584,  585,  144,  586,  587,  841,  336,-32766,-32766,-32766,
+          815,  588,  589, -628,  139, -628,  133,  134,  135,  575,
+          136,  137, 1082,  766,  767,  768,  138,   41,-32766, 1375,
+        -32766,-32766,-32766,-32766,-32766,-32766,-32766, 1374,  629,  388,
+          389,-32766,-32766,-32766,-32766,-32766, -579, -579, 1081,  433,
+          321,  760,  759, -577, -577,-32766, 1293,-32766,-32766,  111,
+          112,  113, -579,  282,  843,  851,  623, 1400,  936, -577,
+         1401,  769,  333,  938, -585,  114, -579,  725,  294,  298,
+         1119, -584,  349, -577,  752,  272,   53,  391,  773,  774,
+          775,  776,  145,   86,  434,  306,  336,  336, -625,  731,
+         -625,  830,  777,  778,  779,  780,  781,  782,  783,  784,
+          785,  786,  806,  576,  807,  808,  809,  810,  798,  799,
+          353,  354,  801,  802,  787,  788,  789,  791,  792,  793,
+          364,  833,  834,  835,  836,  837,  577, -576,  850, -578,
+          794,  795,  578,  579,  845,  818,  816,  817,  829,  813,
+          814,  727,  926,  580,  581,  812,  582,  583,  584,  585,
+          740,  586,  587,  243, 1055,-32766,-32766,  -85,  815,  588,
+          589,  878,  152,  879,  133,  134,  135,  575,  136,  137,
+         1087,  766,  767,  768,  138,   41,  350,  961,  960, 1058,
+         1058, 1058,-32766,-32766,-32766,  841,-32766,  131,  977,  978,
+          400, 1055,   10,  979, -576, -576, -578, -578,  378,  760,
+          759,  936,  973,  290,  297,  297,-32766,  846,  936,  154,
+         -576,   79, -578,  382,  849,  936, 1058,  336,  878,  769,
+          879,  938, -583,  -85, -576,  725, -578,  959,  108,  109,
+          110, 1058,  732,  272,   53,  391,  773,  774,  775,  776,
+          290,  155,  434,  470,  471,  472,  735,  760,  759,  830,
+          777,  778,  779,  780,  781,  782,  783,  784,  785,  786,
+          806,  576,  807,  808,  809,  810,  798,  799,  353,  354,
+          801,  802,  787,  788,  789,  791,  792,  793,  364,  833,
+          834,  835,  836,  837,  577,  926,  434,  847,  794,  795,
+          578,  579,  926,  818,  816,  817,  829,  813,  814,  926,
+          398,  580,  581,  812,  582,  583,  584,  585,  452,  586,
+          587,  157,   87,   88,   89,  453,  815,  588,  589,  454,
+          152,  790,  761,  762,  763,  764,  765,  158,  766,  767,
+          768,  803,  804,   40,   27,   90,   91,   92,   93,   94,
+           95,   96,   97,   98,   99,  100,  101,  102,  103,  104,
+          105,  106,  107,  108,  109,  110,  111,  112,  113, 1134,
+          282, 1055,  455,-32766,  994, 1288, 1287, 1289,  725,  390,
+          389,  938,  114,  856, 1120,  725,  769,  159,  938,  433,
+          672,   23,  725, 1118,  691,  692, 1058,-32766,  153,  416,
+          770,  771,  772,  773,  774,  775,  776,  -78, -619,  839,
+         -619, -581,  386,  387,  392,  393,  830,  777,  778,  779,
+          780,  781,  782,  783,  784,  785,  786,  806,  828,  807,
+          808,  809,  810,  798,  799,  800,  827,  801,  802,  787,
+          788,  789,  791,  792,  793,  832,  833,  834,  835,  836,
+          837,  838,  161,  663,  664,  794,  795,  796,  797,   36,
+          818,  816,  817,  829,  813,  814,  -58,  -57,  805,  811,
+          812,  819,  820,  822,  821,  -87,  823,  824, -581, -581,
+          128,  129,  141,  815,  826,  825,   54,   55,   56,   57,
+          527,   58,   59,  142, -110,  148,  162,   60,   61, -110,
+           62, -110,  936,  163,  164,  165,  313,  166, -581, -110,
+         -110, -110, -110, -110, -110, -110, -110, -110, -110, -110,
+         1293,  -84,  953,  -78,  -73,  -72,  -71,  -70,  -69,  -68,
+          -67,  -66,  -65,  742,  -46,   63,   64,  -18, -575, 1286,
+          146,   65,   51,   66,  251,  252,   67,   68,   69,   70,
+           71,   72,   73,   74,  281,   31,  273,   47,  450,  528,
+          291, -357,  741, 1319, 1320,  529,  744,  850,  935,  151,
+          295, 1317,   45,   22,  530, 1284,  531, -309,  532, -305,
+          533,  286,  936,  534,  535,  287,  926,  292,   48,   49,
+          456,  385,  384,  293,   50,  536,  342,  296,  282, 1057,
+          376,  348,  850,  299,  300, -575, -575, 1279,  114,  307,
+          308,  701,  538,  539,  540,  150,  841,-32766, 1288, 1287,
+         1289, -575,  850,  294,  542,  543, 1402, 1305, 1306, 1307,
+         1308, 1310, 1302, 1303,  305, -575,  716, -110, -110,  130,
+         1309, 1304, -110,  593, 1288, 1287, 1289,  306,   13,  673,
+           75, -110, 1152,  678,  331,  332,  336, -154, -154, -154,
+        -32766,  718,  694,   -4,  936,  938,  926,  314,  478,  725,
+          506, 1324, -154,  705, -154,  679, -154,  695, -154,  974,
+         1326, -541,  306,  312,  311,   79,  849,  661,  383,   43,
+          320,  336,   37, 1252,    0,    0,   52,    0,    0,  977,
+          978,    0,  760,  759,  537,-32766,    0,    0,    0,  706,
+            0,    0,  912,  973, -110, -110, -110,   35,  115,  116,
+          117,  118,  119,  120,  121,  122,  123,  124,  125,  126,
+          127, -531,   11,  707,  708,   31,  274,   30,  380,  955,
+          599, -613,  306,  627,    0,  938,    0,  850,  926,  725,
+         -154, 1317, 1288, 1287, 1289,   44, -612,  749,  290,  750,
+         1194, 1196,  869,  309,  310,  917, 1018,  995, 1002,  992,
+          383, -575,  446, 1003,  915,  990, 1123,  304, 1126,  381,
+         1127,  977,  978, 1124, 1125, 1131,  537, 1279, 1314,  861,
+          330,  760,  759,  132,  541,  973, -110, -110, -110, 1341,
+         1359, 1393, 1293,  666,  542,  543, -611, 1305, 1306, 1307,
+         1308, 1310, 1302, 1303, -585, -584, -583, -582,   21, -525,
+         1309, 1304,    1,   32,  760,  759,   33,  938,-32766, -278,
+           77,  725,   -4,  -16, 1286,  332,  336,   42, -575, -575,
+           46,-32766,-32766,-32766,   76,-32766,   80,-32766,   81,-32766,
+           82,   83,-32766,   84, -575,   85,  147,-32766,-32766,-32766,
+          156,-32766,  160,-32766,-32766,  249,  379, 1286, -575,-32766,
+          430,   31,  273,  338,-32766,-32766,-32766,  365,-32766,  366,
+        -32766,-32766,-32766,  850,  850,-32766,  367, 1317,  368,  369,
+        -32766,-32766,-32766,  370,  371,  372,-32766,-32766,  373,  374,
+          375,  377,-32766,  430,  447,  570,   31,  274, -276, -275,
+           15,   16,   78,   17,-32766,   18,   20,  414,  850, -110,
+         -110,  497, 1317, 1279, -110,  498,  505,  508,  509,  510,
+          511,  515,  516, -110,  517,  525,  604,  711, 1088, 1084,
+         1234,  543,-32766, 1305, 1306, 1307, 1308, 1310, 1302, 1303,
+         1315, 1086, 1083,  -50, 1064, 1274, 1309, 1304, 1279, 1060,
+         -280, -102,   14,   19,  306,   24,   77,   79,  415,  303,
+          413,  332,  336,  336,  618,  624,  543,  652, 1305, 1306,
+         1307, 1308, 1310, 1302, 1303,  717,  143, 1238, 1292, 1235,
+         1372, 1309, 1304,  726,  729,  733,-32766,  734,  736,  737,
+          738,   77, 1286,  419,  739,  743,  332,  336,  728,-32766,
+        -32766,-32766,  746,-32766,  913,-32766, 1397,-32766, 1399,  872,
+        -32766,  871,  967, 1010, 1398,-32766,-32766,-32766,  966,-32766,
+          964,-32766,-32766,  965,  968, 1286, 1267,-32766,  430,  946,
+          956,  944,-32766,-32766,-32766, 1000,-32766, 1001,-32766,-32766,
+        -32766,  650, 1396,-32766, 1353, 1342, 1360, 1369,-32766,-32766,
+        -32766, 1318,-32766,  336,-32766,-32766,  936,    0, 1286,    0,
+        -32766,  430,    0,    0,    0,-32766,-32766,-32766,    0,-32766,
+            0,-32766,-32766,-32766,    0,    0,-32766,    0,    0,  936,
+            0,-32766,-32766,-32766,    0,-32766,    0,-32766,-32766,    0,
+            0, 1286,    0,-32766,  430,    0,    0,    0,-32766,-32766,
+        -32766,    0,-32766,    0,-32766,-32766,-32766,    0,    0,-32766,
+            0,    0,    0,  501,-32766,-32766,-32766,    0,-32766,    0,
+        -32766,-32766,    0,    0, 1286,  606,-32766,  430,    0,    0,
+            0,-32766,-32766,-32766,    0,-32766,    0,-32766,-32766,-32766,
+          926,    0,-32766,    2,    0,    0,    0,-32766,-32766,-32766,
+            0,    0,    0,-32766,-32766,    0, -253, -253, -253,-32766,
+          430,    0,  383,  926,    0,    0,    0,    0,    0,    0,
+            0,-32766,    0,  977,  978,    0,    0,    0,  537, -252,
+         -252, -252,    0,    0,    0,  383,  912,  973, -110, -110,
+         -110,    0,    0,    0,    0,    0,  977,  978,    0,    0,
+            0,  537,    0,    0,    0,    0,    0,    0,    0,  912,
+          973, -110, -110, -110,-32766,    0,    0,    0,    0,  938,
+         1286,    0,    0,  725, -253,    0,    0,-32766,-32766,-32766,
+            0,-32766,    0,-32766,    0,-32766,    0,    0,-32766,    0,
+            0,    0,  938,-32766,-32766,-32766,  725, -252,    0,-32766,
+        -32766,    0,    0,    0,    0,-32766,  430,    0,    0,    0,
+            0,    0,    0,    0,    0,    0,    0,-32766
     );
 
     protected array $actionCheck = array(
-            2,    3,    4,    5,    6,    7,    1,    9,   10,   11,
-           12,   13,   82,   31,   85,   85,    9,   10,   11,    0,
-           80,  116,  117,  118,  119,  120,  121,  122,  123,  124,
-          125,    9,   10,   11,    8,   37,   38,   30,    1,   32,
-           33,   34,   35,   36,   37,   38,   39,   40,   41,   42,
-           43,  101,   30,    1,   70,   57,  116,  117,  118,  119,
-          120,  121,  122,  123,  124,  125,    8,  106,  107,   71,
-           72,   73,   74,   75,   76,   77,  126,  116,   80,  150,
-           70,  151,  152,    8,   30,   87,   88,   89,   90,   91,
+            3,    4,    5,    6,    7,    8,    1,   10,   11,   12,
+           13,   14,   83,    9,   32,   86,   10,   11,   12,   32,
+           81,  117,  118,  119,  120,  121,  122,  123,  124,  125,
+          126,   10,   11,   12,    9,   38,   39,   31,    9,   33,
+           34,   35,   36,   37,   38,   39,   40,   41,   42,   43,
+           44,    0,   31,    9,    9,   58,  117,  118,  119,  120,
+          121,  122,  123,  124,  125,  126,  107,  108,  109,   72,
+           73,   74,   75,   76,   77,   78,  117,    9,   81,   86,
+           71,  152,  153,    9,   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,  107,  163,  109,  127,  128,  129,  130,   15,  132,
+          133,  134,  135,  136,  137,    1,    9,  140,  141,  142,
+          143,  144,  145,  146,  151,  148,  149,  138,  139,    1,
+          168,  164,  155,  156,  157,    9,  159,    9,    3,    4,
+            5,    6,    7,    8,  167,   10,   11,   12,   13,   14,
+          117,  167,  119,  120,  121,  122,  123,  124,  125,  126,
+           10,   11,   12,   45,   46,   47,   48,   49,   50,   51,
+           52,   53,  167,   38,   39,  142,  167,   10,   11,   12,
+            9,   31,    1,   33,   34,   35,   36,   37,   38,   39,
+            1,  167,    9,   58,   10,   11,   12,   83,   31,  166,
+           33,   34,   35,   36,   37,    1,    1,   72,   73,   74,
+           75,   76,   77,   78,    1,   31,   81,   33,   34,   35,
+           36,   32,    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,   71,
+          167,    9,  127,  128,  129,  130,   71,  132,  133,  134,
+          135,  136,  137,    1,   85,  140,  141,  142,  143,  144,
+          145,  146,  168,  148,  149,   81,  172,   10,   11,   12,
+          155,  156,  157,  165,  159,  167,    3,    4,    5,    6,
+            7,    8,  167,   10,   11,   12,   13,   14,   31,    1,
+           33,   34,   35,   10,   10,   11,   12,    9,   52,  107,
+          108,   10,   11,   12,   10,   11,  138,  139,    1,  117,
+            9,   38,   39,  138,  139,   31,    1,   33,   34,   54,
+           55,   56,  154,   58,   81,  164,    1,   81,    1,  154,
+           84,   58,    9,  164,  166,   70,  168,  168,   31,   31,
+          164,  166,    9,  168,  168,   72,   73,   74,   75,   76,
+           77,   78,  168,  168,   81,  163,  172,  172,  165,   32,
+          167,   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,   83,   71,
+          127,  128,  129,  130,  161,  132,  133,  134,  135,  136,
+          137,  168,   85,  140,  141,  142,  143,  144,  145,  146,
+          168,  148,  149,   98,  117,  117,  117,   32,  155,  156,
+          157,  107,  159,  109,    3,    4,    5,    6,    7,    8,
+          167,   10,   11,   12,   13,   14,    9,   73,   74,  142,
+          142,  142,   10,   11,   12,   81,  141,   15,  118,  119,
+          107,  117,  109,  123,  138,  139,  138,  139,    9,   38,
+           39,    1,  132,  166,  166,  166,  117,   81,    1,   15,
+          154,  166,  154,    9,  160,    1,  142,  172,  107,   58,
+          109,  164,  166,   98,  168,  168,  168,  123,   51,   52,
+           53,  142,   32,   72,   73,   74,   75,   76,   77,   78,
+          166,   15,   81,  133,  134,  135,   32,   38,   39,   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,   85,   81,  161,  127,  128,
+          129,  130,   85,  132,  133,  134,  135,  136,  137,   85,
+            9,  140,  141,  142,  143,  144,  145,  146,    9,  148,
+          149,   15,   10,   11,   12,    9,  155,  156,  157,    9,
+          159,    3,    4,    5,    6,    7,    8,   15,   10,   11,
+           12,   13,   14,   31,  102,   33,   34,   35,   36,   37,
+           38,   39,   40,   41,   42,   43,   44,   45,   46,   47,
+           48,   49,   50,   51,   52,   53,   54,   55,   56,  127,
+           58,  117,    9,  117,  164,  160,  161,  162,  168,  107,
+          108,  164,   70,    9,  169,  168,   58,   15,  164,  117,
+           76,   77,  168,    1,   76,   77,  142,  141,  102,  103,
+           72,   73,   74,   75,   76,   77,   78,   17,  165,   81,
+          167,   71,  107,  108,  107,  108,   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,  137,  138,  162,  126,  127,  128,  129,    8,  131,
-          132,  133,  134,  135,  136,    8,    8,  139,  140,  141,
-          142,  143,  144,  145,    9,  147,  148,  137,  138,  167,
-           14,  167,  154,  155,  156,  106,  158,  108,    2,    3,
-            4,    5,    6,    7,  166,    9,   10,   11,   12,   13,
-          116,    8,  167,  119,  120,  121,  122,  123,  124,  125,
-            9,   10,   11,   44,   45,   46,   47,   48,   49,   50,
-           51,   52,  166,   37,   38,  141,    1,    9,   10,   11,
-          163,   30,    8,   32,   33,   34,   35,   36,   37,   38,
-            9,   10,   11,   57,    9,   10,   11,    1,   30,  165,
-           32,   33,   34,   35,   36,   80,   31,   71,   72,   73,
-           74,   75,   76,   77,    1,   30,   80,   32,   33,   34,
-           35,    8,    8,   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,   84,
-           80,    8,  126,  127,  128,  129,  166,  131,  132,  133,
-          134,  135,  136,    1,  166,  139,  140,  141,  142,  143,
-          144,  145,  166,  147,  148,  160,    9,   10,   11,   31,
-          154,  155,  156,   97,  158,    2,    3,    4,    5,    6,
-            7,   14,    9,   10,   11,   12,   13,   30,  116,   32,
-           33,   34,   35,   36,   37,   38,   39,   40,   41,   42,
-           43,   44,   45,   46,   47,   48,   49,   50,   51,   52,
-           53,   54,   55,  141,   57,    9,   10,   11,  163,  159,
-          160,  161,  167,   80,    8,  106,   69,  108,  168,   70,
-           57,    9,   10,   11,   82,   97,   30,    1,   32,   33,
-           34,    1,    9,   10,   71,   72,   73,   74,   75,   76,
-           77,   31,   30,   80,   32,   33,    1,  164,    8,  166,
-           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,  137,  138,    8,  126,
-          127,  128,  129,  160,  131,  132,  133,  134,  135,  136,
-          167,  116,  139,  140,  141,  142,  143,  144,  145,  167,
-          147,  148,   82,  171,    8,  116,  167,  154,  155,  156,
-            2,    3,    4,    5,    6,    7,  141,  101,    8,   84,
-           12,   13,  106,   15,  108,   70,    9,   10,   11,  113,
-          141,   14,  116,  117,  118,  119,  120,  121,  122,  123,
-          124,  125,  126,    1,  163,   53,   54,   55,  167,   57,
-            8,  117,  118,  116,  165,   30,  122,    1,   50,   51,
-          140,   69,    8,  163,   56,  131,   58,   59,   60,   61,
-           62,   63,   64,   65,   66,   67,   68,  140,   70,   71,
-           72,   73,   74,    8,  168,  165,   78,   79,   80,    8,
-           82,  171,  137,  138,   86,   87,   88,   89,  163,   91,
-            1,   93,  167,   95,   70,   80,   98,   99,  153,    1,
-            8,  103,  104,  105,  106,  107,   16,  109,  110,    1,
-          165,    8,  167,  115,  116,    1,   50,   51,   52,   70,
-          122,    1,  106,  107,    8,  127,  128,  129,  106,   31,
-          108,  116,  116,  132,  133,  134,    8,  139,  140,   31,
-          142,  143,  144,  145,  146,  147,  148,  149,  106,   14,
-          108,   31,   14,  155,  156,  140,  141,  159,  160,  161,
-          162,  137,  138,  165,   75,   76,   77,  169,  170,  171,
-           14,    0,    1,   84,  159,  160,  161,  153,   14,   90,
-          165,   92,   84,   94,   14,   96,  137,  138,   14,  165,
-            1,  167,   84,   16,   80,  106,  164,    8,  166,   37,
-           38,  159,  153,  164,   84,  166,  117,  118,   16,   37,
-           38,  122,   16,  167,  165,  116,  167,  171,   51,  130,
-          131,  132,  133,  134,   16,   17,   18,   19,   20,   21,
-           22,   23,   24,   25,   26,   27,   28,   29,   16,   70,
-          141,   73,   70,   71,  101,  102,    1,   80,   80,   16,
-           83,   16,  163,   16,   82,   84,  167,  168,   86,   75,
-           76,  163,   75,   76,  165,  167,   16,   59,   60,  106,
-          107,  163,  106,  107,   16,  167,   31,  106,   70,  108,
-            1,  167,   16,  163,  113,  171,   16,  167,  117,  118,
-          122,  111,  112,  122,  122,   31,   16,   35,   37,   38,
-           31,  130,  131,  132,  133,  134,  137,  138,   31,   30,
-            1,  139,  140,   31,  142,  143,  144,  145,  146,  147,
-          148,   31,  153,   31,   31,  154,   80,  155,  156,   84,
-           31,   37,   38,   31,  163,   74,  167,  165,  167,  168,
-           31,   80,  170,  171,   31,  137,  138,   30,   87,   88,
-           89,   31,   91,   31,   93,   31,   95,   31,   31,   98,
-           31,  153,  116,   31,  103,  104,  105,   31,   74,   31,
-          109,  110,   31,   31,   80,  167,  115,  116,   70,   71,
-           35,   87,   88,   89,   35,   91,  140,   93,  127,   95,
-           82,   82,   98,   37,   86,  116,   35,  103,  104,  105,
-           35,   35,   35,  109,  110,  159,  160,  161,  163,  115,
-          116,   37,  167,   70,   71,   37,   37,   57,   38,  158,
-          141,  127,   69,   77,   70,   82,  117,  118,   70,   86,
-          122,  122,   80,  116,   83,   80,   89,   97,   90,   82,
-          131,   82,   92,  113,  165,  114,  131,   85,  140,  140,
-          142,  143,  144,  145,  146,  147,  148,   94,  141,  136,
-           31,   97,  150,  155,  156,  122,   96,  153,   97,  100,
-          135,  162,  100,  165,  165,  150,  157,  140,  170,  171,
-          171,  153,  165,  140,  163,  142,  143,  144,  145,  146,
-          147,  148,  153,   31,   -1,  137,  138,  153,  155,  156,
-          166,  168,   -1,   74,   -1,   -1,   -1,   -1,  165,   80,
-          135,  153,   -1,  170,  171,   -1,   87,   88,   89,   -1,
-           91,  153,   93,   -1,   95,  167,   -1,   98,   -1,   -1,
-          157,   -1,  103,  104,  105,    1,   74,   -1,  109,  110,
-          158,  164,   80,  159,  115,  116,  163,  162,  167,   87,
-           88,   89,  163,   91,  163,   93,  127,   95,    1,  163,
-           98,  163,  163,  163,  163,  103,  104,  105,  163,   74,
-          163,  109,  110,  163,  163,   80,  163,  115,  116,   70,
-          163,  163,   87,   88,   89,  163,   91,  163,   93,  127,
-           95,  163,  165,   98,  164,  164,  164,  102,  103,  104,
-          105,  164,   74,  164,  109,  110,  165,  165,   80,   81,
-          115,  116,  165,  165,    1,   87,   88,   89,   84,   91,
-          165,   93,  127,   95,  165,  165,   98,  166,  165,  165,
-          165,  103,  104,  105,  100,  101,  102,  109,  110,  165,
-          106,   84,  165,  115,  116,  165,  137,  138,  165,  165,
-          165,  117,  118,  165,  165,  127,  122,  100,  101,  102,
-          166,  165,  153,  106,  130,  131,  132,  133,  134,  165,
-          165,  165,  165,  165,  117,  118,  167,  165,  165,  122,
-          165,  165,  165,  165,  165,  165,  165,  130,  131,  132,
-          133,  134,   74,  166,  165,   82,  165,  163,   80,  166,
-          165,  167,  168,  165,  165,   87,   88,   89,  166,   91,
-          166,   93,  166,   95,  166,  166,   98,  166,  166,  166,
-          163,  103,  104,  105,  167,  168,  166,  109,  110,  166,
-          117,  118,  166,  115,  116,  122,  166,  166,  166,  166,
-          166,  166,  166,  166,  131,  127,  166,  166,  166,  166,
-          166,  166,  166,  140,  166,  166,  166,  166,  166,  166,
-          166,  166,  166,  166,  166,  166,  166,   -1,  167,  167,
-          167,  167,  167,  167,  167,  162,  167,  167,  165,  167,
-          169,  167,  167,   -1,  171,  168,  170,  168,  168,  168,
-          168,  168,  168,  168,  168,  168,  168,  168,  168,  168,
-          168,  168,  168,  168,  168,  168,  168,  168,  168,  168,
-          168,  168,   -1,   -1,   -1,  171
+          122,  123,   15,  112,  113,  127,  128,  129,  130,   15,
+          132,  133,  134,  135,  136,  137,   17,   17,  140,  141,
+          142,  143,  144,  145,  146,   32,  148,  149,  138,  139,
+           17,   17,   17,  155,  156,  157,    2,    3,    4,    5,
+            6,    7,    8,   17,  102,   17,   17,   13,   14,  107,
+           16,  109,    1,   17,   17,   17,  114,   17,  168,  117,
+          118,  119,  120,  121,  122,  123,  124,  125,  126,  127,
+            1,   32,   39,   32,   32,   32,   32,   32,   32,   32,
+           32,   32,   32,   32,   32,   51,   52,   32,   71,   81,
+           32,   57,   71,   59,   60,   61,   62,   63,   64,   65,
+           66,   67,   68,   69,   32,   71,   72,   73,   74,   75,
+           32,  169,   32,   79,   80,   81,   32,   83,   32,   32,
+           38,   87,   88,   89,   90,  117,   92,   36,   94,   36,
+           96,   36,    1,   99,  100,   36,   85,   36,  104,  105,
+          106,  107,  108,   36,  110,  111,   36,   38,   58,  141,
+          116,  117,   83,   38,   38,  138,  139,  123,   70,  138,
+          139,   78,  128,  129,  130,   71,   81,   86,  160,  161,
+          162,  154,   83,   31,  140,  141,   84,  143,  144,  145,
+          146,  147,  148,  149,  150,  168,   81,  118,  119,  168,
+          156,  157,  123,   90,  160,  161,  162,  163,   98,   91,
+          166,  132,   83,   97,  170,  171,  172,   76,   77,   78,
+          141,   93,   95,    0,    1,  164,   85,  115,   98,  168,
+           98,  151,   91,   81,   93,  101,   95,  101,   97,  132,
+          151,  154,  163,  137,  136,  166,  160,  114,  107,  164,
+          136,  172,  168,  170,   -1,   -1,   71,   -1,   -1,  118,
+          119,   -1,   38,   39,  123,  141,   -1,   -1,   -1,  117,
+           -1,   -1,  131,  132,  133,  134,  135,   17,   18,   19,
+           20,   21,   22,   23,   24,   25,   26,   27,   28,   29,
+           30,  154,  154,  141,  142,   71,   72,  154,  154,  159,
+          158,  166,  163,  158,   -1,  164,   -1,   83,   85,  168,
+          169,   87,  160,  161,  162,  164,  166,  164,  166,  164,
+           60,   61,  164,  138,  139,  164,  164,  164,  164,  164,
+          107,   71,  109,  164,  164,  164,  164,  114,  164,  154,
+          164,  118,  119,  164,  164,  164,  123,  123,  165,  165,
+          168,   38,   39,  168,  131,  132,  133,  134,  135,  165,
+          165,  165,    1,  165,  140,  141,  166,  143,  144,  145,
+          146,  147,  148,  149,  166,  166,  166,  166,  155,  166,
+          156,  157,  166,  166,   38,   39,  166,  164,   75,  167,
+          166,  168,  169,   32,   81,  171,  172,  166,  138,  139,
+          166,   88,   89,   90,  166,   92,  166,   94,  166,   96,
+          166,  166,   99,  166,  154,  166,  166,  104,  105,  106,
+          166,   75,  166,  110,  111,  166,  168,   81,  168,  116,
+          117,   71,   72,  166,   88,   89,   90,  166,   92,  166,
+           94,  128,   96,   83,   83,   99,  166,   87,  166,  166,
+          104,  105,  106,  166,  166,  166,  110,  111,  166,  166,
+          166,  166,  116,  117,  166,  166,   71,   72,  167,  167,
+          167,  167,  159,  167,  128,  167,  167,  167,   83,  118,
+          119,  167,   87,  123,  123,  167,  167,  167,  167,  167,
+          167,  167,  167,  132,  167,  167,  167,  167,  167,  167,
+          167,  141,  141,  143,  144,  145,  146,  147,  148,  149,
+          167,  167,  167,   32,  167,  167,  156,  157,  123,  167,
+          167,  167,  167,  167,  163,  167,  166,  166,  169,  167,
+          167,  171,  172,  172,  167,  167,  141,  167,  143,  144,
+          145,  146,  147,  148,  149,  167,   32,  167,  167,  167,
+          167,  156,  157,  168,  168,  168,   75,  168,  168,  168,
+          168,  166,   81,  169,  168,  168,  171,  172,  168,   88,
+           89,   90,  169,   92,  169,   94,  169,   96,  169,  169,
+           99,  169,  169,  169,  169,  104,  105,  106,  169,   75,
+          169,  110,  111,  169,  169,   81,  169,  116,  117,  169,
+          169,  169,   88,   89,   90,  169,   92,  169,   94,  128,
+           96,  169,  169,   99,  169,  169,  169,  169,  104,  105,
+          106,  171,   75,  172,  110,  111,    1,   -1,   81,   -1,
+          116,  117,   -1,   -1,   -1,   88,   89,   90,   -1,   92,
+           -1,   94,  128,   96,   -1,   -1,   99,   -1,   -1,    1,
+           -1,  104,  105,  106,   -1,   75,   -1,  110,  111,   -1,
+           -1,   81,   -1,  116,  117,   -1,   -1,   -1,   88,   89,
+           90,   -1,   92,   -1,   94,  128,   96,   -1,   -1,   99,
+           -1,   -1,   -1,  103,  104,  105,  106,   -1,   75,   -1,
+          110,  111,   -1,   -1,   81,   82,  116,  117,   -1,   -1,
+           -1,   88,   89,   90,   -1,   92,   -1,   94,  128,   96,
+           85,   -1,   99,  166,   -1,   -1,   -1,  104,  105,  106,
+           -1,   -1,   -1,  110,  111,   -1,  101,  102,  103,  116,
+          117,   -1,  107,   85,   -1,   -1,   -1,   -1,   -1,   -1,
+           -1,  128,   -1,  118,  119,   -1,   -1,   -1,  123,  101,
+          102,  103,   -1,   -1,   -1,  107,  131,  132,  133,  134,
+          135,   -1,   -1,   -1,   -1,   -1,  118,  119,   -1,   -1,
+           -1,  123,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  131,
+          132,  133,  134,  135,   75,   -1,   -1,   -1,   -1,  164,
+           81,   -1,   -1,  168,  169,   -1,   -1,   88,   89,   90,
+           -1,   92,   -1,   94,   -1,   96,   -1,   -1,   99,   -1,
+           -1,   -1,  164,  104,  105,  106,  168,  169,   -1,  110,
+          111,   -1,   -1,   -1,   -1,  116,  117,   -1,   -1,   -1,
+           -1,   -1,   -1,   -1,   -1,   -1,   -1,  128
     );
 
     protected array $actionBase = array(
-            0,   -2,  156,  559,  641, 1004, 1027,  485,  292,  200,
-          -60,  283,  568,  590,  590,  715,  590,  195,  578,  894,
-          395,  395,  395,  825,  313,  313,  825,  313,  731,  731,
-          731,  731,  764,  764,  965,  965,  998,  932,  899, 1088,
-         1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088,
-         1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088,
-         1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088,
-         1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088,
-         1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088,
-         1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088,
-         1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088,
-         1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088,
-         1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088,
-         1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088,
-         1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088,
-         1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088,
-         1088, 1088, 1088,   37,  360,  216,  644, 1061, 1067, 1063,
-         1068, 1059, 1058, 1062, 1064, 1069, 1109, 1110,  812, 1111,
-         1112, 1108, 1113, 1065,  909, 1060, 1066,  297,  297,  297,
-          297,  297,  297,  297,  297,  297,  297,  297,  297,  297,
-          297,  297,  297,  297,  297,  297,  297,  297,  297,  297,
-          297,  297,  297,  297,  135,  477,  373,  201,  201,  201,
-          201,  201,  201,  201,  201,  201,  201,  201,  201,  201,
-          201,  201,  201,  201,  201,  201,  201,  642,  642,   22,
-           22,   22,  362,  813,  778,  813,  813,  813,  813,  813,
-          813,  813,  813,  346,  205,  678,  188,  171,  171,    7,
-            7,    7,    7,    7,  376,  779,   54, 1083, 1083,  139,
-          139,  139,  139,  -50,   49,  749,  380,  787,  -39,  569,
-          569,  536,  536,  335,  335,  349,  349,  335,  335,  335,
-          212,  212,  212,  212,  415,  494,  519,  512,  -71,  807,
-          584,  584,  584,  584,  807,  807,  807,  807,  795, 1086,
-          807,  807,  807,  639,  828,  828,  979,  452,  452,  452,
-          828,  492,  -70,  -70,  492,  394,  -70,  516,  982,  637,
-          988,  397,  785,  486,  509,  397,  -16,  299,  502,  233,
-          854,  633,  854, 1056,  832,  832,  794,  752,  898, 1085,
-         1070,  839, 1106,  842, 1107,  471,   10,  747, 1055, 1055,
-         1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1114,
-          632, 1056,  145, 1114, 1114, 1114,  632,  632,  632,  632,
-          632,  632,  632,  632,  796,  632,  632,  650,  145,  654,
-          657,  145,  837,  632,  798,   37,   37,   37,   37,   37,
-           37,   37,   37,   37,   37,  -18,   37,   37,  360,    5,
-            5,   37,  341,   52,    5,    5,    5,    5,   37,   37,
-           37,   37,  633,  830,  789,  636,  278,  843,  128,  830,
-          830,  830,   26,  136,  120,  732,  815,  259,  822,  822,
-          829,  933,  933,  822,  827,  822,  829,  822,  822,  933,
-          933,  855,  933,  163,  541,  430,  514,  562,  933,  273,
-          822,  822,  822,  822,  845,  933,   58,  573,  822,  234,
-          194,  822,  822,  845,  805,  802,  793,  933,  933,  933,
-          845,  470,  793,  793,  793,  859,  861,  800,  799,  390,
-          356,  598,  127,  850,  799,  799,  822,  535,  800,  799,
-          800,  799,  852,  799,  799,  799,  800,  799,  827,  456,
-          799,  720,  728,  586,   75,  799,   19,  950,  953,  734,
-          954,  944,  955, 1008,  958,  959, 1073,  930,  977,  947,
-          966, 1009,  935,  934,  811,  666,  692,  809,  784,  929,
-          823,  823,  823,  917,  918,  823,  823,  823,  823,  823,
-          823,  823,  823,  666,  847,  838,  817,  983,  703,  705,
-         1044,  782, 1090, 1081,  982,  950,  959,  739,  947,  966,
-          935,  934,  792,  790,  772,  783,  769,  763,  760,  762,
-          797, 1046,  974,  791,  707, 1016,  985, 1089, 1071,  986,
-          987, 1018, 1047,  866, 1050, 1091,  824, 1092, 1093,  900,
-          989, 1074,  823,  912,  897,  901,  988,  925,  666,  902,
-         1051,  997,  851, 1019, 1021, 1072,  834,  821,  907, 1094,
-          990,  991,  999, 1075, 1076,  853, 1003,  804, 1022,  841,
-          803, 1023, 1030, 1033, 1036, 1077, 1095, 1079,  911, 1080,
-          868,  818,  931,  840, 1096,  307,  835,  836,  849, 1005,
-          605,  978, 1082, 1087, 1097, 1040, 1041, 1042, 1098, 1099,
-          975,  869, 1012,  833, 1014,  964,  870,  871,  608,  848,
-         1052,  819,  831,  844,  626,  634, 1100, 1101, 1102,  976,
-          806,  816,  875,  877, 1053,  826, 1054, 1103,  640,  880,
-         1104, 1045,  736,  740,  560,  662,  647,  750,  820, 1084,
-          814,  801,  810, 1001,  740,  808,  881, 1105,  883,  887,
-          888, 1043,  892,    0,    0,    0,    0,    0,    0,    0,
+            0,  155,   -3,  313,  471,  471,  881,  963, 1365, 1388,
+          892,  134,  515,  -61,  367,  524,  524,  801,  524,  209,
+          510,  283,  517,  517,  517,  920,  855,  628,  628,  855,
+          628, 1053, 1053, 1053, 1053, 1086, 1086, 1320, 1320, 1353,
+         1254, 1221, 1449, 1449, 1449, 1449, 1449, 1287, 1449, 1449,
+         1449, 1449, 1449, 1287, 1449, 1449, 1449, 1449, 1449, 1449,
+         1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449,
+         1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449,
+         1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449,
+         1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449,
+         1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449,
+         1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449,
+         1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449,
+         1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449,
+         1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449,
+         1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449,
+         1449, 1449, 1449, 1449, 1449, 1449, 1449,  201,  -13,   44,
+          365,  744, 1102, 1120, 1107, 1121, 1096, 1095, 1103, 1108,
+         1122, 1183, 1185,  837, 1186, 1187, 1182, 1188, 1110,  938,
+         1098, 1118,  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,
+          323,  482,  334,  331,  331,  331,  331,  331,  331,  331,
+          331,  331,  331,  331,  331,  331,  331,  331,  331,  331,
+          331,  331,  331,  964,  964,   21,   21,   21,  324, 1135,
+         1100, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135,  297,
+          204, 1000,  187,  170,  170,    6,    6,    6,    6,    6,
+          692,   53, 1101,  819,  819,  138,  138,  138,  138,  542,
+           14,  347,  355,  -41,  348,  232,  384,  384,  487,  487,
+          554,  554,  349,  349,  554,  554,  554,  399,  399,  399,
+          399,  208,  215,  366,  364,   -7,  864,  224,  224,  224,
+          224,  864,  864,  864,  864,  829, 1190,  864, 1011, 1027,
+          864,  864,  368,  767,  767,  925,  305,  305,  305,  767,
+          421,  -71,  -71,  421,  380,  -71,  225,  286,  556,  847,
+          572,  543,  556,  640,  771,  233,  148,  826,  605,  826,
+         1094,  831,  831,  802,  792,  921, 1140, 1123,  874, 1176,
+          876, 1178,  420,    9,  791, 1093, 1093, 1093, 1093, 1093,
+         1093, 1093, 1093, 1093, 1093, 1093, 1191,  519, 1094,  436,
+         1191, 1191, 1191,  519,  519,  519,  519,  519,  519,  519,
+          519,  805,  519,  519,  641,  436,  614,  618,  436,  860,
+          519,  877,  201,  201,  201,  201,  201,  201,  201,  201,
+          201,  201,  201,  -18,  201,  201,  -13,  292,  292,  201,
+          216,    5,  292,  292,  292,  292,  201,  201,  201,  201,
+          605,  840,  882,  607,  435,  885,   29,  840,  840,  840,
+            4,  113,   25,  841,  843,  393,  835,  835,  835,  869,
+          956,  956,  835,  839,  835,  869,  835,  835,  956,  956,
+          879,  956,  146,  609,  373,  514,  616,  956,  272,  835,
+          835,  835,  835,  854,  956,   45,   68,  620,  835,  203,
+          191,  835,  835,  854,  848,  828,  846,  956,  956,  956,
+          854,  499,  846,  846,  846,  893,  895,  873,  822,  363,
+          341,  674,  127,  783,  822,  822,  835,  601,  873,  822,
+          873,  822,  880,  822,  822,  822,  873,  822,  839,  477,
+          822,  779,  786,  663,   74,  822,   51,  978,  980,  743,
+          982,  971,  984, 1038,  985,  987, 1125,  953,  999,  974,
+          989, 1039,  960,  957,  836,  763,  764,  878,  827,  951,
+          838,  838,  838,  948,  949,  838,  838,  838,  838,  838,
+          838,  838,  838,  763,  923,  884,  853, 1013,  765,  776,
+         1069,  820, 1145,  823, 1011,  978,  987,  789,  974,  989,
+          960,  957,  800,  799,  797,  798,  796,  795,  793,  794,
+          808, 1071, 1072,  990,  825,  778, 1049, 1020, 1143,  922,
+         1022, 1023, 1050, 1073,  898, 1083, 1147,  844, 1149, 1150,
+          924, 1028, 1126,  838,  940,  875,  934, 1027,  950,  763,
+          935, 1084, 1085, 1043,  824, 1054, 1058,  998,  870,  842,
+          936, 1152, 1029, 1032, 1033, 1127, 1129,  891, 1044,  962,
+         1059,  872, 1099, 1060, 1061, 1062, 1063, 1130, 1153, 1131,
+          890, 1132,  901,  858, 1041,  856, 1154,  504,  851,  857,
+          866, 1035,  536, 1007, 1136, 1134, 1155, 1064, 1065, 1067,
+         1159, 1161,  994,  902, 1046,  867, 1048, 1042,  903,  904,
+          606,  865, 1087,  845,  849,  859,  622,  672, 1164, 1165,
+         1167,  996,  830,  833,  905,  909, 1088,  832, 1092, 1170,
+          737,  910, 1171, 1070,  787,  788,  690,  750,  749,  790,
+          868, 1137,  883,  852,  850, 1034,  788,  834,  911, 1172,
+          912,  914,  916, 1068,  919,    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,  468,  468,  468,  468,  468,  468,  313,
-          313,  313,  313,  313,  468,  468,  468,  468,  468,  468,
-          468,  313,  468,  468,  468,  313,    0,    0,  313,    0,
-          468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
-          468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
-          468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
-          468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
-          468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
-          468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
-          468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
-          468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
-          468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
-          468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
-          468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
-          468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
-          468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
-          468,  468,  468,  468,  468,  297,  297,  297,  297,  297,
-          297,  297,  297,  297,  297,  297,  297,  297,  297,  297,
-          297,  297,  297,  297,  297,  297,  297,  297,  297,    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,
+          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,    0,    0,  297,  297,  297,  297,
-          297,  297,  297,  297,  297,  297,  297,  297,  297,  297,
-          297,  297,  297,  297,  297,  297,  297,  297,  297,  716,
-          716,  297,  297,  297,  297,  716,  716,  716,  716,  716,
-          716,  716,  716,  716,  716,  297,  297,    0,  297,  297,
-          297,  297,  297,  297,  297,  297,  855,  716,  716,  716,
-          716,  452,  452,  452,  452,  -95,  -95,  716,  716,  716,
-          394,  716,  716,  452,  452,  716,  716,  716,  716,  716,
-          716,  716,  716,  716,  716,  716,    0,    0,    0,  145,
-          -70,  716,  827,  827,  827,  827,  716,  716,  716,  716,
-          -70,  -70,  716,  716,  716,    0,    0,    0,    0,    0,
-            0,    0,    0,  145,    0,    0,  145,    0,    0,  827,
-          638,  827,  638,  716,  394,  855,  659,  716,    0,    0,
-            0,    0,  145,  827,  145,  632,  -70,  -70,  632,  632,
-            5,   37,  659,  613,  613,  613,  613,    0,    0,  633,
-          855,  855,  855,  855,  855,  855,  855,  855,  855,  855,
-          855,  827,    0,  855,    0,  827,  827,  827,    0,    0,
-            0,    0,    0,    0,    0,    0,  933,    0,    0,    0,
-            0,    0,    0,    0,  827,    0,  933,    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,  758,  758,  612,
+          612,  612,  612,  758,  758,  758,  758,  758,  758,  758,
+          758,  758,  758,  612,  612,    0,  612,  612,  612,  612,
+          612,  612,  612,  612,  879,  758,  758,  758,  758,  305,
+          305,  305,  305,  -96,  -96,  758,  758,  380,  758,  380,
+          758,  758,  305,  305,  758,  758,  758,  758,  758,  758,
+          758,  758,  758,  758,  758,    0,    0,    0,  436,  -71,
+          758,  839,  839,  839,  839,  758,  758,  758,  758,  -71,
+          -71,  758,  414,  414,  758,  758,    0,    0,    0,    0,
+            0,    0,    0,    0,  436,    0,    0,  436,    0,    0,
+          839,  839,  758,  380,  879,  328,  758,    0,    0,    0,
+            0,  436,  839,  436,  519,  -71,  -71,  519,  519,  292,
+          201,  328,  596,  596,  596,  596,    0,    0,  605,  879,
+          879,  879,  879,  879,  879,  879,  879,  879,  879,  879,
+          839,    0,  879,    0,  839,  839,  839,    0,    0,    0,
+            0,    0,    0,    0,    0,  956,    0,    0,    0,    0,
+            0,    0,    0,  839,    0,  956,    0,    0,    0,    0,
             0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-            0,    0,    0,    0,    0,  827,    0,    0,    0,    0,
-            0,    0,    0,    0,    0,  823,  834,    0,    0,  834,
-            0,  823,  823,  823,    0,    0,    0,  848,  826
+            0,    0,    0,    0,    0,  839,    0,    0,    0,    0,
+            0,    0,    0,    0,    0,  838,  870,    0,    0,  870,
+            0,  838,  838,  838,    0,    0,    0,  865,  832
     );
 
     protected array $actionDefault = array(
-            3,32767,  102,32767,32767,32767,32767,32767,32767,32767,
+            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,  100,32767,  618,  618,
-          618,  618,32767,32767,  255,  102,32767,32767,  487,  404,
-          404,  404,32767,32767,  560,  560,  560,  560,  560,32767,
-        32767,32767,32767,32767,32767,  487,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,  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,32767,32767,32767,32767,32767,   36,    7,
-            8,   10,   11,   49,   17,  328,  100,32767,32767,32767,
-        32767,32767,32767,32767,32767,  102,32767,32767,32767,32767,
+        32767,32767,32767,   36,    7,    8,   10,   11,   49,  338,
+          100,32767,32767,32767,32767,32767,32767,32767,32767,  102,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
-        32767,32767,32767,32767,32767,32767,  611,32767,32767,32767,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
-        32767,32767,32767,32767,32767,32767,32767,  392,  491,  470,
-          471,  473,  474,  403,  561,  617,  331,  614,  333,  402,
-          145,  343,  334,  243,  259,  492,  260,  493,  496,  497,
-          216,  389,  149,  150,  434,  488,  436,  486,  490,  435,
-          409,  415,  416,  417,  418,  419,  420,  421,  422,  423,
-          424,  425,  426,  427,  407,  408,  489,32767,32767,  467,
-          466,  465,  432,32767,32767,32767,32767,32767,32767,32767,
-        32767,  102,32767,  433,  437,  406,  440,  438,  439,  456,
-          457,  454,  455,  458,32767,32767,  320,32767,32767,  459,
-          460,  461,  462,  370,  368,32767,32767,  320,  111,32767,
-        32767,  447,  448,32767,32767,32767,32767,32767,32767,32767,
-        32767,32767,32767,32767,  504,  554,  464,32767,32767,32767,
+        32767,  624,32767,32767,32767,32767,32767,32767,32767,32767,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
-          102,32767,  100,  556,  429,  431,  524,  442,  443,  441,
-          410,32767,  529,32767,  102,32767,  531,32767,32767,32767,
-        32767,32767,32767,32767,32767,32767,  555,32767,  562,  562,
-        32767,  517,  100,  195,32767,  530,  195,  195,32767,32767,
-        32767,32767,32767,32767,32767,32767,  625,  517,  110,  110,
-          110,  110,  110,  110,  110,  110,  110,  110,  110,32767,
-          195,  110,32767,32767,32767,  100,  195,  195,  195,  195,
-          195,  195,  195,  195,  532,  195,  195,  190,32767,  269,
-          271,  102,  579,  195,  534,32767,32767,32767,32767,32767,
+        32767,32767,  403,  494,  504,  482,  483,  485,  486,  414,
+          574,  630,  344,  627,  342,  413,  146,  354,  343,  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,  517,  452,  138,32767,  519,  138,  562,  444,
-          445,  446,  562,  562,  562,  316,  293,32767,32767,32767,
-        32767,  532,  532,  100,  100,  100,  100,32767,32767,32767,
-        32767,  111,  503,   99,   99,   99,   99,   99,  103,  101,
-        32767,32767,32767,32767,  224,32767,  101,   99,32767,  101,
-          101,32767,32767,  224,  226,  213,  228,32767,  583,  584,
-          224,  101,  228,  228,  228,  248,  248,  506,  322,  101,
-           99,  101,  101,  197,  322,  322,32767,  101,  506,  322,
-          506,  322,  199,  322,  322,  322,  506,  322,32767,  101,
-          322,  215,  392,   99,   99,  322,32767,32767,32767,  519,
-        32767,32767,32767,32767,32767,32767,32767,  223,32767,32767,
-        32767,32767,32767,32767,32767,32767,  549,32767,  567,  581,
-          450,  451,  453,  566,  564,  475,  476,  477,  478,  479,
-          480,  481,  483,  613,32767,  523,32767,32767,32767,  342,
-        32767,  623,32767,32767,32767,    9,   74,  512,   42,   43,
-           51,   57,  538,  539,  540,  541,  535,  536,  542,  537,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
-        32767,32767,32767,32767,32767,  624,32767,  562,32767,32767,
-        32767,32767,  449,  544,  589,32767,32767,  563,  616,32767,
-        32767,32767,32767,32767,32767,32767,  138,32767,32767,32767,
-        32767,32767,32767,32767,32767,32767,32767,  549,32767,  136,
-        32767,32767,32767,32767,32767,32767,32767,32767,  545,32767,
-        32767,32767,  562,32767,32767,32767,32767,  318,  315,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,32767,  562,32767,32767,32767,32767,
-        32767,  295,32767,  312,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,  388,  519,  298,  300,  301,32767,32767,32767,
-        32767,  364,32767,32767,32767,32767,32767,32767,32767,32767,
-        32767,32767,32767,  152,  152,    3,    3,  345,  152,  152,
-          152,  345,  345,  152,  345,  345,  345,  152,  152,  152,
-          152,  152,  152,  281,  185,  263,  266,  248,  248,  152,
-          356,  152
+        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(
-          196,  196, 1041,  352,  700,  465,  587,  470,  470, 1072,
-          736,  641,  643, 1205,  855,  663,  470,  856,  709,  687,
-          690, 1014,  698,  707, 1010,  625,  662,  166,  166,  166,
-          166,  220,  197,  193,  193,  176,  178,  215,  193,  193,
-          193,  193,  193,  194,  194,  194,  194,  194,  188,  189,
-          190,  191,  192,  217,  215,  218,  540,  541,  423,  542,
-          545,  546,  547,  548,  549,  550,  551,  552, 1156,  167,
-          168,  169,  195,  170,  171,  172,  165,  173,  174,  175,
-          177,  214,  216,  219,  239,  242,  253,  254,  256,  257,
-          258,  259,  260,  261,  262,  263,  269,  270,  271,  272,
-          281,  282,  317,  318,  319,  429,  430,  431,  602,  221,
-          222,  223,  224,  225,  226,  227,  228,  229,  230,  231,
-          232,  233,  234,  235,  179,  236,  180,  188,  189,  190,
-          191,  192,  217, 1156,  198,  199,  200,  201,  240,  181,
-          182,  202,  183,  203,  199,  184,  241,  198,  164,  204,
-          205,  185,  206,  207,  208,  186,  209,  210,  187,  211,
-          212,  213,  278,  278,  278,  278,  858,  433,  665,  979,
-          916,  604,  917,  428,  320,  314,  315,  338,  597,  432,
-          339,  434,  642,  627,  627,  896,  854,  896,  896, 1291,
-         1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291,  614,
-          628,  631,  632,  633,  634,  655,  656,  657,  711,  830,
-          871,  460,  912,  907,  908,  921,  864,  909,  861,  910,
-          911,  862,  356,  915,  868,  421,  883,  482,  867,  870,
-         1361, 1361,  356,  356,  484, 1094, 1089, 1090, 1091,  889,
-          603, 1107,  397,  400,  605,  609,  356,  356, 1361,  594,
-          356,  712,  344, 1378,  353,  354,  511,  703,  442, 1105,
-         1260, 1041, 1260, 1260,  350,  559, 1364, 1364,  356,  356,
-         1041, 1260, 1041, 1351, 1041, 1041,  345,  344, 1041, 1041,
-         1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1000,
-         1236,  948,  249,  249, 1260, 1237, 1240,  949, 1241, 1260,
-         1260, 1260, 1260, 1114, 1115, 1260, 1260, 1260, 1343, 1343,
-         1343, 1343,  564,  557,  851,  427, 1322,  616,  395,  247,
-          247,  247,  247,  244,  250,  592,  929,  503,  664,  504,
-          930,  355,  355,  355,  355,  510,  945,  512,  945,  479,
-         1336, 1337,  328,  557,  564,  589,  590,  330,  600,  606,
-         1153,  621,  622,  555, 1065,  555,  555,  658,  659,   25,
-          676,  677,  678,  440,  555, 1310, 1310,  686,  559,  851,
-          670, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310,
-         1310, 1044, 1044, 1047, 1046,  685,  956,  458,  340, 1036,
-         1052, 1053,  973,  973,  973,  973, 1050, 1051,  458,  967,
-          974, 1307, 1307,  971,  412,  708,  848, 1307, 1307, 1307,
-         1307, 1307, 1307, 1307, 1307, 1307, 1307,    5,  610,    6,
-          873,  934, 1143,  451,  451,  876,  451,  451, 1333,  962,
-         1333, 1333, 1253, 1019,  404,  553,  553,  553,  553, 1333,
-          608,  875,  620,  668,  998, 1251,  558,  584, 1022,  869,
-          739,  558,  885,  584,  480,  398,  464, 1078,  697,  326,
-          309, 1250,  832, 1345, 1345, 1345, 1345, 1082,  473,  601,
-          474,  475, 1338, 1339,  697, 1128,  881,  697,  984, 1369,
-         1370,  598,  619, 1032,    0,  544,  544,  851,  836,    0,
-         1329,  544,  544,  544,  544,  544,  544,  544,  544,  544,
-          544,  543,  543, 1255,  879,    0,    0,  543,    0,  543,
-          543,  543,  543,  543,  543,  543,  543,  451,  451,  451,
-          451,  451,  451,  451,  451,  451,  451,  451,  252,  252,
-          451,  836, 1080,  836,  409,  410, 1331, 1331, 1080,  674,
-            0,  675,    0,  414,  415,  416,    0,  688,    0,    0,
-          417,  635,  637,  639,    0,  348,    0,    0, 1256, 1257,
-            0, 1243,  884,  872, 1077, 1081,    0,  846, 1003,    0,
-            0,  975,    0,  735, 1243,  982,  556, 1012, 1007,    0,
-          435,    0,    0,    0,    0,    0, 1258, 1319, 1320,    0,
-            0,  435,  273,  325,    0,  325,  325,    0,  972, 1048,
-         1048,    0,    0,    0,  669, 1059, 1055, 1056,    0,    0,
+          202,  169,  202,  202,  202, 1056,  842,  712,  359,  670,
+          671,  598,  688,  689,  690,  748,  653,  655,  591,  929,
+          675,  930, 1090,  721,  699,  702, 1028,  710,  719, 1024,
+          171,  171,  171,  171,  226,  203,  199,  199,  181,  183,
+          221,  199,  199,  199,  199,  199, 1180,  200,  200,  200,
+          200,  200, 1180,  193,  194,  195,  196,  197,  198,  223,
+          221,  224,  550,  551,  431,  552,  555,  556,  557,  558,
+          559,  560,  561,  562,  172,  173,  174,  201,  175,  176,
+          177,  170,  178,  179,  180,  182,  220,  222,  225,  245,
+          248,  259,  260,  262,  263,  264,  265,  266,  267,  268,
+          269,  275,  276,  277,  278,  288,  289,  326,  327,  328,
+          437,  438,  439,  613,  227,  228,  229,  230,  231,  232,
+          233,  234,  235,  236,  237,  238,  239,  240,  241,  184,
+          242,  185,  194,  195,  196,  197,  198,  223,  204,  205,
+          206,  207,  246,  186,  187,  208,  188,  209,  205,  189,
+          247,  204,  168,  210,  211,  190,  212,  213,  214,  191,
+          215,  216,  192,  217,  218,  219,  285,  283,  285,  285,
+          870, 1089, 1091, 1094,  615,  255,  255,  255,  255,  255,
+          441,  677,  614, 1130,  884,  867,  436,  329,  323,  324,
+          345,  608,  440,  346,  442,  654,  724,  492,  521,  715,
+          896, 1128,  993,  883,  494,  253,  253,  253,  253,  250,
+          256,  489, 1361, 1362, 1386, 1386,  925,  920,  921,  934,
+          876,  922,  873,  923,  924,  874,  877,  363,  928,  881,
+          480,  480,  868,  880, 1386,  848,  474,  363,  363,  480,
+         1117, 1112, 1113, 1114, 1229,  351,  362,  362,  362,  362,
+         1389, 1389,  429,  363,  363, 1017,  902,  363,  989, 1403,
+          747,  360,  361,  566, 1026, 1021, 1056, 1285, 1285, 1285,
+          569,  352,  351,  363,  363,  605, 1056, 1285,  848, 1056,
+          848, 1056, 1056, 1137, 1138, 1056, 1056, 1056, 1056, 1056,
+         1056, 1056, 1056, 1056, 1056, 1056,  357, 1261,  962,  637,
+          674, 1285, 1262, 1265,  963, 1266, 1285, 1285, 1285, 1285,
+         1376,  435, 1285,  628,  402, 1285, 1285, 1368, 1368, 1368,
+         1368, 1347,  574,  567, 1062, 1061, 1059, 1059,  958,  958,
+          697,  970, 1014,  942, 1051, 1067, 1068,  943,  565,  565,
+          565,  603,  513,  522,  514,  863,  676,  863,  565,  709,
+          520, 1176,  318,  567,  574,  600,  601,  319,  611,  617,
+          844,  633,  634, 1080,    8,  709,    9,  449,  709,   28,
+         1065, 1066,  467,  335,  316,  569,  698,  987,  987,  987,
+          987, 1363, 1364,  467,  639,  639,  981,  988,  609,  631,
+         1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316,
+         1335, 1335,  863,  469,  682,  469, 1335, 1335, 1335, 1335,
+         1335, 1335, 1335, 1335, 1335, 1335,  347,  258,  258,  626,
+          640,  643,  644,  645,  646,  667,  668,  669,  723,  632,
+          460,  860,  460,  460,  460, 1358, 1358, 1358,  553,  553,
+         1278,  985,  420,  720,  553, 1358,  553,  553,  553,  553,
+          553,  553,  553,  553,  451,  889,  568,  595,  568,  647,
+          649,  651,  568,  976,  595,  411,  405,  473,  886, 1276,
+         1370, 1370, 1370, 1370,  909,  866,  909,  909, 1036,  483,
+          612,  484,  485,  751,  563,  563,  563,  563,  894,  619,
+         1101, 1394, 1395,  412, 1332, 1332,  898,  490, 1151, 1354,
+         1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332,
+          279, 1105,  334,  334,  334,  998,  892,    0, 1280, 1047,
+            0,    0,  863,    0,    0,  460,  460,  460,  460,  460,
+          460,  460,  460,  460,  460,  460,    0,    0,  460, 1103,
+          554,  554,    0, 1356, 1356, 1103,  554,  554,  554,  554,
+          554,  554,  554,  554,  554,  554,  621,  622,  417,  418,
+          947, 1166,    0,  686,    0,  687,    0,  422,  423,  424,
+            0,  700, 1033,    0,  425, 1281, 1282,    0, 1268,  355,
+          888,    0,  680, 1012,  858,    0,    0,    0,  882,  443,
+            0, 1268,    0,  897,  885, 1100, 1104,    0,    0,    0,
+         1275,    0,  443,    0, 1283, 1344, 1345,  996,    0,    0,
+         1063, 1063,    0,    0,    0,  681, 1074, 1070, 1071,  404,
+          407,  616,  620,    0,    0,    0,    0,    0,    0,    0,
+          986,    0,    0,    0,    0,    0,    0,    0,    0,    0,
             0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-            0, 1126,  888,    0,    0,    0,    0,    0,    0,    0,
+            0,    0,    0, 1149,  901,    0,    0,    0,    0,    0,
             0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-            0,    0,    0,    0, 1017, 1017
+            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, 1031, 1031
     );
 
     protected array $gotoCheck = array(
-           42,   42,   73,   97,   73,  156,   48,  154,  154,  128,
-           48,   48,   48,  156,   26,   48,  154,   27,    9,   48,
-           48,   48,   48,   48,   48,   56,   56,   42,   42,   42,
+           42,   42,   42,   42,   42,   73,    6,   73,   97,   86,
+           86,   48,   86,   86,   86,   48,   48,   48,  127,   65,
+           48,   65,  131,    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,
@@ -941,101 +1010,106 @@ class Php7 extends \PhpParser\ParserAbst
            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,   66,   66,   49,
-           65,  131,   65,   66,   66,   66,   66,   66,   66,   66,
-           66,   66,   66,  108,  108,   25,   25,   25,   25,  108,
-          108,  108,  108,  108,  108,  108,  108,  108,  108,   81,
-           81,   81,   81,   81,   81,   81,   81,   81,   81,    6,
-           35,   83,   15,   15,   15,   15,   15,   15,   15,   15,
-           15,   15,   14,   15,   15,   43,   35,   84,   15,   35,
-          188,  188,   14,   14,   84,   15,   15,   15,   15,   45,
-            8,    8,   59,   59,   59,   59,   14,   14,  188,  178,
-           14,    8,  174,   14,   97,   97,    8,    8,   83,    8,
-           73,   73,   73,   73,  185,   14,  188,  188,   14,   14,
-           73,   73,   73,  187,   73,   73,  174,  174,   73,   73,
-           73,   73,   73,   73,   73,   73,   73,   73,   73,  103,
-           79,   79,    5,    5,   73,   79,   79,   79,   79,   73,
-           73,   73,   73,  145,  145,   73,   73,   73,    9,    9,
-            9,    9,   76,   76,   22,   13,   14,   13,   62,    5,
-            5,    5,    5,    5,    5,  104,   73,  160,   64,  160,
-           73,   24,   24,   24,   24,  160,    9,   14,    9,  182,
-          182,  182,   76,   76,   76,   76,   76,   76,   76,   76,
-          155,   76,   76,   19,  115,   19,   19,   86,   86,   76,
-           86,   86,   86,  113,   19,  176,  176,  117,   14,   22,
-          121,  176,  176,  176,  176,  176,  176,  176,  176,  176,
-          176,   89,   89,  119,  119,   89,   89,   19,   29,   89,
-           89,   89,   19,   19,   19,   19,  120,  120,   19,   19,
-           19,  177,  177,   93,   93,   93,   18,  177,  177,  177,
-          177,  177,  177,  177,  177,  177,  177,   46,   17,   46,
-           37,   17,   17,   23,   23,   39,   23,   23,  131,   92,
-          131,  131,   14,   17,   28,  107,  107,  107,  107,  131,
-          107,   17,   80,   17,   17,  166,    9,    9,  110,   17,
-           99,    9,   41,    9,  157,    9,    9,  130,    7,  175,
-          175,   17,    7,  131,  131,  131,  131,  133,    9,    9,
-            9,    9,  184,  184,    7,  148,    9,    7,   96,    9,
-            9,    2,    2,  114,   -1,  179,  179,   22,   12,   -1,
-          131,  179,  179,  179,  179,  179,  179,  179,  179,  179,
-          179,  162,  162,   20,    9,   -1,   -1,  162,   -1,  162,
-          162,  162,  162,  162,  162,  162,  162,   23,   23,   23,
-           23,   23,   23,   23,   23,   23,   23,   23,    5,    5,
-           23,   12,  131,   12,   82,   82,  131,  131,  131,   82,
-           -1,   82,   -1,   82,   82,   82,   -1,   82,   -1,   -1,
-           82,   85,   85,   85,   -1,   82,   -1,   -1,   20,   20,
-           -1,   20,   16,   16,   16,   16,   -1,   20,   50,   -1,
-           -1,   50,   -1,   50,   20,   16,   50,   50,   50,   -1,
-          118,   -1,   -1,   -1,   -1,   -1,   20,   20,   20,   -1,
-           -1,  118,   24,   24,   -1,   24,   24,   -1,   16,  118,
-          118,   -1,   -1,   -1,  118,  118,  118,  118,   -1,   -1,
+           42,   42,   42,   42,   42,   42,   23,   23,   23,   23,
+           15,  130,  130,  130,  134,    5,    5,    5,    5,    5,
+           66,   66,    8,    8,   35,   26,   66,   66,   66,   66,
+           66,   66,   66,   66,   66,   66,    8,   84,    8,    8,
+           35,    8,   49,   35,   84,    5,    5,    5,    5,    5,
+            5,  185,  185,  185,  191,  191,   15,   15,   15,   15,
+           15,   15,   15,   15,   15,   15,   15,   14,   15,   15,
+          157,  157,   27,   15,  191,   12,  159,   14,   14,  157,
+           15,   15,   15,   15,  159,  177,   24,   24,   24,   24,
+          191,  191,   43,   14,   14,   50,   45,   14,   50,   14,
+           50,   97,   97,   50,   50,   50,   73,   73,   73,   73,
+           14,  177,  177,   14,   14,  181,   73,   73,   12,   73,
+           12,   73,   73,  148,  148,   73,   73,   73,   73,   73,
+           73,   73,   73,   73,   73,   73,  188,   79,   79,   56,
+           56,   73,   79,   79,   79,   79,   73,   73,   73,   73,
+          190,   13,   73,   13,   62,   73,   73,    9,    9,    9,
+            9,   14,   76,   76,  119,  119,   89,   89,    9,    9,
+           89,   89,  103,   73,   89,   89,   89,   73,   19,   19,
+           19,  104,  163,   14,  163,   22,   64,   22,   19,    7,
+          163,  158,   76,   76,   76,   76,   76,   76,   76,   76,
+            7,   76,   76,  115,   46,    7,   46,  113,    7,   76,
+          120,  120,   19,  178,  178,   14,  117,   19,   19,   19,
+           19,  187,  187,   19,  108,  108,   19,   19,    2,    2,
+          108,  108,  108,  108,  108,  108,  108,  108,  108,  108,
+          179,  179,   22,   83,  121,   83,  179,  179,  179,  179,
+          179,  179,  179,  179,  179,  179,   29,    5,    5,   81,
+           81,   81,   81,   81,   81,   81,   81,   81,   81,   80,
+           23,   18,   23,   23,   23,  134,  134,  134,  165,  165,
+           14,   93,   93,   93,  165,  134,  165,  165,  165,  165,
+          165,  165,  165,  165,   83,   39,    9,    9,    9,   85,
+           85,   85,    9,   92,    9,   28,    9,    9,   37,  169,
+          134,  134,  134,  134,   25,   25,   25,   25,  110,    9,
+            9,    9,    9,   99,  107,  107,  107,  107,    9,  107,
+          133,    9,    9,   31,  180,  180,   41,  160,  151,  134,
+          180,  180,  180,  180,  180,  180,  180,  180,  180,  180,
+           24,  136,   24,   24,   24,   96,    9,   -1,   20,  114,
+           -1,   -1,   22,   -1,   -1,   23,   23,   23,   23,   23,
+           23,   23,   23,   23,   23,   23,   -1,   -1,   23,  134,
+          182,  182,   -1,  134,  134,  134,  182,  182,  182,  182,
+          182,  182,  182,  182,  182,  182,   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,  118,
+           -1,   20,   -1,   16,   16,   16,   16,   -1,   -1,   -1,
+           17,   -1,  118,   -1,   20,   20,   20,   16,   -1,   -1,
+          118,  118,   -1,   -1,   -1,  118,  118,  118,  118,   59,
+           59,   59,   59,   -1,   -1,   -1,   -1,   -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,   16,   16,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
            -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-           -1,   -1,   -1,   -1,  107,  107
+           -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+           -1,   -1,   -1,   -1,   -1,   -1,  107,  107
     );
 
     protected array $gotoBase = array(
-            0,    0, -234,    0,    0,  291,  199,  451,  232,    8,
-            0,    0,  191,  -25,  -76, -183,  108,  -48,   96,   88,
-          109,    0,   36,  159,  328,  182,   10,   13,   94,   91,
-            0,    0,    0,    0,    0, -162,    0,   78,    0,  101,
-            0,    9,   -1,  202,    0,  213, -322,    0, -708,  151,
-          556,    0,    0,    0,    0,    0,  -15,    0,    0,  197,
-            0,    0,  276,    0,   90,  156,  -70,    0,    0,    0,
-            0,    0,    0,   -5,    0,    0,  -34,    0,    0, -119,
-          112, -160,   40,  -67, -246,   69, -364,    0,    0,  102,
-            0,    0,   97,   98,    0,    0,   33, -483,    0,   42,
-            0,    0,    0,  254,  282,    0,    0,  407,  -54,    0,
-           77,    0,    0,   86,  -29,   79,    0,   84,  314,  104,
-          111,   80,    0,    0,    0,    0,    0,    0,    7,    0,
-           82,  163,    0,   23,    0,    0,    0,    0,    0,    0,
-            0,    0,    0,    0,    0,   30,    0,    0,   29,    0,
-            0,    0,    0,    0,  -27,  106, -263,   12,    0,    0,
-         -171,    0,  264,    0,    0,    0,   75,    0,    0,    0,
-            0,    0,    0,    0,  -46,  137,  128,  164,  220,  248,
-            0,    0,   38,    0,   99,  234,    0,  242,  -78,    0,
-            0
+            0,    0, -339,    0,    0,  174,   -7,  339,  171,   10,
+            0,    0,  -69,  -36,  -78, -186,  130,   81,  114,   66,
+          117,    0,   62,  160,  240,  468,  178,  225,  118,  112,
+            0,   45,    0,    0,    0, -195,    0,  119,    0,  122,
+            0,   44,   -1,  226,    0,  227, -387,    0, -715,  182,
+          241,    0,    0,    0,    0,    0,  256,    0,    0,  570,
+            0,    0,  269,    0,  102,    3,  -63,    0,    0,    0,
+            0,    0,    0,   -5,    0,    0,  -31,    0,    0, -120,
+          110,   53,   54,  120, -286,  -33, -724,    0,    0,   40,
+            0,    0,  124,  129,    0,    0,   61, -488,    0,   67,
+            0,    0,    0,  294,  295,    0,    0,  453,  141,    0,
+          100,    0,    0,   83,   -3,   82,    0,   86,  318,   38,
+           78,  107,    0,    0,    0,    0,    0,   16,    0,    0,
+          168,   20,    0,  108,  163,    0,   58,    0,    0,    0,
+            0,    0,    0,    0,    0,    0,    0,    0,    4,    0,
+            0,   43,    0,    0,    0,    0,    0,  193,  101,  -38,
+           46,    0,    0, -166,    0,  195,    0,    0,    0,   92,
+            0,    0,    0,    0,    0,    0,    0,  -60,   42,  157,
+          251,  243,  297,    0,    0,  -97,    0,    1,  263,    0,
+          276, -101,    0,    0
     );
 
     protected array $gotoDefault = array(
-        -32768,  516,  743,    4,  744,  938,  819,  828,  580,  534,
-          710,  349,  629,  424, 1327,  914, 1142,  599,  847, 1269,
-         1275,  459,  850,  333,  733,  926,  897,  898,  401,  388,
-          863,  399,  653,  630,  497,  882,  455,  874,  489,  877,
-          454,  886,  163,  420,  514,  890,    3,  893,  562,  924,
-          977,  389,  901,  390,  681,  903,  583,  905,  906,  396,
-          402,  403, 1147,  591,  626,  918,  255,  585,  919,  387,
-          920,  928,  392,  394,  691,  469,  508,  502,  413, 1109,
-          586,  613,  650,  448,  476,  624,  636,  623,  483,  436,
-          418,  332,  961,  969,  490,  467,  983,  351,  991,  741,
-         1155,  644,  492,  999,  645, 1006, 1009,  535,  536,  481,
-         1021,  266, 1024,  493, 1033,   23,  671, 1038, 1039,  672,
-          646, 1061,  647,  673,  648, 1063,  466,  581, 1071,  456,
-         1079, 1315,  457, 1083,  264, 1086,  277,  419,  437, 1092,
-         1093,    9, 1099,  701,  702,   19,  274,  513, 1127,  692,
-        -32768,-32768,-32768,-32768,  453, 1154,  452, 1224, 1226,  563,
-          494, 1244,  294, 1247,  684,  509, 1252,  449, 1318,  450,
-          537,  477,  316,  538, 1362,  308,  336,  313,  554,  295,
-          337,  539,  478, 1324, 1332,  334,   31, 1352, 1363,  596,
-          618
+        -32768,  526,  755,    7,  756,  951,  831,  840,  590,  544,
+          722,  356,  641,  432, 1352,  927, 1165,  610,  859, 1294,
+         1300,  468,  862,  340,  745,  939,  910,  911,  408,  395,
+          875,  406,  665,  642,  507,  895,  464,  887,  499,  890,
+          463,  899,  167,  428,  524,  903,    6,  906,  572,  937,
+          991,  396,  914,  397,  693,  916,  594,  918,  919,  403,
+          409,  410, 1170,  602,  638,  931,  261,  596,  932,  394,
+          933,  941,  399,  401,  703,  479,  518,  512,  421, 1132,
+          597,  625,  662,  457,  486,  636,  648,  635,  493,  444,
+          426,  339,  975,  983,  500,  477,  997,  358, 1005,  753,
+         1178,  656,  502, 1013,  657, 1020, 1023,  545,  546,  491,
+         1035,  271, 1038,  503, 1048,   26,  683, 1053, 1054,  684,
+          658, 1076,  659,  685,  660, 1078,  476,  592, 1179,  475,
+         1093, 1099,  465, 1102, 1340,  466, 1106,  270, 1109,  284,
+          427,  445, 1115, 1116,   12, 1122,  713,  714,   25,  280,
+          523, 1150,  704,-32768,-32768,-32768,-32768,  462, 1177,  461,
+         1249, 1251,  573,  504, 1269,  301, 1272,  696,  519, 1277,
+          458, 1343,  459,  547,  487,  325,  548, 1387,  315,  343,
+          322,  564,  302,  344,  549,  488, 1349, 1357,  341,   34,
+         1377, 1388,  607,  630
     );
 
     protected array $ruleToNonTerminal = array(
@@ -1051,35 +1125,36 @@ class Php7 extends \PhpParser\ParserAbst
            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,   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,
+            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,   25,   25,   50,   69,   69,   72,   72,   71,
-           70,   70,   63,   75,   75,   76,   76,   77,   77,   78,
-           78,   79,   79,   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,
-          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,   20,  127,  126,
-          126,  128,  128,  128,  128,   60,  129,  129,  130,   61,
-          132,  132,  133,  133,  134,  134,   86,  135,  135,  135,
-          135,  135,  135,  135,  140,  140,  141,  141,  142,  142,
-          142,  142,  142,  143,  144,  144,  139,  139,  136,  136,
-          138,  138,  146,  146,  145,  145,  145,  145,  145,  145,
-          145,  145,  145,  145,  137,  147,  147,  149,  148,  148,
-          150,  150,  114,  151,  151,  153,  153,  153,  152,  152,
-           62,  104,  154,  154,   56,   56,   42,   42,   42,   42,
+           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,
+           20,  128,  128,  128,  128,  129,  129,  129,  127,  126,
+          126,  131,  131,  131,  130,  130,   60,  132,  132,  133,
+           61,  135,  135,  136,  136,  137,  137,   86,  138,  138,
+          138,  138,  138,  138,  138,  143,  143,  144,  144,  145,
+          145,  145,  145,  145,  146,  147,  147,  142,  142,  139,
+          139,  141,  141,  149,  149,  148,  148,  148,  148,  148,
+          148,  148,  148,  148,  148,  140,  150,  150,  152,  151,
+          151,  153,  153,  114,  154,  154,  156,  156,  156,  155,
+          155,   62,  104,  157,  157,   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,
@@ -1089,20 +1164,20 @@ class Php7 extends \PhpParser\ParserAbst
            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,
-          161,  162,  162,  163,  155,  155,  160,  160,  164,  165,
-          165,  166,  167,  168,  168,  168,  168,   19,   19,   73,
-           73,   73,   73,  156,  156,  156,  156,  170,  170,  159,
-          159,  159,  157,  157,  176,  176,  176,  176,  176,  176,
-          176,  176,  176,  176,  177,  177,  177,  108,  179,  179,
-          179,  179,  158,  158,  158,  158,  158,  158,  158,  158,
-           59,   59,  173,  173,  173,  173,  173,  180,  180,  169,
-          169,  169,  169,  181,  181,  181,  181,  181,  181,   74,
-           74,   66,   66,   66,   66,  131,  131,  131,  131,  184,
-          183,  172,  172,  172,  172,  172,  172,  172,  171,  171,
-          171,  182,  182,  182,  182,  107,  178,  186,  186,  185,
-          185,  187,  187,  187,  187,  187,  187,  187,  187,  175,
-          175,  175,  175,  174,  189,  188,  188,  188,  188,  188,
-          188,  188,  188,  190,  190,  190,  190
+           42,   42,   42,  164,  165,  165,  166,  158,  158,  163,
+          163,  167,  168,  168,  169,  170,  171,  171,  171,  171,
+           19,   19,   73,   73,   73,   73,  159,  159,  159,  159,
+          173,  173,  162,  162,  162,  160,  160,  179,  179,  179,
+          179,  179,  179,  179,  179,  179,  179,  180,  180,  180,
+          108,  182,  182,  182,  182,  161,  161,  161,  161,  161,
+          161,  161,  161,   59,   59,  176,  176,  176,  176,  176,
+          183,  183,  172,  172,  172,  172,  184,  184,  184,  184,
+          184,  184,   74,   74,   66,   66,   66,   66,  134,  134,
+          134,  134,  187,  186,  175,  175,  175,  175,  175,  175,
+          175,  174,  174,  174,  185,  185,  185,  185,  107,  181,
+          189,  189,  188,  188,  190,  190,  190,  190,  190,  190,
+          190,  190,  178,  178,  178,  178,  177,  192,  191,  191,
+          191,  191,  191,  191,  191,  191,  193,  193,  193,  193
     );
 
     protected array $ruleToLength = array(
@@ -1118,58 +1193,59 @@ class Php7 extends \PhpParser\ParserAbst
             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,    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,    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,
-            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,    3,    1,    1,
-            3,    1,    2,    2,    3,    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,    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,
+            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,
+            3,    2,    4,    4,    3,    3,    1,    3,    1,    1,
+            3,    2,    2,    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,    5,    4,    3,    4,    4,
-            2,    2,    4,    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
+            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 {
@@ -1372,270 +1448,271 @@ class Php7 extends \PhpParser\ParserAbst
             },
             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]));
+                 $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 = Stmt\Use_::TYPE_FUNCTION;
+                 $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_CONSTANT;
+                 $self->semValue = Stmt\Use_::TYPE_FUNCTION;
             },
             125 => 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]));
+                 $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]));
             },
-            127 => null,
-            128 => static function ($self, $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)];
             },
-            129 => static function ($self, $stackPos) {
+            130 => static function ($self, $stackPos) {
                  $self->semValue = array($self->semStack[$stackPos-(1-1)]);
             },
-            130 => null,
-            131 => static function ($self, $stackPos) {
+            131 => null,
+            132 => static function ($self, $stackPos) {
                  $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
             },
-            132 => static function ($self, $stackPos) {
+            133 => static function ($self, $stackPos) {
                  $self->semValue = array($self->semStack[$stackPos-(1-1)]);
             },
-            133 => null,
-            134 => static function ($self, $stackPos) {
+            134 => null,
+            135 => static function ($self, $stackPos) {
                  $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
             },
-            135 => static function ($self, $stackPos) {
+            136 => static function ($self, $stackPos) {
                  $self->semValue = array($self->semStack[$stackPos-(1-1)]);
             },
-            136 => static function ($self, $stackPos) {
+            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));
             },
-            137 => static function ($self, $stackPos) {
+            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));
             },
-            138 => static function ($self, $stackPos) {
+            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));
             },
-            139 => static function ($self, $stackPos) {
+            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));
             },
-            140 => static function ($self, $stackPos) {
+            141 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(1-1)]; $self->semValue->type = Stmt\Use_::TYPE_NORMAL;
             },
-            141 => static function ($self, $stackPos) {
+            142 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(2-2)]; $self->semValue->type = $self->semStack[$stackPos-(2-1)];
             },
-            142 => null,
-            143 => static function ($self, $stackPos) {
+            143 => null,
+            144 => static function ($self, $stackPos) {
                  $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
             },
-            144 => static function ($self, $stackPos) {
+            145 => static function ($self, $stackPos) {
                  $self->semValue = array($self->semStack[$stackPos-(1-1)]);
             },
-            145 => static function ($self, $stackPos) {
+            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]));
             },
-            146 => null,
-            147 => static function ($self, $stackPos) {
-                 $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
-            },
+            147 => null,
             148 => static function ($self, $stackPos) {
-                 $self->semValue = array($self->semStack[$stackPos-(1-1)]);
+                 $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
             },
             149 => 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]));
+                 $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) {
-                 if ($self->semStack[$stackPos-(2-2)] !== null) { $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; } $self->semValue = $self->semStack[$stackPos-(2-1)];;
+                 $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) {
-                 $self->semValue = array();
+                 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)];
             },
-            154 => null,
             155 => null,
             156 => null,
-            157 => static function ($self, $stackPos) {
+            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]));
             },
-            158 => static function ($self, $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]));
             },
-            159 => static function ($self, $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]));
             },
-            160 => static function ($self, $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]));
             },
-            161 => static function ($self, $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]));
             },
-            162 => static function ($self, $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]));
             },
-            163 => static function ($self, $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]));
             },
-            164 => static function ($self, $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]));
             },
-            165 => static function ($self, $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]));
             },
-            166 => static function ($self, $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]));
             },
-            167 => static function ($self, $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]));
             },
-            168 => static function ($self, $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]));
             },
-            169 => static function ($self, $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]));
             },
-            170 => static function ($self, $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]));
             },
-            171 => static function ($self, $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)));
 
             },
-            172 => static function ($self, $stackPos) {
+            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]));
             },
-            173 => static function ($self, $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]));
             },
-            174 => static function ($self, $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]));
             },
-            175 => static function ($self, $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]));
             },
-            176 => static function ($self, $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]));
             },
-            177 => static function ($self, $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]));
             },
-            178 => static function ($self, $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);
             },
-            179 => static function ($self, $stackPos) {
+            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]));
             },
-            180 => static function ($self, $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]));
             },
-            181 => static function ($self, $stackPos) {
+            182 => static function ($self, $stackPos) {
                  $self->semValue = null; /* means: no statement */
             },
-            182 => null,
-            183 => static function ($self, $stackPos) {
+            183 => null,
+            184 => static function ($self, $stackPos) {
                  $self->semValue = $self->maybeCreateNop($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]);
             },
-            184 => static function ($self, $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)]]; };
             },
-            185 => static function ($self, $stackPos) {
+            186 => static function ($self, $stackPos) {
                  $self->semValue = array();
             },
-            186 => static function ($self, $stackPos) {
+            187 => static function ($self, $stackPos) {
                  $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)];
             },
-            187 => static function ($self, $stackPos) {
+            188 => static function ($self, $stackPos) {
                  $self->semValue = array($self->semStack[$stackPos-(1-1)]);
             },
-            188 => static function ($self, $stackPos) {
+            189 => static function ($self, $stackPos) {
                  $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
             },
-            189 => static function ($self, $stackPos) {
+            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]));
             },
-            190 => static function ($self, $stackPos) {
+            191 => static function ($self, $stackPos) {
                  $self->semValue = null;
             },
-            191 => static function ($self, $stackPos) {
+            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]));
             },
-            192 => null,
-            193 => static function ($self, $stackPos) {
+            193 => null,
+            194 => static function ($self, $stackPos) {
                  $self->semValue = array($self->semStack[$stackPos-(1-1)]);
             },
-            194 => static function ($self, $stackPos) {
+            195 => static function ($self, $stackPos) {
                  $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
             },
-            195 => static function ($self, $stackPos) {
+            196 => static function ($self, $stackPos) {
                  $self->semValue = false;
             },
-            196 => static function ($self, $stackPos) {
+            197 => static function ($self, $stackPos) {
                  $self->semValue = true;
             },
-            197 => static function ($self, $stackPos) {
+            198 => static function ($self, $stackPos) {
                  $self->semValue = false;
             },
-            198 => static function ($self, $stackPos) {
+            199 => static function ($self, $stackPos) {
                  $self->semValue = true;
             },
-            199 => static function ($self, $stackPos) {
+            200 => static function ($self, $stackPos) {
                  $self->semValue = false;
             },
-            200 => static function ($self, $stackPos) {
+            201 => static function ($self, $stackPos) {
                  $self->semValue = true;
             },
-            201 => static function ($self, $stackPos) {
+            202 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(3-2)];
             },
-            202 => static function ($self, $stackPos) {
+            203 => static function ($self, $stackPos) {
                  $self->semValue = [];
             },
-            203 => null,
-            204 => static function ($self, $stackPos) {
-                 $self->semValue = new Node\Identifier($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
-            },
+            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 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]));
+                 $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 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]));
+                 $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));
             },
-            209 => static function ($self, $stackPos) {
+            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));
             },
-            210 => static function ($self, $stackPos) {
+            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));
             },
-            211 => static function ($self, $stackPos) {
+            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]));
             },
-            212 => static function ($self, $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));
             },
-            213 => static function ($self, $stackPos) {
-                 $self->semValue = null;
-            },
-            214 => static function ($self, $stackPos) {
-                 $self->semValue = $self->semStack[$stackPos-(2-2)];
-            },
             215 => static function ($self, $stackPos) {
                  $self->semValue = null;
             },
@@ -1643,30 +1720,30 @@ class Php7 extends \PhpParser\ParserAbst
                  $self->semValue = $self->semStack[$stackPos-(2-2)];
             },
             217 => static function ($self, $stackPos) {
-                 $self->semValue = 0;
+                 $self->semValue = null;
             },
-            218 => null,
-            219 => null,
-            220 => 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)];
+            218 => static function ($self, $stackPos) {
+                 $self->semValue = $self->semStack[$stackPos-(2-2)];
             },
-            221 => static function ($self, $stackPos) {
-                 $self->semValue = Modifiers::ABSTRACT;
+            219 => static function ($self, $stackPos) {
+                 $self->semValue = 0;
             },
+            220 => null,
+            221 => null,
             222 => static function ($self, $stackPos) {
-                 $self->semValue = Modifiers::FINAL;
+                 $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::READONLY;
+                 $self->semValue = Modifiers::ABSTRACT;
             },
             224 => static function ($self, $stackPos) {
-                 $self->semValue = null;
+                 $self->semValue = Modifiers::FINAL;
             },
             225 => static function ($self, $stackPos) {
-                 $self->semValue = $self->semStack[$stackPos-(2-2)];
+                 $self->semValue = Modifiers::READONLY;
             },
             226 => static function ($self, $stackPos) {
-                 $self->semValue = array();
+                 $self->semValue = null;
             },
             227 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(2-2)];
@@ -1677,232 +1754,232 @@ class Php7 extends \PhpParser\ParserAbst
             229 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(2-2)];
             },
-            230 => null,
+            230 => static function ($self, $stackPos) {
+                 $self->semValue = array();
+            },
             231 => static function ($self, $stackPos) {
-                 $self->semValue = array($self->semStack[$stackPos-(1-1)]);
+                 $self->semValue = $self->semStack[$stackPos-(2-2)];
             },
-            232 => static function ($self, $stackPos) {
-                 $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
+            232 => null,
+            233 => static function ($self, $stackPos) {
+                 $self->semValue = array($self->semStack[$stackPos-(1-1)]);
             },
-            233 => null,
             234 => static function ($self, $stackPos) {
-                 $self->semValue = $self->semStack[$stackPos-(4-2)];
+                 $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 => static function ($self, $stackPos) {
+            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)]]; };
             },
-            238 => static function ($self, $stackPos) {
+            240 => static function ($self, $stackPos) {
                  $self->semValue = null;
             },
-            239 => static function ($self, $stackPos) {
+            241 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(4-2)];
             },
-            240 => null,
-            241 => static function ($self, $stackPos) {
+            242 => null,
+            243 => static function ($self, $stackPos) {
                  $self->semValue = array($self->semStack[$stackPos-(1-1)]);
             },
-            242 => static function ($self, $stackPos) {
+            244 => static function ($self, $stackPos) {
                  $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
             },
-            243 => static function ($self, $stackPos) {
+            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]));
             },
-            244 => static function ($self, $stackPos) {
+            246 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(3-2)];
             },
-            245 => static function ($self, $stackPos) {
+            247 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(4-3)];
             },
-            246 => static function ($self, $stackPos) {
+            248 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(4-2)];
             },
-            247 => static function ($self, $stackPos) {
+            249 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(5-3)];
             },
-            248 => static function ($self, $stackPos) {
+            250 => static function ($self, $stackPos) {
                  $self->semValue = array();
             },
-            249 => static function ($self, $stackPos) {
+            251 => static function ($self, $stackPos) {
                  $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)];
             },
-            250 => static function ($self, $stackPos) {
+            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]));
             },
-            251 => static function ($self, $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]));
             },
-            252 => null,
-            253 => null,
-            254 => static function ($self, $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]));
             },
-            255 => static function ($self, $stackPos) {
+            257 => static function ($self, $stackPos) {
                  $self->semValue = [];
             },
-            256 => null,
-            257 => static function ($self, $stackPos) {
+            258 => null,
+            259 => static function ($self, $stackPos) {
                  $self->semValue = array($self->semStack[$stackPos-(1-1)]);
             },
-            258 => static function ($self, $stackPos) {
+            260 => static function ($self, $stackPos) {
                  $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
             },
-            259 => static function ($self, $stackPos) {
+            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]));
             },
-            260 => static function ($self, $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]));
             },
-            261 => static function ($self, $stackPos) {
+            263 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(1-1)];
             },
-            262 => static function ($self, $stackPos) {
+            264 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(4-2)];
             },
-            263 => static function ($self, $stackPos) {
+            265 => static function ($self, $stackPos) {
                  $self->semValue = array();
             },
-            264 => static function ($self, $stackPos) {
+            266 => static function ($self, $stackPos) {
                  $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)];
             },
-            265 => static function ($self, $stackPos) {
+            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]));
             },
-            266 => static function ($self, $stackPos) {
+            268 => static function ($self, $stackPos) {
                  $self->semValue = array();
             },
-            267 => static function ($self, $stackPos) {
+            269 => static function ($self, $stackPos) {
                  $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)];
             },
-            268 => static function ($self, $stackPos) {
+            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);
             },
-            269 => static function ($self, $stackPos) {
+            271 => static function ($self, $stackPos) {
                  $self->semValue = null;
             },
-            270 => static function ($self, $stackPos) {
+            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]));
             },
-            271 => static function ($self, $stackPos) {
+            273 => static function ($self, $stackPos) {
                  $self->semValue = null;
             },
-            272 => static function ($self, $stackPos) {
+            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);
             },
-            273 => static function ($self, $stackPos) {
+            275 => static function ($self, $stackPos) {
                  $self->semValue = array($self->semStack[$stackPos-(1-1)], false);
             },
-            274 => static function ($self, $stackPos) {
+            276 => static function ($self, $stackPos) {
                  $self->semValue = array($self->semStack[$stackPos-(2-2)], true);
             },
-            275 => static function ($self, $stackPos) {
+            277 => static function ($self, $stackPos) {
                  $self->semValue = array($self->semStack[$stackPos-(1-1)], false);
             },
-            276 => static function ($self, $stackPos) {
+            278 => static function ($self, $stackPos) {
                  $self->semValue = array($self->fixupArrayDestructuring($self->semStack[$stackPos-(1-1)]), false);
             },
-            277 => null,
-            278 => static function ($self, $stackPos) {
+            279 => null,
+            280 => static function ($self, $stackPos) {
                  $self->semValue = array();
             },
-            279 => static function ($self, $stackPos) {
+            281 => static function ($self, $stackPos) {
                  $self->semValue = array($self->semStack[$stackPos-(1-1)]);
             },
-            280 => static function ($self, $stackPos) {
+            282 => static function ($self, $stackPos) {
                  $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
             },
-            281 => static function ($self, $stackPos) {
+            283 => static function ($self, $stackPos) {
                  $self->semValue = 0;
             },
-            282 => static function ($self, $stackPos) {
+            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)];
             },
-            283 => static function ($self, $stackPos) {
+            285 => static function ($self, $stackPos) {
                  $self->semValue = Modifiers::PUBLIC;
             },
-            284 => static function ($self, $stackPos) {
+            286 => static function ($self, $stackPos) {
                  $self->semValue = Modifiers::PROTECTED;
             },
-            285 => static function ($self, $stackPos) {
+            287 => static function ($self, $stackPos) {
                  $self->semValue = Modifiers::PRIVATE;
             },
-            286 => static function ($self, $stackPos) {
+            288 => static function ($self, $stackPos) {
                  $self->semValue = Modifiers::PUBLIC_SET;
             },
-            287 => static function ($self, $stackPos) {
+            289 => static function ($self, $stackPos) {
                  $self->semValue = Modifiers::PROTECTED_SET;
             },
-            288 => static function ($self, $stackPos) {
+            290 => static function ($self, $stackPos) {
                  $self->semValue = Modifiers::PRIVATE_SET;
             },
-            289 => static function ($self, $stackPos) {
+            291 => static function ($self, $stackPos) {
                  $self->semValue = Modifiers::READONLY;
             },
-            290 => static function ($self, $stackPos) {
+            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);
             },
-            291 => static function ($self, $stackPos) {
+            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);
             },
-            292 => static function ($self, $stackPos) {
+            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)]);
             },
-            293 => null,
-            294 => static function ($self, $stackPos) {
+            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]));
             },
-            295 => static function ($self, $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]));
             },
-            296 => null,
-            297 => null,
-            298 => static function ($self, $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]));
             },
-            299 => static function ($self, $stackPos) {
+            302 => static function ($self, $stackPos) {
                  $self->semValue = $self->handleBuiltinTypes($self->semStack[$stackPos-(1-1)]);
             },
-            300 => static function ($self, $stackPos) {
+            303 => static function ($self, $stackPos) {
                  $self->semValue = new Node\Identifier('array', $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
             },
-            301 => static function ($self, $stackPos) {
+            304 => static function ($self, $stackPos) {
                  $self->semValue = new Node\Identifier('callable', $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
             },
-            302 => null,
-            303 => static function ($self, $stackPos) {
+            305 => null,
+            306 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(3-2)];
             },
-            304 => static function ($self, $stackPos) {
-                 $self->semValue = array($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)]);
-            },
-            305 => static function ($self, $stackPos) {
-                 $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
-            },
-            306 => null,
             307 => static function ($self, $stackPos) {
-                 $self->semValue = $self->semStack[$stackPos-(3-2)];
-            },
-            308 => static function ($self, $stackPos) {
                  $self->semValue = array($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)]);
             },
-            309 => static function ($self, $stackPos) {
+            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 = array($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)]);
+                 $self->semValue = $self->semStack[$stackPos-(3-2)];
             },
             311 => static function ($self, $stackPos) {
-                 $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
+                 $self->semValue = array($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)]);
             },
             312 => static function ($self, $stackPos) {
-                 $self->semValue = new Node\IntersectionType($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$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)]);
@@ -1913,880 +1990,925 @@ class Php7 extends \PhpParser\ParserAbst
             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 => null,
+            316 => static function ($self, $stackPos) {
+                 $self->semValue = array($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)]);
+            },
             317 => static function ($self, $stackPos) {
-                 $self->semValue = new Node\NullableType($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$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\UnionType($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$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 = null;
+                 $self->semValue = new Node\NullableType($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
             },
-            321 => null,
-            322 => static function ($self, $stackPos) {
-                 $self->semValue = null;
+            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 = $self->semStack[$stackPos-(2-2)];
-            },
-            324 => static function ($self, $stackPos) {
                  $self->semValue = null;
             },
+            324 => null,
             325 => static function ($self, $stackPos) {
-                 $self->semValue = array();
+                 $self->semValue = null;
             },
             326 => static function ($self, $stackPos) {
-                 $self->semValue = $self->semStack[$stackPos-(4-2)];
+                 $self->semValue = $self->semStack[$stackPos-(2-2)];
             },
             327 => static function ($self, $stackPos) {
-                 $self->semValue = array($self->semStack[$stackPos-(3-2)]);
+                 $self->semValue = null;
             },
             328 => static function ($self, $stackPos) {
-                 $self->semValue = new Node\VariadicPlaceholder($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
+                 $self->semValue = array();
             },
             329 => static function ($self, $stackPos) {
-                 $self->semValue = array($self->semStack[$stackPos-(1-1)]);
+                 $self->semValue = $self->semStack[$stackPos-(4-2)];
             },
             330 => static function ($self, $stackPos) {
-                 $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
+                 $self->semValue = array($self->semStack[$stackPos-(3-2)]);
             },
             331 => 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]));
+                 $self->semValue = array();
             },
             332 => 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]));
+                 $self->semValue = $self->semStack[$stackPos-(4-2)];
             },
             333 => 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]));
+                 $self->semValue = array(new Node\Arg($self->semStack[$stackPos-(4-2)], false, false, $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])));
             },
             334 => 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)]);
+                 $self->semValue = array($self->semStack[$stackPos-(3-2)]);
+            },
+            335 => 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)]);
             },
-            335 => null,
             336 => static function ($self, $stackPos) {
-                 $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
+                 $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\VariadicPlaceholder($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
+            },
+            339 => static function ($self, $stackPos) {
                  $self->semValue = array($self->semStack[$stackPos-(1-1)]);
             },
-            338 => null,
-            339 => null,
             340 => static function ($self, $stackPos) {
                  $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
             },
             341 => static function ($self, $stackPos) {
-                 $self->semValue = array($self->semStack[$stackPos-(1-1)]);
+                 $self->semValue = new Node\Arg($self->semStack[$stackPos-(2-2)], true, false, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
             },
             342 => 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]));
+                 $self->semValue = new Node\Arg($self->semStack[$stackPos-(2-2)], false, true, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
             },
             343 => 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]));
+                 $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)]);
             },
             344 => 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)]; }
+                 $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();
             },
-            346 => static function ($self, $stackPos) {
+            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)];
             },
-            347 => static function ($self, $stackPos) {
+            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)]);
             },
-            348 => static function ($self, $stackPos) {
+            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));
             },
-            349 => static function ($self, $stackPos) {
+            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));
             },
-            350 => static function ($self, $stackPos) {
+            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));
             },
-            351 => static function ($self, $stackPos) {
+            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]));
             },
-            352 => static function ($self, $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]));
             },
-            353 => static function ($self, $stackPos) {
+            364 => static function ($self, $stackPos) {
                  $self->semValue = null; /* will be skipped */
             },
-            354 => static function ($self, $stackPos) {
+            365 => static function ($self, $stackPos) {
                  $self->semValue = array();
             },
-            355 => static function ($self, $stackPos) {
+            366 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(3-2)];
             },
-            356 => static function ($self, $stackPos) {
+            367 => static function ($self, $stackPos) {
                  $self->semValue = array();
             },
-            357 => static function ($self, $stackPos) {
+            368 => static function ($self, $stackPos) {
                  $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)];
             },
-            358 => static function ($self, $stackPos) {
+            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]));
             },
-            359 => static function ($self, $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]));
             },
-            360 => static function ($self, $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]));
             },
-            361 => static function ($self, $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]));
             },
-            362 => static function ($self, $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]));
             },
-            363 => static function ($self, $stackPos) {
+            374 => static function ($self, $stackPos) {
                  $self->semValue = array($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)]);
             },
-            364 => null,
-            365 => static function ($self, $stackPos) {
+            375 => null,
+            376 => static function ($self, $stackPos) {
                  $self->semValue = array(null, $self->semStack[$stackPos-(1-1)]);
             },
-            366 => static function ($self, $stackPos) {
+            377 => static function ($self, $stackPos) {
                  $self->semValue = null;
             },
-            367 => null,
-            368 => null,
-            369 => static function ($self, $stackPos) {
+            378 => null,
+            379 => null,
+            380 => static function ($self, $stackPos) {
                  $self->semValue = 0;
             },
-            370 => static function ($self, $stackPos) {
+            381 => static function ($self, $stackPos) {
                  $self->semValue = 0;
             },
-            371 => null,
-            372 => null,
-            373 => static function ($self, $stackPos) {
+            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)];
             },
-            374 => static function ($self, $stackPos) {
+            385 => static function ($self, $stackPos) {
                  $self->semValue = Modifiers::PUBLIC;
             },
-            375 => static function ($self, $stackPos) {
+            386 => static function ($self, $stackPos) {
                  $self->semValue = Modifiers::PROTECTED;
             },
-            376 => static function ($self, $stackPos) {
+            387 => static function ($self, $stackPos) {
                  $self->semValue = Modifiers::PRIVATE;
             },
-            377 => static function ($self, $stackPos) {
+            388 => static function ($self, $stackPos) {
                  $self->semValue = Modifiers::PUBLIC_SET;
             },
-            378 => static function ($self, $stackPos) {
+            389 => static function ($self, $stackPos) {
                  $self->semValue = Modifiers::PROTECTED_SET;
             },
-            379 => static function ($self, $stackPos) {
+            390 => static function ($self, $stackPos) {
                  $self->semValue = Modifiers::PRIVATE_SET;
             },
-            380 => static function ($self, $stackPos) {
+            391 => static function ($self, $stackPos) {
                  $self->semValue = Modifiers::STATIC;
             },
-            381 => static function ($self, $stackPos) {
+            392 => static function ($self, $stackPos) {
                  $self->semValue = Modifiers::ABSTRACT;
             },
-            382 => static function ($self, $stackPos) {
+            393 => static function ($self, $stackPos) {
                  $self->semValue = Modifiers::FINAL;
             },
-            383 => static function ($self, $stackPos) {
+            394 => static function ($self, $stackPos) {
                  $self->semValue = Modifiers::READONLY;
             },
-            384 => null,
-            385 => static function ($self, $stackPos) {
+            395 => null,
+            396 => static function ($self, $stackPos) {
                  $self->semValue = array($self->semStack[$stackPos-(1-1)]);
             },
-            386 => static function ($self, $stackPos) {
+            397 => static function ($self, $stackPos) {
                  $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
             },
-            387 => static function ($self, $stackPos) {
+            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]));
             },
-            388 => static function ($self, $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]));
             },
-            389 => static function ($self, $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]));
             },
-            390 => static function ($self, $stackPos) {
+            401 => static function ($self, $stackPos) {
                  $self->semValue = [];
             },
-            391 => static function ($self, $stackPos) {
+            402 => static function ($self, $stackPos) {
                  $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)];
             },
-            392 => static function ($self, $stackPos) {
+            403 => static function ($self, $stackPos) {
                  $self->semValue = [];
             },
-            393 => static function ($self, $stackPos) {
+            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);
             },
-            394 => static function ($self, $stackPos) {
+            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));
             },
-            395 => static function ($self, $stackPos) {
+            406 => static function ($self, $stackPos) {
                  $self->semValue = null;
             },
-            396 => static function ($self, $stackPos) {
+            407 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(3-2)];
             },
-            397 => static function ($self, $stackPos) {
+            408 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(3-2)];
             },
-            398 => static function ($self, $stackPos) {
+            409 => static function ($self, $stackPos) {
                  $self->semValue = 0;
             },
-            399 => static function ($self, $stackPos) {
+            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)];
             },
-            400 => null,
-            401 => null,
-            402 => static function ($self, $stackPos) {
+            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)];
             },
-            403 => static function ($self, $stackPos) {
+            414 => static function ($self, $stackPos) {
                  $self->semValue = array($self->semStack[$stackPos-(1-1)]);
             },
-            404 => static function ($self, $stackPos) {
+            415 => static function ($self, $stackPos) {
                  $self->semValue = array();
             },
-            405 => null,
-            406 => null,
-            407 => static function ($self, $stackPos) {
+            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]));
             },
-            408 => static function ($self, $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]));
             },
-            409 => static function ($self, $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]));
             },
-            410 => static function ($self, $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]));
             },
-            411 => static function ($self, $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])));
             }
 
             },
-            412 => null,
-            413 => null,
-            414 => static function ($self, $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]));
             },
-            415 => static function ($self, $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]));
             },
-            416 => static function ($self, $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]));
             },
-            417 => static function ($self, $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]));
             },
-            418 => static function ($self, $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]));
             },
-            419 => static function ($self, $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]));
             },
-            420 => static function ($self, $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]));
             },
-            421 => static function ($self, $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]));
             },
-            422 => static function ($self, $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]));
             },
-            423 => static function ($self, $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]));
             },
-            424 => static function ($self, $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]));
             },
-            425 => static function ($self, $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]));
             },
-            426 => static function ($self, $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]));
             },
-            427 => static function ($self, $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]));
             },
-            428 => static function ($self, $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]));
             },
-            429 => static function ($self, $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]));
             },
-            430 => static function ($self, $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]));
             },
-            431 => static function ($self, $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]));
             },
-            432 => static function ($self, $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]));
             },
-            433 => static function ($self, $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]));
             },
-            434 => static function ($self, $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]));
             },
-            435 => static function ($self, $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]));
             },
-            436 => static function ($self, $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]));
             },
-            437 => static function ($self, $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]));
             },
-            438 => static function ($self, $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]));
             },
-            439 => static function ($self, $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]));
             },
-            440 => static function ($self, $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]));
             },
-            441 => static function ($self, $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]));
             },
-            442 => static function ($self, $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]));
             },
-            443 => static function ($self, $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]));
             },
-            444 => static function ($self, $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]));
             },
-            445 => static function ($self, $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]));
             },
-            446 => static function ($self, $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]));
             },
-            447 => static function ($self, $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]));
             },
-            448 => static function ($self, $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]));
             },
-            449 => static function ($self, $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]));
             },
-            450 => static function ($self, $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]));
             },
-            451 => static function ($self, $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]));
             },
-            452 => static function ($self, $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]));
             },
-            453 => static function ($self, $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]));
             },
-            454 => static function ($self, $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]));
             },
-            455 => static function ($self, $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]));
             },
-            456 => static function ($self, $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]));
             },
-            457 => static function ($self, $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]));
             },
-            458 => static function ($self, $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]));
             },
-            459 => static function ($self, $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]));
             },
-            460 => static function ($self, $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]));
             },
-            461 => static function ($self, $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]));
             },
-            462 => static function ($self, $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]));
             },
-            463 => static function ($self, $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]));
             },
-            464 => static function ($self, $stackPos) {
+            476 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(3-2)];
             },
-            465 => static function ($self, $stackPos) {
+            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]));
             },
-            466 => static function ($self, $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]));
             },
-            467 => static function ($self, $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]));
             },
-            468 => static function ($self, $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]));
             },
-            469 => static function ($self, $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]));
             },
-            470 => static function ($self, $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]));
             },
-            471 => static function ($self, $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]));
             },
-            472 => static function ($self, $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]));
             },
-            473 => static function ($self, $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]));
             },
-            474 => static function ($self, $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]));
             },
-            475 => static function ($self, $stackPos) {
-                 $self->semValue = new Expr\Cast\Int_($self->semStack[$stackPos-(2-2)], $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);
             },
-            476 => static function ($self, $stackPos) {
+            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);
             },
-            477 => static function ($self, $stackPos) {
-                 $self->semValue = new Expr\Cast\String_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
+            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);
             },
-            478 => static function ($self, $stackPos) {
+            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]));
             },
-            479 => static function ($self, $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]));
             },
-            480 => static function ($self, $stackPos) {
-                 $self->semValue = new Expr\Cast\Bool_($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);
             },
-            481 => static function ($self, $stackPos) {
+            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]));
             },
-            482 => static function ($self, $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]));
             },
-            483 => static function ($self, $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]));
             },
-            484 => null,
-            485 => static function ($self, $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]));
             },
-            486 => static function ($self, $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]));
             },
-            487 => static function ($self, $stackPos) {
+            500 => static function ($self, $stackPos) {
                  $self->semValue = new Expr\Yield_(null, null, $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
             },
-            488 => static function ($self, $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]));
             },
-            489 => static function ($self, $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]));
             },
-            490 => static function ($self, $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]));
             },
-            491 => static function ($self, $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]));
             },
-            492 => static function ($self, $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]));
             },
-            493 => static function ($self, $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]));
             },
-            494 => static function ($self, $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]));
             },
-            495 => static function ($self, $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]));
             },
-            496 => static function ($self, $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]));
             },
-            497 => static function ($self, $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]));
             },
-            498 => static function ($self, $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]));
             },
-            499 => static function ($self, $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]));
             },
-            500 => static function ($self, $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);
             },
-            501 => static function ($self, $stackPos) {
+            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]));
             },
-            502 => static function ($self, $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]));
             },
-            503 => static function ($self, $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]));
             },
-            504 => null,
-            505 => null,
-            506 => static function ($self, $stackPos) {
+            517 => null,
+            518 => null,
+            519 => static function ($self, $stackPos) {
                  $self->semValue = array();
             },
-            507 => static function ($self, $stackPos) {
+            520 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(4-3)];
             },
-            508 => null,
-            509 => static function ($self, $stackPos) {
+            521 => null,
+            522 => static function ($self, $stackPos) {
                  $self->semValue = array($self->semStack[$stackPos-(1-1)]);
             },
-            510 => static function ($self, $stackPos) {
+            523 => static function ($self, $stackPos) {
                  $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
             },
-            511 => static function ($self, $stackPos) {
+            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]));
             },
-            512 => static function ($self, $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]));
             },
-            513 => static function ($self, $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]));
             },
-            514 => static function ($self, $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]));
             },
-            515 => static function ($self, $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]));
             },
-            516 => static function ($self, $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]));
             },
-            517 => static function ($self, $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]));
             },
-            518 => null,
-            519 => static function ($self, $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]));
             },
-            520 => static function ($self, $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]));
             },
-            521 => static function ($self, $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]));
             },
-            522 => static function ($self, $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]));
             },
-            523 => null,
-            524 => null,
-            525 => static function ($self, $stackPos) {
+            536 => null,
+            537 => null,
+            538 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(3-2)];
             },
-            526 => static function ($self, $stackPos) {
+            539 => static function ($self, $stackPos) {
                  $self->semValue = new Expr\Error($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); $self->errorState = 2;
             },
-            527 => null,
-            528 => null,
-            529 => static function ($self, $stackPos) {
+            540 => null,
+            541 => null,
+            542 => static function ($self, $stackPos) {
                  $self->semValue = array();
             },
-            530 => static function ($self, $stackPos) {
+            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()); } };
             },
-            531 => static function ($self, $stackPos) {
+            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)];
             },
-            532 => static function ($self, $stackPos) {
+            545 => static function ($self, $stackPos) {
                  $self->semValue = array();
             },
-            533 => null,
-            534 => static function ($self, $stackPos) {
+            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]));
             },
-            535 => static function ($self, $stackPos) {
+            548 => static function ($self, $stackPos) {
                  $self->semValue = new Scalar\MagicConst\Line($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
             },
-            536 => static function ($self, $stackPos) {
+            549 => static function ($self, $stackPos) {
                  $self->semValue = new Scalar\MagicConst\File($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
             },
-            537 => static function ($self, $stackPos) {
+            550 => static function ($self, $stackPos) {
                  $self->semValue = new Scalar\MagicConst\Dir($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
             },
-            538 => static function ($self, $stackPos) {
+            551 => static function ($self, $stackPos) {
                  $self->semValue = new Scalar\MagicConst\Class_($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
             },
-            539 => static function ($self, $stackPos) {
+            552 => static function ($self, $stackPos) {
                  $self->semValue = new Scalar\MagicConst\Trait_($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
             },
-            540 => static function ($self, $stackPos) {
+            553 => static function ($self, $stackPos) {
                  $self->semValue = new Scalar\MagicConst\Method($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
             },
-            541 => static function ($self, $stackPos) {
+            554 => static function ($self, $stackPos) {
                  $self->semValue = new Scalar\MagicConst\Function_($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
             },
-            542 => static function ($self, $stackPos) {
+            555 => static function ($self, $stackPos) {
                  $self->semValue = new Scalar\MagicConst\Namespace_($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
             },
-            543 => static function ($self, $stackPos) {
+            556 => static function ($self, $stackPos) {
                  $self->semValue = new Scalar\MagicConst\Property($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
             },
-            544 => static function ($self, $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]));
             },
-            545 => static function ($self, $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]));
             },
-            546 => static function ($self, $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;
             },
-            547 => static function ($self, $stackPos) {
+            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);
             },
-            548 => static function ($self, $stackPos) {
+            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->attach($self->semValue);
+            $self->createdArrays->offsetSet($self->semValue);
             },
-            549 => static function ($self, $stackPos) {
-                 $self->semValue = $self->semStack[$stackPos-(1-1)]; $self->createdArrays->attach($self->semValue);
+            562 => static function ($self, $stackPos) {
+                 $self->semValue = $self->semStack[$stackPos-(1-1)]; $self->createdArrays->offsetSet($self->semValue);
             },
-            550 => static function ($self, $stackPos) {
+            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());
             },
-            551 => static function ($self, $stackPos) {
+            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);
             },
-            552 => static function ($self, $stackPos) {
+            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());
             },
-            553 => static function ($self, $stackPos) {
+            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]));
             },
-            554 => null,
-            555 => null,
-            556 => null,
-            557 => static function ($self, $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);
             },
-            558 => static function ($self, $stackPos) {
+            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);
             },
-            559 => static function ($self, $stackPos) {
+            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);
             },
-            560 => static function ($self, $stackPos) {
+            573 => static function ($self, $stackPos) {
                  $self->semValue = null;
             },
-            561 => null,
-            562 => null,
-            563 => static function ($self, $stackPos) {
+            574 => null,
+            575 => null,
+            576 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(3-2)];
             },
-            564 => null,
-            565 => null,
-            566 => null,
-            567 => null,
-            568 => null,
-            569 => null,
-            570 => static function ($self, $stackPos) {
+            577 => null,
+            578 => null,
+            579 => null,
+            580 => null,
+            581 => null,
+            582 => null,
+            583 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(3-2)];
             },
-            571 => null,
-            572 => null,
-            573 => null,
-            574 => static function ($self, $stackPos) {
+            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]));
             },
-            575 => static function ($self, $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]));
             },
-            576 => null,
-            577 => static function ($self, $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]));
             },
-            578 => static function ($self, $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]));
             },
-            579 => static function ($self, $stackPos) {
+            592 => static function ($self, $stackPos) {
                  $self->semValue = null;
             },
-            580 => null,
-            581 => null,
-            582 => null,
-            583 => static function ($self, $stackPos) {
+            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]));
             },
-            584 => static function ($self, $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]));
             },
-            585 => null,
-            586 => static function ($self, $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]));
             },
-            587 => static function ($self, $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]));
             },
-            588 => static function ($self, $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;
             },
-            589 => static function ($self, $stackPos) {
+            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;
             },
-            590 => static function ($self, $stackPos) {
+            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]));
             },
-            591 => null,
-            592 => static function ($self, $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]));
             },
-            593 => static function ($self, $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]));
             },
-            594 => static function ($self, $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]));
             },
-            595 => static function ($self, $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]));
             },
-            596 => static function ($self, $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]));
             },
-            597 => static function ($self, $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]));
             },
-            598 => null,
-            599 => static function ($self, $stackPos) {
+            611 => null,
+            612 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(3-2)];
             },
-            600 => null,
-            601 => null,
-            602 => static function ($self, $stackPos) {
+            613 => null,
+            614 => null,
+            615 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(3-2)];
             },
-            603 => null,
-            604 => static function ($self, $stackPos) {
+            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;
             },
-            605 => static function ($self, $stackPos) {
+            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);
             },
-            606 => static function ($self, $stackPos) {
+            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);
             },
-            607 => null,
-            608 => static function ($self, $stackPos) {
+            620 => null,
+            621 => static function ($self, $stackPos) {
                  /* do nothing -- prevent default action of $$=$self->semStack[$1]. See $551. */
             },
-            609 => static function ($self, $stackPos) {
+            622 => static function ($self, $stackPos) {
                  $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
             },
-            610 => static function ($self, $stackPos) {
+            623 => static function ($self, $stackPos) {
                  $self->semValue = array($self->semStack[$stackPos-(1-1)]);
             },
-            611 => static function ($self, $stackPos) {
+            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]));
             },
-            612 => static function ($self, $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]));
             },
-            613 => static function ($self, $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]));
             },
-            614 => static function ($self, $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]));
             },
-            615 => static function ($self, $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]));
             },
-            616 => static function ($self, $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]));
             },
-            617 => static function ($self, $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);
             },
-            618 => static function ($self, $stackPos) {
+            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);
             },
-            619 => static function ($self, $stackPos) {
+            632 => static function ($self, $stackPos) {
                  $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)];
             },
-            620 => static function ($self, $stackPos) {
+            633 => static function ($self, $stackPos) {
                  $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)];
             },
-            621 => static function ($self, $stackPos) {
+            634 => static function ($self, $stackPos) {
                  $self->semValue = array($self->semStack[$stackPos-(1-1)]);
             },
-            622 => static function ($self, $stackPos) {
+            635 => static function ($self, $stackPos) {
                  $self->semValue = array($self->semStack[$stackPos-(2-1)], $self->semStack[$stackPos-(2-2)]);
             },
-            623 => static function ($self, $stackPos) {
+            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);
             },
-            624 => static function ($self, $stackPos) {
+            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]));
             },
-            625 => null,
-            626 => static function ($self, $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]));
             },
-            627 => static function ($self, $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]));
             },
-            628 => static function ($self, $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]));
             },
-            629 => static function ($self, $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]));
             },
-            630 => static function ($self, $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]));
             },
-            631 => static function ($self, $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]));
             },
-            632 => static function ($self, $stackPos) {
+            645 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(3-2)];
             },
-            633 => static function ($self, $stackPos) {
+            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]));
             },
-            634 => static function ($self, $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]));
             },
-            635 => static function ($self, $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]));
             },
-            636 => null,
+            649 => null,
         ];
     }
 }
diff -pruN 5.4.0-3/lib/PhpParser/Parser/Php8.php 5.6.1-2/lib/PhpParser/Parser/Php8.php
--- 5.4.0-3/lib/PhpParser/Parser/Php8.php	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/lib/PhpParser/Parser/Php8.php	2025-08-13 20:13:15.000000000 +0000
@@ -19,165 +19,168 @@ use PhpParser\Node\Stmt;
 class Php8 extends \PhpParser\ParserAbstract
 {
     public const YYERRTOK = 256;
-    public const T_THROW = 257;
-    public const T_INCLUDE = 258;
-    public const T_INCLUDE_ONCE = 259;
-    public const T_EVAL = 260;
-    public const T_REQUIRE = 261;
-    public const T_REQUIRE_ONCE = 262;
-    public const T_LOGICAL_OR = 263;
-    public const T_LOGICAL_XOR = 264;
-    public const T_LOGICAL_AND = 265;
-    public const T_PRINT = 266;
-    public const T_YIELD = 267;
-    public const T_DOUBLE_ARROW = 268;
-    public const T_YIELD_FROM = 269;
-    public const T_PLUS_EQUAL = 270;
-    public const T_MINUS_EQUAL = 271;
-    public const T_MUL_EQUAL = 272;
-    public const T_DIV_EQUAL = 273;
-    public const T_CONCAT_EQUAL = 274;
-    public const T_MOD_EQUAL = 275;
-    public const T_AND_EQUAL = 276;
-    public const T_OR_EQUAL = 277;
-    public const T_XOR_EQUAL = 278;
-    public const T_SL_EQUAL = 279;
-    public const T_SR_EQUAL = 280;
-    public const T_POW_EQUAL = 281;
-    public const T_COALESCE_EQUAL = 282;
-    public const T_COALESCE = 283;
-    public const T_BOOLEAN_OR = 284;
-    public const T_BOOLEAN_AND = 285;
-    public const T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG = 286;
-    public const T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG = 287;
-    public const T_IS_EQUAL = 288;
-    public const T_IS_NOT_EQUAL = 289;
-    public const T_IS_IDENTICAL = 290;
-    public const T_IS_NOT_IDENTICAL = 291;
-    public const T_SPACESHIP = 292;
-    public const T_IS_SMALLER_OR_EQUAL = 293;
-    public const T_IS_GREATER_OR_EQUAL = 294;
-    public const T_SL = 295;
-    public const T_SR = 296;
-    public const T_INSTANCEOF = 297;
-    public const T_INC = 298;
-    public const T_DEC = 299;
-    public const T_INT_CAST = 300;
-    public const T_DOUBLE_CAST = 301;
-    public const T_STRING_CAST = 302;
-    public const T_ARRAY_CAST = 303;
-    public const T_OBJECT_CAST = 304;
-    public const T_BOOL_CAST = 305;
-    public const T_UNSET_CAST = 306;
-    public const T_POW = 307;
-    public const T_NEW = 308;
-    public const T_CLONE = 309;
-    public const T_EXIT = 310;
-    public const T_IF = 311;
-    public const T_ELSEIF = 312;
-    public const T_ELSE = 313;
-    public const T_ENDIF = 314;
-    public const T_LNUMBER = 315;
-    public const T_DNUMBER = 316;
-    public const T_STRING = 317;
-    public const T_STRING_VARNAME = 318;
-    public const T_VARIABLE = 319;
-    public const T_NUM_STRING = 320;
-    public const T_INLINE_HTML = 321;
-    public const T_ENCAPSED_AND_WHITESPACE = 322;
-    public const T_CONSTANT_ENCAPSED_STRING = 323;
-    public const T_ECHO = 324;
-    public const T_DO = 325;
-    public const T_WHILE = 326;
-    public const T_ENDWHILE = 327;
-    public const T_FOR = 328;
-    public const T_ENDFOR = 329;
-    public const T_FOREACH = 330;
-    public const T_ENDFOREACH = 331;
-    public const T_DECLARE = 332;
-    public const T_ENDDECLARE = 333;
-    public const T_AS = 334;
-    public const T_SWITCH = 335;
-    public const T_MATCH = 336;
-    public const T_ENDSWITCH = 337;
-    public const T_CASE = 338;
-    public const T_DEFAULT = 339;
-    public const T_BREAK = 340;
-    public const T_CONTINUE = 341;
-    public const T_GOTO = 342;
-    public const T_FUNCTION = 343;
-    public const T_FN = 344;
-    public const T_CONST = 345;
-    public const T_RETURN = 346;
-    public const T_TRY = 347;
-    public const T_CATCH = 348;
-    public const T_FINALLY = 349;
-    public const T_USE = 350;
-    public const T_INSTEADOF = 351;
-    public const T_GLOBAL = 352;
-    public const T_STATIC = 353;
-    public const T_ABSTRACT = 354;
-    public const T_FINAL = 355;
-    public const T_PRIVATE = 356;
-    public const T_PROTECTED = 357;
-    public const T_PUBLIC = 358;
-    public const T_READONLY = 359;
-    public const T_PUBLIC_SET = 360;
-    public const T_PROTECTED_SET = 361;
-    public const T_PRIVATE_SET = 362;
-    public const T_VAR = 363;
-    public const T_UNSET = 364;
-    public const T_ISSET = 365;
-    public const T_EMPTY = 366;
-    public const T_HALT_COMPILER = 367;
-    public const T_CLASS = 368;
-    public const T_TRAIT = 369;
-    public const T_INTERFACE = 370;
-    public const T_ENUM = 371;
-    public const T_EXTENDS = 372;
-    public const T_IMPLEMENTS = 373;
-    public const T_OBJECT_OPERATOR = 374;
-    public const T_NULLSAFE_OBJECT_OPERATOR = 375;
-    public const T_LIST = 376;
-    public const T_ARRAY = 377;
-    public const T_CALLABLE = 378;
-    public const T_CLASS_C = 379;
-    public const T_TRAIT_C = 380;
-    public const T_METHOD_C = 381;
-    public const T_FUNC_C = 382;
-    public const T_PROPERTY_C = 383;
-    public const T_LINE = 384;
-    public const T_FILE = 385;
-    public const T_START_HEREDOC = 386;
-    public const T_END_HEREDOC = 387;
-    public const T_DOLLAR_OPEN_CURLY_BRACES = 388;
-    public const T_CURLY_OPEN = 389;
-    public const T_PAAMAYIM_NEKUDOTAYIM = 390;
-    public const T_NAMESPACE = 391;
-    public const T_NS_C = 392;
-    public const T_DIR = 393;
-    public const T_NS_SEPARATOR = 394;
-    public const T_ELLIPSIS = 395;
-    public const T_NAME_FULLY_QUALIFIED = 396;
-    public const T_NAME_QUALIFIED = 397;
-    public const T_NAME_RELATIVE = 398;
-    public const T_ATTRIBUTE = 399;
+    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_PIPE = 296;
+    public const T_SL = 297;
+    public const T_SR = 298;
+    public const T_INSTANCEOF = 299;
+    public const T_INC = 300;
+    public const T_DEC = 301;
+    public const T_INT_CAST = 302;
+    public const T_DOUBLE_CAST = 303;
+    public const T_STRING_CAST = 304;
+    public const T_ARRAY_CAST = 305;
+    public const T_OBJECT_CAST = 306;
+    public const T_BOOL_CAST = 307;
+    public const T_UNSET_CAST = 308;
+    public const T_POW = 309;
+    public const T_NEW = 310;
+    public const T_CLONE = 311;
+    public const T_EXIT = 312;
+    public const T_IF = 313;
+    public const T_ELSEIF = 314;
+    public const T_ELSE = 315;
+    public const T_ENDIF = 316;
+    public const T_LNUMBER = 317;
+    public const T_DNUMBER = 318;
+    public const T_STRING = 319;
+    public const T_STRING_VARNAME = 320;
+    public const T_VARIABLE = 321;
+    public const T_NUM_STRING = 322;
+    public const T_INLINE_HTML = 323;
+    public const T_ENCAPSED_AND_WHITESPACE = 324;
+    public const T_CONSTANT_ENCAPSED_STRING = 325;
+    public const T_ECHO = 326;
+    public const T_DO = 327;
+    public const T_WHILE = 328;
+    public const T_ENDWHILE = 329;
+    public const T_FOR = 330;
+    public const T_ENDFOR = 331;
+    public const T_FOREACH = 332;
+    public const T_ENDFOREACH = 333;
+    public const T_DECLARE = 334;
+    public const T_ENDDECLARE = 335;
+    public const T_AS = 336;
+    public const T_SWITCH = 337;
+    public const T_MATCH = 338;
+    public const T_ENDSWITCH = 339;
+    public const T_CASE = 340;
+    public const T_DEFAULT = 341;
+    public const T_BREAK = 342;
+    public const T_CONTINUE = 343;
+    public const T_GOTO = 344;
+    public const T_FUNCTION = 345;
+    public const T_FN = 346;
+    public const T_CONST = 347;
+    public const T_RETURN = 348;
+    public const T_TRY = 349;
+    public const T_CATCH = 350;
+    public const T_FINALLY = 351;
+    public const T_USE = 352;
+    public const T_INSTEADOF = 353;
+    public const T_GLOBAL = 354;
+    public const T_STATIC = 355;
+    public const T_ABSTRACT = 356;
+    public const T_FINAL = 357;
+    public const T_PRIVATE = 358;
+    public const T_PROTECTED = 359;
+    public const T_PUBLIC = 360;
+    public const T_READONLY = 361;
+    public const T_PUBLIC_SET = 362;
+    public const T_PROTECTED_SET = 363;
+    public const T_PRIVATE_SET = 364;
+    public const T_VAR = 365;
+    public const T_UNSET = 366;
+    public const T_ISSET = 367;
+    public const T_EMPTY = 368;
+    public const T_HALT_COMPILER = 369;
+    public const T_CLASS = 370;
+    public const T_TRAIT = 371;
+    public const T_INTERFACE = 372;
+    public const T_ENUM = 373;
+    public const T_EXTENDS = 374;
+    public const T_IMPLEMENTS = 375;
+    public const T_OBJECT_OPERATOR = 376;
+    public const T_NULLSAFE_OBJECT_OPERATOR = 377;
+    public const T_LIST = 378;
+    public const T_ARRAY = 379;
+    public const T_CALLABLE = 380;
+    public const T_CLASS_C = 381;
+    public const T_TRAIT_C = 382;
+    public const T_METHOD_C = 383;
+    public const T_FUNC_C = 384;
+    public const T_PROPERTY_C = 385;
+    public const T_LINE = 386;
+    public const T_FILE = 387;
+    public const T_START_HEREDOC = 388;
+    public const T_END_HEREDOC = 389;
+    public const T_DOLLAR_OPEN_CURLY_BRACES = 390;
+    public const T_CURLY_OPEN = 391;
+    public const T_PAAMAYIM_NEKUDOTAYIM = 392;
+    public const T_NAMESPACE = 393;
+    public const T_NS_C = 394;
+    public const T_DIR = 395;
+    public const T_NS_SEPARATOR = 396;
+    public const T_ELLIPSIS = 397;
+    public const T_NAME_FULLY_QUALIFIED = 398;
+    public const T_NAME_QUALIFIED = 399;
+    public const T_NAME_RELATIVE = 400;
+    public const T_ATTRIBUTE = 401;
 
-    protected int $tokenToSymbolMapSize = 400;
-    protected int $actionTableSize = 1289;
-    protected int $gotoTableSize = 608;
+    protected int $tokenToSymbolMapSize = 402;
+    protected int $actionTableSize = 1537;
+    protected int $gotoTableSize = 642;
 
-    protected int $invalidSymbol = 172;
+    protected int $invalidSymbol = 174;
     protected int $errorSymbol = 1;
     protected int $defaultAction = -32766;
     protected int $unexpectedTokenRule = 32767;
 
-    protected int $YY2TBLSTATE = 442;
-    protected int $numNonLeafStates = 753;
+    protected int $YY2TBLSTATE = 452;
+    protected int $numNonLeafStates = 767;
 
     protected array $symbolToName = array(
         "EOF",
         "error",
+        "T_VOID_CAST",
         "T_THROW",
         "T_INCLUDE",
         "T_INCLUDE_ONCE",
@@ -224,6 +227,7 @@ class Php8 extends \PhpParser\ParserAbst
         "T_IS_SMALLER_OR_EQUAL",
         "'>'",
         "T_IS_GREATER_OR_EQUAL",
+        "T_PIPE",
         "'.'",
         "T_SL",
         "T_SR",
@@ -351,37 +355,37 @@ class Php8 extends \PhpParser\ParserAbst
     );
 
     protected array $tokenToSymbol = array(
-            0,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-          172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-          172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-          172,  172,  172,   56,  170,  172,  171,   55,  172,  172,
-          165,  166,   53,   51,    8,   52,   48,   54,  172,  172,
-          172,  172,  172,  172,  172,  172,  172,  172,   31,  163,
-           44,   16,   46,   30,   68,  172,  172,  172,  172,  172,
-          172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-          172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-          172,   70,  172,  164,   36,  172,  169,  172,  172,  172,
-          172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-          172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-          172,  172,  172,  167,   35,  168,   58,  172,  172,  172,
-          172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-          172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-          172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-          172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-          172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-          172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-          172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-          172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-          172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-          172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-          172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-          172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-          172,  172,  172,  172,  172,  172,    1,    2,    3,    4,
-            5,    6,    7,    9,   10,   11,   12,   13,   14,   15,
-           17,   18,   19,   20,   21,   22,   23,   24,   25,   26,
-           27,   28,   29,   32,   33,   34,   37,   38,   39,   40,
-           41,   42,   43,   45,   47,   49,   50,   57,   59,   60,
-           61,   62,   63,   64,   65,   66,   67,   69,   71,   72,
+            0,  174,  174,  174,  174,  174,  174,  174,  174,  174,
+          174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
+          174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
+          174,  174,  174,   58,  172,  174,  173,   57,  174,  174,
+          167,  168,   55,   53,    9,   54,   50,   56,  174,  174,
+          174,  174,  174,  174,  174,  174,  174,  174,   32,  165,
+           45,   17,   47,   31,   70,  174,  174,  174,  174,  174,
+          174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
+          174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
+          174,   72,  174,  166,   37,  174,  171,  174,  174,  174,
+          174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
+          174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
+          174,  174,  174,  169,   36,  170,   60,  174,  174,  174,
+          174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
+          174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
+          174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
+          174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
+          174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
+          174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
+          174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
+          174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
+          174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
+          174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
+          174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
+          174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
+          174,  174,  174,  174,  174,  174,    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,   51,   52,   59,
+           61,   62,   63,   64,   65,   66,   67,   68,   69,   71,
            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,
@@ -390,543 +394,601 @@ class Php8 extends \PhpParser\ParserAbst
           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
+          153,  154,  155,  156,  157,  158,  159,  160,  161,  162,
+          163,  164
     );
 
     protected array $action = array(
-          126,  127,  128,  570,  129,  130,  955,  765,  766,  767,
-          131,   38,  849,  -85,-32766, 1376,-32766,-32766,-32766,    0,
-          840, 1134, 1135, 1136, 1130, 1129, 1128, 1137, 1131, 1132,
-         1133,-32766,-32766,-32766,  851,  759,  758,-32766,-32766,-32766,
-        -32766,-32766,-32766,-32766,-32766,-32766,-32767,-32767,-32767,-32767,
-        -32767, 1005,-32766, 1045, -570,  768, 1134, 1135, 1136, 1130,
-         1129, 1128, 1137, 1131, 1132, 1133,  388,  387,  842,  263,
-          132,  389,  772,  773,  774,  775,  430,  845,  431,  -85,
-            2,   36,  246,   47,  291,  829,  776,  777,  778,  779,
-          780,  781,  782,  783,  784,  785,  805,  571,  806,  807,
-          808,  809,  797,  798,  344,  345,  800,  801,  786,  787,
-          788,  790,  791,  792,  359,  832,  833,  834,  835,  836,
-          572, -570, -570, -332,  793,  794,  573,  574,  236,  817,
-          815,  816,  828,  812,  813,   26, -194,  575,  576,  811,
-          577,  578,  579,  580,  323,  581,  582,  876,  844,  877,
-          297,  298,  814,  583,  584,  722,  133,  846,  126,  127,
-          128,  570,  129,  130, 1078,  765,  766,  767,  131,   38,
-        -32766,   35,  735, 1038, 1037, 1036, 1042, 1039, 1040, 1041,
-        -32766,-32766,-32766, 1006,  104,  105,  106,  107,  108, -372,
-          275, -372,-32766,  759,  758, 1054,  850,-32766,-32766,-32766,
-          848,-32766,  109,-32766,-32766,-32766,-32766,-32766,-32766,-32766,
-          134,  476,  477,  768,-32766,-32766,-32766, 1054,-32766,  290,
-        -32766,-32766,-32766,-32766,-32766,  616,  143,  263,  132,  389,
-          772,  773,  774,  775,  249,-32766,  431,-32766,-32766,-32766,
-        -32766,  290,  307,  829,  776,  777,  778,  779,  780,  781,
-          782,  783,  784,  785,  805,  571,  806,  807,  808,  809,
-          797,  798,  344,  345,  800,  801,  786,  787,  788,  790,
-          791,  792,  359,  832,  833,  834,  835,  836,  572,  958,
-         -273, -332,  793,  794,  573,  574,  840,  817,  815,  816,
-          828,  812,  813, 1301, -194,  575,  576,  811,  577,  578,
-          579,  580,  566,  581,  582, 1108,   82,   83,   84,  748,
-          814,  583,  584,  309,  146,  789,  760,  761,  762,  763,
-          764,  235,  765,  766,  767,  802,  803,   37,  957,   85,
-           86,   87,   88,   89,   90,   91,   92,   93,   94,   95,
-           96,   97,   98,   99,  100,  101,  102,  103,  104,  105,
-          106,  107,  108,  157,  275,-32766,-32766,-32766,-32767,-32767,
-        -32767,-32767,  101,  102,  103,-32766,  109, 1313,  622,  318,
-          768,-32766,-32766,-32766,  849, 1361,-32766, 1107,-32766,-32766,
-        -32766,  340, 1360, 1357,  769,  770,  771,  772,  773,  774,
-          775,  341,-32766,  838,-32766,-32766, 1386,  374, 1281, 1387,
-          829,  776,  777,  778,  779,  780,  781,  782,  783,  784,
-          785,  805,  827,  806,  807,  808,  809,  797,  798,  799,
-          826,  800,  801,  786,  787,  788,  790,  791,  792,  831,
-          832,  833,  834,  835,  836,  837, 1077,  431, -567,  793,
-          794,  795,  796,  148,  817,  815,  816,  828,  812,  813,
-          380, -193,  804,  810,  811,  818,  819,  821,  820,  138,
-          822,  823,  840,  321,  396,  285,   24,  814,  825,  824,
-           49,   50,   51,  522,   52,   53,  398, -110,    7,  849,
-           54,   55, -110,   56, -110,-32766,-32766,-32766, 1342,  303,
-          125, 1123, -110, -110, -110, -110, -110, -110, -110, -110,
-         -110, -110, -110,  161,  750, -567, -567,  291,  974,  975,
-        -32766,-32766,-32766,  976,  448,  285, 1276, 1275, 1277,   57,
-           58, -567,-32766,-32766,   59, 1109,   60,  243,  244,   61,
-           62,   63,   64,   65,   66,   67,   68,-32766,   28,  265,
-           69,  446,  523,  490, -346,  449, 1307, 1308,  524,  139,
-          849, 1051,  450,  321, 1305,   42,   20,  525,  934,  526,
-          934,  527,   74,  528, -568,  698,  529,  530,  321,  386,
-          387,   44,   45,  452,  383,  382, 1054,   46,  531,  430,
-          974,  975,  451,  372,  339,  976, 1281,  855,  725,  934,
-         1267,  759,  758,-32766,  970,  533,  534,  535,  149,  934,
-          281,  699,  -78, -566, 1274,  102,  103,  537,  538, -193,
-         1293, 1294, 1295, 1296, 1298, 1290, 1291,  295, 1054,  726,
-          466,  467,  468, 1297, 1292,  700,  701, 1276, 1275, 1277,
-          296, -568, -568,   70, -153, -153, -153,  316,  317,  321,
-         1272,  924,  290,  924, 1276, 1275, 1277, -568, 1051, -153,
-          281, -153, 1150, -153,   81, -153,  740,  151,  321, -574,
-          152,  759,  758,-32766, 1053,  381,  876,  849,  877,  153,
-         -566, -566,  924, 1054, 1051,  155,  974,  975, -606,  491,
-         -606,  532,  924, 1276, 1275, 1277, -566,   33, 1054,  910,
-          970, -110, -110, -110,   28,  266,  -58,  281, -573, 1054,
-        -32766,-32766, -110, -110,  665,   21,  849, -110,  -57, -564,
-         1305,  684,  685,  147,  413,  123, -110,  384,  385,  124,
-          936,  135,  936,  136,  720,-32766,  720, -153,  142,   48,
-           32,  110,  111,  112,  113,  114,  115,  116,  117,  118,
-          119,  120,  121,  122,  390,  391, 1267,  296,  759,  758,
-           74,  936,  156,  934,  158,  720,  321,   -4,  934,  159,
-          934,  936,  160,  537,  538,  720, 1293, 1294, 1295, 1296,
-         1298, 1290, 1291, 1183, 1185,  934, -564, -564, -565, 1297,
-         1292,  759,  758,  727, -564,-32766,  656,  657, -306,   72,
-          730, 1274, -564,  -87,  317,  321,  299,  300,-32766,-32766,
-        -32766,  -84,-32766,  -78,-32766,  737,-32766,  -73,  -72,-32766,
-          -71,  -70,  379,  -69,-32766,-32766,-32766,  -68,-32766,  -67,
-        -32766,-32766,  -66,  -65, 1274,  -46,-32766,  427,   28,  265,
-          -18,-32766,-32766,-32766,  140,-32766,  924,-32766,-32766,-32766,
-          849,  924,-32766,  924, 1305, -565, -565,-32766,-32766,-32766,
-          274, -564, -564,-32766,-32766,  282,  736,  739,  924,-32766,
-          427, -565,  933,  381,  145,  443,  286, -564,  951,   73,
-          294,-32766, -302, -572,  974,  975,  279,  280,  283,  532,
-         1267,   28,  266,  284,  329,  275,  109,  536,  970, -110,
-         -110, -110,  287,  849,  292,  293,  840, 1305,  538,  694,
-         1293, 1294, 1295, 1296, 1298, 1290, 1291,  709,  144,  587,
-          711,   11,   10, 1297, 1292,  991,  849, 1141,  473,  720,
-          936,-32766,  936,   72,  720,   -4,  720, 1388,  317,  321,
-          -50,  970,  672, 1267,  687,  666,  501,  936,  971,  301,
-          308,  720,  671, 1312,  302, 1314,-32766,  688,  953, -530,
-         -520,  538,   40, 1293, 1294, 1295, 1296, 1298, 1290, 1291,
-          848,   41,    8,  137,  654,   27, 1297, 1292,  304,   34,
-          593,  620,  296,-32766,    0,    0,   72,    0,    0, 1274,
-            0,  317,  321,    0,    0,    0,-32766,-32766,-32766, -276,
-        -32766,    0,-32766,    0,-32766,    0,    0,-32766,    0,    0,
-            0,    0,-32766,-32766,-32766,  934,-32766,    0,-32766,-32766,
-            0,    0, 1274,  378,-32766,  427,  745, -600,  412,-32766,
-        -32766,-32766,  746,-32766,  868,-32766,-32766,-32766,  934,  915,
-        -32766, 1015,  992,  999,  989,-32766,-32766,-32766, 1000,-32766,
-          913,-32766,-32766,  987, 1112, 1274, 1115,-32766,  427, 1116,
-         1113, 1152,-32766,-32766,-32766, 1114,-32766, 1120,-32766,-32766,
-        -32766, 1302,  860,-32766, 1329, 1346, 1379,  496,-32766,-32766,
-        -32766,  659,-32766, -599,-32766,-32766, -598, -574, 1274,  600,
-        -32766,  427, -573, -572, -571,-32766,-32766,-32766,  924,-32766,
-         -514,-32766,-32766,-32766,    1,   29,-32766, -274,   30,   39,
-           43,-32766,-32766,-32766, -251, -251, -251,-32766,-32766,   71,
-          381,  924,   75,-32766,  427,   76,   77,   78, 1281,   79,
-           80,  974,  975,  141,  150,-32766,  532, -250, -250, -250,
-         -273,  154,  241,  381,  910,  970, -110, -110, -110,  325,
-          360,  361,  362,  363,  974,  975,  364,  365,  -16,  532,
-          366,  367,  368,  369,  370,  373,  444,  910,  970, -110,
-         -110, -110,-32766,   13,  565,  371, 1306,  936, 1274,   14,
-          416,  720, -251,   15,   16,-32766,-32766,-32766,   18,-32766,
-          354,-32766,  411,-32766,  492,  493,-32766,  500,  503,  504,
-          936,-32766,-32766,-32766,  720, -250,  505,-32766,-32766,  849,
-          506,  510,  511,-32766,  427,  512,  519,  598,  704, 1080,
-         1223, 1303, 1079, 1060, 1262,-32766, 1056, -278, -102,   12,
-           17,   22,  312,  410,  612,  617,  645,  710, 1227, 1280,
-         1224, 1358,    0,  315, -110, -110,  375,  721,  724, -110,
-          728,  729,  731,  732,  733,  734,  738,  750, -110,  723,
-          751,    0,  742,  911, 1383, 1385,    0,-32766,  871,  870,
-          964, 1007, 1384,  963,  961,  962,  965, 1255,  944,  954,
-          942, 1151, 1147, 1101,  997,  998,  643, 1382, 1340,  296,
-         1355,    0,   74, 1240,  321,    0,    0,    0,  321
+          132,  133,  134,  582,  135,  136,  162,  779,  780,  781,
+          137,   41,  863,-32766,  970, 1404, -584,  974,  973, 1302,
+            0,  395,  396,  455,  246,  854,-32766,-32766,-32766,-32766,
+        -32766,  440,-32766,   27,-32766,  773,  772,-32766,-32766,-32766,
+        -32766,  508,-32766,-32766,-32766,-32766,-32766,-32766,-32766,-32766,
+          131,-32766,-32766,-32766,-32766,  437,  782,  859, 1148,-32766,
+          949,-32766,-32766,-32766,-32766,-32766,-32766,  972, 1385,  300,
+          271,   53,  398,  786,  787,  788,  789,  305,  865,  441,
+         -341,   39,  254, -584, -584, -195,  843,  790,  791,  792,
+          793,  794,  795,  796,  797,  798,  799,  819,  583,  820,
+          821,  822,  823,  811,  812,  353,  354,  814,  815,  800,
+          801,  802,  804,  805,  806,  368,  846,  847,  848,  849,
+          850,  584, 1062, -194,  856,  807,  808,  585,  586,    3,
+          831,  829,  830,  842,  826,  827,    4,  860,  587,  588,
+          825,  589,  590,  591,  592,  939,  593,  594,    5,  854,
+        -32766,-32766,-32766,  828,  595,  596,-32766,  138,  764,  132,
+          133,  134,  582,  135,  136, 1098,  779,  780,  781,  137,
+           41,-32766,-32766,-32766,-32766,-32766,-32766, -275, 1302,  613,
+          153, 1071,  749,  990,  991,-32766,-32766,-32766,  992,-32766,
+          891,-32766,  892,-32766,  773,  772,-32766,  986, 1309,  397,
+          396,-32766,-32766,-32766,  858,  299,  630,-32766,-32766,  440,
+          502,  736,-32766,-32766,  437,  782,-32767,-32767,-32767,-32767,
+          106,  107,  108,  109,  951,-32766, 1021,   29,  734,  271,
+           53,  398,  786,  787,  788,  789,  144, 1071,  441, -341,
+          332,   38,  864,  862, -195,  843,  790,  791,  792,  793,
+          794,  795,  796,  797,  798,  799,  819,  583,  820,  821,
+          822,  823,  811,  812,  353,  354,  814,  815,  800,  801,
+          802,  804,  805,  806,  368,  846,  847,  848,  849,  850,
+          584,  863, -194,  139,  807,  808,  585,  586,  323,  831,
+          829,  830,  842,  826,  827, 1370,  148,  587,  588,  825,
+          589,  590,  591,  592,  245,  593,  594,  395,  396,-32766,
+        -32766,-32766,  828,  595,  596,  -85,  138,  440,  132,  133,
+          134,  582,  135,  136, 1095,  779,  780,  781,  137,   41,
+        -32766,-32766,-32766,-32766,-32766,   51,  578, 1302,  257,-32766,
+          636,  107,  108,  109,-32766,-32766,-32766,  503,-32766,  316,
+        -32766,-32766,-32766,  773,  772,-32766, -383,  166, -383, 1022,
+        -32766,-32766,-32766,  305,   79, 1133,-32766,-32766, 1414,  762,
+          332, 1415,-32766,  437,  782,-32766, 1071,  110,  111,  112,
+          113,  114,  -85,  283,-32766,  477,  478,  479,  271,   53,
+          398,  786,  787,  788,  789,  115,  407,  441,   10,-32766,
+          299, 1341,  306,  307,  843,  790,  791,  792,  793,  794,
+          795,  796,  797,  798,  799,  819,  583,  820,  821,  822,
+          823,  811,  812,  353,  354,  814,  815,  800,  801,  802,
+          804,  805,  806,  368,  846,  847,  848,  849,  850,  584,
+          320, 1068, -582,  807,  808,  585,  586, 1389,  831,  829,
+          830,  842,  826,  827,  329, 1388,  587,  588,  825,  589,
+          590,  591,  592,   86,  593,  594, 1071,  332,-32766,-32766,
+        -32766,  828,  595,  596,  349,  151, -581,  132,  133,  134,
+          582,  135,  136, 1100,  779,  780,  781,  137,   41,-32766,
+          290,-32766,-32766,-32766,-32766,-32766,-32766,-32766,-32767,-32767,
+        -32767,-32767,-32767,-32766,-32766,-32766,  891, 1175,  892, -582,
+         -582,  754,  773,  772, 1159, 1160, 1161, 1155, 1154, 1153,
+         1162, 1156, 1157, 1158,-32766, -582,-32766,-32766,-32766,-32766,
+        -32766,-32766,-32766,  782,-32766,-32766,-32766, -588,  -78,-32766,
+        -32766,-32766,  350, -581, -581,-32766,-32766,  271,   53,  398,
+          786,  787,  788,  789,  383,-32766,  441,-32766,-32766, -581,
+        -32766,  773,  772,  843,  790,  791,  792,  793,  794,  795,
+          796,  797,  798,  799,  819,  583,  820,  821,  822,  823,
+          811,  812,  353,  354,  814,  815,  800,  801,  802,  804,
+          805,  806,  368,  846,  847,  848,  849,  850,  584, -620,
+         1068, -620,  807,  808,  585,  586,  389,  831,  829,  830,
+          842,  826,  827,  441,  405,  587,  588,  825,  589,  590,
+          591,  592,  333,  593,  594, 1071,   87,   88,   89,  459,
+          828,  595,  596,  460,  151,  803,  774,  775,  776,  777,
+          778,  854,  779,  780,  781,  816,  817,   40,  461,   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,  462,  283, 1329, 1159, 1160, 1161,
+         1155, 1154, 1153, 1162, 1156, 1157, 1158,  115,  869,  488,
+          489,  782, 1304, 1303, 1305,  108,  109, 1132,  154,-32766,
+        -32766, 1134,  679,   23,  156,  783,  784,  785,  786,  787,
+          788,  789,  698,  699,  852,  152,  423, -580,  393,  394,
+          157,  843,  790,  791,  792,  793,  794,  795,  796,  797,
+          798,  799,  819,  841,  820,  821,  822,  823,  811,  812,
+          813,  840,  814,  815,  800,  801,  802,  804,  805,  806,
+          845,  846,  847,  848,  849,  850,  851, 1094, -578,  863,
+          807,  808,  809,  810,  -58,  831,  829,  830,  842,  826,
+          827,  399,  400,  818,  824,  825,  832,  833,  835,  834,
+          294,  836,  837,  158, -580, -580,  160,  294,  828,  839,
+          838,   54,   55,   56,   57,  534,   58,   59,   36, -110,
+         -580,  -57,   60,   61, -110,   62, -110,  670,  671,  129,
+          130,  312, -587,  140, -110, -110, -110, -110, -110, -110,
+         -110, -110, -110, -110, -110, -578, -578,  141,  147,  949,
+          161,  712,  -87,  163,  164,  165,  -84,  949,  -78,  -73,
+          -72, -578,   63,   64,  143, -309,  -71,   65,  332,   66,
+          251,  252,   67,   68,   69,   70,   71,   72,   73,   74,
+          739,   31,  276,   47,  457,  535, -357,  713,  740, 1335,
+         1336,  536,  -70,  863, 1068,  -69,  -68, 1333,   45,   22,
+          537,  949,  538,  -67,  539,  -66,  540,   52,  -65,  541,
+          542,  714,  715,  -46,   48,   49,  463,  392,  391, 1071,
+           50,  543,  -18,  145,  281, 1302,  381,  348,  291,  750,
+         1304, 1303, 1305, 1295,  939,  753,  290,  948,  545,  546,
+          547,  150,  939,  290, -305,  295,  288,  289,  292,  293,
+          549,  550,  338, 1321, 1322, 1323, 1324, 1326, 1318, 1319,
+          304, 1300,  296,  301,  302,  283, 1325, 1320,  773,  772,
+         1304, 1303, 1305,  305,  308,  309,   75, -154, -154, -154,
+          327,  328,  332,  966,  854, 1070,  939,  149,  115, 1416,
+          388,  680, -154,  708, -154,  725, -154,   13, -154,  668,
+          723,  313,   31,  277, 1304, 1303, 1305,  863,  390,-32766,
+          600, 1166,  987,  951,  863,  310,  701,  734, 1333,  990,
+          991,  951,-32766,  686,  544,  734,  949,  685,  606, 1340,
+          485,  513,  925,  986, -110, -110, -110,   35,  116,  117,
+          118,  119,  120,  121,  122,  123,  124,  125,  126,  127,
+          128,  702,  949,  634, 1295,  773,  772,  741, -579,  305,
+         -614, 1334,    0,    0,    0,  951,  311,  949,    0,  734,
+         -154,  549,  550,  319, 1321, 1322, 1323, 1324, 1326, 1318,
+         1319, 1209, 1211,  744,    0, 1342,    0, 1325, 1320, -544,
+         -534,    0, -578,-32766,   -4,  949,   11,   77,  751, 1302,
+           30,  387,  328,  332,  862,   43,-32766,-32766,-32766, -613,
+        -32766,  939,-32766,  968,-32766,   44,  759,-32766, 1330,  773,
+          772,  760,-32766,-32766,-32766, -579, -579,  882,-32766,-32766,
+          930, 1031, 1008, 1015,-32766,  437, 1005,  939, 1016,  928,
+         1003, -579, 1137, 1140, 1141, 1138,-32766, 1177, 1139, 1145,
+           37,  874,  939, -586, 1357, 1374, 1407,-32766,  673, -578,
+         -578, -612, -588, 1302, -587, -586, -585,   31,  276, -528,
+        -32766,-32766,-32766,    1,-32766, -578,-32766,   78,-32766,  863,
+          939,-32766,   32, 1333, -278,   33,-32766,-32766,-32766,   42,
+         1007,   46,-32766,-32766,  734,   76,   80,   81,-32766,  437,
+           82,   83,  390,   84,  453,   31,  277,   85,  146,  303,
+        -32766,  155,  159,  990,  991,  249,  951,  863,  544, 1295,
+          734, 1333,  334,  369,  370,  371,  548,  986, -110, -110,
+         -110,  951,  372,  326,  373,  734,  374,  550,  375, 1321,
+         1322, 1323, 1324, 1326, 1318, 1319,  376,  377,  422,  378,
+           21,  -50, 1325, 1320,  379,  382,  454, 1295,  577,  951,
+          380,  384,   77,  734,   -4, -276, -275,  328,  332,   15,
+           16,   17,   18,   20,  363,  550,  421, 1321, 1322, 1323,
+         1324, 1326, 1318, 1319,  142,  504,  505,  512,  515,  516,
+         1325, 1320,  949,  517,  518,-32766,  522,  523,  524,  531,
+           77, 1302,  611,  718, 1101,  328,  332, 1097,-32766,-32766,
+        -32766, 1250,-32766, 1331,-32766,  949,-32766, 1099, 1096,-32766,
+         1077, 1290, 1309, 1073,-32766,-32766,-32766, -280,-32766, -102,
+        -32766,-32766,   14,   19, 1302,   24,-32766,  437,  323,  420,
+          625,-32766,-32766,-32766,  631,-32766,  659,-32766,-32766,-32766,
+          724, 1254,-32766,  -16, 1308, 1251, 1386,-32766,-32766,-32766,
+          735,-32766,  738,-32766,-32766,  742,  743, 1302,  745,-32766,
+          437,  746,  747,  748,-32766,-32766,-32766,  939,-32766,  300,
+        -32766,-32766,-32766,  752, 1309,-32766,  764,  737,  332,  765,
+        -32766,-32766,-32766, -253, -253, -253,-32766,-32766,  426,  390,
+          939,  756,-32766,  437,  926,  863, 1411, 1413,  885,  884,
+          990,  991,  980, 1023,-32766,  544, -252, -252, -252, 1412,
+          979,  977,  390,  925,  986, -110, -110, -110,  978,  981,
+         1283,  959,  969,  990,  991,  957, 1176, 1172,  544, 1126,
+         -110, -110, 1013, 1014,  657, -110,  925,  986, -110, -110,
+         -110, 1410,    2, 1368, -110, 1268,  951, 1383,    0,    0,
+          734, -253,    0,-32766,    0,    0,-32766,  863, 1059, 1054,
+         1053, 1052, 1058, 1055, 1056, 1057,    0,    0,    0,  951,
+            0,    0,    0,  734, -252,  305,    0,    0,   79,    0,
+            0, 1071,    0,    0,  332,    0,    0,    0,    0,    0,
+            0,    0, -110, -110,    0,    0,    0, -110,    0,    0,
+            0,    0,    0,    0,    0,  299, -110,    0,    0,    0,
+            0,    0,    0,    0,    0,-32766,    0,    0,    0,    0,
+            0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+            0,    0,    0,    0,    0,    0,    0,  305,    0,    0,
+           79,    0,    0,    0,    0,    0,  332
     );
 
     protected array $actionCheck = array(
-            2,    3,    4,    5,    6,    7,    1,    9,   10,   11,
-           12,   13,   82,   31,  116,   85,    9,   10,   11,    0,
-           80,  116,  117,  118,  119,  120,  121,  122,  123,  124,
-          125,    9,   10,   11,    1,   37,   38,   30,  140,   32,
-           33,   34,   35,   36,   37,   38,   39,   40,   41,   42,
-           43,   31,   30,    1,   70,   57,  116,  117,  118,  119,
-          120,  121,  122,  123,  124,  125,  106,  107,   80,   71,
-           72,   73,   74,   75,   76,   77,  116,   80,   80,   97,
-            8,  151,  152,   70,   30,   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,  137,  138,    8,  126,  127,  128,  129,   14,  131,
-          132,  133,  134,  135,  136,    8,    8,  139,  140,  141,
-          142,  143,  144,  145,   70,  147,  148,  106,  160,  108,
-          137,  138,  154,  155,  156,  167,  158,  160,    2,    3,
-            4,    5,    6,    7,  166,    9,   10,   11,   12,   13,
-          116,    8,  167,  119,  120,  121,  122,  123,  124,  125,
-            9,   10,   11,  163,   51,   52,   53,   54,   55,  106,
-           57,  108,  116,   37,   38,  141,  163,    9,   10,   11,
-          159,   30,   69,   32,   33,   34,   35,   36,   37,   38,
-            8,  137,  138,   57,    9,   10,   11,  141,   30,  165,
-           32,   33,   34,   35,   36,    1,    8,   71,   72,   73,
-           74,   75,   76,   77,    8,   30,   80,   32,   33,   34,
-           35,  165,    8,   87,   88,   89,   90,   91,   92,   93,
+            3,    4,    5,    6,    7,    8,   17,   10,   11,   12,
+           13,   14,   84,   76,    1,   87,   72,   74,   75,   82,
+            0,  108,  109,  110,   15,   82,   89,   90,   91,   10,
+           93,  118,   95,  103,   97,   38,   39,  100,   10,   11,
+           12,  104,  105,  106,  107,   10,   11,   12,  111,  112,
+           15,   10,   11,   12,  117,  118,   59,   82,  128,   31,
+            1,   33,   34,   35,   36,   37,  129,  124,    1,   31,
+           73,   74,   75,   76,   77,   78,   79,  164,    1,   82,
+            9,  153,  154,  139,  140,    9,   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,    1,    9,   82,  128,  129,  130,  131,    9,
+          133,  134,  135,  136,  137,  138,    9,  162,  141,  142,
+          143,  144,  145,  146,  147,   86,  149,  150,    9,   82,
+           10,   11,   12,  156,  157,  158,  118,  160,  169,    3,
+            4,    5,    6,    7,    8,  168,   10,   11,   12,   13,
+           14,   31,   76,   33,   34,   35,   36,  168,   82,   83,
+           15,  143,  169,  119,  120,   89,   90,   91,  124,   93,
+          108,   95,  110,   97,   38,   39,  100,  133,    1,  108,
+          109,  105,  106,  107,  162,  167,    1,  111,  112,  118,
+           32,  169,  118,  117,  118,   59,   45,   46,   47,   48,
+           49,   50,   51,   52,  165,  129,   32,    9,  169,   73,
+           74,   75,   76,   77,   78,   79,  169,  143,   82,  168,
+          173,    9,  165,  161,  168,   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,   73,
-          166,  166,  126,  127,  128,  129,   80,  131,  132,  133,
-          134,  135,  136,    1,  166,  139,  140,  141,  142,  143,
-          144,  145,   85,  147,  148,  163,    9,   10,   11,  167,
-          154,  155,  156,    8,  158,    2,    3,    4,    5,    6,
-            7,   97,    9,   10,   11,   12,   13,   30,  122,   32,
-           33,   34,   35,   36,   37,   38,   39,   40,   41,   42,
-           43,   44,   45,   46,   47,   48,   49,   50,   51,   52,
-           53,   54,   55,   16,   57,    9,   10,   11,   44,   45,
-           46,   47,   48,   49,   50,    9,   69,  150,   52,    8,
-           57,    9,   10,   11,   82,    1,   30,    1,   32,   33,
-           34,    8,    8,    1,   71,   72,   73,   74,   75,   76,
-           77,    8,   30,   80,   32,   33,   80,    8,    1,   83,
-           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,    1,   80,   70,  126,
-          127,  128,  129,   14,  131,  132,  133,  134,  135,  136,
-            8,    8,  139,  140,  141,  142,  143,  144,  145,  167,
-          147,  148,   80,  171,    8,   30,  101,  154,  155,  156,
-            2,    3,    4,    5,    6,    7,  106,  101,  108,   82,
-           12,   13,  106,   15,  108,    9,   10,   11,    1,  113,
-           14,  126,  116,  117,  118,  119,  120,  121,  122,  123,
-          124,  125,  126,   14,  167,  137,  138,   30,  117,  118,
-            9,   10,   11,  122,    8,   30,  159,  160,  161,   51,
-           52,  153,    9,   10,   56,  168,   58,   59,   60,   61,
-           62,   63,   64,   65,   66,   67,   68,  140,   70,   71,
-           72,   73,   74,   31,  168,    8,   78,   79,   80,  167,
-           82,  116,    8,  171,   86,   87,   88,   89,    1,   91,
-            1,   93,  165,   95,   70,   80,   98,   99,  171,  106,
-          107,  103,  104,  105,  106,  107,  141,  109,  110,  116,
-          117,  118,    8,  115,  116,  122,    1,    8,   31,    1,
-          122,   37,   38,  116,  131,  127,  128,  129,   14,    1,
-          165,  116,   16,   70,   80,   49,   50,  139,  140,  166,
-          142,  143,  144,  145,  146,  147,  148,  149,  141,   31,
-          132,  133,  134,  155,  156,  140,  141,  159,  160,  161,
-          162,  137,  138,  165,   75,   76,   77,  169,  170,  171,
-          116,   84,  165,   84,  159,  160,  161,  153,  116,   90,
-          165,   92,  163,   94,  167,   96,  167,   14,  171,  165,
-           14,   37,   38,  116,  140,  106,  106,   82,  108,   14,
-          137,  138,   84,  141,  116,   14,  117,  118,  164,  167,
-          166,  122,   84,  159,  160,  161,  153,   14,  141,  130,
-          131,  132,  133,  134,   70,   71,   16,  165,  165,  141,
-           51,   52,  117,  118,   75,   76,   82,  122,   16,   70,
-           86,   75,   76,  101,  102,   16,  131,  106,  107,   16,
-          163,   16,  163,   16,  167,  140,  167,  168,   16,   70,
-           16,   17,   18,   19,   20,   21,   22,   23,   24,   25,
-           26,   27,   28,   29,  106,  107,  122,  162,   37,   38,
-          165,  163,   16,    1,   16,  167,  171,    0,    1,   16,
-            1,  163,   16,  139,  140,  167,  142,  143,  144,  145,
-          146,  147,  148,   59,   60,    1,  137,  138,   70,  155,
-          156,   37,   38,   31,   70,   74,  111,  112,   35,  165,
-           31,   80,  153,   31,  170,  171,  137,  138,   87,   88,
-           89,   31,   91,   31,   93,   31,   95,   31,   31,   98,
-           31,   31,  153,   31,  103,  104,  105,   31,   74,   31,
-          109,  110,   31,   31,   80,   31,  115,  116,   70,   71,
-           31,   87,   88,   89,   31,   91,   84,   93,  127,   95,
-           82,   84,   98,   84,   86,  137,  138,  103,  104,  105,
-           31,  137,  138,  109,  110,   31,   31,   31,   84,  115,
-          116,  153,   31,  106,   31,  108,   37,  153,   38,  158,
-          113,  127,   35,  165,  117,  118,   35,   35,   35,  122,
-          122,   70,   71,   35,   35,   57,   69,  130,  131,  132,
-          133,  134,   37,   82,   37,   37,   80,   86,  140,   77,
-          142,  143,  144,  145,  146,  147,  148,   80,   70,   89,
-           92,  154,   97,  155,  156,  163,   82,   82,   97,  167,
-          163,   85,  163,  165,  167,  168,  167,   83,  170,  171,
-           31,  131,  100,  122,   94,   90,   97,  163,  131,  135,
-          135,  167,   96,  150,  136,  150,  140,  100,  158,  153,
-          153,  140,  163,  142,  143,  144,  145,  146,  147,  148,
-          159,  163,  153,   31,  113,  153,  155,  156,  114,  167,
-          157,  157,  162,   74,   -1,   -1,  165,   -1,   -1,   80,
-           -1,  170,  171,   -1,   -1,   -1,   87,   88,   89,  166,
-           91,   -1,   93,   -1,   95,   -1,   -1,   98,   -1,   -1,
-           -1,   -1,  103,  104,  105,    1,   74,   -1,  109,  110,
-           -1,   -1,   80,  153,  115,  116,  163,  165,  168,   87,
-           88,   89,  163,   91,  163,   93,  127,   95,    1,  163,
-           98,  163,  163,  163,  163,  103,  104,  105,  163,   74,
-          163,  109,  110,  163,  163,   80,  163,  115,  116,  163,
-          163,  163,   87,   88,   89,  163,   91,  163,   93,  127,
-           95,  164,  164,   98,  164,  164,  164,  102,  103,  104,
-          105,  164,   74,  165,  109,  110,  165,  165,   80,   81,
-          115,  116,  165,  165,  165,   87,   88,   89,   84,   91,
-          165,   93,  127,   95,  165,  165,   98,  166,  165,  165,
-          165,  103,  104,  105,  100,  101,  102,  109,  110,  165,
-          106,   84,  165,  115,  116,  165,  165,  165,    1,  165,
-          165,  117,  118,  165,  165,  127,  122,  100,  101,  102,
-          166,  165,  165,  106,  130,  131,  132,  133,  134,  165,
-          165,  165,  165,  165,  117,  118,  165,  165,   31,  122,
-          165,  165,  165,  165,  165,  165,  165,  130,  131,  132,
-          133,  134,   74,  166,  165,  165,  170,  163,   80,  166,
-          168,  167,  168,  166,  166,   87,   88,   89,  166,   91,
-          166,   93,  166,   95,  166,  166,   98,  166,  166,  166,
-          163,  103,  104,  105,  167,  168,  166,  109,  110,   82,
-          166,  166,  166,  115,  116,  166,  166,  166,  166,  166,
-          166,  166,  166,  166,  166,  127,  166,  166,  166,  166,
-          166,  166,  166,  166,  166,  166,  166,  166,  166,  166,
-          166,  166,   -1,  167,  117,  118,  167,  167,  167,  122,
-          167,  167,  167,  167,  167,  167,  167,  167,  131,  167,
-          167,   -1,  168,  168,  168,  168,   -1,  140,  168,  168,
-          168,  168,  168,  168,  168,  168,  168,  168,  168,  168,
-          168,  168,  168,  168,  168,  168,  168,  168,  168,  162,
-          168,   -1,  165,  169,  171,   -1,   -1,   -1,  171
+          114,  115,  116,  117,  118,  119,  120,  121,  122,  123,
+          124,   84,  168,    9,  128,  129,  130,  131,  168,  133,
+          134,  135,  136,  137,  138,    1,    9,  141,  142,  143,
+          144,  145,  146,  147,   99,  149,  150,  108,  109,   10,
+           11,   12,  156,  157,  158,   32,  160,  118,    3,    4,
+            5,    6,    7,    8,  168,   10,   11,   12,   13,   14,
+           31,   76,   33,   34,   35,   72,   87,   82,    9,  142,
+           54,   50,   51,   52,   89,   90,   91,  169,   93,    9,
+           95,  118,   97,   38,   39,  100,  108,   15,  110,  165,
+          105,  106,  107,  164,  167,  165,  111,  112,   82,  169,
+          173,   85,  117,  118,   59,  118,  143,   53,   54,   55,
+           56,   57,   99,   59,  129,  134,  135,  136,   73,   74,
+           75,   76,   77,   78,   79,   71,  108,   82,  110,  142,
+          167,  152,  139,  140,   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,
+            9,  118,   72,  128,  129,  130,  131,    1,  133,  134,
+          135,  136,  137,  138,    9,    9,  141,  142,  143,  144,
+          145,  146,  147,  169,  149,  150,  143,  173,   10,   11,
+           12,  156,  157,  158,    9,  160,   72,    3,    4,    5,
+            6,    7,    8,  168,   10,   11,   12,   13,   14,   31,
+          167,   33,   34,   35,   36,   37,   38,   39,   40,   41,
+           42,   43,   44,   10,   11,   12,  108,  165,  110,  139,
+          140,  169,   38,   39,  118,  119,  120,  121,  122,  123,
+          124,  125,  126,  127,   31,  155,   33,   34,   35,   36,
+           37,   38,   39,   59,   10,   11,   12,  167,   17,   10,
+           11,   12,    9,  139,  140,   10,   11,   73,   74,   75,
+           76,   77,   78,   79,    9,   31,   82,   33,   34,  155,
+           31,   38,   39,   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,  166,
+          118,  168,  128,  129,  130,  131,    9,  133,  134,  135,
+          136,  137,  138,   82,    9,  141,  142,  143,  144,  145,
+          146,  147,   72,  149,  150,  143,   10,   11,   12,    9,
+          156,  157,  158,    9,  160,    3,    4,    5,    6,    7,
+            8,   82,   10,   11,   12,   13,   14,   31,    9,   33,
+           34,   35,   36,   37,   38,   39,   40,   41,   42,   43,
+           44,   45,   46,   47,   48,   49,   50,   51,   52,   53,
+           54,   55,   56,   57,    9,   59,    1,  118,  119,  120,
+          121,  122,  123,  124,  125,  126,  127,   71,    9,  139,
+          140,   59,  161,  162,  163,   51,   52,    1,   15,   53,
+           54,  170,   77,   78,   15,   73,   74,   75,   76,   77,
+           78,   79,   77,   78,   82,  103,  104,   72,  108,  109,
+           15,   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,    1,   72,   84,
+          128,  129,  130,  131,   17,  133,  134,  135,  136,  137,
+          138,  108,  109,  141,  142,  143,  144,  145,  146,  147,
+           31,  149,  150,   15,  139,  140,   15,   31,  156,  157,
+          158,    2,    3,    4,    5,    6,    7,    8,   15,  103,
+          155,   17,   13,   14,  108,   16,  110,  113,  114,   17,
+           17,  115,  167,   17,  118,  119,  120,  121,  122,  123,
+          124,  125,  126,  127,  128,  139,  140,   17,   17,    1,
+           17,   82,   32,   17,   17,   17,   32,    1,   32,   32,
+           32,  155,   53,   54,  169,   36,   32,   58,  173,   60,
+           61,   62,   63,   64,   65,   66,   67,   68,   69,   70,
+           32,   72,   73,   74,   75,   76,  170,  118,   32,   80,
+           81,   82,   32,   84,  118,   32,   32,   88,   89,   90,
+           91,    1,   93,   32,   95,   32,   97,   72,   32,  100,
+          101,  142,  143,   32,  105,  106,  107,  108,  109,  143,
+          111,  112,   32,   32,   32,   82,  117,  118,   32,   32,
+          161,  162,  163,  124,   86,   32,  167,   32,  129,  130,
+          131,   32,   86,  167,   36,   38,   36,   36,   36,   36,
+          141,  142,   36,  144,  145,  146,  147,  148,  149,  150,
+          151,  118,   38,   38,   38,   59,  157,  158,   38,   39,
+          161,  162,  163,  164,  139,  140,  167,   77,   78,   79,
+          171,  172,  173,   39,   82,  142,   86,   72,   71,   85,
+          155,   92,   92,   79,   94,   94,   96,   99,   98,  115,
+           82,  116,   72,   73,  161,  162,  163,   84,  108,   87,
+           91,   84,  133,  165,   84,  137,   96,  169,   88,  119,
+          120,  165,  142,  102,  124,  169,    1,   98,  159,  152,
+           99,   99,  132,  133,  134,  135,  136,   17,   18,   19,
+           20,   21,   22,   23,   24,   25,   26,   27,   28,   29,
+           30,  102,    1,  159,  124,   38,   39,   32,   72,  164,
+          167,  172,   -1,   -1,   -1,  165,  138,    1,   -1,  169,
+          170,  141,  142,  137,  144,  145,  146,  147,  148,  149,
+          150,   61,   62,   32,   -1,  152,   -1,  157,  158,  155,
+          155,   -1,   72,   76,    0,    1,  155,  167,   32,   82,
+          155,  155,  172,  173,  161,  165,   89,   90,   91,  167,
+           93,   86,   95,  160,   97,  165,  165,  100,  166,   38,
+           39,  165,  105,  106,  107,  139,  140,  165,  111,  112,
+          165,  165,  165,  165,  117,  118,  165,   86,  165,  165,
+          165,  155,  165,  165,  165,  165,  129,  165,  165,  165,
+          169,  166,   86,  167,  166,  166,  166,   76,  166,  139,
+          140,  167,  167,   82,  167,  167,  167,   72,   73,  167,
+           89,   90,   91,  167,   93,  155,   95,  160,   97,   84,
+           86,  100,  167,   88,  168,  167,  105,  106,  107,  167,
+          165,  167,  111,  112,  169,  167,  167,  167,  117,  118,
+          167,  167,  108,  167,  110,   72,   73,  167,  167,  115,
+          129,  167,  167,  119,  120,  167,  165,   84,  124,  124,
+          169,   88,  167,  167,  167,  167,  132,  133,  134,  135,
+          136,  165,  167,  169,  167,  169,  167,  142,  167,  144,
+          145,  146,  147,  148,  149,  150,  167,  167,  170,  167,
+          156,   32,  157,  158,  167,  167,  167,  124,  167,  165,
+          167,  169,  167,  169,  170,  168,  168,  172,  173,  168,
+          168,  168,  168,  168,  168,  142,  168,  144,  145,  146,
+          147,  148,  149,  150,   32,  168,  168,  168,  168,  168,
+          157,  158,    1,  168,  168,   76,  168,  168,  168,  168,
+          167,   82,  168,  168,  168,  172,  173,  168,   89,   90,
+           91,  168,   93,  168,   95,    1,   97,  168,  168,  100,
+          168,  168,    1,  168,  105,  106,  107,  168,   76,  168,
+          111,  112,  168,  168,   82,  168,  117,  118,  168,  168,
+          168,   89,   90,   91,  168,   93,  168,   95,  129,   97,
+          168,  168,  100,   32,  168,  168,  168,  105,  106,  107,
+          169,   76,  169,  111,  112,  169,  169,   82,  169,  117,
+          118,  169,  169,  169,   89,   90,   91,   86,   93,   31,
+           95,  129,   97,  169,    1,  100,  169,  169,  173,  169,
+          105,  106,  107,  102,  103,  104,  111,  112,  170,  108,
+           86,  170,  117,  118,  170,   84,  170,  170,  170,  170,
+          119,  120,  170,  170,  129,  124,  102,  103,  104,  170,
+          170,  170,  108,  132,  133,  134,  135,  136,  170,  170,
+          170,  170,  170,  119,  120,  170,  170,  170,  124,  170,
+          119,  120,  170,  170,  170,  124,  132,  133,  134,  135,
+          136,  170,  167,  170,  133,  171,  165,  170,   -1,   -1,
+          169,  170,   -1,  142,   -1,   -1,  118,   84,  120,  121,
+          122,  123,  124,  125,  126,  127,   -1,   -1,   -1,  165,
+           -1,   -1,   -1,  169,  170,  164,   -1,   -1,  167,   -1,
+           -1,  143,   -1,   -1,  173,   -1,   -1,   -1,   -1,   -1,
+           -1,   -1,  119,  120,   -1,   -1,   -1,  124,   -1,   -1,
+           -1,   -1,   -1,   -1,   -1,  167,  133,   -1,   -1,   -1,
+           -1,   -1,   -1,   -1,   -1,  142,   -1,   -1,   -1,   -1,
+           -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+           -1,   -1,   -1,   -1,   -1,   -1,   -1,  164,   -1,   -1,
+          167,   -1,   -1,   -1,   -1,   -1,  173
     );
 
     protected array $actionBase = array(
-            0,   -2,  156,  559,  757, 1004, 1027,  485,  292,  357,
-          -60,  -12,  588,  759,  759,  774,  759,  557,  752,  892,
-          598,  598,  598,  827,  313,  313,  827,  313,  711,  711,
-          711,  711,  744,  744,  965,  965,  998,  932,  899, 1088,
-         1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088,
-         1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088,
-         1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088,
-         1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088,
-         1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088,
-         1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088,
-         1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088,
-         1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088,
-         1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088,
-         1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088,
-         1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088,
-         1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088,
-         1088, 1088,   33,   20,  224, 1080,  673, 1056, 1062, 1058,
-         1063, 1054, 1053, 1057, 1059, 1064, 1109, 1110,  833, 1108,
-         1112, 1060,  907, 1055, 1061,  888,  297,  297,  297,  297,
-          297,  297,  297,  297,  297,  297,  297,  297,  297,  297,
-          297,  297,  297,  297,  297,  297,  297,  297,  297,  297,
-          297,  297,  356,  476,  513,  501,  501,  501,  501,  501,
-          501,  501,  501,  501,  501,  501,  501,  501,  501,  501,
-          501,  501,  501,  501,  501,  624,  624,   22,   22,   22,
-          362,  811,  758,  811,  811,  811,  811,  811,  811,  811,
-          811,  346,  205,  188,  714,  171,  171,    7,    7,    7,
-            7,    7,  376, 1117,   54,  585,  585,  314,  314,  314,
-          314,  365,  554,   83,  435,  397,  556,  477,  463,  532,
-          532,  558,  558,   76,   76,  558,  558,  558,  133,  133,
-          547,  547,  547,  547,   41,  217,  806,  382,  382,  382,
-          382,  806,  806,  806,  806,  795,  996,  806,  806,  806,
-          494,  533,  708,  649,  649,  560,  -70,  -70,  560,  800,
-          -70,  487,  975,  316,  982, -102,  807,  -40,  514, -102,
-         1000,  368,  639,  639,  659,  639,  639,  639,  801,  611,
-          801, 1052,  836,  836,  794,  776,  894, 1082, 1065,  832,
-         1106,  847, 1107, 1083,  489,  488,  -16,   13,   74,  772,
-         1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-         1051, 1051, 1113,  554, 1052,   -3, 1104, 1105, 1113, 1113,
-         1113,  554,  554,  554,  554,  554,  554,  554,  554,  799,
-          554,  554,  675,   -3,  629,  636,   -3,  849,  554,  797,
-           33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
-          512,   33,   33,   20,    5,    5,   33,  142,   52,    5,
-            5,    5,  337,    5,   33,   33,   33,  611,  828,  813,
-          638,  -18,  814,  443,  828,  828,  828,  115,  114,  128,
-          753,  837,  370,  816,  816,  835,  929,  929,  816,  834,
-          816,  835,  816,  816,  929,  929,  810,  929,  202,  506,
-          373,  442,  537,  929,  234,  816,  816,  816,  816,  805,
-          929,   72,  544,  816,  226,  218,  816,  816,  805,  804,
-          824,  808,  929,  929,  929,  805,  389,  808,  808,  808,
-          853,  859,  851,  819,  361,  305,  579,  163,  830,  819,
-          819,  816,  456,  851,  819,  851,  819,  790,  819,  819,
-          819,  851,  819,  834,  383,  819,  736,  574,  127,  819,
-          816,   19,  944,  947,  762,  950,  934,  951,  991,  952,
-          954, 1070,  925,  967,  935,  955,  999,  933,  930,  831,
-          699,  703,  809,  796,  919,  817,  817,  817,  912,  917,
-          817,  817,  817,  817,  817,  817,  817,  817,  699,  897,
-          860,  820,  976,  705,  707, 1041,  793, 1085, 1114,  975,
-          944,  954,  770,  935,  955,  933,  930,  792,  791,  786,
-          788,  782,  780,  777,  779,  803, 1043,  958,  789,  712,
-         1012,  977, 1084, 1066,  978,  981, 1016, 1044,  861, 1045,
-         1086,  838, 1087, 1090,  898,  985, 1071,  817,  911,  852,
-          900,  982,  918,  699,  901, 1046,  997,  802, 1018, 1019,
-         1069,  821,  844,  902, 1091,  986,  987,  988, 1073, 1074,
-          798, 1003,  823, 1021,  839,  850, 1022, 1023, 1030, 1034,
-         1075, 1092, 1076,  908, 1077,  866,  845,  931,  846, 1093,
-          429,  843,  848,  858,  990,  584,  974, 1078, 1002, 1094,
-         1035, 1036, 1039, 1095, 1096,  959,  868, 1007,  840, 1008,
-          964,  869,  870,  643,  857, 1047,  841,  842,  855,  646,
-          655, 1097, 1098, 1099,  966,  825,  822,  871,  875, 1048,
-          829, 1050, 1100,  661,  877, 1101, 1042,  738,  743,  586,
-          692,  680,  746,  818, 1079,  812,  854,  815,  989,  743,
-          826,  880, 1102,  881,  883,  886, 1040,  887, 1014, 1103,
-            0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+            0,  156,   -3,  315,  474,  474,  880, 1074, 1271, 1294,
+          749,  675,  531,  559,  836, 1031, 1031, 1046, 1031,  828,
+         1005,   42,   59,   59,   59,  963,  898,  632,  632,  898,
+          632,  997,  997,  997,  997, 1061, 1061,  -63,  -63,   96,
+         1232, 1199,  255,  255,  255,  255,  255, 1265,  255,  255,
+          255,  255,  255, 1265,  255,  255,  255,  255,  255,  255,
+          255,  255,  255,  255,  255,  255,  255,  255,  255,  255,
+          255,  255,  255,  255,  255,  255,  255,  255,  255,  255,
+          255,  255,  255,  255,  255,  255,  255,  255,  255,  255,
+          255,  255,  255,  255,  255,  255,  255,  255,  255,  255,
+          255,  255,  255,  255,  255,  255,  255,  255,  255,  255,
+          255,  255,  255,  255,  255,  255,  255,  255,  255,  255,
+          255,  255,  255,  255,  255,  255,  255,  255,  255,  255,
+          255,  255,  255,  255,  255,  255,  255,  255,  255,  255,
+          255,  255,  255,  255,  255,  255,  255,  255,  255,  255,
+          255,  255,  255,  255,  255,  255,  255,  255,  255,  255,
+          255,  255,  255,  255,  255,  255,  255,   77,  194,  120,
+          205, 1197,  783, 1150, 1163, 1152, 1166, 1145, 1144, 1151,
+         1156, 1167, 1261, 1263,  889, 1254, 1267, 1158,  972, 1147,
+         1162,  962,  616,  616,  616,  616,  616,  616,  616,  616,
+          616,  616,  616,  616,  616,  616,  616,  616,  616,  616,
+          616,  616,  616,  616,  616,  616,  616,  616,  616,   19,
+           35,  535,   41,   41,   41,   41,   41,   41,   41,   41,
+           41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+           41,   41,  529,  529,  529,  910,  910,  524,  299, 1113,
+         1075, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,  140,
+           28, 1000,  493,  493,  458,  458,  458,  458,  458,  696,
+         1328, 1301,  171,  171,  171,  171, 1363, 1363,  -70,  523,
+          248,  756,  291,  197,  -87,  644,   38,  199,  323,  323,
+          482,  482,  233,  233,  482,  482,  482,  324,  324,   94,
+           94,   94,   94,   82,  249,  860,   67,   67,   67,   67,
+          860,  860,  860,  860,  913,  869,  860, 1036, 1049,  860,
+          860,  370,  645,  966,  646,  646,  398,  -72,  -72,  398,
+           64,  -72,  294,  286,  257,  859,   91,  433,  257, 1073,
+          404,  686,  686,  815,  686,  686,  686,  923,  610,  923,
+         1141,  902,  902,  861,  807,  964, 1198, 1168,  901, 1252,
+          929, 1253, 1200,  342,  251,  -56,  263,  550,  806, 1139,
+         1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139,
+         1139, 1195,  523, 1141,  -25, 1247, 1249, 1195, 1195, 1195,
+          523,  523,  523,  523,  523,  523,  523,  523,  870,  523,
+          523,  694,  -25,  625,  635,  -25,  896,  523,  915,   77,
+           77,   77,   77,   77,   77,   77,   77,   77,   77,   77,
+          178,   77,   77,  194,   13,   13,   77,  200,  121,   13,
+           13,   13,  -11,   13,   77,   77,   77,  610,  886,  849,
+          663,  283,  874,  114,  886,  886,  886,   71,    9,   76,
+          809,  888,  288,  882,  882,  882,  907,  986,  986,  882,
+          903,  882,  907,  882,  882,  986,  986,  875,  986,  274,
+          620,  465,  597,  624,  986,  340,  882,  882,  882,  882,
+          916,  986,  127,  139,  639,  882,  329,  287,  882,  882,
+          916,  858,  876,  908,  986,  986,  986,  916,  545,  908,
+          908,  908,  931,  936,  864,  872,  445,  431,  679,  232,
+          924,  872,  872,  882,  605,  864,  872,  864,  872,  933,
+          872,  872,  872,  864,  872,  903,  533,  872,  813,  665,
+          218,  872,  882,   20, 1008, 1009,  800, 1010, 1002, 1013,
+         1069, 1014, 1016, 1171,  982, 1028, 1004, 1020, 1071,  998,
+          995,  885,  792,  793,  921,  914,  979,  897,  897,  897,
+          975,  977,  897,  897,  897,  897,  897,  897,  897,  897,
+          792,  932,  926,  899, 1037,  796,  810, 1114,  857, 1214,
+         1264, 1036, 1008, 1016,  804, 1004, 1020,  998,  995,  856,
+          853,  844,  851,  843,  840,  808,  814,  871, 1116, 1119,
+         1021,  920,  811, 1085, 1038, 1211, 1044, 1045, 1047, 1088,
+         1123,  942, 1125, 1216,  895, 1217, 1218,  965, 1051, 1173,
+          897,  974,  873,  968, 1049,  978,  792,  969, 1129, 1130,
+         1081,  961, 1097, 1098, 1072,  911,  884,  970, 1219, 1059,
+         1060, 1062, 1176, 1177,  930, 1082,  996, 1099,  912, 1058,
+         1100, 1101, 1105, 1106, 1179, 1222, 1182,  922, 1183,  945,
+          879, 1077,  909, 1223,  165,  892,  893,  906, 1068,  683,
+         1035, 1184, 1208, 1229, 1108, 1109, 1110, 1230, 1231, 1024,
+          946, 1083,  900, 1084, 1078,  947,  948,  689,  905, 1132,
+          890,  891,  904,  705,  768, 1238, 1239, 1240, 1025,  877,
+          894,  951,  953, 1133,  887, 1135, 1241,  771,  954, 1242,
+         1115,  816,  817,  521,  784,  747,  818,  881, 1194,  925,
+          865,  878, 1067,  817,  883,  955, 1245,  957,  958,  959,
+         1111,  960, 1086, 1246,    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,  468,  468,  468,  468,  468,  468,
-          313,  313,  313,  313,  313,  468,  468,  468,  468,  468,
-          468,  468,  313,  468,  468,  468,  313,    0,    0,  313,
-            0,  468,  468,  468,  468,  468,  468,  468,  468,  468,
-          468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
-          468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
-          468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
-          468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
-          468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
-          468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
-          468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
-          468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
-          468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
-          468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
-          468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
-          468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
-          468,  468,  468,  468,  468,  297,  297,  297,  297,  297,
-          297,  297,  297,  297,  297,  297,  297,  297,  297,  297,
-          297,  297,  297,  297,  297,  297,  297,  297,  297,    0,
+            0,    0,    0,    0,    0,    0,    0,    0,  789,  789,
+          789,  789,  789,  789,  789,  789,  789,  632,  632,  632,
+          632,  789,  789,  789,  789,  789,  789,  789,  632,  789,
+          789,  789,  632,  632,    0,    0,  632,    0,  789,  789,
+          789,  789,  789,  789,  789,  789,  789,  789,  789,  789,
+          789,  789,  789,  789,  789,  789,  789,  789,  789,  789,
+          789,  789,  789,  789,  789,  789,  789,  789,  789,  789,
+          789,  789,  789,  789,  789,  789,  789,  789,  789,  789,
+          789,  789,  789,  789,  789,  789,  789,  789,  789,  789,
+          789,  789,  789,  789,  789,  789,  789,  789,  789,  789,
+          789,  789,  789,  789,  789,  789,  789,  789,  789,  789,
+          789,  789,  789,  789,  789,  789,  789,  789,  789,  789,
+          789,  789,  789,  789,  789,  789,  789,  789,  789,  789,
+          789,  789,  789,  789,  789,  789,  789,  789,  789,  789,
+          789,  789,  789,  789,  789,  789,  789,  789,  789,  789,
+          789,  789,  789,  789,  789,  789,  789,  789,  789,  789,
+          789,  789,  789,  789,  789,  789,  789,  789,  789,  789,
+          789,  789,  789,  789,  616,  616,  616,  616,  616,  616,
+          616,  616,  616,  616,  616,  616,  616,  616,  616,  616,
+          616,  616,  616,  616,  616,  616,  616,  616,  616,    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,  297,  297,  297,  297,  297,
-          297,  297,  297,  297,  297,  297,  297,  297,  297,  297,
-          297,  297,  297,  297,  297,  297,  297,  297,  524,  524,
-          297,  297,  297,  297,  524,  524,  524,  524,  524,  524,
-          524,  524,  524,  524,  297,  297,  297,    0,  297,  297,
-          297,  297,  297,  297,  297,  810,  524,  524,  524,  524,
-          133,  133,  133,  133,  -95,  -95,  -95,  524,  524,  133,
-          524,  810,  524,  524,  524,  524,  524,  524,  524,  524,
-          524,    0,    0,  524,  524,  524,  524,   -3,  -70,  524,
-          834,  834,  834,  834,  524,  524,  524,  524,  -70,  -70,
-          524,  524,  524,    0,    0,    0,  133,  133,   -3,    0,
-            0,   -3,  391,    0,  834,  206,  834,  206,  524,  391,
-          810,  374,  524,  489,    0,    0,    0,    0,    0,    0,
-            0,   -3,  834,   -3,  554,  -70,  -70,  554,  554,    5,
-           33,  374,  612,  612,  612,  612,   33,    0,    0,    0,
-            0,    0,  611,  810,  810,  810,  810,  810,  810,  810,
-          810,  810,  810,  810,  810,  834,    0,  810,    0,  810,
-          810,  834,  834,  834,    0,    0,    0,    0,    0,    0,
-            0,    0,  929,    0,    0,    0,    0,    0,    0,    0,
-          834,    0,  929,    0,    0,    0,    0,    0,    0,    0,
+            0,    0,    0,    0,    0,    0,  616,  616,  616,  616,
+          616,  616,  616,  616,  616,  616,  616,  616,  616,  616,
+          616,  616,  616,  616,  616,  616,  616,  616,  616,  616,
+          616,  616,  823,  823,  616,  616,  823,  823,  823,  823,
+          823,  823,  823,  823,  823,  823,  616,  616,    0,  616,
+          616,  616,  616,  616,  616,  616,  875,  823,  823,  324,
+          324,  324,  324,  823,  823,  396,  396,  396,  823,  324,
+          823,   64,  324,  823,   64,  823,  823,  823,  823,  823,
+          823,  823,  823,  823,    0,    0,  823,  823,  823,  823,
+          -25,  -72,  823,  903,  903,  903,  903,  823,  823,  823,
+          823,  -72,  -72,  823,  -57,  -57,  823,  823,    0,    0,
+            0,  324,  324,  -25,    0,    0,  -25,    0,    0,  903,
+          903,  823,   64,  875,  446,  823,  342,    0,    0,    0,
+            0,    0,    0,    0,  -25,  903,  -25,  523,  -72,  -72,
+          523,  523,   13,   77,  446,  612,  612,  612,  612,   77,
+            0,    0,    0,    0,    0,  610,  875,  875,  875,  875,
+          875,  875,  875,  875,  875,  875,  875,  875,  903,    0,
+          875,    0,  875,  875,  903,  903,  903,    0,    0,    0,
+            0,    0,    0,    0,    0,  986,    0,    0,    0,    0,
+            0,    0,    0,  903,    0,  986,    0,    0,    0,    0,
             0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-            0,  834,    0,    0,    0,    0,    0,    0,    0,    0,
-            0,  817,  821,    0,    0,  821,    0,  817,  817,  817,
-            0,    0,    0,  857,  829
+            0,    0,    0,    0,    0,  903,    0,    0,    0,    0,
+            0,    0,    0,    0,    0,  897,  911,    0,    0,  911,
+            0,  897,  897,  897,    0,    0,    0,  905,  887
     );
 
     protected array $actionDefault = array(
-            3,32767,  102,32767,32767,32767,32767,32767,32767,32767,
+            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,  100,32767,  618,  618,
-          618,  618,32767,32767,  255,  102,32767,32767,  489,  406,
-          406,  406,32767,32767,  562,  562,  562,  562,  562,32767,
-        32767,32767,32767,32767,32767,  489,32767,32767,32767,32767,
+        32767,32767,32767,32767,32767,32767,32767,32767,32767,  100,
+        32767,  632,  632,  632,  632,32767,32767,  257,  102,32767,
+        32767,  503,  417,  417,  417,32767,32767,32767,  576,  576,
+          576,  576,  576,   17,32767,32767,32767,32767,32767,32767,
+        32767,  503,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,32767,32767,32767,   36,    7,    8,   10,
-           11,   49,   17,  328,  100,32767,32767,32767,32767,32767,
-        32767,32767,32767,  102,32767,32767,32767,32767,32767,32767,
+        32767,32767,   36,    7,    8,   10,   11,   49,  338,  100,
+        32767,32767,32767,32767,32767,32767,32767,32767,  102,32767,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
-        32767,32767,32767,32767,32767,  393,  611,32767,32767,32767,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
-        32767,32767,32767,32767,32767,32767,  493,  472,  473,  475,
-          476,  405,  563,  617,  331,  614,  333,  404,  145,  343,
-          334,  243,  259,  494,  260,  495,  498,  499,  216,  390,
-          149,  150,  436,  490,  438,  488,  492,  437,  411,  417,
-          418,  419,  420,  421,  422,  423,  424,  425,  426,  427,
-          428,  429,  409,  410,  491,32767,32767,  469,  468,  467,
-          434,32767,32767,32767,32767,32767,32767,32767,32767,  102,
-        32767,  435,  439,  442,  408,  440,  441,  458,  459,  456,
-          457,  460,32767,32767,  320,32767,32767,  461,  462,  463,
-          464,  371,  195,  369,32767,32767,  443,  320,  111,32767,
-        32767,32767,32767,32767,32767,32767,32767,32767,  449,  450,
+        32767,  404,  625,32767,32767,32767,32767,32767,32767,32767,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
-        32767,32767,32767,32767,32767,32767,32767,  102,32767,  100,
-          506,  556,  466,  444,  445,32767,  531,32767,  102,32767,
-          533,32767,32767,32767,32767,32767,32767,32767,32767,32767,
-        32767,  558,  431,  433,  526,  612,  412,  615,32767,  519,
-          100,  195,32767,  532,  195,  195,32767,32767,32767,32767,
-        32767,32767,32767,32767,32767,32767,  557,32767,  625,  519,
-          110,  110,  110,  110,  110,  110,  110,  110,  110,  110,
-          110,  110,32767,  195,  110,32767,  110,  110,32767,32767,
-          100,  195,  195,  195,  195,  195,  195,  195,  195,  534,
-          195,  195,  190,32767,  269,  271,  102,  580,  195,  536,
+        32767,32767,  497,  507,  485,  486,  488,  489,  416,  577,
+          631,  344,  628,  342,  415,  146,  354,  343,  245,  261,
+          508,  262,  509,  512,  513,  218,  401,  150,  151,  448,
+          504,  450,  502,  506,  449,  422,  429,  430,  431,  432,
+          433,  434,  435,  436,  437,  438,  439,  440,  441,  420,
+          421,  505,  482,  481,  480,32767,32767,  446,  447,32767,
+        32767,32767,32767,32767,32767,32767,32767,  102,32767,  451,
+          454,  419,  452,  453,  470,  471,  468,  469,  472,32767,
+          323,32767,  473,  474,  475,  476,32767,32767,  382,  196,
+          380,32767,  477,32767,  111,  455,  323,  111,32767,32767,
+        32767,32767,32767,32767,32767,32767,32767,  461,  462,32767,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
+        32767,32767,32767,32767,32767,32767,  102,32767,32767,32767,
+          100,  520,  570,  479,  456,  457,32767,  545,32767,  102,
+        32767,  547,32767,32767,32767,32767,32767,32767,32767,32767,
+          572,  443,  445,  540,  626,  423,  629,32767,  533,  100,
+          196,32767,  546,  196,  196,32767,32767,32767,32767,32767,
+        32767,32767,32767,32767,32767,  571,32767,  639,  533,  110,
+          110,  110,  110,  110,  110,  110,  110,  110,  110,  110,
+          110,32767,  196,  110,32767,  110,  110,32767,32767,  100,
+          196,  196,  196,  196,  196,  196,  196,  196,  548,  196,
+          196,  191,32767,  271,  273,  102,  594,  196,  550,32767,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
-        32767,32767,  393,32767,32767,32767,32767,  519,  454,  138,
-        32767,  521,  138,  564,  446,  447,  448,  564,  564,  564,
-          316,  293,32767,32767,32767,32767,  534,  534,  100,  100,
-          100,  100,32767,32767,32767,32767,  111,  505,   99,   99,
-           99,   99,   99,  103,  101,32767,32767,32767,32767,  224,
-        32767,  101,   99,32767,  101,  101,32767,32767,  224,  226,
-          213,  228,32767,  584,  585,  224,  101,  228,  228,  228,
-          248,  248,  508,  322,  101,   99,  101,  101,  197,  322,
-          322,32767,  101,  508,  322,  508,  322,  199,  322,  322,
-          322,  508,  322,32767,  101,  322,  215,   99,   99,  322,
-        32767,32767,32767,32767,  521,32767,32767,32767,32767,32767,
-        32767,32767,  223,32767,32767,32767,32767,32767,32767,32767,
-        32767,  551,32767,  569,  582,  452,  453,  455,  568,  566,
-          477,  478,  479,  480,  481,  482,  483,  485,  613,32767,
-          525,32767,32767,32767,  342,32767,  623,32767,32767,32767,
-            9,   74,  514,   42,   43,   51,   57,  540,  541,  542,
-          543,  537,  538,  544,  539,32767,32767,32767,32767,32767,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
-          624,32767,  564,32767,32767,32767,32767,  451,  546,  590,
-        32767,32767,  565,  616,32767,32767,32767,32767,32767,32767,
-        32767,  138,32767,32767,32767,32767,32767,32767,32767,32767,
-        32767,32767,  551,32767,  136,32767,32767,32767,32767,32767,
-        32767,32767,32767,  547,32767,32767,32767,  564,32767,32767,
-        32767,32767,  318,  315,32767,32767,32767,32767,32767,32767,
+        32767,32767,  404,32767,32767,32767,32767,  533,  466,  139,
+        32767,  535,  139,  578,  458,  459,  460,  578,  578,  578,
+          319,  296,32767,32767,32767,32767,32767,  548,  548,  100,
+          100,  100,  100,32767,32767,32767,32767,  111,  519,   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,  598,  599,  226,  101,  230,
+          230,  230,  250,  250,  522,  325,  101,   99,  101,  101,
+          198,  325,  325,32767,  101,  522,  325,  522,  325,  200,
+          325,  325,  325,  522,  325,32767,  101,  325,  217,   99,
+           99,  325,32767,32767,32767,32767,  535,32767,32767,32767,
+        32767,32767,32767,32767,  225,32767,32767,32767,32767,32767,
+        32767,32767,32767,  565,32767,  583,  596,  464,  465,  467,
+          582,  580,  490,  491,  492,  493,  494,  495,  496,  499,
+          627,32767,  539,32767,32767,32767,  353,32767,  637,32767,
+        32767,32767,    9,   74,  528,   42,   43,   51,   57,  554,
+          555,  556,  557,  551,  552,  558,  553,32767,32767,32767,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
-          564,32767,32767,32767,32767,32767,  295,32767,  312,32767,
+        32767,32767,32767,  638,32767,  578,32767,32767,32767,32767,
+          463,  560,  604,32767,32767,  579,  630,32767,32767,32767,
+        32767,32767,32767,32767,32767,  139,32767,32767,32767,32767,
+        32767,32767,32767,32767,32767,32767,  565,32767,  137,32767,
+        32767,32767,32767,32767,32767,32767,32767,  561,32767,32767,
+        32767,  578,32767,32767,32767,32767,  321,  318,32767,32767,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
-        32767,32767,32767,32767,32767,32767,32767,  389,  521,  298,
-          300,  301,32767,32767,32767,32767,  365,32767,32767,32767,
+        32767,32767,32767,32767,  578,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,
-          152,  152,    3,    3,  345,  152,  152,  152,  345,  345,
-          152,  345,  345,  345,  152,  152,  152,  152,  152,  152,
-          152,  281,  185,  263,  266,  248,  248,  152,  357,  152,
-          391,  391,  400
+        32767,  400,  535,  301,  303,  304,32767,32767,32767,32767,
+          376,32767,32767,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,  153,  283,  186,  265,  268,  250,
+          250,  153,  368,  153,  402,  402,  411
     );
 
     protected array $goto = array(
-          194,  194, 1052,  487,  705,  278,  278,  278,  278,  990,
-          489,  548,  548,  907,  865,  907,  907,  548,  714,  548,
-          548,  548,  548,  548,  548,  548,  548,  166,  166,  166,
-          166,  218,  195,  191,  191,  176,  178,  213,  191,  191,
-          191,  191,  191,  192,  192,  192,  192,  192,  186,  187,
-          188,  189,  190,  215,  213,  216,  545,  546,  428,  547,
-          550,  551,  552,  553,  554,  555,  556,  557, 1169,  167,
-          168,  169,  193,  170,  171,  172,  164,  173,  174,  175,
-          177,  212,  214,  217,  237,  240,  251,  252,  253,  255,
-          256,  257,  258,  259,  260,  261,  267,  268,  269,  270,
-          276,  288,  289,  313,  314,  434,  435,  436,  607,  219,
-          220,  221,  222,  223,  224,  225,  226,  227,  228,  229,
-          230,  231,  232,  233,  234,  186,  187,  188,  189,  190,
-          215, 1169,  196,  197,  198,  199,  238,  179,  180,  200,
-          181,  201,  197,  182,  239,  196,  163,  202,  203,  183,
-          204,  205,  206,  184,  207,  208,  165,  209,  210,  211,
-          185,  869,  560, 1083,  560,  560,  592, 1100,  475,  475,
-          744,  646,  648,  609,  560,  668,  432,  475,  621,  692,
-          695, 1025,  703,  712, 1021,  719,  558,  558,  558,  558,
-          470,  613,  866,  663,  664,  463,  681,  682,  683, 1218,
-          984,  984,  984,  984,  247,  247,  463,  978,  985,  355,
-          355,  355,  355,  867,  923,  918,  919,  932,  875,  920,
-          872,  921,  922,  873,  350,  926,  879, 1126, 1154, 1127,
-          878,  245,  245,  245,  245,  242,  248,  841, 1106, 1102,
-         1103,  438,  670,  402,  405,  610,  614,  433,  336,  332,
-          333,  335,  602,  437,  337,  439,  647,  426, 1273, 1052,
-         1273, 1273,  342,  900,  456,  456,  348,  456,  456, 1052,
-         1273,  882, 1052,  520, 1052, 1052, 1052, 1052, 1052, 1052,
-         1052, 1052, 1052,  343,  342, 1052, 1052, 1052, 1052,  894,
-          465, 1273,  881,  508,  599,  509, 1273, 1273, 1273, 1273,
-          358,  515, 1273, 1273, 1273, 1354, 1354, 1354, 1354,  862,
-          358,  358, 1372, 1372,  630,  667,  895,  883, 1088, 1092,
-          940,  358,  358, 1362,  941,  358, 1011, 1372, 1389,  993,
-          956,  447,  956,  619,  633,  636,  637,  638,  639,  660,
-          661,  662,  716,  718,  564,  569,  562,  358,  358, 1375,
-         1375,  400,  983, 1055, 1055,  690,  967,  597,  862, 1047,
-         1063, 1064,  456,  456,  456,  456,  456,  456,  456,  456,
-          456,  456,  456,  456, 1138,  899,  456,  669,  456,  456,
-         1058, 1057,  322,  562,  569,  594,  595,  324,  605,  611,
-         1166,  626,  627, 1028, 1028, 1061, 1062,  632,  632,   25,
-          320,  306, 1334, 1304, 1304, 1304, 1304, 1304, 1304, 1304,
-         1304, 1304, 1304,  702, 1349, 1350, 1014,  843,    5,  986,
-            6,  743,  445,  422,  561, 1023, 1018, 1076, 1345,  702,
-         1345, 1345,  702,  603,  624, 1323, 1323,  691,  250,  250,
-         1345, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323,
-         1323,  563,  589,  927,  564,  928,  563,  675,  589,  859,
-          403,  469, 1356, 1356, 1356, 1356,  338,  887,  271,  319,
-          625,  319,  319,  478,  606,  479,  480,  973,  351,  352,
-          409,  892, 1320, 1320, 1380, 1381, 1341,  862, 1320, 1320,
-         1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320,  982,  417,
-          713, 1268, 1264,  414,  415, 1033,  884,  440,  679,  890,
-          680, 1149,  419,  420,  421, 1089,  693,  847, 1266,  423,
-          440,  747, 1043,  346,  485, 1093, 1059, 1059,  330,  484,
-         1347, 1348, 1140,  674, 1070, 1066, 1067, 1091,  896,  995,
-          549,  549,  377, 1343, 1343, 1091,  549,  549,  549,  549,
-          549,  549,  549,  549,  549,  549, 1269, 1270,    0, 1256,
-            0,  847,    0,  847,  615,  857,    0,  945, 1156,  640,
-          642,  644, 1256,    0,    0,    0,    0,  608, 1119, 1030,
-            0,    0,  752,  752, 1271, 1331, 1332,  886,  717,  673,
-         1009,    0,    0,  516,  708,  880, 1117, 1249,  959,    0,
-            0,    0, 1250, 1253,  960,    0, 1254, 1263
+          201,  169,  201,  201,  201, 1069,  598,  719,  448,  684,
+          644,  681,  443,  345,  341,  342,  344,  615,  447,  346,
+          449,  661,  481,  728,  570,  570,  570,  570, 1245,  626,
+          172,  172,  172,  172,  225,  202,  198,  198,  182,  184,
+          220,  198,  198,  198,  198,  198, 1195,  199,  199,  199,
+          199,  199, 1195,  192,  193,  194,  195,  196,  197,  222,
+          220,  223,  557,  558,  438,  559,  562,  563,  564,  565,
+          566,  567,  568,  569,  173,  174,  175,  200,  176,  177,
+          178,  170,  179,  180,  181,  183,  219,  221,  224,  242,
+          247,  248,  259,  260,  262,  263,  264,  265,  266,  267,
+          268,  272,  273,  274,  275,  282,  285,  297,  298,  324,
+          325,  444,  445,  446,  620,  226,  227,  228,  229,  230,
+          231,  232,  233,  234,  235,  236,  237,  238,  239,  240,
+          241,  193,  194,  195,  196,  197,  222,  203,  204,  205,
+          206,  243,  185,  186,  207,  187,  208,  204,  188,  244,
+          203,  168,  209,  210,  189,  211,  212,  213,  190,  214,
+          215,  171,  216,  217,  218,  191,  287,  284,  287,  287,
+          883,  255,  255,  255,  255,  255, 1125,  605,  487,  487,
+          622,  758,  660,  662, 1103,  359,  682,  487, 1075, 1074,
+          706,  709, 1041,  717,  726, 1037,  733,  922,  879,  922,
+          922,  253,  253,  253,  253,  250,  256,  646,  646, 1078,
+         1079, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332,
+         1332,  880,  351,  938,  933,  934,  947,  889,  935,  886,
+          936,  937,  887,  890,  476,  941,  894,  476, 1044, 1044,
+          893,  364,  364,  364,  364,  352,  351,  532, 1131, 1127,
+         1128, 1351, 1351,  331,  315, 1351, 1351, 1351, 1351, 1351,
+         1351, 1351, 1351, 1351, 1351, 1069, 1301, 1072, 1072,  704,
+          983, 1301, 1301, 1064, 1080, 1081, 1069,  942, 1301,  943,
+          458, 1069,  881, 1069, 1069, 1069, 1069, 1069, 1069, 1069,
+         1069, 1069,  897,  855, 1069, 1069, 1069, 1069,  677,  678,
+         1301,  695,  696,  697, 1006, 1301, 1301, 1301, 1301,  450,
+          909, 1301,  436,  896, 1301, 1301, 1382, 1382, 1382, 1382,
+          915,  581,  574,  499,  612,  450,  367,  971,  971,  955,
+          501, 1076, 1076,  956, 1400, 1400,  367,  367,  688, 1087,
+         1083, 1084,  572,  411,  414,  623,  627,  572,  572,  367,
+          367, 1400,  357,  367,  572, 1417, 1377, 1378,  317,  574,
+          581,  607,  608,  318,  618,  624, 1390,  640,  641, 1027,
+          576, 1403, 1403,  367,  367,   28,  474,  520,  442,  521,
+          635, 1000, 1000, 1000, 1000,  527,  409,  474, 1348, 1348,
+          994, 1001, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
+         1348, 1348,  633,  647,  650,  651,  652,  653,  674,  675,
+          676,  730,  732,  561,  561,  258,  258,  561,  561,  561,
+          561,  561,  561,  561,  561,  561,  561,  610, 1362,  467,
+          683,  467,  876,  616,  638,  876,  467,  467, 1191,  861,
+         1373,  360,  361, 1093,  456, 1373, 1373,  560,  560,  705,
+          432,  560, 1373,  560,  560,  560,  560,  560,  560,  560,
+          560, 1277,  975,  575,  602,  575, 1278, 1281,  976,  575,
+         1282,  602,  689,  412,  480, 1384, 1384, 1384, 1384,  347,
+          873,  716,  576,  861,  876,  861,  490,  619,  491,  492,
+          639,    8,  857,    9,  902,  907,  989,  716, 1408, 1409,
+          716, 1369,  418, 1296,  278,  899,  330, 1174,  424,  425,
+         1292,  330,  330,  693, 1049,  694, 1114,  429,  430,  431,
+          761,  707, 1060,  905,  433, 1102, 1104, 1107,  355,  467,
+          467,  467,  467,  467,  467,  467,  467,  467,  467,  467,
+          467,  419,  339,  467,  911,  467,  467, 1294,  628,  629,
+         1116,  497,  960, 1181,  621, 1144, 1371, 1371, 1116, 1118,
+         1297, 1298, 1011, 1284, 1046, 1151, 1179, 1152,  731,  871,
+          528,  722,  901, 1142,  687, 1025, 1284,  496, 1375, 1376,
+          895,  910,  898, 1113, 1117,  998,  427,  727, 1165, 1299,
+         1359, 1360, 1291, 1030,  386, 1009, 1002,    0,  757,    0,
+            0,  573, 1039, 1034,  654,  656,  658,    0,    0,    0,
+            0,    0,    0,    0,    0,  876,    0,    0,  999,    0,
+          766,  766,    0,    0,    0,    0,    0,    0,    0,    0,
+            0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+         1163,  914
     );
 
     protected array $gotoCheck = array(
-           42,   42,   73,   84,   73,   23,   23,   23,   23,   49,
-           84,  162,  162,   25,   25,   25,   25,  162,    9,  162,
-          162,  162,  162,  162,  162,  162,  162,   42,   42,   42,
+           42,   42,   42,   42,   42,   73,  127,   73,   66,   66,
+           56,   56,   66,   66,   66,   66,   66,   66,   66,   66,
+           66,   66,  159,    9,  107,  107,  107,  107,  159,  107,
            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,
@@ -940,97 +1002,101 @@ class Php8 extends \PhpParser\ParserAbst
            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,   15,   19,  128,   19,   19,   48,   15,  154,  154,
-           48,   48,   48,  131,   19,   48,   13,  154,   13,   48,
-           48,   48,   48,   48,   48,   48,  107,  107,  107,  107,
-          156,  107,   26,   86,   86,   19,   86,   86,   86,  156,
-           19,   19,   19,   19,    5,    5,   19,   19,   19,   24,
-           24,   24,   24,   27,   15,   15,   15,   15,   15,   15,
-           15,   15,   15,   15,   97,   15,   15,  146,  146,  146,
-           15,    5,    5,    5,    5,    5,    5,    6,   15,   15,
-           15,   66,   66,   59,   59,   59,   59,   66,   66,   66,
-           66,   66,   66,   66,   66,   66,   66,   43,   73,   73,
-           73,   73,  174,   45,   23,   23,  185,   23,   23,   73,
-           73,   35,   73,   76,   73,   73,   73,   73,   73,   73,
-           73,   73,   73,  174,  174,   73,   73,   73,   73,   35,
-           83,   73,   35,  160,  178,  160,   73,   73,   73,   73,
-           14,  160,   73,   73,   73,    9,    9,    9,    9,   22,
-           14,   14,  188,  188,   56,   56,   16,   16,   16,   16,
-           73,   14,   14,  187,   73,   14,  103,  188,   14,   16,
-            9,   83,    9,   81,   81,   81,   81,   81,   81,   81,
-           81,   81,   81,   81,   14,   76,   76,   14,   14,  188,
-          188,   62,   16,   89,   89,   89,   89,  104,   22,   89,
-           89,   89,   23,   23,   23,   23,   23,   23,   23,   23,
-           23,   23,   23,   23,   16,   16,   23,   64,   23,   23,
-          119,  119,   76,   76,   76,   76,   76,   76,   76,   76,
-          155,   76,   76,  107,  107,  120,  120,  108,  108,   76,
-          175,  175,   14,  108,  108,  108,  108,  108,  108,  108,
-          108,  108,  108,    7,  184,  184,   50,    7,   46,   50,
-           46,   50,  113,   14,   50,   50,   50,  115,  131,    7,
-          131,  131,    7,    2,    2,  176,  176,  117,    5,    5,
-          131,  176,  176,  176,  176,  176,  176,  176,  176,  176,
-          176,    9,    9,   65,   14,   65,    9,  121,    9,   18,
-            9,    9,  131,  131,  131,  131,   29,   39,   24,   24,
-           80,   24,   24,    9,    9,    9,    9,   92,   97,   97,
-           28,    9,  177,  177,    9,    9,  131,   22,  177,  177,
-          177,  177,  177,  177,  177,  177,  177,  177,   93,   93,
-           93,   20,  166,   82,   82,  110,   37,  118,   82,    9,
-           82,  153,   82,   82,   82,  130,   82,   12,   14,   82,
-          118,   99,  114,   82,  157,  133,  118,  118,    9,  182,
-          182,  182,  149,  118,  118,  118,  118,  131,   41,   96,
-          179,  179,  138,  131,  131,  131,  179,  179,  179,  179,
-          179,  179,  179,  179,  179,  179,   20,   20,   -1,   20,
-           -1,   12,   -1,   12,   17,   20,   -1,   17,   17,   85,
-           85,   85,   20,   -1,   -1,   -1,   -1,    8,    8,   17,
-           -1,   -1,   24,   24,   20,   20,   20,   17,    8,   17,
-           17,   -1,   -1,    8,    8,   17,    8,   79,   79,   -1,
-           -1,   -1,   79,   79,   79,   -1,   79,   17
+           42,   42,   42,   42,   42,   42,   23,   23,   23,   23,
+           15,    5,    5,    5,    5,    5,   15,   48,  157,  157,
+          134,   48,   48,   48,  131,   97,   48,  157,  119,  119,
+           48,   48,   48,   48,   48,   48,   48,   25,   25,   25,
+           25,    5,    5,    5,    5,    5,    5,  108,  108,  120,
+          120,  108,  108,  108,  108,  108,  108,  108,  108,  108,
+          108,   26,  177,   15,   15,   15,   15,   15,   15,   15,
+           15,   15,   15,   15,   83,   15,   15,   83,  107,  107,
+           15,   24,   24,   24,   24,  177,  177,   76,   15,   15,
+           15,  179,  179,  178,  178,  179,  179,  179,  179,  179,
+          179,  179,  179,  179,  179,   73,   73,   89,   89,   89,
+           89,   73,   73,   89,   89,   89,   73,   65,   73,   65,
+           83,   73,   27,   73,   73,   73,   73,   73,   73,   73,
+           73,   73,   35,    6,   73,   73,   73,   73,   86,   86,
+           73,   86,   86,   86,   49,   73,   73,   73,   73,  118,
+           35,   73,   43,   35,   73,   73,    9,    9,    9,    9,
+           45,   76,   76,   84,  181,  118,   14,    9,    9,   73,
+           84,  118,  118,   73,  191,  191,   14,   14,  118,  118,
+          118,  118,   19,   59,   59,   59,   59,   19,   19,   14,
+           14,  191,  188,   14,   19,   14,  187,  187,   76,   76,
+           76,   76,   76,   76,   76,   76,  190,   76,   76,  103,
+           14,  191,  191,   14,   14,   76,   19,  163,   13,  163,
+           13,   19,   19,   19,   19,  163,   62,   19,  180,  180,
+           19,   19,  180,  180,  180,  180,  180,  180,  180,  180,
+          180,  180,   81,   81,   81,   81,   81,   81,   81,   81,
+           81,   81,   81,  182,  182,    5,    5,  182,  182,  182,
+          182,  182,  182,  182,  182,  182,  182,  104,   14,   23,
+           64,   23,   22,    2,    2,   22,   23,   23,  158,   12,
+          134,   97,   97,  115,  113,  134,  134,  165,  165,  117,
+           14,  165,  134,  165,  165,  165,  165,  165,  165,  165,
+          165,   79,   79,    9,    9,    9,   79,   79,   79,    9,
+           79,    9,  121,    9,    9,  134,  134,  134,  134,   29,
+           18,    7,   14,   12,   22,   12,    9,    9,    9,    9,
+           80,   46,    7,   46,   39,    9,   92,    7,    9,    9,
+            7,  134,   28,   20,   24,   37,   24,  156,   82,   82,
+          169,   24,   24,   82,  110,   82,  133,   82,   82,   82,
+           99,   82,  114,    9,   82,  130,  130,  130,   82,   23,
+           23,   23,   23,   23,   23,   23,   23,   23,   23,   23,
+           23,   31,    9,   23,   41,   23,   23,   14,   17,   17,
+          134,  160,   17,   17,    8,    8,  134,  134,  134,  136,
+           20,   20,   96,   20,   17,  149,  149,  149,    8,   20,
+            8,    8,   17,    8,   17,   17,   20,  185,  185,  185,
+           17,   16,   16,   16,   16,   93,   93,   93,  152,   20,
+           20,   20,   17,   50,  141,   16,   50,   -1,   50,   -1,
+           -1,   50,   50,   50,   85,   85,   85,   -1,   -1,   -1,
+           -1,   -1,   -1,   -1,   -1,   22,   -1,   -1,   16,   -1,
+           24,   24,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+           -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+           16,   16
     );
 
     protected array $gotoBase = array(
-            0,    0, -289,    0,    0,  203,  227,  406,  569,    8,
-            0,    0,  223, -162,    5, -186, -143,   93,  152, -101,
-          102,    0,   31,    2,  206,   10,  188,  209,  142,  172,
-            0,    0,    0,    0,    0, -104,    0,  166,    0,  149,
-            0,   90,   -1,  234,    0,  237, -329,    0, -555,   -9,
-          404,    0,    0,    0,    0,    0,  274,    0,    0,  198,
-            0,    0,  309,    0,  141,  439,    6,    0,    0,    0,
-            0,    0,    0,   -5,    0,    0,    1,    0,    0,  183,
-          146,  -28,    4,   12, -475,   82, -535,    0,    0,   74,
-            0,    0,  151,  196,    0,    0,   89, -267,    0,  108,
-            0,    0,    0,  291,  314,    0,    0,  158,  162,    0,
-          131,    0,    0,  145,  100,  153,    0,  156,  243,  101,
-          112,  167,    0,    0,    0,    0,    0,    0,  161,    0,
-          135,  165,    0,   76,    0,    0,    0,    0, -209,    0,
-            0,    0,    0,    0,    0,    0,  -44,    0,    0,   81,
-            0,    0,    0,  157,  134,  148,  -76,   77,    0,    0,
-         -210,    0, -224,    0,    0,    0,  129,    0,    0,    0,
-            0,    0,    0,    0,  -33,   84,  200,  247,  265,  305,
-            0,    0,  231,    0,   36,  236,    0,  292,    7,    0,
-            0
+            0,    0, -303,    0,    0,  170,  280,  471,  543,   10,
+            0,    0,  136,   31,   22, -186,  111,   66,  164,   71,
+           95,    0,  148,  160,  235,  191,  214,  275,  155,  176,
+            0,   86,    0,    0,    0,  -92,    0,  156,    0,  165,
+            0,   85,   -1,  286,    0,  291, -270,    0, -558,  284,
+          579,    0,    0,    0,    0,    0,  -33,    0,    0,  294,
+            0,    0,  341,    0,  184,  261, -237,    0,    0,    0,
+            0,    0,    0,   -5,    0,    0,  -32,    0,    0,   37,
+          172,   32,   -3,  -50, -167,  105, -444,    0,    0,  -21,
+            0,    0,  161,  274,    0,    0,  101, -318,    0,   97,
+            0,    0,    0,  331,  381,    0,    0,   -7,  -38,    0,
+          131,    0,    0,  158,   90,  162,    0,  159,   39, -100,
+          -83,  173,    0,    0,    0,    0,    0,    4,    0,    0,
+          522,  182,    0,  127,  169,    0,   99,    0,    0,    0,
+            0, -171,    0,    0,    0,    0,    0,    0,    0,  287,
+            0,    0,  126,    0,    0,    0,  144,  141,  188, -255,
+           93,    0,    0, -138,    0,  202,    0,    0,    0,  128,
+            0,    0,    0,    0,    0,    0,    0,  -82,  -74,    6,
+          143,  292,  168,    0,    0,  270,    0,  -31,  319,    0,
+          332,   20,    0,    0
     );
 
     protected array $gotoDefault = array(
-        -32768,  521,  754,    4,  755,  949,  830,  839,  585,  539,
-          715,  347,  634,  429, 1339,  925, 1155,  604,  858, 1282,
-         1288,  464,  861,  327,  741,  937,  908,  909,  406,  393,
-          874,  404,  658,  635,  502,  893,  460,  885,  494,  888,
-          459,  897,  162,  425,  518,  901,    3,  904,  567,  935,
-          988,  394,  912,  395,  686,  914,  588,  916,  917,  401,
-          407,  408, 1160,  596,  631,  929,  254,  590,  930,  392,
-          931,  939,  397,  399,  696,  474,  513,  507,  418, 1121,
-          591,  618,  655,  453,  481,  629,  641,  628,  488,  441,
-          424,  326,  972,  980,  495,  472,  994,  349, 1002,  749,
-         1168,  649,  497, 1010,  650, 1017, 1020,  540,  541,  486,
-         1032,  264, 1035,  498, 1044,   23,  676, 1049, 1050,  677,
-          651, 1072,  652,  678,  653, 1074,  471,  586, 1082,  461,
-         1090, 1328,  462, 1094,  262, 1097,  277,  353,  376,  442,
-         1104, 1105,    9, 1111,  706,  707,   19,  273,  517, 1139,
-          697, 1145,  272, 1148,  458, 1167,  457, 1237, 1239,  568,
-          499, 1257,  310, 1260,  689,  514, 1265,  454, 1330,  455,
-          542,  482,  334,  543, 1373,  305,  356,  331,  559,  311,
-          357,  544,  483, 1336, 1344,  328,   31, 1363, 1374,  601,
-          623
+        -32768,  533,  768,    7,  769,  964,  844,  853,  597,  551,
+          729,  356,  648,  439, 1367,  940, 1180,  617,  872, 1310,
+         1316,  475,  875,  336,  755,  952,  923,  924,  415,  402,
+          888,  413,  672,  649,  514,  908,  471,  900,  506,  903,
+          470,  912,  167,  435,  530,  916,    6,  919,  579,  950,
+         1004,  403,  927,  404,  700,  929,  601,  931,  932,  410,
+          416,  417, 1185,  609,  645,  944,  261,  603,  945,  401,
+          946,  954,  406,  408,  710,  486,  525,  519,  428, 1146,
+          604,  632,  669,  464,  493,  643,  655,  642,  500,  451,
+          434,  335,  988,  996,  507,  484, 1010,  358, 1018,  763,
+         1193,  663,  509, 1026,  664, 1033, 1036,  552,  553,  498,
+         1048,  270, 1051,  510, 1061,   26,  690, 1066, 1067,  691,
+          665, 1089,  666,  692,  667, 1091,  483,  599, 1194,  482,
+         1106, 1112,  472, 1115, 1356,  473, 1119,  269, 1122,  286,
+          362,  385,  452, 1129, 1130,   12, 1136,  720,  721,   25,
+          280,  529, 1164,  711, 1170,  279, 1173,  469, 1192,  468,
+         1265, 1267,  580,  511, 1285,  321, 1288,  703,  526, 1293,
+          465, 1358,  466,  554,  494,  343,  555, 1401,  314,  365,
+          340,  571,  322,  366,  556,  495, 1364, 1372,  337,   34,
+         1391, 1402,  614,  637
     );
 
     protected array $ruleToNonTerminal = array(
@@ -1046,35 +1112,36 @@ class Php8 extends \PhpParser\ParserAbst
            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,   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,
+            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,   25,   25,   50,   69,   69,   72,   72,   71,
-           70,   70,   63,   75,   75,   76,   76,   77,   77,   78,
-           78,   79,   79,   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,
-          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,   20,  127,  126,
-          126,  128,  128,  128,  128,   60,  129,  129,  130,   61,
-          132,  132,  133,  133,  134,  134,   86,  135,  135,  135,
-          135,  135,  135,  135,  135,  141,  141,  142,  142,  143,
-          143,  143,  143,  143,  144,  145,  145,  140,  140,  136,
-          136,  139,  139,  147,  147,  146,  146,  146,  146,  146,
-          146,  146,  146,  146,  146,  137,  148,  148,  150,  149,
-          149,  138,  138,  114,  114,  151,  151,  153,  153,  153,
-          152,  152,   62,  104,  154,  154,   56,   56,   42,   42,
+           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,
+           20,  128,  128,  128,  128,  129,  129,  129,  127,  126,
+          126,  131,  131,  131,  130,  130,   60,  132,  132,  133,
+           61,  135,  135,  136,  136,  137,  137,   86,  138,  138,
+          138,  138,  138,  138,  138,  138,  144,  144,  145,  145,
+          146,  146,  146,  146,  146,  147,  148,  148,  143,  143,
+          139,  139,  142,  142,  150,  150,  149,  149,  149,  149,
+          149,  149,  149,  149,  149,  149,  140,  151,  151,  153,
+          152,  152,  141,  141,  114,  114,  154,  154,  156,  156,
+          156,  155,  155,   62,  104,  157,  157,   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,
@@ -1084,20 +1151,21 @@ class Php8 extends \PhpParser\ParserAbst
            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,  161,  162,  162,  163,  155,  155,  160,  160,
-          164,  165,  165,  166,  167,  168,  168,  168,  168,   19,
-           19,   73,   73,   73,   73,  156,  156,  156,  156,  170,
-          170,  159,  159,  159,  157,  157,  176,  176,  176,  176,
-          176,  176,  176,  176,  176,  176,  177,  177,  177,  108,
-          179,  179,  179,  179,  158,  158,  158,  158,  158,  158,
-          158,  158,   59,   59,  173,  173,  173,  173,  173,  180,
-          180,  169,  169,  169,  169,  181,  181,  181,  181,  181,
-           74,   74,   66,   66,   66,   66,  131,  131,  131,  131,
-          184,  183,  172,  172,  172,  172,  172,  172,  171,  171,
-          171,  182,  182,  182,  182,  107,  178,  186,  186,  185,
-          185,  187,  187,  187,  187,  187,  187,  187,  187,  175,
-          175,  175,  175,  174,  189,  188,  188,  188,  188,  188,
-          188,  188,  188,  190,  190,  190,  190
+           42,   42,   42,   42,   42,   42,  164,  165,  165,  166,
+          158,  158,  163,  163,  167,  168,  168,  169,  170,  171,
+          171,  171,  171,   19,   19,   73,   73,   73,   73,  159,
+          159,  159,  159,  173,  173,  162,  162,  162,  160,  160,
+          179,  179,  179,  179,  179,  179,  179,  179,  179,  179,
+          180,  180,  180,  108,  182,  182,  182,  182,  161,  161,
+          161,  161,  161,  161,  161,  161,   59,   59,  176,  176,
+          176,  176,  176,  183,  183,  172,  172,  172,  172,  184,
+          184,  184,  184,  184,   74,   74,   66,   66,   66,   66,
+          134,  134,  134,  134,  187,  186,  175,  175,  175,  175,
+          175,  175,  174,  174,  174,  185,  185,  185,  185,  107,
+          181,  189,  189,  188,  188,  190,  190,  190,  190,  190,
+          190,  190,  190,  178,  178,  178,  178,  177,  192,  191,
+          191,  191,  191,  191,  191,  191,  191,  193,  193,  193,
+          193
     );
 
     protected array $ruleToLength = array(
@@ -1113,58 +1181,60 @@ class Php8 extends \PhpParser\ParserAbst
             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,    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,    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,
-            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,    3,    1,    1,
-            3,    1,    2,    2,    3,    2,    3,    1,    1,    2,
-            3,    1,    1,    3,    2,    0,    1,    5,    7,    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,    3,    5,    8,    1,    3,    3,
-            0,    2,    2,    2,    3,    1,    0,    1,    1,    3,
-            3,    3,    4,    4,    1,    1,    2,    3,    3,    3,
-            3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-            2,    2,    2,    2,    3,    3,    3,    3,    3,    3,
+            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,
+            3,    2,    4,    4,    3,    3,    1,    3,    1,    1,
+            3,    2,    2,    3,    1,    1,    2,    3,    1,    1,
+            2,    3,    1,    1,    3,    2,    0,    1,    5,    7,
+            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,    3,    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,    5,    4,    3,
-            4,    4,    2,    2,    4,    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,    1,    4,    4,
-            0,    1,    1,    1,    3,    3,    1,    4,    2,    2,
-            1,    3,    1,    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
+            3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+            3,    3,    3,    3,    2,    2,    2,    2,    3,    3,
+            3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+            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,    1,    4,    4,    0,    1,    1,    1,    3,    3,
+            1,    4,    2,    2,    1,    3,    1,    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 {
@@ -1367,270 +1437,271 @@ class Php8 extends \PhpParser\ParserAbst
             },
             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]));
+                 $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 = Stmt\Use_::TYPE_FUNCTION;
+                 $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_CONSTANT;
+                 $self->semValue = Stmt\Use_::TYPE_FUNCTION;
             },
             125 => 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]));
+                 $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]));
             },
-            127 => null,
-            128 => static function ($self, $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)];
             },
-            129 => static function ($self, $stackPos) {
+            130 => static function ($self, $stackPos) {
                  $self->semValue = array($self->semStack[$stackPos-(1-1)]);
             },
-            130 => null,
-            131 => static function ($self, $stackPos) {
+            131 => null,
+            132 => static function ($self, $stackPos) {
                  $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
             },
-            132 => static function ($self, $stackPos) {
+            133 => static function ($self, $stackPos) {
                  $self->semValue = array($self->semStack[$stackPos-(1-1)]);
             },
-            133 => null,
-            134 => static function ($self, $stackPos) {
+            134 => null,
+            135 => static function ($self, $stackPos) {
                  $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
             },
-            135 => static function ($self, $stackPos) {
+            136 => static function ($self, $stackPos) {
                  $self->semValue = array($self->semStack[$stackPos-(1-1)]);
             },
-            136 => static function ($self, $stackPos) {
+            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));
             },
-            137 => static function ($self, $stackPos) {
+            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));
             },
-            138 => static function ($self, $stackPos) {
+            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));
             },
-            139 => static function ($self, $stackPos) {
+            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));
             },
-            140 => static function ($self, $stackPos) {
+            141 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(1-1)]; $self->semValue->type = Stmt\Use_::TYPE_NORMAL;
             },
-            141 => static function ($self, $stackPos) {
+            142 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(2-2)]; $self->semValue->type = $self->semStack[$stackPos-(2-1)];
             },
-            142 => null,
-            143 => static function ($self, $stackPos) {
+            143 => null,
+            144 => static function ($self, $stackPos) {
                  $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
             },
-            144 => static function ($self, $stackPos) {
+            145 => static function ($self, $stackPos) {
                  $self->semValue = array($self->semStack[$stackPos-(1-1)]);
             },
-            145 => static function ($self, $stackPos) {
+            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]));
             },
-            146 => null,
-            147 => static function ($self, $stackPos) {
-                 $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
-            },
+            147 => null,
             148 => static function ($self, $stackPos) {
-                 $self->semValue = array($self->semStack[$stackPos-(1-1)]);
+                 $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
             },
             149 => 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]));
+                 $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) {
-                 if ($self->semStack[$stackPos-(2-2)] !== null) { $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; } $self->semValue = $self->semStack[$stackPos-(2-1)];;
+                 $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) {
-                 $self->semValue = array();
+                 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)];
             },
-            154 => null,
             155 => null,
             156 => null,
-            157 => static function ($self, $stackPos) {
+            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]));
             },
-            158 => static function ($self, $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]));
             },
-            159 => static function ($self, $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]));
             },
-            160 => static function ($self, $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]));
             },
-            161 => static function ($self, $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]));
             },
-            162 => static function ($self, $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]));
             },
-            163 => static function ($self, $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]));
             },
-            164 => static function ($self, $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]));
             },
-            165 => static function ($self, $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]));
             },
-            166 => static function ($self, $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]));
             },
-            167 => static function ($self, $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]));
             },
-            168 => static function ($self, $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]));
             },
-            169 => static function ($self, $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]));
             },
-            170 => static function ($self, $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]));
             },
-            171 => static function ($self, $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)));
 
             },
-            172 => static function ($self, $stackPos) {
+            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]));
             },
-            173 => static function ($self, $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]));
             },
-            174 => static function ($self, $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]));
             },
-            175 => static function ($self, $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]));
             },
-            176 => static function ($self, $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]));
             },
-            177 => static function ($self, $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]));
             },
-            178 => static function ($self, $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);
             },
-            179 => static function ($self, $stackPos) {
+            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]));
             },
-            180 => static function ($self, $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]));
             },
-            181 => static function ($self, $stackPos) {
+            182 => static function ($self, $stackPos) {
                  $self->semValue = null; /* means: no statement */
             },
-            182 => null,
-            183 => static function ($self, $stackPos) {
+            183 => null,
+            184 => static function ($self, $stackPos) {
                  $self->semValue = $self->maybeCreateNop($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]);
             },
-            184 => static function ($self, $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)]]; };
             },
-            185 => static function ($self, $stackPos) {
+            186 => static function ($self, $stackPos) {
                  $self->semValue = array();
             },
-            186 => static function ($self, $stackPos) {
+            187 => static function ($self, $stackPos) {
                  $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)];
             },
-            187 => static function ($self, $stackPos) {
+            188 => static function ($self, $stackPos) {
                  $self->semValue = array($self->semStack[$stackPos-(1-1)]);
             },
-            188 => static function ($self, $stackPos) {
+            189 => static function ($self, $stackPos) {
                  $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
             },
-            189 => static function ($self, $stackPos) {
+            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]));
             },
-            190 => static function ($self, $stackPos) {
+            191 => static function ($self, $stackPos) {
                  $self->semValue = null;
             },
-            191 => static function ($self, $stackPos) {
+            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]));
             },
-            192 => null,
-            193 => static function ($self, $stackPos) {
+            193 => null,
+            194 => static function ($self, $stackPos) {
                  $self->semValue = array($self->semStack[$stackPos-(1-1)]);
             },
-            194 => static function ($self, $stackPos) {
+            195 => static function ($self, $stackPos) {
                  $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
             },
-            195 => static function ($self, $stackPos) {
+            196 => static function ($self, $stackPos) {
                  $self->semValue = false;
             },
-            196 => static function ($self, $stackPos) {
+            197 => static function ($self, $stackPos) {
                  $self->semValue = true;
             },
-            197 => static function ($self, $stackPos) {
+            198 => static function ($self, $stackPos) {
                  $self->semValue = false;
             },
-            198 => static function ($self, $stackPos) {
+            199 => static function ($self, $stackPos) {
                  $self->semValue = true;
             },
-            199 => static function ($self, $stackPos) {
+            200 => static function ($self, $stackPos) {
                  $self->semValue = false;
             },
-            200 => static function ($self, $stackPos) {
+            201 => static function ($self, $stackPos) {
                  $self->semValue = true;
             },
-            201 => static function ($self, $stackPos) {
+            202 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(3-2)];
             },
-            202 => static function ($self, $stackPos) {
+            203 => static function ($self, $stackPos) {
                  $self->semValue = [];
             },
-            203 => null,
-            204 => static function ($self, $stackPos) {
-                 $self->semValue = new Node\Identifier($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
-            },
+            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 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]));
+                 $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 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]));
+                 $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));
             },
-            209 => static function ($self, $stackPos) {
+            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));
             },
-            210 => static function ($self, $stackPos) {
+            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));
             },
-            211 => static function ($self, $stackPos) {
+            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]));
             },
-            212 => static function ($self, $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));
             },
-            213 => static function ($self, $stackPos) {
-                 $self->semValue = null;
-            },
-            214 => static function ($self, $stackPos) {
-                 $self->semValue = $self->semStack[$stackPos-(2-2)];
-            },
             215 => static function ($self, $stackPos) {
                  $self->semValue = null;
             },
@@ -1638,30 +1709,30 @@ class Php8 extends \PhpParser\ParserAbst
                  $self->semValue = $self->semStack[$stackPos-(2-2)];
             },
             217 => static function ($self, $stackPos) {
-                 $self->semValue = 0;
+                 $self->semValue = null;
             },
-            218 => null,
-            219 => null,
-            220 => 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)];
+            218 => static function ($self, $stackPos) {
+                 $self->semValue = $self->semStack[$stackPos-(2-2)];
             },
-            221 => static function ($self, $stackPos) {
-                 $self->semValue = Modifiers::ABSTRACT;
+            219 => static function ($self, $stackPos) {
+                 $self->semValue = 0;
             },
+            220 => null,
+            221 => null,
             222 => static function ($self, $stackPos) {
-                 $self->semValue = Modifiers::FINAL;
+                 $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::READONLY;
+                 $self->semValue = Modifiers::ABSTRACT;
             },
             224 => static function ($self, $stackPos) {
-                 $self->semValue = null;
+                 $self->semValue = Modifiers::FINAL;
             },
             225 => static function ($self, $stackPos) {
-                 $self->semValue = $self->semStack[$stackPos-(2-2)];
+                 $self->semValue = Modifiers::READONLY;
             },
             226 => static function ($self, $stackPos) {
-                 $self->semValue = array();
+                 $self->semValue = null;
             },
             227 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(2-2)];
@@ -1672,232 +1743,232 @@ class Php8 extends \PhpParser\ParserAbst
             229 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(2-2)];
             },
-            230 => null,
+            230 => static function ($self, $stackPos) {
+                 $self->semValue = array();
+            },
             231 => static function ($self, $stackPos) {
-                 $self->semValue = array($self->semStack[$stackPos-(1-1)]);
+                 $self->semValue = $self->semStack[$stackPos-(2-2)];
             },
-            232 => static function ($self, $stackPos) {
-                 $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
+            232 => null,
+            233 => static function ($self, $stackPos) {
+                 $self->semValue = array($self->semStack[$stackPos-(1-1)]);
             },
-            233 => null,
             234 => static function ($self, $stackPos) {
-                 $self->semValue = $self->semStack[$stackPos-(4-2)];
+                 $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 => static function ($self, $stackPos) {
+            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)]]; };
             },
-            238 => static function ($self, $stackPos) {
+            240 => static function ($self, $stackPos) {
                  $self->semValue = null;
             },
-            239 => static function ($self, $stackPos) {
+            241 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(4-2)];
             },
-            240 => null,
-            241 => static function ($self, $stackPos) {
+            242 => null,
+            243 => static function ($self, $stackPos) {
                  $self->semValue = array($self->semStack[$stackPos-(1-1)]);
             },
-            242 => static function ($self, $stackPos) {
+            244 => static function ($self, $stackPos) {
                  $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
             },
-            243 => static function ($self, $stackPos) {
+            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]));
             },
-            244 => static function ($self, $stackPos) {
+            246 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(3-2)];
             },
-            245 => static function ($self, $stackPos) {
+            247 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(4-3)];
             },
-            246 => static function ($self, $stackPos) {
+            248 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(4-2)];
             },
-            247 => static function ($self, $stackPos) {
+            249 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(5-3)];
             },
-            248 => static function ($self, $stackPos) {
+            250 => static function ($self, $stackPos) {
                  $self->semValue = array();
             },
-            249 => static function ($self, $stackPos) {
+            251 => static function ($self, $stackPos) {
                  $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)];
             },
-            250 => static function ($self, $stackPos) {
+            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]));
             },
-            251 => static function ($self, $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]));
             },
-            252 => null,
-            253 => null,
-            254 => static function ($self, $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]));
             },
-            255 => static function ($self, $stackPos) {
+            257 => static function ($self, $stackPos) {
                  $self->semValue = [];
             },
-            256 => null,
-            257 => static function ($self, $stackPos) {
+            258 => null,
+            259 => static function ($self, $stackPos) {
                  $self->semValue = array($self->semStack[$stackPos-(1-1)]);
             },
-            258 => static function ($self, $stackPos) {
+            260 => static function ($self, $stackPos) {
                  $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
             },
-            259 => static function ($self, $stackPos) {
+            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]));
             },
-            260 => static function ($self, $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]));
             },
-            261 => static function ($self, $stackPos) {
+            263 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(1-1)];
             },
-            262 => static function ($self, $stackPos) {
+            264 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(4-2)];
             },
-            263 => static function ($self, $stackPos) {
+            265 => static function ($self, $stackPos) {
                  $self->semValue = array();
             },
-            264 => static function ($self, $stackPos) {
+            266 => static function ($self, $stackPos) {
                  $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)];
             },
-            265 => static function ($self, $stackPos) {
+            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]));
             },
-            266 => static function ($self, $stackPos) {
+            268 => static function ($self, $stackPos) {
                  $self->semValue = array();
             },
-            267 => static function ($self, $stackPos) {
+            269 => static function ($self, $stackPos) {
                  $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)];
             },
-            268 => static function ($self, $stackPos) {
+            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);
             },
-            269 => static function ($self, $stackPos) {
+            271 => static function ($self, $stackPos) {
                  $self->semValue = null;
             },
-            270 => static function ($self, $stackPos) {
+            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]));
             },
-            271 => static function ($self, $stackPos) {
+            273 => static function ($self, $stackPos) {
                  $self->semValue = null;
             },
-            272 => static function ($self, $stackPos) {
+            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);
             },
-            273 => static function ($self, $stackPos) {
+            275 => static function ($self, $stackPos) {
                  $self->semValue = array($self->semStack[$stackPos-(1-1)], false);
             },
-            274 => static function ($self, $stackPos) {
+            276 => static function ($self, $stackPos) {
                  $self->semValue = array($self->semStack[$stackPos-(2-2)], true);
             },
-            275 => static function ($self, $stackPos) {
+            277 => static function ($self, $stackPos) {
                  $self->semValue = array($self->semStack[$stackPos-(1-1)], false);
             },
-            276 => static function ($self, $stackPos) {
+            278 => static function ($self, $stackPos) {
                  $self->semValue = array($self->fixupArrayDestructuring($self->semStack[$stackPos-(1-1)]), false);
             },
-            277 => null,
-            278 => static function ($self, $stackPos) {
+            279 => null,
+            280 => static function ($self, $stackPos) {
                  $self->semValue = array();
             },
-            279 => static function ($self, $stackPos) {
+            281 => static function ($self, $stackPos) {
                  $self->semValue = array($self->semStack[$stackPos-(1-1)]);
             },
-            280 => static function ($self, $stackPos) {
+            282 => static function ($self, $stackPos) {
                  $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
             },
-            281 => static function ($self, $stackPos) {
+            283 => static function ($self, $stackPos) {
                  $self->semValue = 0;
             },
-            282 => static function ($self, $stackPos) {
+            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)];
             },
-            283 => static function ($self, $stackPos) {
+            285 => static function ($self, $stackPos) {
                  $self->semValue = Modifiers::PUBLIC;
             },
-            284 => static function ($self, $stackPos) {
+            286 => static function ($self, $stackPos) {
                  $self->semValue = Modifiers::PROTECTED;
             },
-            285 => static function ($self, $stackPos) {
+            287 => static function ($self, $stackPos) {
                  $self->semValue = Modifiers::PRIVATE;
             },
-            286 => static function ($self, $stackPos) {
+            288 => static function ($self, $stackPos) {
                  $self->semValue = Modifiers::PUBLIC_SET;
             },
-            287 => static function ($self, $stackPos) {
+            289 => static function ($self, $stackPos) {
                  $self->semValue = Modifiers::PROTECTED_SET;
             },
-            288 => static function ($self, $stackPos) {
+            290 => static function ($self, $stackPos) {
                  $self->semValue = Modifiers::PRIVATE_SET;
             },
-            289 => static function ($self, $stackPos) {
+            291 => static function ($self, $stackPos) {
                  $self->semValue = Modifiers::READONLY;
             },
-            290 => static function ($self, $stackPos) {
+            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);
             },
-            291 => static function ($self, $stackPos) {
+            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);
             },
-            292 => static function ($self, $stackPos) {
+            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)]);
             },
-            293 => null,
-            294 => static function ($self, $stackPos) {
+            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]));
             },
-            295 => static function ($self, $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]));
             },
-            296 => null,
-            297 => null,
-            298 => static function ($self, $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]));
             },
-            299 => static function ($self, $stackPos) {
+            302 => static function ($self, $stackPos) {
                  $self->semValue = $self->handleBuiltinTypes($self->semStack[$stackPos-(1-1)]);
             },
-            300 => static function ($self, $stackPos) {
+            303 => static function ($self, $stackPos) {
                  $self->semValue = new Node\Identifier('array', $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
             },
-            301 => static function ($self, $stackPos) {
+            304 => static function ($self, $stackPos) {
                  $self->semValue = new Node\Identifier('callable', $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
             },
-            302 => null,
-            303 => static function ($self, $stackPos) {
+            305 => null,
+            306 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(3-2)];
             },
-            304 => static function ($self, $stackPos) {
-                 $self->semValue = array($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)]);
-            },
-            305 => static function ($self, $stackPos) {
-                 $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
-            },
-            306 => null,
             307 => static function ($self, $stackPos) {
-                 $self->semValue = $self->semStack[$stackPos-(3-2)];
-            },
-            308 => static function ($self, $stackPos) {
                  $self->semValue = array($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)]);
             },
-            309 => static function ($self, $stackPos) {
+            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 = array($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)]);
+                 $self->semValue = $self->semStack[$stackPos-(3-2)];
             },
             311 => static function ($self, $stackPos) {
-                 $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
+                 $self->semValue = array($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)]);
             },
             312 => static function ($self, $stackPos) {
-                 $self->semValue = new Node\IntersectionType($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$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)]);
@@ -1908,883 +1979,931 @@ class Php8 extends \PhpParser\ParserAbst
             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 => null,
+            316 => static function ($self, $stackPos) {
+                 $self->semValue = array($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)]);
+            },
             317 => static function ($self, $stackPos) {
-                 $self->semValue = new Node\NullableType($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$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\UnionType($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$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 = null;
+                 $self->semValue = new Node\NullableType($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
             },
-            321 => null,
-            322 => static function ($self, $stackPos) {
-                 $self->semValue = null;
+            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 = $self->semStack[$stackPos-(2-2)];
-            },
-            324 => static function ($self, $stackPos) {
                  $self->semValue = null;
             },
+            324 => null,
             325 => static function ($self, $stackPos) {
-                 $self->semValue = array();
+                 $self->semValue = null;
             },
             326 => static function ($self, $stackPos) {
-                 $self->semValue = $self->semStack[$stackPos-(4-2)];
+                 $self->semValue = $self->semStack[$stackPos-(2-2)];
             },
             327 => static function ($self, $stackPos) {
-                 $self->semValue = array($self->semStack[$stackPos-(3-2)]);
+                 $self->semValue = null;
             },
             328 => static function ($self, $stackPos) {
-                 $self->semValue = new Node\VariadicPlaceholder($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
+                 $self->semValue = array();
             },
             329 => static function ($self, $stackPos) {
-                 $self->semValue = array($self->semStack[$stackPos-(1-1)]);
+                 $self->semValue = $self->semStack[$stackPos-(4-2)];
             },
             330 => static function ($self, $stackPos) {
-                 $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
+                 $self->semValue = array($self->semStack[$stackPos-(3-2)]);
             },
             331 => 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]));
+                 $self->semValue = array();
             },
             332 => 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]));
+                 $self->semValue = $self->semStack[$stackPos-(4-2)];
             },
             333 => 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]));
+                 $self->semValue = array(new Node\Arg($self->semStack[$stackPos-(4-2)], false, false, $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos])));
             },
             334 => 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)]);
+                 $self->semValue = array($self->semStack[$stackPos-(3-2)]);
+            },
+            335 => 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)]);
             },
-            335 => null,
             336 => static function ($self, $stackPos) {
-                 $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
+                 $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\VariadicPlaceholder($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
+            },
+            339 => static function ($self, $stackPos) {
                  $self->semValue = array($self->semStack[$stackPos-(1-1)]);
             },
-            338 => null,
-            339 => null,
             340 => static function ($self, $stackPos) {
                  $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
             },
             341 => static function ($self, $stackPos) {
-                 $self->semValue = array($self->semStack[$stackPos-(1-1)]);
+                 $self->semValue = new Node\Arg($self->semStack[$stackPos-(2-2)], true, false, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
             },
             342 => 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]));
+                 $self->semValue = new Node\Arg($self->semStack[$stackPos-(2-2)], false, true, $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
             },
             343 => 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]));
+                 $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)]);
             },
             344 => 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)]; }
+                 $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();
             },
-            346 => static function ($self, $stackPos) {
+            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)];
             },
-            347 => static function ($self, $stackPos) {
+            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)]);
             },
-            348 => static function ($self, $stackPos) {
+            359 => static function ($self, $stackPos) {
                  $self->semValue = new Stmt\Property($self->semStack[$stackPos-(7-2)], $self->semStack[$stackPos-(7-4)], $self->getAttributes($self->tokenStartStack[$stackPos-(7-1)], $self->tokenEndStack[$stackPos]), $self->semStack[$stackPos-(7-3)], $self->semStack[$stackPos-(7-1)], $self->semStack[$stackPos-(7-6)]);
             $self->checkPropertyHooksForMultiProperty($self->semValue, $stackPos-(7-5));
             $self->checkEmptyPropertyHookList($self->semStack[$stackPos-(7-6)], $stackPos-(7-5));
             $self->addPropertyNameToHooks($self->semValue);
             },
-            349 => static function ($self, $stackPos) {
+            360 => 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));
             },
-            350 => static function ($self, $stackPos) {
+            361 => 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));
             },
-            351 => static function ($self, $stackPos) {
+            362 => 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));
             },
-            352 => static function ($self, $stackPos) {
+            363 => 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]));
             },
-            353 => static function ($self, $stackPos) {
+            364 => 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]));
             },
-            354 => static function ($self, $stackPos) {
+            365 => static function ($self, $stackPos) {
                  $self->semValue = null; /* will be skipped */
             },
-            355 => static function ($self, $stackPos) {
+            366 => static function ($self, $stackPos) {
                  $self->semValue = array();
             },
-            356 => static function ($self, $stackPos) {
+            367 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(3-2)];
             },
-            357 => static function ($self, $stackPos) {
+            368 => static function ($self, $stackPos) {
                  $self->semValue = array();
             },
-            358 => static function ($self, $stackPos) {
+            369 => static function ($self, $stackPos) {
                  $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)];
             },
-            359 => static function ($self, $stackPos) {
+            370 => 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]));
             },
-            360 => static function ($self, $stackPos) {
+            371 => 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]));
             },
-            361 => static function ($self, $stackPos) {
+            372 => 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]));
             },
-            362 => static function ($self, $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]));
             },
-            363 => static function ($self, $stackPos) {
+            374 => 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]));
             },
-            364 => static function ($self, $stackPos) {
+            375 => static function ($self, $stackPos) {
                  $self->semValue = array($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)]);
             },
-            365 => null,
-            366 => static function ($self, $stackPos) {
+            376 => null,
+            377 => static function ($self, $stackPos) {
                  $self->semValue = array(null, $self->semStack[$stackPos-(1-1)]);
             },
-            367 => static function ($self, $stackPos) {
+            378 => static function ($self, $stackPos) {
                  $self->semValue = null;
             },
-            368 => null,
-            369 => null,
-            370 => static function ($self, $stackPos) {
+            379 => null,
+            380 => null,
+            381 => static function ($self, $stackPos) {
                  $self->semValue = 0;
             },
-            371 => static function ($self, $stackPos) {
+            382 => static function ($self, $stackPos) {
                  $self->semValue = 0;
             },
-            372 => null,
-            373 => null,
-            374 => static function ($self, $stackPos) {
+            383 => null,
+            384 => null,
+            385 => 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)];
             },
-            375 => static function ($self, $stackPos) {
+            386 => static function ($self, $stackPos) {
                  $self->semValue = Modifiers::PUBLIC;
             },
-            376 => static function ($self, $stackPos) {
+            387 => static function ($self, $stackPos) {
                  $self->semValue = Modifiers::PROTECTED;
             },
-            377 => static function ($self, $stackPos) {
+            388 => static function ($self, $stackPos) {
                  $self->semValue = Modifiers::PRIVATE;
             },
-            378 => static function ($self, $stackPos) {
+            389 => static function ($self, $stackPos) {
                  $self->semValue = Modifiers::PUBLIC_SET;
             },
-            379 => static function ($self, $stackPos) {
+            390 => static function ($self, $stackPos) {
                  $self->semValue = Modifiers::PROTECTED_SET;
             },
-            380 => static function ($self, $stackPos) {
+            391 => static function ($self, $stackPos) {
                  $self->semValue = Modifiers::PRIVATE_SET;
             },
-            381 => static function ($self, $stackPos) {
+            392 => static function ($self, $stackPos) {
                  $self->semValue = Modifiers::STATIC;
             },
-            382 => static function ($self, $stackPos) {
+            393 => static function ($self, $stackPos) {
                  $self->semValue = Modifiers::ABSTRACT;
             },
-            383 => static function ($self, $stackPos) {
+            394 => static function ($self, $stackPos) {
                  $self->semValue = Modifiers::FINAL;
             },
-            384 => static function ($self, $stackPos) {
+            395 => static function ($self, $stackPos) {
                  $self->semValue = Modifiers::READONLY;
             },
-            385 => null,
-            386 => static function ($self, $stackPos) {
+            396 => null,
+            397 => static function ($self, $stackPos) {
                  $self->semValue = array($self->semStack[$stackPos-(1-1)]);
             },
-            387 => static function ($self, $stackPos) {
+            398 => static function ($self, $stackPos) {
                  $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
             },
-            388 => static function ($self, $stackPos) {
+            399 => 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]));
             },
-            389 => static function ($self, $stackPos) {
+            400 => 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]));
             },
-            390 => static function ($self, $stackPos) {
+            401 => 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]));
             },
-            391 => static function ($self, $stackPos) {
+            402 => static function ($self, $stackPos) {
                  $self->semValue = [];
             },
-            392 => static function ($self, $stackPos) {
+            403 => static function ($self, $stackPos) {
                  $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)];
             },
-            393 => static function ($self, $stackPos) {
+            404 => static function ($self, $stackPos) {
                  $self->semValue = [];
             },
-            394 => static function ($self, $stackPos) {
+            405 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(3-2)]; $self->checkEmptyPropertyHookList($self->semStack[$stackPos-(3-2)], $stackPos-(3-1));
             },
-            395 => static function ($self, $stackPos) {
+            406 => 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);
             },
-            396 => static function ($self, $stackPos) {
+            407 => 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));
             },
-            397 => static function ($self, $stackPos) {
+            408 => static function ($self, $stackPos) {
                  $self->semValue = null;
             },
-            398 => static function ($self, $stackPos) {
+            409 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(3-2)];
             },
-            399 => static function ($self, $stackPos) {
+            410 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(3-2)];
             },
-            400 => static function ($self, $stackPos) {
+            411 => static function ($self, $stackPos) {
                  $self->semValue = 0;
             },
-            401 => static function ($self, $stackPos) {
+            412 => 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)];
             },
-            402 => null,
-            403 => null,
-            404 => static function ($self, $stackPos) {
+            413 => null,
+            414 => null,
+            415 => static function ($self, $stackPos) {
                  $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
             },
-            405 => static function ($self, $stackPos) {
+            416 => static function ($self, $stackPos) {
                  $self->semValue = array($self->semStack[$stackPos-(1-1)]);
             },
-            406 => static function ($self, $stackPos) {
+            417 => static function ($self, $stackPos) {
                  $self->semValue = array();
             },
-            407 => null,
-            408 => null,
-            409 => static function ($self, $stackPos) {
+            418 => null,
+            419 => null,
+            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]));
             },
-            410 => static function ($self, $stackPos) {
+            421 => 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]));
             },
-            411 => static function ($self, $stackPos) {
+            422 => 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]));
             },
-            412 => static function ($self, $stackPos) {
+            423 => 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]));
             },
-            413 => static function ($self, $stackPos) {
+            424 => 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])));
             }
 
             },
-            414 => null,
-            415 => null,
-            416 => static function ($self, $stackPos) {
+            425 => null,
+            426 => null,
+            427 => 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]));
+            },
+            428 => static function ($self, $stackPos) {
                  $self->semValue = new Expr\Clone_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
             },
-            417 => static function ($self, $stackPos) {
+            429 => 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]));
             },
-            418 => static function ($self, $stackPos) {
+            430 => 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]));
             },
-            419 => static function ($self, $stackPos) {
+            431 => 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]));
             },
-            420 => static function ($self, $stackPos) {
+            432 => 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]));
             },
-            421 => static function ($self, $stackPos) {
+            433 => 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]));
             },
-            422 => static function ($self, $stackPos) {
+            434 => 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]));
             },
-            423 => static function ($self, $stackPos) {
+            435 => 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]));
             },
-            424 => static function ($self, $stackPos) {
+            436 => 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]));
             },
-            425 => static function ($self, $stackPos) {
+            437 => 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]));
             },
-            426 => static function ($self, $stackPos) {
+            438 => 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]));
             },
-            427 => static function ($self, $stackPos) {
+            439 => 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]));
             },
-            428 => static function ($self, $stackPos) {
+            440 => 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]));
             },
-            429 => static function ($self, $stackPos) {
+            441 => 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]));
             },
-            430 => static function ($self, $stackPos) {
+            442 => static function ($self, $stackPos) {
                  $self->semValue = new Expr\PostInc($self->semStack[$stackPos-(2-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
             },
-            431 => static function ($self, $stackPos) {
+            443 => static function ($self, $stackPos) {
                  $self->semValue = new Expr\PreInc($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
             },
-            432 => static function ($self, $stackPos) {
+            444 => static function ($self, $stackPos) {
                  $self->semValue = new Expr\PostDec($self->semStack[$stackPos-(2-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
             },
-            433 => static function ($self, $stackPos) {
+            445 => static function ($self, $stackPos) {
                  $self->semValue = new Expr\PreDec($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
             },
-            434 => static function ($self, $stackPos) {
+            446 => 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]));
             },
-            435 => static function ($self, $stackPos) {
+            447 => 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]));
             },
-            436 => static function ($self, $stackPos) {
+            448 => 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]));
             },
-            437 => static function ($self, $stackPos) {
+            449 => 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]));
             },
-            438 => static function ($self, $stackPos) {
+            450 => 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]));
             },
-            439 => static function ($self, $stackPos) {
+            451 => 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]));
             },
-            440 => static function ($self, $stackPos) {
+            452 => 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]));
             },
-            441 => static function ($self, $stackPos) {
+            453 => 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]));
             },
-            442 => static function ($self, $stackPos) {
+            454 => 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]));
             },
-            443 => static function ($self, $stackPos) {
+            455 => 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]));
             },
-            444 => static function ($self, $stackPos) {
+            456 => 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]));
             },
-            445 => static function ($self, $stackPos) {
+            457 => 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]));
             },
-            446 => static function ($self, $stackPos) {
+            458 => 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]));
             },
-            447 => static function ($self, $stackPos) {
+            459 => 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]));
             },
-            448 => static function ($self, $stackPos) {
+            460 => 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]));
             },
-            449 => static function ($self, $stackPos) {
+            461 => 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]));
             },
-            450 => static function ($self, $stackPos) {
+            462 => 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]));
             },
-            451 => static function ($self, $stackPos) {
+            463 => 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]));
             },
-            452 => static function ($self, $stackPos) {
+            464 => static function ($self, $stackPos) {
                  $self->semValue = new Expr\UnaryPlus($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
             },
-            453 => static function ($self, $stackPos) {
+            465 => static function ($self, $stackPos) {
                  $self->semValue = new Expr\UnaryMinus($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
             },
-            454 => static function ($self, $stackPos) {
+            466 => static function ($self, $stackPos) {
                  $self->semValue = new Expr\BooleanNot($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
             },
-            455 => static function ($self, $stackPos) {
+            467 => static function ($self, $stackPos) {
                  $self->semValue = new Expr\BitwiseNot($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
             },
-            456 => static function ($self, $stackPos) {
+            468 => 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]));
             },
-            457 => static function ($self, $stackPos) {
+            469 => 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]));
             },
-            458 => static function ($self, $stackPos) {
+            470 => 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]));
             },
-            459 => static function ($self, $stackPos) {
+            471 => 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]));
             },
-            460 => static function ($self, $stackPos) {
+            472 => 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]));
             },
-            461 => static function ($self, $stackPos) {
+            473 => 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]));
             },
-            462 => static function ($self, $stackPos) {
+            474 => 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]));
             },
-            463 => static function ($self, $stackPos) {
+            475 => 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]));
             },
-            464 => static function ($self, $stackPos) {
+            476 => 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]));
             },
-            465 => static function ($self, $stackPos) {
+            477 => static function ($self, $stackPos) {
+                 $self->semValue = new Expr\BinaryOp\Pipe($self->semStack[$stackPos-(3-1)], $self->semStack[$stackPos-(3-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
+            },
+            478 => 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]));
             },
-            466 => static function ($self, $stackPos) {
+            479 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(3-2)];
             },
-            467 => static function ($self, $stackPos) {
+            480 => 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]));
             },
-            468 => static function ($self, $stackPos) {
+            481 => 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]));
             },
-            469 => static function ($self, $stackPos) {
+            482 => 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]));
             },
-            470 => static function ($self, $stackPos) {
+            483 => static function ($self, $stackPos) {
                  $self->semValue = new Expr\Isset_($self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]));
             },
-            471 => static function ($self, $stackPos) {
+            484 => static function ($self, $stackPos) {
                  $self->semValue = new Expr\Empty_($self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]));
             },
-            472 => static function ($self, $stackPos) {
+            485 => 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]));
             },
-            473 => static function ($self, $stackPos) {
+            486 => 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]));
             },
-            474 => static function ($self, $stackPos) {
+            487 => static function ($self, $stackPos) {
                  $self->semValue = new Expr\Eval_($self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]));
             },
-            475 => static function ($self, $stackPos) {
+            488 => 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]));
             },
-            476 => static function ($self, $stackPos) {
+            489 => 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]));
             },
-            477 => static function ($self, $stackPos) {
-                 $self->semValue = new Expr\Cast\Int_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
+            490 => 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);
             },
-            478 => static function ($self, $stackPos) {
+            491 => 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);
             },
-            479 => static function ($self, $stackPos) {
-                 $self->semValue = new Expr\Cast\String_($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->getStringCastKind($self->semStack[$stackPos-(2-1)]);
+            $self->semValue = new Expr\Cast\String_($self->semStack[$stackPos-(2-2)], $attrs);
             },
-            480 => static function ($self, $stackPos) {
+            493 => 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]));
             },
-            481 => static function ($self, $stackPos) {
+            494 => 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]));
             },
-            482 => static function ($self, $stackPos) {
-                 $self->semValue = new Expr\Cast\Bool_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
+            495 => 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);
             },
-            483 => static function ($self, $stackPos) {
+            496 => 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]));
             },
-            484 => static function ($self, $stackPos) {
+            497 => 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]));
+            },
+            498 => 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]));
             },
-            485 => static function ($self, $stackPos) {
+            499 => static function ($self, $stackPos) {
                  $self->semValue = new Expr\ErrorSuppress($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
             },
-            486 => null,
-            487 => static function ($self, $stackPos) {
+            500 => null,
+            501 => static function ($self, $stackPos) {
                  $self->semValue = new Expr\ShellExec($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
             },
-            488 => static function ($self, $stackPos) {
+            502 => static function ($self, $stackPos) {
                  $self->semValue = new Expr\Print_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
             },
-            489 => static function ($self, $stackPos) {
+            503 => static function ($self, $stackPos) {
                  $self->semValue = new Expr\Yield_(null, null, $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
             },
-            490 => static function ($self, $stackPos) {
+            504 => 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]));
             },
-            491 => static function ($self, $stackPos) {
+            505 => 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]));
             },
-            492 => static function ($self, $stackPos) {
+            506 => static function ($self, $stackPos) {
                  $self->semValue = new Expr\YieldFrom($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
             },
-            493 => static function ($self, $stackPos) {
+            507 => static function ($self, $stackPos) {
                  $self->semValue = new Expr\Throw_($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
             },
-            494 => static function ($self, $stackPos) {
+            508 => 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]));
             },
-            495 => static function ($self, $stackPos) {
+            509 => 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]));
             },
-            496 => static function ($self, $stackPos) {
+            510 => 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]));
             },
-            497 => static function ($self, $stackPos) {
+            511 => 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]));
             },
-            498 => static function ($self, $stackPos) {
+            512 => 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]));
             },
-            499 => static function ($self, $stackPos) {
+            513 => 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]));
             },
-            500 => static function ($self, $stackPos) {
+            514 => 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]));
             },
-            501 => static function ($self, $stackPos) {
+            515 => 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]));
             },
-            502 => static function ($self, $stackPos) {
+            516 => 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);
             },
-            503 => static function ($self, $stackPos) {
+            517 => 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]));
             },
-            504 => static function ($self, $stackPos) {
+            518 => 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]));
             },
-            505 => static function ($self, $stackPos) {
+            519 => static function ($self, $stackPos) {
                  $self->semValue = new Expr\New_($self->semStack[$stackPos-(2-2)], [], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
             },
-            506 => null,
-            507 => null,
-            508 => static function ($self, $stackPos) {
+            520 => null,
+            521 => null,
+            522 => static function ($self, $stackPos) {
                  $self->semValue = array();
             },
-            509 => static function ($self, $stackPos) {
+            523 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(4-3)];
             },
-            510 => null,
-            511 => static function ($self, $stackPos) {
+            524 => null,
+            525 => static function ($self, $stackPos) {
                  $self->semValue = array($self->semStack[$stackPos-(1-1)]);
             },
-            512 => static function ($self, $stackPos) {
+            526 => static function ($self, $stackPos) {
                  $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
             },
-            513 => static function ($self, $stackPos) {
+            527 => 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]));
             },
-            514 => static function ($self, $stackPos) {
+            528 => static function ($self, $stackPos) {
                  $self->semValue = new Name($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
             },
-            515 => static function ($self, $stackPos) {
+            529 => 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]));
             },
-            516 => static function ($self, $stackPos) {
+            530 => 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]));
             },
-            517 => static function ($self, $stackPos) {
+            531 => 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]));
             },
-            518 => static function ($self, $stackPos) {
+            532 => 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]));
             },
-            519 => static function ($self, $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]));
             },
-            520 => null,
-            521 => static function ($self, $stackPos) {
+            534 => null,
+            535 => static function ($self, $stackPos) {
                  $self->semValue = new Name($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
             },
-            522 => static function ($self, $stackPos) {
+            536 => static function ($self, $stackPos) {
                  $self->semValue = new Name($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
             },
-            523 => static function ($self, $stackPos) {
+            537 => 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]));
             },
-            524 => static function ($self, $stackPos) {
+            538 => 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]));
             },
-            525 => null,
-            526 => null,
-            527 => static function ($self, $stackPos) {
+            539 => null,
+            540 => null,
+            541 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(3-2)];
             },
-            528 => static function ($self, $stackPos) {
+            542 => static function ($self, $stackPos) {
                  $self->semValue = new Expr\Error($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); $self->errorState = 2;
             },
-            529 => null,
-            530 => null,
-            531 => static function ($self, $stackPos) {
+            543 => null,
+            544 => null,
+            545 => static function ($self, $stackPos) {
                  $self->semValue = array();
             },
-            532 => static function ($self, $stackPos) {
+            546 => 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()); } };
             },
-            533 => static function ($self, $stackPos) {
+            547 => 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)];
             },
-            534 => static function ($self, $stackPos) {
+            548 => static function ($self, $stackPos) {
                  $self->semValue = array();
             },
-            535 => null,
-            536 => static function ($self, $stackPos) {
+            549 => null,
+            550 => static function ($self, $stackPos) {
                  $self->semValue = new Expr\ConstFetch($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
             },
-            537 => static function ($self, $stackPos) {
+            551 => static function ($self, $stackPos) {
                  $self->semValue = new Scalar\MagicConst\Line($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
             },
-            538 => static function ($self, $stackPos) {
+            552 => static function ($self, $stackPos) {
                  $self->semValue = new Scalar\MagicConst\File($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
             },
-            539 => static function ($self, $stackPos) {
+            553 => static function ($self, $stackPos) {
                  $self->semValue = new Scalar\MagicConst\Dir($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
             },
-            540 => static function ($self, $stackPos) {
+            554 => static function ($self, $stackPos) {
                  $self->semValue = new Scalar\MagicConst\Class_($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
             },
-            541 => static function ($self, $stackPos) {
+            555 => static function ($self, $stackPos) {
                  $self->semValue = new Scalar\MagicConst\Trait_($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
             },
-            542 => static function ($self, $stackPos) {
+            556 => static function ($self, $stackPos) {
                  $self->semValue = new Scalar\MagicConst\Method($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
             },
-            543 => static function ($self, $stackPos) {
+            557 => static function ($self, $stackPos) {
                  $self->semValue = new Scalar\MagicConst\Function_($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
             },
-            544 => static function ($self, $stackPos) {
+            558 => static function ($self, $stackPos) {
                  $self->semValue = new Scalar\MagicConst\Namespace_($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
             },
-            545 => static function ($self, $stackPos) {
+            559 => static function ($self, $stackPos) {
                  $self->semValue = new Scalar\MagicConst\Property($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
             },
-            546 => static function ($self, $stackPos) {
+            560 => 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]));
             },
-            547 => static function ($self, $stackPos) {
+            561 => 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]));
             },
-            548 => static function ($self, $stackPos) {
+            562 => 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;
             },
-            549 => static function ($self, $stackPos) {
+            563 => 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);
             },
-            550 => static function ($self, $stackPos) {
+            564 => 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->attach($self->semValue);
+            $self->createdArrays->offsetSet($self->semValue);
             },
-            551 => static function ($self, $stackPos) {
-                 $self->semValue = $self->semStack[$stackPos-(1-1)]; $self->createdArrays->attach($self->semValue);
+            565 => static function ($self, $stackPos) {
+                 $self->semValue = $self->semStack[$stackPos-(1-1)]; $self->createdArrays->offsetSet($self->semValue);
             },
-            552 => static function ($self, $stackPos) {
+            566 => 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());
             },
-            553 => static function ($self, $stackPos) {
+            567 => 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);
             },
-            554 => static function ($self, $stackPos) {
+            568 => 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());
             },
-            555 => static function ($self, $stackPos) {
+            569 => static function ($self, $stackPos) {
                  $self->semValue = Scalar\Float_::fromString($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
             },
-            556 => null,
-            557 => null,
-            558 => null,
-            559 => static function ($self, $stackPos) {
+            570 => null,
+            571 => null,
+            572 => null,
+            573 => 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);
             },
-            560 => static function ($self, $stackPos) {
+            574 => 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);
             },
-            561 => static function ($self, $stackPos) {
+            575 => 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);
             },
-            562 => static function ($self, $stackPos) {
+            576 => static function ($self, $stackPos) {
                  $self->semValue = null;
             },
-            563 => null,
-            564 => null,
-            565 => static function ($self, $stackPos) {
+            577 => null,
+            578 => null,
+            579 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(3-2)];
             },
-            566 => null,
-            567 => null,
-            568 => null,
-            569 => null,
-            570 => null,
-            571 => null,
-            572 => static function ($self, $stackPos) {
+            580 => null,
+            581 => null,
+            582 => null,
+            583 => null,
+            584 => null,
+            585 => null,
+            586 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(3-2)];
             },
-            573 => null,
-            574 => null,
-            575 => null,
-            576 => static function ($self, $stackPos) {
+            587 => null,
+            588 => null,
+            589 => null,
+            590 => 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]));
             },
-            577 => null,
-            578 => static function ($self, $stackPos) {
+            591 => null,
+            592 => 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]));
             },
-            579 => static function ($self, $stackPos) {
+            593 => 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]));
             },
-            580 => static function ($self, $stackPos) {
+            594 => static function ($self, $stackPos) {
                  $self->semValue = null;
             },
-            581 => null,
-            582 => null,
-            583 => null,
-            584 => static function ($self, $stackPos) {
+            595 => null,
+            596 => null,
+            597 => null,
+            598 => 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]));
             },
-            585 => static function ($self, $stackPos) {
+            599 => 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]));
             },
-            586 => null,
-            587 => static function ($self, $stackPos) {
+            600 => null,
+            601 => static function ($self, $stackPos) {
                  $self->semValue = new Expr\Variable($self->semStack[$stackPos-(4-3)], $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]));
             },
-            588 => static function ($self, $stackPos) {
+            602 => static function ($self, $stackPos) {
                  $self->semValue = new Expr\Variable($self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
             },
-            589 => static function ($self, $stackPos) {
+            603 => 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;
             },
-            590 => static function ($self, $stackPos) {
+            604 => 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;
             },
-            591 => static function ($self, $stackPos) {
+            605 => 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]));
             },
-            592 => null,
-            593 => static function ($self, $stackPos) {
+            606 => null,
+            607 => 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]));
             },
-            594 => static function ($self, $stackPos) {
+            608 => 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]));
             },
-            595 => static function ($self, $stackPos) {
+            609 => 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]));
             },
-            596 => static function ($self, $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]));
             },
-            597 => static function ($self, $stackPos) {
+            611 => 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]));
             },
-            598 => null,
-            599 => static function ($self, $stackPos) {
+            612 => null,
+            613 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(3-2)];
             },
-            600 => null,
-            601 => null,
-            602 => static function ($self, $stackPos) {
+            614 => null,
+            615 => null,
+            616 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(3-2)];
             },
-            603 => null,
-            604 => static function ($self, $stackPos) {
+            617 => null,
+            618 => static function ($self, $stackPos) {
                  $self->semValue = new Expr\Error($self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos])); $self->errorState = 2;
             },
-            605 => static function ($self, $stackPos) {
+            619 => 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);
             },
-            606 => static function ($self, $stackPos) {
+            620 => 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);
             },
-            607 => null,
-            608 => static function ($self, $stackPos) {
+            621 => null,
+            622 => static function ($self, $stackPos) {
                  /* do nothing -- prevent default action of $$=$self->semStack[$1]. See $551. */
             },
-            609 => static function ($self, $stackPos) {
+            623 => static function ($self, $stackPos) {
                  $self->semStack[$stackPos-(3-1)][] = $self->semStack[$stackPos-(3-3)]; $self->semValue = $self->semStack[$stackPos-(3-1)];
             },
-            610 => static function ($self, $stackPos) {
+            624 => static function ($self, $stackPos) {
                  $self->semValue = array($self->semStack[$stackPos-(1-1)]);
             },
-            611 => static function ($self, $stackPos) {
+            625 => 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]));
             },
-            612 => static function ($self, $stackPos) {
+            626 => 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]));
             },
-            613 => static function ($self, $stackPos) {
+            627 => 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]));
             },
-            614 => static function ($self, $stackPos) {
+            628 => 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]));
             },
-            615 => static function ($self, $stackPos) {
+            629 => 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]));
             },
-            616 => static function ($self, $stackPos) {
+            630 => 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]));
             },
-            617 => static function ($self, $stackPos) {
+            631 => 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);
             },
-            618 => static function ($self, $stackPos) {
+            632 => 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);
             },
-            619 => static function ($self, $stackPos) {
+            633 => static function ($self, $stackPos) {
                  $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)];
             },
-            620 => static function ($self, $stackPos) {
+            634 => static function ($self, $stackPos) {
                  $self->semStack[$stackPos-(2-1)][] = $self->semStack[$stackPos-(2-2)]; $self->semValue = $self->semStack[$stackPos-(2-1)];
             },
-            621 => static function ($self, $stackPos) {
+            635 => static function ($self, $stackPos) {
                  $self->semValue = array($self->semStack[$stackPos-(1-1)]);
             },
-            622 => static function ($self, $stackPos) {
+            636 => static function ($self, $stackPos) {
                  $self->semValue = array($self->semStack[$stackPos-(2-1)], $self->semStack[$stackPos-(2-2)]);
             },
-            623 => static function ($self, $stackPos) {
+            637 => 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);
             },
-            624 => static function ($self, $stackPos) {
+            638 => static function ($self, $stackPos) {
                  $self->semValue = new Expr\Variable($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
             },
-            625 => null,
-            626 => static function ($self, $stackPos) {
+            639 => null,
+            640 => 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]));
             },
-            627 => static function ($self, $stackPos) {
+            641 => 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]));
             },
-            628 => static function ($self, $stackPos) {
+            642 => 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]));
             },
-            629 => static function ($self, $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]));
             },
-            630 => static function ($self, $stackPos) {
+            644 => static function ($self, $stackPos) {
                  $self->semValue = new Expr\Variable($self->semStack[$stackPos-(3-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]));
             },
-            631 => static function ($self, $stackPos) {
+            645 => 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]));
             },
-            632 => static function ($self, $stackPos) {
+            646 => static function ($self, $stackPos) {
                  $self->semValue = $self->semStack[$stackPos-(3-2)];
             },
-            633 => static function ($self, $stackPos) {
+            647 => static function ($self, $stackPos) {
                  $self->semValue = new Scalar\String_($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
             },
-            634 => static function ($self, $stackPos) {
+            648 => static function ($self, $stackPos) {
                  $self->semValue = $self->parseNumString($self->semStack[$stackPos-(1-1)], $self->getAttributes($self->tokenStartStack[$stackPos-(1-1)], $self->tokenEndStack[$stackPos]));
             },
-            635 => static function ($self, $stackPos) {
+            649 => static function ($self, $stackPos) {
                  $self->semValue = $self->parseNumString('-' . $self->semStack[$stackPos-(2-2)], $self->getAttributes($self->tokenStartStack[$stackPos-(2-1)], $self->tokenEndStack[$stackPos]));
             },
-            636 => null,
+            650 => null,
         ];
     }
 }
diff -pruN 5.4.0-3/lib/PhpParser/ParserAbstract.php 5.6.1-2/lib/PhpParser/ParserAbstract.php
--- 5.4.0-3/lib/PhpParser/ParserAbstract.php	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/lib/PhpParser/ParserAbstract.php	2025-08-13 20:13:15.000000000 +0000
@@ -23,6 +23,7 @@ use PhpParser\Node\Stmt;
 use PhpParser\Node\Stmt\Class_;
 use PhpParser\Node\Stmt\ClassConst;
 use PhpParser\Node\Stmt\ClassMethod;
+use PhpParser\Node\Stmt\Const_;
 use PhpParser\Node\Stmt\Else_;
 use PhpParser\Node\Stmt\ElseIf_;
 use PhpParser\Node\Stmt\Enum_;
@@ -735,6 +736,33 @@ abstract class ParserAbstract implements
         return Double::KIND_DOUBLE;
     }
 
+    protected function getIntCastKind(string $cast): int {
+        $cast = strtolower($cast);
+        if (strpos($cast, 'integer') !== false) {
+            return Expr\Cast\Int_::KIND_INTEGER;
+        }
+
+        return Expr\Cast\Int_::KIND_INT;
+    }
+
+    protected function getBoolCastKind(string $cast): int {
+        $cast = strtolower($cast);
+        if (strpos($cast, 'boolean') !== false) {
+            return Expr\Cast\Bool_::KIND_BOOLEAN;
+        }
+
+        return Expr\Cast\Bool_::KIND_BOOL;
+    }
+
+    protected function getStringCastKind(string $cast): int {
+        $cast = strtolower($cast);
+        if (strpos($cast, 'binary') !== false) {
+            return Expr\Cast\String_::KIND_BINARY;
+        }
+
+        return Expr\Cast\String_::KIND_STRING;
+    }
+
     /** @param array<string, mixed> $attributes */
     protected function parseLNumber(string $str, array $attributes, bool $allowInvalidOctal = false): Int_ {
         try {
@@ -975,7 +1003,7 @@ abstract class ParserAbstract implements
     }
 
     protected function fixupArrayDestructuring(Array_ $node): Expr\List_ {
-        $this->createdArrays->detach($node);
+        $this->createdArrays->offsetUnset($node);
         return new Expr\List_(array_map(function (Node\ArrayItem $item) {
             if ($item->value instanceof Expr\Error) {
                 // We used Error as a placeholder for empty elements, which are legal for destructuring.
@@ -1202,6 +1230,13 @@ abstract class ParserAbstract implements
         }
     }
 
+    protected function checkConstantAttributes(Const_ $node): void {
+        if ($node->attrGroups !== [] && count($node->consts) > 1) {
+            $this->emitError(new Error(
+                'Cannot use attributes on multiple constants at once', $node->getAttributes()));
+        }
+    }
+
     /**
      * @param Property|Param $node
      */
diff -pruN 5.4.0-3/lib/PhpParser/PhpVersion.php 5.6.1-2/lib/PhpParser/PhpVersion.php
--- 5.4.0-3/lib/PhpParser/PhpVersion.php	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/lib/PhpParser/PhpVersion.php	2025-08-13 20:13:15.000000000 +0000
@@ -43,7 +43,7 @@ class PhpVersion {
      * if it is still under development.
      */
     public static function getNewestSupported(): self {
-        return self::fromComponents(8, 4);
+        return self::fromComponents(8, 5);
     }
 
     /**
@@ -161,4 +161,11 @@ class PhpVersion {
     public function supportsUnicodeEscapes(): bool {
         return $this->id >= 70000;
     }
+
+    /*
+     * Whether this version supports attributes.
+     */
+    public function supportsAttributes(): bool {
+        return $this->id >= 80000;
+    }
 }
diff -pruN 5.4.0-3/lib/PhpParser/PrettyPrinter/Standard.php 5.6.1-2/lib/PhpParser/PrettyPrinter/Standard.php
--- 5.4.0-3/lib/PhpParser/PrettyPrinter/Standard.php	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/lib/PhpParser/PrettyPrinter/Standard.php	2025-08-13 20:13:15.000000000 +0000
@@ -17,7 +17,7 @@ class Standard extends PrettyPrinterAbst
     // Special nodes
 
     protected function pParam(Node\Param $node): string {
-        return $this->pAttrGroups($node->attrGroups, true)
+        return $this->pAttrGroups($node->attrGroups, $this->phpVersion->supportsAttributes())
              . $this->pModifiers($node->flags)
              . ($node->type ? $this->p($node->type) . ' ' : '')
              . ($node->byRef ? '&' : '')
@@ -425,6 +425,10 @@ class Standard extends PrettyPrinterAbst
         return $this->pInfixOp(BinaryOp\Coalesce::class, $node->left, ' ?? ', $node->right, $precedence, $lhsPrecedence);
     }
 
+    protected function pExpr_BinaryOp_Pipe(BinaryOp\Pipe $node, int $precedence, int $lhsPrecedence): string {
+        return $this->pInfixOp(BinaryOp\Pipe::class, $node->left, ' |> ', $node->right, $precedence, $lhsPrecedence);
+    }
+
     protected function pExpr_Instanceof(Expr\Instanceof_ $node, int $precedence, int $lhsPrecedence): string {
         return $this->pPostfixOp(
             Expr\Instanceof_::class, $node->expr,
@@ -517,6 +521,10 @@ class Standard extends PrettyPrinterAbst
         return $this->pPrefixOp(Cast\Unset_::class, '(unset) ', $node->expr, $precedence, $lhsPrecedence);
     }
 
+    protected function pExpr_Cast_Void(Cast\Void_ $node, int $precedence, int $lhsPrecedence): string {
+        return $this->pPrefixOp(Cast\Void_::class, '(void) ', $node->expr, $precedence, $lhsPrecedence);
+    }
+
     // Function calls and similar constructs
 
     protected function pExpr_FuncCall(Expr\FuncCall $node): string {
@@ -656,7 +664,7 @@ class Standard extends PrettyPrinterAbst
         return $this->pAttrGroups($node->attrGroups, true)
              . $this->pStatic($node->static)
              . 'function ' . ($node->byRef ? '&' : '')
-             . '(' . $this->pMaybeMultiline($node->params, $this->phpVersion->supportsTrailingCommaInParamList()) . ')'
+             . '(' . $this->pParams($node->params) . ')'
              . (!empty($node->uses) ? ' use (' . $this->pCommaSeparated($node->uses) . ')' : '')
              . (null !== $node->returnType ? ': ' . $this->p($node->returnType) : '')
              . ' {' . $this->pStmts($node->stmts) . $this->nl . '}';
@@ -688,7 +696,7 @@ class Standard extends PrettyPrinterAbst
             $this->pAttrGroups($node->attrGroups, true)
             . $this->pStatic($node->static)
             . 'fn' . ($node->byRef ? '&' : '')
-            . '(' . $this->pMaybeMultiline($node->params, $this->phpVersion->supportsTrailingCommaInParamList()) . ')'
+            . '(' . $this->pParams($node->params) . ')'
             . (null !== $node->returnType ? ': ' . $this->p($node->returnType) : '')
             . ' => ',
             $node->expr, $precedence, $lhsPrecedence);
@@ -845,7 +853,7 @@ class Standard extends PrettyPrinterAbst
         return $this->pAttrGroups($node->attrGroups)
              . $this->pModifiers($node->flags)
              . ($node->byRef ? '&' : '') . $node->name
-             . ($node->params ? '(' . $this->pMaybeMultiline($node->params, $this->phpVersion->supportsTrailingCommaInParamList()) . ')' : '')
+             . ($node->params ? '(' . $this->pParams($node->params) . ')' : '')
              . (\is_array($node->body) ? ' {' . $this->pStmts($node->body) . $this->nl . '}'
                 : ($node->body !== null ? ' => ' . $this->p($node->body) : '') . ';');
     }
@@ -854,7 +862,7 @@ class Standard extends PrettyPrinterAbst
         return $this->pAttrGroups($node->attrGroups)
              . $this->pModifiers($node->flags)
              . 'function ' . ($node->byRef ? '&' : '') . $node->name
-             . '(' . $this->pMaybeMultiline($node->params, $this->phpVersion->supportsTrailingCommaInParamList()) . ')'
+             . '(' . $this->pParams($node->params) . ')'
              . (null !== $node->returnType ? ': ' . $this->p($node->returnType) : '')
              . (null !== $node->stmts
                 ? $this->nl . '{' . $this->pStmts($node->stmts) . $this->nl . '}'
@@ -872,13 +880,15 @@ class Standard extends PrettyPrinterAbst
     protected function pStmt_Function(Stmt\Function_ $node): string {
         return $this->pAttrGroups($node->attrGroups)
              . 'function ' . ($node->byRef ? '&' : '') . $node->name
-             . '(' . $this->pMaybeMultiline($node->params, $this->phpVersion->supportsTrailingCommaInParamList()) . ')'
+             . '(' . $this->pParams($node->params) . ')'
              . (null !== $node->returnType ? ': ' . $this->p($node->returnType) : '')
              . $this->nl . '{' . $this->pStmts($node->stmts) . $this->nl . '}';
     }
 
     protected function pStmt_Const(Stmt\Const_ $node): string {
-        return 'const ' . $this->pCommaSeparated($node->consts) . ';';
+        return $this->pAttrGroups($node->attrGroups)
+            . 'const '
+            . $this->pCommaSeparated($node->consts) . ';';
     }
 
     protected function pStmt_Declare(Stmt\Declare_ $node): string {
@@ -1179,6 +1189,27 @@ class Standard extends PrettyPrinterAbst
         }
     }
 
+    /** @param Node\Param[] $params
+     */
+    private function hasParamWithAttributes(array $params): bool {
+        foreach ($params as $param) {
+            if ($param->attrGroups) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /** @param Node\Param[] $params */
+    protected function pParams(array $params): string {
+        if ($this->hasNodeWithComments($params) ||
+            ($this->hasParamWithAttributes($params) && !$this->phpVersion->supportsAttributes())
+        ) {
+            return $this->pCommaSeparatedMultiline($params, $this->phpVersion->supportsTrailingCommaInParamList()) . $this->nl;
+        }
+        return $this->pCommaSeparated($params);
+    }
+
     /** @param Node\AttributeGroup[] $nodes */
     protected function pAttrGroups(array $nodes, bool $inline = false): string {
         $result = '';
diff -pruN 5.4.0-3/lib/PhpParser/PrettyPrinterAbstract.php 5.6.1-2/lib/PhpParser/PrettyPrinterAbstract.php
--- 5.4.0-3/lib/PhpParser/PrettyPrinterAbstract.php	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/lib/PhpParser/PrettyPrinterAbstract.php	2025-08-13 20:13:15.000000000 +0000
@@ -59,9 +59,11 @@ abstract class PrettyPrinterAbstract imp
         BinaryOp\Mod::class            => [ 40,  41,  40],
         BinaryOp\Plus::class           => [ 50,  51,  50],
         BinaryOp\Minus::class          => [ 50,  51,  50],
+        // FIXME: This precedence is incorrect for PHP 8.
         BinaryOp\Concat::class         => [ 50,  51,  50],
         BinaryOp\ShiftLeft::class      => [ 60,  61,  60],
         BinaryOp\ShiftRight::class     => [ 60,  61,  60],
+        BinaryOp\Pipe::class           => [ 65,  66,  65],
         BinaryOp\Smaller::class        => [ 70,  70,  70],
         BinaryOp\SmallerOrEqual::class => [ 70,  70,  70],
         BinaryOp\Greater::class        => [ 70,  70,  70],
@@ -102,6 +104,7 @@ abstract class PrettyPrinterAbstract imp
         Expr\Include_::class           => [220,  -1,  -1],
         Expr\ArrowFunction::class      => [230,  -1,  -1],
         Expr\Throw_::class             => [240,  -1,  -1],
+        Expr\Cast\Void_::class         => [250,  -1,  -1],
     ];
 
     /** @var int Current indentation level. */
@@ -1372,7 +1375,7 @@ abstract class PrettyPrinterAbstract imp
             BinaryOp\NotIdentical::class, BinaryOp\Spaceship::class, BinaryOp\BitwiseAnd::class,
             BinaryOp\BitwiseXor::class, BinaryOp\BitwiseOr::class, BinaryOp\BooleanAnd::class,
             BinaryOp\BooleanOr::class, BinaryOp\Coalesce::class, BinaryOp\LogicalAnd::class,
-            BinaryOp\LogicalXor::class, BinaryOp\LogicalOr::class,
+            BinaryOp\LogicalXor::class, BinaryOp\LogicalOr::class, BinaryOp\Pipe::class,
         ];
         foreach ($binaryOps as $binaryOp) {
             $this->fixupMap[$binaryOp] = [
@@ -1634,6 +1637,7 @@ abstract class PrettyPrinterAbstract imp
             Stmt\Trait_::class . '->attrGroups' => [null, '', "\n"],
             Expr\ArrowFunction::class . '->attrGroups' => [null, '', ' '],
             Expr\Closure::class . '->attrGroups' => [null, '', ' '],
+            Stmt\Const_::class . '->attrGroups' => [null, '', "\n"],
             PrintableNewAnonClassNode::class . '->attrGroups' => [\T_NEW, ' ', ''],
 
             /* These cannot be empty to start with:
diff -pruN 5.4.0-3/lib/PhpParser/compatibility_tokens.php 5.6.1-2/lib/PhpParser/compatibility_tokens.php
--- 5.4.0-3/lib/PhpParser/compatibility_tokens.php	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/lib/PhpParser/compatibility_tokens.php	2025-08-13 20:13:15.000000000 +0000
@@ -22,6 +22,9 @@ if (!\function_exists('PhpParser\defineC
             'T_PUBLIC_SET',
             'T_PROTECTED_SET',
             'T_PRIVATE_SET',
+            // PHP 8.5
+            'T_PIPE',
+            'T_VOID_CAST',
         ];
 
         // PHP-Parser might be used together with another library that also emulates some or all
diff -pruN 5.4.0-3/phpstan-baseline.neon 5.6.1-2/phpstan-baseline.neon
--- 5.4.0-3/phpstan-baseline.neon	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/phpstan-baseline.neon	2025-08-13 20:13:15.000000000 +0000
@@ -1,241 +1,259 @@
 parameters:
 	ignoreErrors:
 		-
-			message: "#^Method PhpParser\\\\Builder\\\\ClassConst\\:\\:__construct\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#"
+			message: '#^Method PhpParser\\Builder\\ClassConst\:\:__construct\(\) has parameter \$value with no value type specified in iterable type array\.$#'
+			identifier: missingType.iterableValue
 			count: 1
 			path: lib/PhpParser/Builder/ClassConst.php
 
 		-
-			message: "#^Method PhpParser\\\\Builder\\\\ClassConst\\:\\:addConst\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#"
+			message: '#^Method PhpParser\\Builder\\ClassConst\:\:addConst\(\) has parameter \$value with no value type specified in iterable type array\.$#'
+			identifier: missingType.iterableValue
 			count: 1
 			path: lib/PhpParser/Builder/ClassConst.php
 
 		-
-			message: "#^Method PhpParser\\\\BuilderFactory\\:\\:args\\(\\) has parameter \\$args with no value type specified in iterable type array\\.$#"
+			message: '#^Method PhpParser\\BuilderFactory\:\:args\(\) has parameter \$args with no value type specified in iterable type array\.$#'
+			identifier: missingType.iterableValue
 			count: 1
 			path: lib/PhpParser/BuilderFactory.php
 
 		-
-			message: "#^Method PhpParser\\\\BuilderFactory\\:\\:attribute\\(\\) has parameter \\$args with no value type specified in iterable type array\\.$#"
+			message: '#^Method PhpParser\\BuilderFactory\:\:attribute\(\) has parameter \$args with no value type specified in iterable type array\.$#'
+			identifier: missingType.iterableValue
 			count: 1
 			path: lib/PhpParser/BuilderFactory.php
 
 		-
-			message: "#^Method PhpParser\\\\BuilderFactory\\:\\:classConst\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#"
+			message: '#^Method PhpParser\\BuilderFactory\:\:classConst\(\) has parameter \$value with no value type specified in iterable type array\.$#'
+			identifier: missingType.iterableValue
 			count: 1
 			path: lib/PhpParser/BuilderFactory.php
 
 		-
-			message: "#^Method PhpParser\\\\BuilderFactory\\:\\:funcCall\\(\\) has parameter \\$args with no value type specified in iterable type array\\.$#"
+			message: '#^Method PhpParser\\BuilderFactory\:\:funcCall\(\) has parameter \$args with no value type specified in iterable type array\.$#'
+			identifier: missingType.iterableValue
 			count: 1
 			path: lib/PhpParser/BuilderFactory.php
 
 		-
-			message: "#^Method PhpParser\\\\BuilderFactory\\:\\:methodCall\\(\\) has parameter \\$args with no value type specified in iterable type array\\.$#"
+			message: '#^Method PhpParser\\BuilderFactory\:\:methodCall\(\) has parameter \$args with no value type specified in iterable type array\.$#'
+			identifier: missingType.iterableValue
 			count: 1
 			path: lib/PhpParser/BuilderFactory.php
 
 		-
-			message: "#^Method PhpParser\\\\BuilderFactory\\:\\:new\\(\\) has parameter \\$args with no value type specified in iterable type array\\.$#"
+			message: '#^Method PhpParser\\BuilderFactory\:\:new\(\) has parameter \$args with no value type specified in iterable type array\.$#'
+			identifier: missingType.iterableValue
 			count: 1
 			path: lib/PhpParser/BuilderFactory.php
 
 		-
-			message: "#^Method PhpParser\\\\BuilderFactory\\:\\:staticCall\\(\\) has parameter \\$args with no value type specified in iterable type array\\.$#"
+			message: '#^Method PhpParser\\BuilderFactory\:\:staticCall\(\) has parameter \$args with no value type specified in iterable type array\.$#'
+			identifier: missingType.iterableValue
 			count: 1
 			path: lib/PhpParser/BuilderFactory.php
 
 		-
-			message: "#^Method PhpParser\\\\BuilderFactory\\:\\:val\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#"
+			message: '#^Method PhpParser\\BuilderFactory\:\:val\(\) has parameter \$value with no value type specified in iterable type array\.$#'
+			identifier: missingType.iterableValue
 			count: 1
 			path: lib/PhpParser/BuilderFactory.php
 
 		-
-			message: "#^Method PhpParser\\\\BuilderHelpers\\:\\:normalizeValue\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#"
+			message: '#^Method PhpParser\\BuilderHelpers\:\:normalizeValue\(\) has parameter \$value with no value type specified in iterable type array\.$#'
+			identifier: missingType.iterableValue
 			count: 1
 			path: lib/PhpParser/BuilderHelpers.php
 
 		-
-			message: "#^Method PhpParser\\\\ConstExprEvaluator\\:\\:evaluateArray\\(\\) return type has no value type specified in iterable type array\\.$#"
+			message: '#^Method PhpParser\\ConstExprEvaluator\:\:evaluateArray\(\) return type has no value type specified in iterable type array\.$#'
+			identifier: missingType.iterableValue
 			count: 1
 			path: lib/PhpParser/ConstExprEvaluator.php
 
 		-
-			message: "#^Unary operation \"~\" on mixed results in an error\\.$#"
-			count: 1
-			path: lib/PhpParser/ConstExprEvaluator.php
-
-		-
-			message: "#^Method PhpParser\\\\JsonDecoder\\:\\:decodeArray\\(\\) has parameter \\$array with no value type specified in iterable type array\\.$#"
+			message: '#^Method PhpParser\\JsonDecoder\:\:decodeArray\(\) has parameter \$array with no value type specified in iterable type array\.$#'
+			identifier: missingType.iterableValue
 			count: 1
 			path: lib/PhpParser/JsonDecoder.php
 
 		-
-			message: "#^Method PhpParser\\\\JsonDecoder\\:\\:decodeArray\\(\\) return type has no value type specified in iterable type array\\.$#"
+			message: '#^Method PhpParser\\JsonDecoder\:\:decodeArray\(\) return type has no value type specified in iterable type array\.$#'
+			identifier: missingType.iterableValue
 			count: 1
 			path: lib/PhpParser/JsonDecoder.php
 
 		-
-			message: "#^Method PhpParser\\\\JsonDecoder\\:\\:decodeComment\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#"
+			message: '#^Method PhpParser\\JsonDecoder\:\:decodeComment\(\) has parameter \$value with no value type specified in iterable type array\.$#'
+			identifier: missingType.iterableValue
 			count: 1
 			path: lib/PhpParser/JsonDecoder.php
 
 		-
-			message: "#^Method PhpParser\\\\JsonDecoder\\:\\:decodeNode\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#"
+			message: '#^Method PhpParser\\JsonDecoder\:\:decodeNode\(\) has parameter \$value with no value type specified in iterable type array\.$#'
+			identifier: missingType.iterableValue
 			count: 1
 			path: lib/PhpParser/JsonDecoder.php
 
 		-
-			message: "#^Call to function assert\\(\\) with false will always evaluate to false\\.$#"
+			message: '#^Call to function assert\(\) with false will always evaluate to false\.$#'
+			identifier: function.impossibleType
 			count: 1
 			path: lib/PhpParser/Lexer/Emulative.php
 
 		-
-			message: "#^If condition is always false\\.$#"
+			message: '#^If condition is always false\.$#'
+			identifier: if.alwaysFalse
 			count: 1
 			path: lib/PhpParser/Node/Expr/ArrayItem.php
 
 		-
-			message: "#^If condition is always false\\.$#"
+			message: '#^If condition is always false\.$#'
+			identifier: if.alwaysFalse
 			count: 1
 			path: lib/PhpParser/Node/Expr/ClosureUse.php
 
 		-
-			message: "#^If condition is always false\\.$#"
+			message: '#^If condition is always false\.$#'
+			identifier: if.alwaysFalse
 			count: 1
 			path: lib/PhpParser/Node/Scalar/DNumber.php
 
 		-
-			message: "#^If condition is always false\\.$#"
+			message: '#^If condition is always false\.$#'
+			identifier: if.alwaysFalse
 			count: 1
 			path: lib/PhpParser/Node/Scalar/Encapsed.php
 
 		-
-			message: "#^If condition is always false\\.$#"
+			message: '#^If condition is always false\.$#'
+			identifier: if.alwaysFalse
 			count: 1
 			path: lib/PhpParser/Node/Scalar/EncapsedStringPart.php
 
 		-
-			message: "#^If condition is always false\\.$#"
+			message: '#^If condition is always false\.$#'
+			identifier: if.alwaysFalse
 			count: 1
 			path: lib/PhpParser/Node/Scalar/LNumber.php
 
 		-
-			message: "#^If condition is always false\\.$#"
+			message: '#^If condition is always false\.$#'
+			identifier: if.alwaysFalse
 			count: 1
 			path: lib/PhpParser/Node/Stmt/DeclareDeclare.php
 
 		-
-			message: "#^If condition is always false\\.$#"
+			message: '#^If condition is always false\.$#'
+			identifier: if.alwaysFalse
 			count: 1
 			path: lib/PhpParser/Node/Stmt/PropertyProperty.php
 
 		-
-			message: "#^If condition is always false\\.$#"
+			message: '#^If condition is always false\.$#'
+			identifier: if.alwaysFalse
 			count: 1
 			path: lib/PhpParser/Node/Stmt/StaticVar.php
 
 		-
-			message: "#^If condition is always false\\.$#"
+			message: '#^If condition is always false\.$#'
+			identifier: if.alwaysFalse
 			count: 1
 			path: lib/PhpParser/Node/Stmt/UseUse.php
 
 		-
-			message: "#^Constant T_PRIVATE_SET not found\\.$#"
-			count: 2
-			path: lib/PhpParser/Lexer/TokenEmulator/AsymmetricVisibilityTokenEmulator.php
-
-		-
-			message: "#^Constant T_PROTECTED_SET not found\\.$#"
-			count: 2
-			path: lib/PhpParser/Lexer/TokenEmulator/AsymmetricVisibilityTokenEmulator.php
-
-		-
-			message: "#^Constant T_PUBLIC_SET not found\\.$#"
-			count: 2
-			path: lib/PhpParser/Lexer/TokenEmulator/AsymmetricVisibilityTokenEmulator.php
-
-		-
-			message: "#^Constant T_PROPERTY_C not found\\.$#"
-			count: 1
-			path: lib/PhpParser/Lexer/TokenEmulator/PropertyTokenEmulator.php
-
-		-
-			message: "#^Method PhpParser\\\\NodeDumper\\:\\:__construct\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#"
+			message: '#^Method PhpParser\\NodeDumper\:\:__construct\(\) has parameter \$options with no value type specified in iterable type array\.$#'
+			identifier: missingType.iterableValue
 			count: 1
 			path: lib/PhpParser/NodeDumper.php
 
 		-
-			message: "#^Method PhpParser\\\\NodeDumper\\:\\:dump\\(\\) has parameter \\$node with no value type specified in iterable type array\\.$#"
+			message: '#^Method PhpParser\\NodeDumper\:\:dump\(\) has parameter \$node with no value type specified in iterable type array\.$#'
+			identifier: missingType.iterableValue
 			count: 1
 			path: lib/PhpParser/NodeDumper.php
 
 		-
-			message: "#^Method PhpParser\\\\NodeTraverser\\:\\:traverseArray\\(\\) has parameter \\$nodes with no value type specified in iterable type array\\.$#"
+			message: '#^Method PhpParser\\NodeTraverser\:\:traverseArray\(\) has parameter \$nodes with no value type specified in iterable type array\.$#'
+			identifier: missingType.iterableValue
 			count: 1
 			path: lib/PhpParser/NodeTraverser.php
 
 		-
-			message: "#^Method PhpParser\\\\NodeTraverser\\:\\:traverseArray\\(\\) return type has no value type specified in iterable type array\\.$#"
+			message: '#^Method PhpParser\\NodeTraverser\:\:traverseArray\(\) return type has no value type specified in iterable type array\.$#'
+			identifier: missingType.iterableValue
 			count: 1
 			path: lib/PhpParser/NodeTraverser.php
 
 		-
-			message: "#^Access to an undefined property PhpParser\\\\Node\\:\\:\\$attrGroups\\.$#"
+			message: '#^Access to an undefined property PhpParser\\Node\:\:\$attrGroups\.$#'
+			identifier: property.notFound
 			count: 1
 			path: lib/PhpParser/NodeVisitor/NameResolver.php
 
 		-
-			message: "#^Access to an undefined property PhpParser\\\\Node\\:\\:\\$name\\.$#"
+			message: '#^Access to an undefined property PhpParser\\Node\:\:\$name\.$#'
+			identifier: property.notFound
 			count: 1
 			path: lib/PhpParser/NodeVisitor/NameResolver.php
 
 		-
-			message: "#^Access to an undefined property PhpParser\\\\Node\\:\\:\\$namespacedName\\.$#"
+			message: '#^Access to an undefined property PhpParser\\Node\:\:\$namespacedName\.$#'
+			identifier: property.notFound
 			count: 1
 			path: lib/PhpParser/NodeVisitor/NameResolver.php
 
 		-
-			message: "#^Method PhpParser\\\\NodeVisitor\\\\NodeConnectingVisitor\\:\\:beforeTraverse\\(\\) should return array\\<PhpParser\\\\Node\\>\\|null but return statement is missing\\.$#"
+			message: '#^Method PhpParser\\NodeVisitor\\NodeConnectingVisitor\:\:beforeTraverse\(\) should return array\<PhpParser\\Node\>\|null but return statement is missing\.$#'
+			identifier: return.missing
 			count: 1
 			path: lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php
 
 		-
-			message: "#^Method PhpParser\\\\NodeVisitor\\\\NodeConnectingVisitor\\:\\:enterNode\\(\\) should return array\\<PhpParser\\\\Node\\>\\|int\\|PhpParser\\\\Node\\|null but return statement is missing\\.$#"
+			message: '#^Method PhpParser\\NodeVisitor\\NodeConnectingVisitor\:\:enterNode\(\) should return array\<PhpParser\\Node\>\|int\|PhpParser\\Node\|null but return statement is missing\.$#'
+			identifier: return.missing
 			count: 1
 			path: lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php
 
 		-
-			message: "#^Method PhpParser\\\\NodeVisitor\\\\NodeConnectingVisitor\\:\\:leaveNode\\(\\) should return array\\<PhpParser\\\\Node\\>\\|int\\|PhpParser\\\\Node\\|null but return statement is missing\\.$#"
+			message: '#^Method PhpParser\\NodeVisitor\\NodeConnectingVisitor\:\:leaveNode\(\) should return array\<PhpParser\\Node\>\|int\|PhpParser\\Node\|null but return statement is missing\.$#'
+			identifier: return.missing
 			count: 1
 			path: lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php
 
 		-
-			message: "#^Method PhpParser\\\\NodeVisitor\\\\ParentConnectingVisitor\\:\\:beforeTraverse\\(\\) should return array\\<PhpParser\\\\Node\\>\\|null but return statement is missing\\.$#"
+			message: '#^Method PhpParser\\NodeVisitor\\ParentConnectingVisitor\:\:beforeTraverse\(\) should return array\<PhpParser\\Node\>\|null but return statement is missing\.$#'
+			identifier: return.missing
 			count: 1
 			path: lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php
 
 		-
-			message: "#^Method PhpParser\\\\NodeVisitor\\\\ParentConnectingVisitor\\:\\:enterNode\\(\\) should return array\\<PhpParser\\\\Node\\>\\|int\\|PhpParser\\\\Node\\|null but return statement is missing\\.$#"
+			message: '#^Method PhpParser\\NodeVisitor\\ParentConnectingVisitor\:\:enterNode\(\) should return array\<PhpParser\\Node\>\|int\|PhpParser\\Node\|null but return statement is missing\.$#'
+			identifier: return.missing
 			count: 1
 			path: lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php
 
 		-
-			message: "#^Method PhpParser\\\\NodeVisitor\\\\ParentConnectingVisitor\\:\\:leaveNode\\(\\) should return array\\<PhpParser\\\\Node\\>\\|int\\|PhpParser\\\\Node\\|null but return statement is missing\\.$#"
+			message: '#^Method PhpParser\\NodeVisitor\\ParentConnectingVisitor\:\:leaveNode\(\) should return array\<PhpParser\\Node\>\|int\|PhpParser\\Node\|null but return statement is missing\.$#'
+			identifier: return.missing
 			count: 1
 			path: lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php
 
 		-
-			message: "#^Access to undefined constant static\\(PhpParser\\\\ParserAbstract\\)\\:\\:T_ECHO\\.$#"
+			message: '#^Access to undefined constant static\(PhpParser\\ParserAbstract\)\:\:T_ECHO\.$#'
+			identifier: classConstant.notFound
 			count: 1
 			path: lib/PhpParser/ParserAbstract.php
 
 		-
-			message: "#^Unary operation \"\\+\" on string results in an error\\.$#"
+			message: '#^Unary operation "\+" on string results in an error\.$#'
+			identifier: unaryOp.invalid
 			count: 1
 			path: lib/PhpParser/ParserAbstract.php
 
 		-
-			message: "#^Variable \\$action might not be defined\\.$#"
+			message: '#^Variable \$action might not be defined\.$#'
+			identifier: variable.undefined
 			count: 1
 			path: lib/PhpParser/ParserAbstract.php
diff -pruN 5.4.0-3/test/PhpParser/BuilderFactoryTest.php 5.6.1-2/test/PhpParser/BuilderFactoryTest.php
--- 5.4.0-3/test/PhpParser/BuilderFactoryTest.php	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/test/PhpParser/BuilderFactoryTest.php	2025-08-13 20:13:15.000000000 +0000
@@ -365,7 +365,10 @@ abstract class SomeClass extends SomeOth
      * @param SomeClass And takes a parameter
      */
     abstract public function someMethod(SomeClass $someParam);
-    protected function anotherMethod(#[TaggedIterator('app.handlers')] $someParam = 'test')
+    protected function anotherMethod(
+        #[TaggedIterator('app.handlers')]
+        $someParam = 'test'
+    )
     {
         print $someParam;
     }
diff -pruN 5.4.0-3/test/PhpParser/CodeTestParser.php 5.6.1-2/test/PhpParser/CodeTestParser.php
--- 5.4.0-3/test/PhpParser/CodeTestParser.php	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/test/PhpParser/CodeTestParser.php	2025-08-13 20:13:15.000000000 +0000
@@ -24,7 +24,7 @@ class CodeTestParser {
         // multiple sections possible with always two forming a pair
         $chunks = array_chunk($parts, $chunksPerTest);
         $tests = [];
-        foreach ($chunks as $i => $chunk) {
+        foreach ($chunks as $chunk) {
             $lastPart = array_pop($chunk);
             list($lastPart, $mode) = $this->extractMode($lastPart);
             $tests[] = [$mode, array_merge($chunk, [$lastPart])];
@@ -61,7 +61,7 @@ class CodeTestParser {
             return [$expected, null];
         }
 
-        $expected = (string) substr($expected, $firstNewLine + 1);
+        $expected = substr($expected, $firstNewLine + 1);
         return [$expected, substr($firstLine, 2)];
     }
 }
diff -pruN 5.4.0-3/test/PhpParser/ConstExprEvaluatorTest.php 5.6.1-2/test/PhpParser/ConstExprEvaluatorTest.php
--- 5.4.0-3/test/PhpParser/ConstExprEvaluatorTest.php	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/test/PhpParser/ConstExprEvaluatorTest.php	2025-08-13 20:13:15.000000000 +0000
@@ -8,7 +8,7 @@ use PhpParser\Node\Scalar;
 class ConstExprEvaluatorTest extends \PHPUnit\Framework\TestCase {
     /** @dataProvider provideTestEvaluate */
     public function testEvaluate($exprString, $expected): void {
-        $parser = new Parser\Php7(new Lexer());
+        $parser = (new ParserFactory())->createForNewestSupportedVersion();
         $expr = $parser->parse('<?php ' . $exprString . ';')[0]->expr;
         $evaluator = new ConstExprEvaluator();
         $this->assertSame($expected, $evaluator->evaluateDirectly($expr));
@@ -71,6 +71,7 @@ class ConstExprEvaluatorTest extends \PH
             ['true || (1/0)', true],
             ['true or (1/0)', true],
             ['true xor false', true],
+            ['"foo" |> "strlen"', 3],
         ];
     }
 
diff -pruN 5.4.0-3/test/PhpParser/Lexer/EmulativeTest.php 5.6.1-2/test/PhpParser/Lexer/EmulativeTest.php
--- 5.4.0-3/test/PhpParser/Lexer/EmulativeTest.php	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/test/PhpParser/Lexer/EmulativeTest.php	2025-08-13 20:13:15.000000000 +0000
@@ -424,6 +424,27 @@ class EmulativeTest extends LexerTest {
                 [\T_STRING, 'set'],
                 [\ord(')'), ')'],
             ]],
+
+            // PHP 8.5: Pipe operator
+            ['|>', [
+                [\T_PIPE, '|>']
+            ]],
+
+            // PHP 8.5: Void cast
+            ['(void)', [
+                [\T_VOID_CAST, '(void)'],
+            ]],
+            ["( \tvoid \t)", [
+                [\T_VOID_CAST, "( \tvoid \t)"],
+            ]],
+            ['( vOiD)', [
+                [\T_VOID_CAST, '( vOiD)'],
+            ]],
+            ["(void\n)", [
+                [\ord('('), '('],
+                [\T_STRING, 'void'],
+                [\ord(')'), ')'],
+            ]],
         ];
     }
 
@@ -471,6 +492,29 @@ class EmulativeTest extends LexerTest {
                 [\T_STRING, 'set'],
                 [\ord(')'), ')']
             ]],
+            ['8.5', '|>', [
+                [\T_PIPE, '|>']
+            ]],
+            ['8.4', '|>', [
+                [\ord('|'), '|'],
+                [\ord('>'), '>'],
+            ]],
+            ['8.5', '(void)', [
+                [\T_VOID_CAST, '(void)'],
+            ]],
+            ['8.5', "( \tvoid \t)", [
+                [\T_VOID_CAST, "( \tvoid \t)"],
+            ]],
+            ['8.4', '(void)', [
+                [\ord('('), '('],
+                [\T_STRING, 'void'],
+                [\ord(')'), ')'],
+            ]],
+            ['8.4', "( \tVOID \t)", [
+                [\ord('('), '('],
+                [\T_STRING, 'VOID'],
+                [\ord(')'), ')'],
+            ]],
         ];
     }
 }
diff -pruN 5.4.0-3/test/PhpParser/Node/Expr/CallableLikeTest.php 5.6.1-2/test/PhpParser/Node/Expr/CallableLikeTest.php
--- 5.4.0-3/test/PhpParser/Node/Expr/CallableLikeTest.php	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/test/PhpParser/Node/Expr/CallableLikeTest.php	2025-08-13 20:13:15.000000000 +0000
@@ -3,6 +3,7 @@
 namespace PhpParser\Node\Expr;
 
 use PhpParser\Node\Arg;
+use PhpParser\Node\Identifier;
 use PhpParser\Node\Name;
 use PhpParser\Node\Scalar\Int_;
 use PhpParser\Node\VariadicPlaceholder;
@@ -18,6 +19,13 @@ class CallableLikeTest extends \PHPUnit\
         }
     }
 
+    /**
+     * @dataProvider provideTestGetArg
+     */
+    public function testGetArg(CallLike $node, ?Arg $expected): void {
+        $this->assertSame($expected, $node->getArg('bar', 1));
+    }
+
     public static function provideTestIsFirstClassCallable() {
         $normalArgs = [new Arg(new Int_(1))];
         $callableArgs = [new VariadicPlaceholder()];
@@ -35,4 +43,56 @@ class CallableLikeTest extends \PHPUnit\
             [new NullsafeMethodCall(new Variable('this'), 'test', $callableArgs), true],
         ];
     }
+
+    public static function provideTestGetArg() {
+        $foo = new Arg(new Int_(1));
+        $namedFoo = new Arg(new Int_(1), false, false, [], new Identifier('foo'));
+        $bar = new Arg(new Int_(2));
+        $namedBar = new Arg(new Int_(2), false, false, [], new Identifier('bar'));
+        $unpack = new Arg(new Int_(3), false, true);
+        $callableArgs = [new VariadicPlaceholder()];
+        return [
+            [new FuncCall(new Name('test'), [$foo]), null],
+            [new FuncCall(new Name('test'), [$namedFoo]), null],
+            [new FuncCall(new Name('test'), [$foo, $bar]), $bar],
+            [new FuncCall(new Name('test'), [$namedBar]), $namedBar],
+            [new FuncCall(new Name('test'), [$namedFoo, $namedBar]), $namedBar],
+            [new FuncCall(new Name('test'), [$namedBar, $namedFoo]), $namedBar],
+            [new FuncCall(new Name('test'), [$namedFoo, $unpack]), null],
+            [new FuncCall(new Name('test'), $callableArgs), null],
+            [new MethodCall(new Variable('this'), 'test', [$foo]), null],
+            [new MethodCall(new Variable('this'), 'test', [$namedFoo]), null],
+            [new MethodCall(new Variable('this'), 'test', [$foo, $bar]), $bar],
+            [new MethodCall(new Variable('this'), 'test', [$namedBar]), $namedBar],
+            [new MethodCall(new Variable('this'), 'test', [$namedFoo, $namedBar]), $namedBar],
+            [new MethodCall(new Variable('this'), 'test', [$namedBar, $namedFoo]), $namedBar],
+            [new MethodCall(new Variable('this'), 'test', [$namedFoo, $unpack]), null],
+            [new MethodCall(new Variable('this'), 'test', $callableArgs), null],
+            [new StaticCall(new Name('Test'), 'test', [$foo]), null],
+            [new StaticCall(new Name('Test'), 'test', [$namedFoo]), null],
+            [new StaticCall(new Name('Test'), 'test', [$foo, $bar]), $bar],
+            [new StaticCall(new Name('Test'), 'test', [$namedBar]), $namedBar],
+            [new StaticCall(new Name('Test'), 'test', [$namedFoo, $namedBar]), $namedBar],
+            [new StaticCall(new Name('Test'), 'test', [$namedBar, $namedFoo]), $namedBar],
+            [new StaticCall(new Name('Test'), 'test', [$namedFoo, $unpack]), null],
+            [new StaticCall(new Name('Test'), 'test', $callableArgs), null],
+            [new New_(new Name('test'), [$foo]), null],
+            [new New_(new Name('test'), [$namedFoo]), null],
+            [new New_(new Name('test'), [$foo, $bar]), $bar],
+            [new New_(new Name('test'), [$namedBar]), $namedBar],
+            [new New_(new Name('test'), [$namedFoo, $namedBar]), $namedBar],
+            [new New_(new Name('test'), [$namedBar, $namedFoo]), $namedBar],
+            [new New_(new Name('test'), [$namedFoo, $unpack]), null],
+            [new NullsafeMethodCall(new Variable('this'), 'test', [$foo]), null],
+            [new NullsafeMethodCall(new Variable('this'), 'test', [$namedFoo]), null],
+            [new NullsafeMethodCall(new Variable('this'), 'test', [$foo, $bar]), $bar],
+            [new NullsafeMethodCall(new Variable('this'), 'test', [$namedBar]), $namedBar],
+            [new NullsafeMethodCall(new Variable('this'), 'test', [$namedFoo, $namedBar]), $namedBar],
+            [new NullsafeMethodCall(new Variable('this'), 'test', [$namedBar, $namedFoo]), $namedBar],
+            [new NullsafeMethodCall(new Variable('this'), 'test', [$namedFoo, $unpack]), null],
+            // This is not legal code, but accepted by the parser.
+            [new New_(new Name('Test'), $callableArgs), null],
+            [new NullsafeMethodCall(new Variable('this'), 'test', $callableArgs), null],
+        ];
+    }
 }
diff -pruN 5.4.0-3/test/PhpParser/Node/ParamTest.php 5.6.1-2/test/PhpParser/Node/ParamTest.php
--- 5.4.0-3/test/PhpParser/Node/ParamTest.php	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/test/PhpParser/Node/ParamTest.php	2025-08-13 20:13:15.000000000 +0000
@@ -42,10 +42,13 @@ class ParamTest extends \PHPUnit\Framewo
         $node = new Param(new Variable('foo'));
         $node->flags = Modifiers::PRIVATE_SET;
         $this->assertTrue($node->isPrivateSet());
+        $this->assertTrue($node->isPublic());
         $node->flags = Modifiers::PROTECTED_SET;
         $this->assertTrue($node->isProtectedSet());
+        $this->assertTrue($node->isPublic());
         $node->flags = Modifiers::PUBLIC_SET;
         $this->assertTrue($node->isPublicSet());
+        $this->assertTrue($node->isPublic());
     }
 
     public function testPromotedPropertyWithoutVisibilityModifier(): void {
diff -pruN 5.4.0-3/test/PhpParser/Node/Scalar/DNumberTest.php 5.6.1-2/test/PhpParser/Node/Scalar/DNumberTest.php
--- 5.4.0-3/test/PhpParser/Node/Scalar/DNumberTest.php	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/test/PhpParser/Node/Scalar/DNumberTest.php	2025-08-13 20:13:15.000000000 +0000
@@ -15,11 +15,11 @@ class DNumberTest extends \PHPUnit\Frame
         $this->assertInstanceOf(Echo_::class, $echo);
 
         /** @var Echo_ $echo */
-        $lLumber = $echo->exprs[0];
-        $this->assertInstanceOf(Float_::class, $lLumber);
+        $dnumber = $echo->exprs[0];
+        $this->assertInstanceOf(Float_::class, $dnumber);
 
         /** @var Float_ $dnumber */
-        $this->assertSame(1234.56, $lLumber->value);
-        $this->assertSame('1_234.56', $lLumber->getAttribute('rawValue'));
+        $this->assertSame(1234.56, $dnumber->value);
+        $this->assertSame('1_234.56', $dnumber->getAttribute('rawValue'));
     }
 }
diff -pruN 5.4.0-3/test/PhpParser/Node/Scalar/NumberTest.php 5.6.1-2/test/PhpParser/Node/Scalar/NumberTest.php
--- 5.4.0-3/test/PhpParser/Node/Scalar/NumberTest.php	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/test/PhpParser/Node/Scalar/NumberTest.php	2025-08-13 20:13:15.000000000 +0000
@@ -14,11 +14,11 @@ class NumberTest extends \PHPUnit\Framew
         $this->assertInstanceOf(Echo_::class, $echo);
 
         /** @var Echo_ $echo */
-        $lLumber = $echo->exprs[0];
-        $this->assertInstanceOf(Int_::class, $lLumber);
+        $lnumber = $echo->exprs[0];
+        $this->assertInstanceOf(Int_::class, $lnumber);
 
         /** @var Int_ $lnumber */
-        $this->assertSame(1234, $lLumber->value);
-        $this->assertSame('1_234', $lLumber->getAttribute('rawValue'));
+        $this->assertSame(1234, $lnumber->value);
+        $this->assertSame('1_234', $lnumber->getAttribute('rawValue'));
     }
 }
diff -pruN 5.4.0-3/test/PhpParser/NodeVisitor/NameResolverTest.php 5.6.1-2/test/PhpParser/NodeVisitor/NameResolverTest.php
--- 5.4.0-3/test/PhpParser/NodeVisitor/NameResolverTest.php	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/test/PhpParser/NodeVisitor/NameResolverTest.php	2025-08-13 20:13:15.000000000 +0000
@@ -245,6 +245,9 @@ fn(array $a): array => $a;
 fn(A $a): A => $a;
 fn(?A $a): ?A => $a;
 
+#[X]
+const EXAMPLE = true;
+
 A::b();
 A::$b;
 A::B;
@@ -283,12 +286,18 @@ class A extends \NS\B implements \NS\C,
     public const \X\Foo C = \X\Foo::Bar;
     public \NS\Foo $foo {
         #[\NS\X]
-        set(#[\NS\X] \NS\Bar $v) {
+        set(
+            #[\NS\X]
+            \NS\Bar $v
+        ) {
         }
     }
     public function __construct(public \NS\Foo $bar {
         #[\NS\X]
-        set(#[\NS\X] \NS\Bar $v) {
+        set(
+            #[\NS\X]
+            \NS\Bar $v
+        ) {
         }
     })
     {
@@ -312,7 +321,10 @@ trait A
 {
 }
 #[\NS\X]
-function f(#[\NS\X] \NS\A $a): \NS\A
+function f(
+    #[\NS\X]
+    \NS\A $a
+): \NS\A
 {
 }
 function f2(array $a): array
@@ -329,6 +341,8 @@ function fn4(?array $a): ?array
 #[\NS\X] fn(array $a): array => $a;
 fn(\NS\A $a): \NS\A => $a;
 fn(?\NS\A $a): ?\NS\A => $a;
+#[\NS\X]
+const EXAMPLE = true;
 \NS\A::b();
 \NS\A::$b;
 \NS\A::B;
diff -pruN 5.4.0-3/test/PhpParser/NodeVisitor/NodeConnectingVisitorTest.php 5.6.1-2/test/PhpParser/NodeVisitor/NodeConnectingVisitorTest.php
--- 5.4.0-3/test/PhpParser/NodeVisitor/NodeConnectingVisitorTest.php	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/test/PhpParser/NodeVisitor/NodeConnectingVisitorTest.php	2025-08-13 20:13:15.000000000 +0000
@@ -30,4 +30,28 @@ final class NodeConnectingVisitorTest ex
 
         $this->assertSame(Else_::class, get_class($node->getAttribute('next')));
     }
+
+    public function testWeakReferences(): void {
+        $ast = (new ParserFactory())->createForNewestSupportedVersion()->parse(
+            '<?php if (true) {} else {}'
+        );
+
+        $traverser = new NodeTraverser();
+
+        $traverser->addVisitor(new NodeConnectingVisitor(true));
+
+        $ast = $traverser->traverse($ast);
+
+        $node = (new NodeFinder())->findFirstInstanceof($ast, Else_::class);
+
+        $this->assertInstanceOf(\WeakReference::class, $node->getAttribute('weak_parent'));
+        $this->assertSame(If_::class, get_class($node->getAttribute('weak_parent')->get()));
+        $this->assertInstanceOf(\WeakReference::class, $node->getAttribute('weak_previous'));
+        $this->assertSame(ConstFetch::class, get_class($node->getAttribute('weak_previous')->get()));
+
+        $node = (new NodeFinder())->findFirstInstanceof($ast, ConstFetch::class);
+
+        $this->assertInstanceOf(\WeakReference::class, $node->getAttribute('weak_next'));
+        $this->assertSame(Else_::class, get_class($node->getAttribute('weak_next')->get()));
+    }
 }
diff -pruN 5.4.0-3/test/PhpParser/NodeVisitor/ParentConnectingVisitorTest.php 5.6.1-2/test/PhpParser/NodeVisitor/ParentConnectingVisitorTest.php
--- 5.4.0-3/test/PhpParser/NodeVisitor/ParentConnectingVisitorTest.php	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/test/PhpParser/NodeVisitor/ParentConnectingVisitorTest.php	2025-08-13 20:13:15.000000000 +0000
@@ -23,4 +23,22 @@ final class ParentConnectingVisitorTest
 
         $this->assertSame('C', $node->getAttribute('parent')->name->toString());
     }
+
+    public function testWeakReferences(): void {
+        $ast = (new ParserFactory())->createForNewestSupportedVersion()->parse(
+            '<?php class C { public function m() {} }'
+        );
+
+        $traverser = new NodeTraverser();
+
+        $traverser->addVisitor(new ParentConnectingVisitor(true));
+
+        $ast = $traverser->traverse($ast);
+
+        $node = (new NodeFinder())->findFirstInstanceof($ast, ClassMethod::class);
+
+        $weakReference = $node->getAttribute('weak_parent');
+        $this->assertInstanceOf(\WeakReference::class, $weakReference);
+        $this->assertSame('C', $weakReference->get()->name->toString());
+    }
 }
diff -pruN 5.4.0-3/test/code/formatPreservation/constants.test 5.6.1-2/test/code/formatPreservation/constants.test
--- 5.4.0-3/test/code/formatPreservation/constants.test	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.1-2/test/code/formatPreservation/constants.test	2025-08-13 20:13:15.000000000 +0000
@@ -0,0 +1,50 @@
+Constants
+-----
+<?php
+
+const FOO = true;
+
+#[A]
+const BAR = true;
+-----
+$attrGroup = new Node\AttributeGroup([
+    new Node\Attribute(new Node\Name('B'), []),
+]);
+$stmts[0]->attrGroups[] = $attrGroup;
+$stmts[1]->attrGroups[] = $attrGroup;
+-----
+<?php
+
+#[B]
+const FOO = true;
+
+#[A]
+#[B]
+const BAR = true;
+-----
+<?php
+
+#[ A,   B]
+const FOO = true;
+
+#[
+    A,
+    B,
+]
+const BAR = true;
+-----
+$attr = new Node\Attribute(new Node\Name('C'), []);
+$stmts[0]->attrGroups[0]->attrs[] = $attr;
+$stmts[1]->attrGroups[0]->attrs[] = $attr;
+-----
+<?php
+
+#[ A,   B, C]
+const FOO = true;
+
+#[
+    A,
+    B,
+    C,
+]
+const BAR = true;
diff -pruN 5.4.0-3/test/code/parser/errorHandling/recovery.test 5.6.1-2/test/code/parser/errorHandling/recovery.test
--- 5.4.0-3/test/code/parser/errorHandling/recovery.test	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/test/code/parser/errorHandling/recovery.test	2025-08-13 20:13:15.000000000 +0000
@@ -476,6 +476,8 @@ array(
                 )
             )
             3: Stmt_Const(
+                attrGroups: array(
+                )
                 consts: array(
                     0: Const(
                         name: Identifier(
@@ -629,6 +631,8 @@ array(
         )
     )
     3: Stmt_Const(
+        attrGroups: array(
+        )
         consts: array(
             0: Const(
                 name: Identifier(
diff -pruN 5.4.0-3/test/code/parser/expr/constant_expr.test 5.6.1-2/test/code/parser/expr/constant_expr.test
--- 5.4.0-3/test/code/parser/expr/constant_expr.test	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/test/code/parser/expr/constant_expr.test	2025-08-13 20:13:15.000000000 +0000
@@ -42,6 +42,8 @@ const T_35 = !false;
 -----
 array(
     0: Stmt_Const(
+        attrGroups: array(
+        )
         consts: array(
             0: Const(
                 name: Identifier(
@@ -59,6 +61,8 @@ array(
         )
     )
     1: Stmt_Const(
+        attrGroups: array(
+        )
         consts: array(
             0: Const(
                 name: Identifier(
@@ -76,6 +80,8 @@ array(
         )
     )
     2: Stmt_Const(
+        attrGroups: array(
+        )
         consts: array(
             0: Const(
                 name: Identifier(
@@ -93,6 +99,8 @@ array(
         )
     )
     3: Stmt_Const(
+        attrGroups: array(
+        )
         consts: array(
             0: Const(
                 name: Identifier(
@@ -110,6 +118,8 @@ array(
         )
     )
     4: Stmt_Const(
+        attrGroups: array(
+        )
         consts: array(
             0: Const(
                 name: Identifier(
@@ -132,6 +142,8 @@ array(
         )
     )
     5: Stmt_Const(
+        attrGroups: array(
+        )
         consts: array(
             0: Const(
                 name: Identifier(
@@ -159,6 +171,8 @@ array(
         )
     )
     6: Stmt_Const(
+        attrGroups: array(
+        )
         consts: array(
             0: Const(
                 name: Identifier(
@@ -170,6 +184,8 @@ array(
         )
     )
     7: Stmt_Const(
+        attrGroups: array(
+        )
         consts: array(
             0: Const(
                 name: Identifier(
@@ -182,6 +198,8 @@ array(
         )
     )
     8: Stmt_Const(
+        attrGroups: array(
+        )
         consts: array(
             0: Const(
                 name: Identifier(
@@ -198,6 +216,8 @@ array(
         )
     )
     9: Stmt_Const(
+        attrGroups: array(
+        )
         consts: array(
             0: Const(
                 name: Identifier(
@@ -231,6 +251,8 @@ array(
         )
     )
     10: Stmt_Const(
+        attrGroups: array(
+        )
         consts: array(
             0: Const(
                 name: Identifier(
@@ -248,6 +270,8 @@ array(
         )
     )
     11: Stmt_Const(
+        attrGroups: array(
+        )
         consts: array(
             0: Const(
                 name: Identifier(
@@ -265,6 +289,8 @@ array(
         )
     )
     12: Stmt_Const(
+        attrGroups: array(
+        )
         consts: array(
             0: Const(
                 name: Identifier(
@@ -282,6 +308,8 @@ array(
         )
     )
     13: Stmt_Const(
+        attrGroups: array(
+        )
         consts: array(
             0: Const(
                 name: Identifier(
@@ -299,6 +327,8 @@ array(
         )
     )
     14: Stmt_Const(
+        attrGroups: array(
+        )
         consts: array(
             0: Const(
                 name: Identifier(
@@ -316,6 +346,8 @@ array(
         )
     )
     15: Stmt_Const(
+        attrGroups: array(
+        )
         consts: array(
             0: Const(
                 name: Identifier(
@@ -333,6 +365,8 @@ array(
         )
     )
     16: Stmt_Const(
+        attrGroups: array(
+        )
         consts: array(
             0: Const(
                 name: Identifier(
@@ -350,6 +384,8 @@ array(
         )
     )
     17: Stmt_Const(
+        attrGroups: array(
+        )
         consts: array(
             0: Const(
                 name: Identifier(
@@ -367,6 +403,8 @@ array(
         )
     )
     18: Stmt_Const(
+        attrGroups: array(
+        )
         consts: array(
             0: Const(
                 name: Identifier(
@@ -384,6 +422,8 @@ array(
         )
     )
     19: Stmt_Const(
+        attrGroups: array(
+        )
         consts: array(
             0: Const(
                 name: Identifier(
@@ -401,6 +441,8 @@ array(
         )
     )
     20: Stmt_Const(
+        attrGroups: array(
+        )
         consts: array(
             0: Const(
                 name: Identifier(
@@ -418,6 +460,8 @@ array(
         )
     )
     21: Stmt_Const(
+        attrGroups: array(
+        )
         consts: array(
             0: Const(
                 name: Identifier(
@@ -435,6 +479,8 @@ array(
         )
     )
     22: Stmt_Const(
+        attrGroups: array(
+        )
         consts: array(
             0: Const(
                 name: Identifier(
@@ -452,6 +498,8 @@ array(
         )
     )
     23: Stmt_Const(
+        attrGroups: array(
+        )
         consts: array(
             0: Const(
                 name: Identifier(
@@ -469,6 +517,8 @@ array(
         )
     )
     24: Stmt_Const(
+        attrGroups: array(
+        )
         consts: array(
             0: Const(
                 name: Identifier(
@@ -491,6 +541,8 @@ array(
         )
     )
     25: Stmt_Const(
+        attrGroups: array(
+        )
         consts: array(
             0: Const(
                 name: Identifier(
@@ -513,6 +565,8 @@ array(
         )
     )
     26: Stmt_Const(
+        attrGroups: array(
+        )
         consts: array(
             0: Const(
                 name: Identifier(
@@ -530,6 +584,8 @@ array(
         )
     )
     27: Stmt_Const(
+        attrGroups: array(
+        )
         consts: array(
             0: Const(
                 name: Identifier(
@@ -572,6 +628,8 @@ array(
         )
     )
     28: Stmt_Const(
+        attrGroups: array(
+        )
         consts: array(
             0: Const(
                 name: Identifier(
@@ -589,6 +647,8 @@ array(
         )
     )
     29: Stmt_Const(
+        attrGroups: array(
+        )
         consts: array(
             0: Const(
                 name: Identifier(
@@ -606,6 +666,8 @@ array(
         )
     )
     30: Stmt_Const(
+        attrGroups: array(
+        )
         consts: array(
             0: Const(
                 name: Identifier(
@@ -623,6 +685,8 @@ array(
         )
     )
     31: Stmt_Const(
+        attrGroups: array(
+        )
         consts: array(
             0: Const(
                 name: Identifier(
@@ -640,6 +704,8 @@ array(
         )
     )
     32: Stmt_Const(
+        attrGroups: array(
+        )
         consts: array(
             0: Const(
                 name: Identifier(
@@ -657,6 +723,8 @@ array(
         )
     )
     33: Stmt_Const(
+        attrGroups: array(
+        )
         consts: array(
             0: Const(
                 name: Identifier(
@@ -674,6 +742,8 @@ array(
         )
     )
     34: Stmt_Const(
+        attrGroups: array(
+        )
         consts: array(
             0: Const(
                 name: Identifier(
diff -pruN 5.4.0-3/test/code/parser/expr/pipe.test 5.6.1-2/test/code/parser/expr/pipe.test
--- 5.4.0-3/test/code/parser/expr/pipe.test	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.1-2/test/code/parser/expr/pipe.test	2025-08-13 20:13:15.000000000 +0000
@@ -0,0 +1,75 @@
+Pipe operator
+-----
+<?php
+$a |> $b |> $c;
+$a . $b |> $c . $d;
+$a |> $b == $c;
+$c == $a |> $b;
+-----
+array(
+    0: Stmt_Expression(
+        expr: Expr_BinaryOp_Pipe(
+            left: Expr_BinaryOp_Pipe(
+                left: Expr_Variable(
+                    name: a
+                )
+                right: Expr_Variable(
+                    name: b
+                )
+            )
+            right: Expr_Variable(
+                name: c
+            )
+        )
+    )
+    1: Stmt_Expression(
+        expr: Expr_BinaryOp_Pipe(
+            left: Expr_BinaryOp_Concat(
+                left: Expr_Variable(
+                    name: a
+                )
+                right: Expr_Variable(
+                    name: b
+                )
+            )
+            right: Expr_BinaryOp_Concat(
+                left: Expr_Variable(
+                    name: c
+                )
+                right: Expr_Variable(
+                    name: d
+                )
+            )
+        )
+    )
+    2: Stmt_Expression(
+        expr: Expr_BinaryOp_Equal(
+            left: Expr_BinaryOp_Pipe(
+                left: Expr_Variable(
+                    name: a
+                )
+                right: Expr_Variable(
+                    name: b
+                )
+            )
+            right: Expr_Variable(
+                name: c
+            )
+        )
+    )
+    3: Stmt_Expression(
+        expr: Expr_BinaryOp_Equal(
+            left: Expr_Variable(
+                name: c
+            )
+            right: Expr_BinaryOp_Pipe(
+                left: Expr_Variable(
+                    name: a
+                )
+                right: Expr_Variable(
+                    name: b
+                )
+            )
+        )
+    )
+)
\ No newline at end of file
diff -pruN 5.4.0-3/test/code/parser/formattingAttributes.test 5.6.1-2/test/code/parser/formattingAttributes.test
--- 5.4.0-3/test/code/parser/formattingAttributes.test	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/test/code/parser/formattingAttributes.test	2025-08-13 20:13:15.000000000 +0000
@@ -43,6 +43,12 @@ array();
 [];
 list($x) = $y;
 [$x] = $y;
+(int) $int;
+(integer) $integer;
+(bool) $bool;
+(boolean) $boolean;
+(string) $string;
+(binary) $binary;
 -----
 !!attributes
 array(
@@ -301,4 +307,52 @@ array(
             )
         )
     )
+    24: Stmt_Expression(
+        expr: Expr_Cast_Int(
+            expr: Expr_Variable(
+                name: int
+            )
+            kind: 1
+        )
+    )
+    25: Stmt_Expression(
+        expr: Expr_Cast_Int(
+            expr: Expr_Variable(
+                name: integer
+            )
+            kind: 2
+        )
+    )
+    26: Stmt_Expression(
+        expr: Expr_Cast_Bool(
+            expr: Expr_Variable(
+                name: bool
+            )
+            kind: 1
+        )
+    )
+    27: Stmt_Expression(
+        expr: Expr_Cast_Bool(
+            expr: Expr_Variable(
+                name: boolean
+            )
+            kind: 2
+        )
+    )
+    28: Stmt_Expression(
+        expr: Expr_Cast_String(
+            expr: Expr_Variable(
+                name: string
+            )
+            kind: 1
+        )
+    )
+    29: Stmt_Expression(
+        expr: Expr_Cast_String(
+            expr: Expr_Variable(
+                name: binary
+            )
+            kind: 2
+        )
+    )
 )
diff -pruN 5.4.0-3/test/code/parser/stmt/class/property_promotion.test 5.6.1-2/test/code/parser/stmt/class/property_promotion.test
--- 5.4.0-3/test/code/parser/stmt/class/property_promotion.test	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/test/code/parser/stmt/class/property_promotion.test	2025-08-13 20:13:15.000000000 +0000
@@ -10,6 +10,7 @@ class Point {
         public readonly int $a = 0,
         public $h { set => $value; },
         public $g = 1 { get => 2; },
+        final $i,
     ) {}
 }
 -----
@@ -165,6 +166,20 @@ array(
                             )
                         )
                     )
+                    6: Param(
+                        attrGroups: array(
+                        )
+                        flags: FINAL (32)
+                        type: null
+                        byRef: false
+                        variadic: false
+                        var: Expr_Variable(
+                            name: i
+                        )
+                        default: null
+                        hooks: array(
+                        )
+                    )
                 )
                 returnType: null
                 stmts: array(
diff -pruN 5.4.0-3/test/code/parser/stmt/const.test 5.6.1-2/test/code/parser/stmt/const.test
--- 5.4.0-3/test/code/parser/stmt/const.test	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/test/code/parser/stmt/const.test	2025-08-13 20:13:15.000000000 +0000
@@ -3,9 +3,26 @@ Global constants
 <?php
 
 const A = 0, B = 1.0, C = 'A', D = E;
+
+#[Example]
+const WithOneAttribute = 1;
+
+#[First]
+#[Second]
+const WithUngroupedAttriutes = 2;
+
+#[First, Second]
+const WithGroupAttributes = 3;
+
+#[Example]
+const ThisIsInvalid = 4,
+    AttributesOnMultipleConstants = 5;
 -----
+Cannot use attributes on multiple constants at once from 15:1 to 17:38
 array(
     0: Stmt_Const(
+        attrGroups: array(
+        )
         consts: array(
             0: Const(
                 name: Identifier(
@@ -42,5 +59,131 @@ array(
                 )
             )
         )
+    )
+    1: Stmt_Const(
+        attrGroups: array(
+            0: AttributeGroup(
+                attrs: array(
+                    0: Attribute(
+                        name: Name(
+                            name: Example
+                        )
+                        args: array(
+                        )
+                    )
+                )
+            )
+        )
+        consts: array(
+            0: Const(
+                name: Identifier(
+                    name: WithOneAttribute
+                )
+                value: Scalar_Int(
+                    value: 1
+                )
+            )
+        )
+    )
+    2: Stmt_Const(
+        attrGroups: array(
+            0: AttributeGroup(
+                attrs: array(
+                    0: Attribute(
+                        name: Name(
+                            name: First
+                        )
+                        args: array(
+                        )
+                    )
+                )
+            )
+            1: AttributeGroup(
+                attrs: array(
+                    0: Attribute(
+                        name: Name(
+                            name: Second
+                        )
+                        args: array(
+                        )
+                    )
+                )
+            )
+        )
+        consts: array(
+            0: Const(
+                name: Identifier(
+                    name: WithUngroupedAttriutes
+                )
+                value: Scalar_Int(
+                    value: 2
+                )
+            )
+        )
+    )
+    3: Stmt_Const(
+        attrGroups: array(
+            0: AttributeGroup(
+                attrs: array(
+                    0: Attribute(
+                        name: Name(
+                            name: First
+                        )
+                        args: array(
+                        )
+                    )
+                    1: Attribute(
+                        name: Name(
+                            name: Second
+                        )
+                        args: array(
+                        )
+                    )
+                )
+            )
+        )
+        consts: array(
+            0: Const(
+                name: Identifier(
+                    name: WithGroupAttributes
+                )
+                value: Scalar_Int(
+                    value: 3
+                )
+            )
+        )
+    )
+    4: Stmt_Const(
+        attrGroups: array(
+            0: AttributeGroup(
+                attrs: array(
+                    0: Attribute(
+                        name: Name(
+                            name: Example
+                        )
+                        args: array(
+                        )
+                    )
+                )
+            )
+        )
+        consts: array(
+            0: Const(
+                name: Identifier(
+                    name: ThisIsInvalid
+                )
+                value: Scalar_Int(
+                    value: 4
+                )
+            )
+            1: Const(
+                name: Identifier(
+                    name: AttributesOnMultipleConstants
+                )
+                value: Scalar_Int(
+                    value: 5
+                )
+            )
+        )
     )
 )
diff -pruN 5.4.0-3/test/code/parser/stmt/function/clone_function.test 5.6.1-2/test/code/parser/stmt/function/clone_function.test
--- 5.4.0-3/test/code/parser/stmt/function/clone_function.test	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.1-2/test/code/parser/stmt/function/clone_function.test	2025-08-13 20:13:15.000000000 +0000
@@ -0,0 +1,448 @@
+Declaring clone function stub
+-----
+<?php
+
+function clone(object $object, array $withProperties = []): object {}
+clone $x;
+clone($x);
+clone($x, );
+clone($x, [ "foo" => $foo, "bar" => $bar ]);
+clone($x, $array);
+clone($x, $array, $extraParameter, $trailingComma, );
+clone(object: $x, withProperties: [ "foo" => $foo, "bar" => $bar ]);
+clone($x, withProperties: [ "foo" => $foo, "bar" => $bar ]);
+clone(object: $x);
+clone(object: $x, [ "foo" => $foo, "bar" => $bar ]);
+clone(...["object" => $x, "withProperties" => [ "foo" => $foo, "bar" => $bar ]]);
+clone(...);
+-----
+array(
+    0: Stmt_Function(
+        attrGroups: array(
+        )
+        byRef: false
+        name: Identifier(
+            name: clone
+        )
+        params: array(
+            0: Param(
+                attrGroups: array(
+                )
+                flags: 0
+                type: Identifier(
+                    name: object
+                )
+                byRef: false
+                variadic: false
+                var: Expr_Variable(
+                    name: object
+                )
+                default: null
+                hooks: array(
+                )
+            )
+            1: Param(
+                attrGroups: array(
+                )
+                flags: 0
+                type: Identifier(
+                    name: array
+                )
+                byRef: false
+                variadic: false
+                var: Expr_Variable(
+                    name: withProperties
+                )
+                default: Expr_Array(
+                    items: array(
+                    )
+                )
+                hooks: array(
+                )
+            )
+        )
+        returnType: Identifier(
+            name: object
+        )
+        stmts: array(
+        )
+    )
+    1: Stmt_Expression(
+        expr: Expr_Clone(
+            expr: Expr_Variable(
+                name: x
+            )
+        )
+    )
+    2: Stmt_Expression(
+        expr: Expr_Clone(
+            expr: Expr_Variable(
+                name: x
+            )
+        )
+    )
+    3: Stmt_Expression(
+        expr: Expr_FuncCall(
+            name: Name(
+                name: clone
+            )
+            args: array(
+                0: Arg(
+                    name: null
+                    value: Expr_Variable(
+                        name: x
+                    )
+                    byRef: false
+                    unpack: false
+                )
+            )
+        )
+    )
+    4: Stmt_Expression(
+        expr: Expr_FuncCall(
+            name: Name(
+                name: clone
+            )
+            args: array(
+                0: Arg(
+                    name: null
+                    value: Expr_Variable(
+                        name: x
+                    )
+                    byRef: false
+                    unpack: false
+                )
+                1: Arg(
+                    name: null
+                    value: Expr_Array(
+                        items: array(
+                            0: ArrayItem(
+                                key: Scalar_String(
+                                    value: foo
+                                )
+                                value: Expr_Variable(
+                                    name: foo
+                                )
+                                byRef: false
+                                unpack: false
+                            )
+                            1: ArrayItem(
+                                key: Scalar_String(
+                                    value: bar
+                                )
+                                value: Expr_Variable(
+                                    name: bar
+                                )
+                                byRef: false
+                                unpack: false
+                            )
+                        )
+                    )
+                    byRef: false
+                    unpack: false
+                )
+            )
+        )
+    )
+    5: Stmt_Expression(
+        expr: Expr_FuncCall(
+            name: Name(
+                name: clone
+            )
+            args: array(
+                0: Arg(
+                    name: null
+                    value: Expr_Variable(
+                        name: x
+                    )
+                    byRef: false
+                    unpack: false
+                )
+                1: Arg(
+                    name: null
+                    value: Expr_Variable(
+                        name: array
+                    )
+                    byRef: false
+                    unpack: false
+                )
+            )
+        )
+    )
+    6: Stmt_Expression(
+        expr: Expr_FuncCall(
+            name: Name(
+                name: clone
+            )
+            args: array(
+                0: Arg(
+                    name: null
+                    value: Expr_Variable(
+                        name: x
+                    )
+                    byRef: false
+                    unpack: false
+                )
+                1: Arg(
+                    name: null
+                    value: Expr_Variable(
+                        name: array
+                    )
+                    byRef: false
+                    unpack: false
+                )
+                2: Arg(
+                    name: null
+                    value: Expr_Variable(
+                        name: extraParameter
+                    )
+                    byRef: false
+                    unpack: false
+                )
+                3: Arg(
+                    name: null
+                    value: Expr_Variable(
+                        name: trailingComma
+                    )
+                    byRef: false
+                    unpack: false
+                )
+            )
+        )
+    )
+    7: Stmt_Expression(
+        expr: Expr_FuncCall(
+            name: Name(
+                name: clone
+            )
+            args: array(
+                0: Arg(
+                    name: Identifier(
+                        name: object
+                    )
+                    value: Expr_Variable(
+                        name: x
+                    )
+                    byRef: false
+                    unpack: false
+                )
+                1: Arg(
+                    name: Identifier(
+                        name: withProperties
+                    )
+                    value: Expr_Array(
+                        items: array(
+                            0: ArrayItem(
+                                key: Scalar_String(
+                                    value: foo
+                                )
+                                value: Expr_Variable(
+                                    name: foo
+                                )
+                                byRef: false
+                                unpack: false
+                            )
+                            1: ArrayItem(
+                                key: Scalar_String(
+                                    value: bar
+                                )
+                                value: Expr_Variable(
+                                    name: bar
+                                )
+                                byRef: false
+                                unpack: false
+                            )
+                        )
+                    )
+                    byRef: false
+                    unpack: false
+                )
+            )
+        )
+    )
+    8: Stmt_Expression(
+        expr: Expr_FuncCall(
+            name: Name(
+                name: clone
+            )
+            args: array(
+                0: Arg(
+                    name: null
+                    value: Expr_Variable(
+                        name: x
+                    )
+                    byRef: false
+                    unpack: false
+                )
+                1: Arg(
+                    name: Identifier(
+                        name: withProperties
+                    )
+                    value: Expr_Array(
+                        items: array(
+                            0: ArrayItem(
+                                key: Scalar_String(
+                                    value: foo
+                                )
+                                value: Expr_Variable(
+                                    name: foo
+                                )
+                                byRef: false
+                                unpack: false
+                            )
+                            1: ArrayItem(
+                                key: Scalar_String(
+                                    value: bar
+                                )
+                                value: Expr_Variable(
+                                    name: bar
+                                )
+                                byRef: false
+                                unpack: false
+                            )
+                        )
+                    )
+                    byRef: false
+                    unpack: false
+                )
+            )
+        )
+    )
+    9: Stmt_Expression(
+        expr: Expr_FuncCall(
+            name: Name(
+                name: clone
+            )
+            args: array(
+                0: Arg(
+                    name: Identifier(
+                        name: object
+                    )
+                    value: Expr_Variable(
+                        name: x
+                    )
+                    byRef: false
+                    unpack: false
+                )
+            )
+        )
+    )
+    10: Stmt_Expression(
+        expr: Expr_FuncCall(
+            name: Name(
+                name: clone
+            )
+            args: array(
+                0: Arg(
+                    name: Identifier(
+                        name: object
+                    )
+                    value: Expr_Variable(
+                        name: x
+                    )
+                    byRef: false
+                    unpack: false
+                )
+                1: Arg(
+                    name: null
+                    value: Expr_Array(
+                        items: array(
+                            0: ArrayItem(
+                                key: Scalar_String(
+                                    value: foo
+                                )
+                                value: Expr_Variable(
+                                    name: foo
+                                )
+                                byRef: false
+                                unpack: false
+                            )
+                            1: ArrayItem(
+                                key: Scalar_String(
+                                    value: bar
+                                )
+                                value: Expr_Variable(
+                                    name: bar
+                                )
+                                byRef: false
+                                unpack: false
+                            )
+                        )
+                    )
+                    byRef: false
+                    unpack: false
+                )
+            )
+        )
+    )
+    11: Stmt_Expression(
+        expr: Expr_FuncCall(
+            name: Name(
+                name: clone
+            )
+            args: array(
+                0: Arg(
+                    name: null
+                    value: Expr_Array(
+                        items: array(
+                            0: ArrayItem(
+                                key: Scalar_String(
+                                    value: object
+                                )
+                                value: Expr_Variable(
+                                    name: x
+                                )
+                                byRef: false
+                                unpack: false
+                            )
+                            1: ArrayItem(
+                                key: Scalar_String(
+                                    value: withProperties
+                                )
+                                value: Expr_Array(
+                                    items: array(
+                                        0: ArrayItem(
+                                            key: Scalar_String(
+                                                value: foo
+                                            )
+                                            value: Expr_Variable(
+                                                name: foo
+                                            )
+                                            byRef: false
+                                            unpack: false
+                                        )
+                                        1: ArrayItem(
+                                            key: Scalar_String(
+                                                value: bar
+                                            )
+                                            value: Expr_Variable(
+                                                name: bar
+                                            )
+                                            byRef: false
+                                            unpack: false
+                                        )
+                                    )
+                                )
+                                byRef: false
+                                unpack: false
+                            )
+                        )
+                    )
+                    byRef: false
+                    unpack: true
+                )
+            )
+        )
+    )
+    12: Stmt_Expression(
+        expr: Expr_FuncCall(
+            name: Name(
+                name: clone
+            )
+            args: array(
+                0: VariadicPlaceholder(
+                )
+            )
+        )
+    )
+)
diff -pruN 5.4.0-3/test/code/parser/stmt/newInInitializer.test 5.6.1-2/test/code/parser/stmt/newInInitializer.test
--- 5.4.0-3/test/code/parser/stmt/newInInitializer.test	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/test/code/parser/stmt/newInInitializer.test	2025-08-13 20:13:15.000000000 +0000
@@ -16,6 +16,8 @@ class Bar {
 -----
 array(
     0: Stmt_Const(
+        attrGroups: array(
+        )
         consts: array(
             0: Const(
                 name: Identifier(
diff -pruN 5.4.0-3/test/code/parser/stmt/voidCast.test 5.6.1-2/test/code/parser/stmt/voidCast.test
--- 5.4.0-3/test/code/parser/stmt/voidCast.test	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.1-2/test/code/parser/stmt/voidCast.test	2025-08-13 20:13:15.000000000 +0000
@@ -0,0 +1,95 @@
+Void cast
+-----
+<?php
+(void)foo();
+( VOID ) foo();
+(void)$a or $b;
+
+// This is explicitly allowed.
+for ((void)a(); $b; (void)$c) {
+}
+
+// PHP does not allow this, but the parser accepts it.
+$x = (void) $y;
+-----
+array(
+    0: Stmt_Expression(
+        expr: Expr_Cast_Void(
+            expr: Expr_FuncCall(
+                name: Name(
+                    name: foo
+                )
+                args: array(
+                )
+            )
+        )
+    )
+    1: Stmt_Expression(
+        expr: Expr_Cast_Void(
+            expr: Expr_FuncCall(
+                name: Name(
+                    name: foo
+                )
+                args: array(
+                )
+            )
+        )
+    )
+    2: Stmt_Expression(
+        expr: Expr_Cast_Void(
+            expr: Expr_BinaryOp_LogicalOr(
+                left: Expr_Variable(
+                    name: a
+                )
+                right: Expr_Variable(
+                    name: b
+                )
+            )
+        )
+    )
+    3: Stmt_For(
+        init: array(
+            0: Expr_Cast_Void(
+                expr: Expr_FuncCall(
+                    name: Name(
+                        name: a
+                    )
+                    args: array(
+                    )
+                )
+            )
+        )
+        cond: array(
+            0: Expr_Variable(
+                name: b
+            )
+        )
+        loop: array(
+            0: Expr_Cast_Void(
+                expr: Expr_Variable(
+                    name: c
+                )
+            )
+        )
+        stmts: array(
+        )
+        comments: array(
+            0: // This is explicitly allowed.
+        )
+    )
+    4: Stmt_Expression(
+        expr: Expr_Assign(
+            var: Expr_Variable(
+                name: x
+            )
+            expr: Expr_Cast_Void(
+                expr: Expr_Variable(
+                    name: y
+                )
+            )
+        )
+        comments: array(
+            0: // PHP does not allow this, but the parser accepts it.
+        )
+    )
+)
\ No newline at end of file
diff -pruN 5.4.0-3/test/code/prettyPrinter/expr/cast.test 5.6.1-2/test/code/prettyPrinter/expr/cast.test
--- 5.4.0-3/test/code/prettyPrinter/expr/cast.test	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.1-2/test/code/prettyPrinter/expr/cast.test	2025-08-13 20:13:15.000000000 +0000
@@ -0,0 +1,17 @@
+Casts
+-----
+<?php
+
+$int = (int) $int;
+$integer = (integer) $integer;
+$bool = (bool) $bool;
+$boolean = (boolean) $boolean;
+$string = (string) $string;
+$binary = (binary) $binary;
+-----
+$int = (int) $int;
+$integer = (int) $integer;
+$bool = (bool) $bool;
+$boolean = (bool) $boolean;
+$string = (string) $string;
+$binary = (string) $binary;
\ No newline at end of file
diff -pruN 5.4.0-3/test/code/prettyPrinter/expr/pipe.test 5.6.1-2/test/code/prettyPrinter/expr/pipe.test
--- 5.4.0-3/test/code/prettyPrinter/expr/pipe.test	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.1-2/test/code/prettyPrinter/expr/pipe.test	2025-08-13 20:13:15.000000000 +0000
@@ -0,0 +1,16 @@
+Pipe operator
+-----
+<?php
+$a |> $b |> $c;
+$a . $b |> $c . $d;
+$a |> $b == $c;
+$c == $a |> $b;
+($a == $b) |> ($c == $d);
+$a . ($b |> $c) . $d;
+-----
+$a |> $b |> $c;
+$a . $b |> $c . $d;
+$a |> $b == $c;
+$c == $a |> $b;
+($a == $b) |> ($c == $d);
+$a . ($b |> $c) . $d;
\ No newline at end of file
diff -pruN 5.4.0-3/test/code/prettyPrinter/stmt/attributes.test 5.6.1-2/test/code/prettyPrinter/stmt/attributes.test
--- 5.4.0-3/test/code/prettyPrinter/stmt/attributes.test	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/test/code/prettyPrinter/stmt/attributes.test	2025-08-13 20:13:15.000000000 +0000
@@ -38,7 +38,10 @@ function a()
 class C
 {
     #[A6]
-    public function m(#[A7] $param)
+    public function m(
+        #[A7]
+        $param
+    )
     {
     }
     #[A12]
@@ -57,4 +60,12 @@ $x = #[A10] function () {
 $y = #[A11] fn() => 0;
 new #[A13] class
 {
-};
\ No newline at end of file
+};
+-----
+<?php
+function test(#[A] $b) {}
+-----
+!!version=8.0
+function test(#[A] $b)
+{
+}
\ No newline at end of file
diff -pruN 5.4.0-3/test/code/prettyPrinter/stmt/const.test 5.6.1-2/test/code/prettyPrinter/stmt/const.test
--- 5.4.0-3/test/code/prettyPrinter/stmt/const.test	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/test/code/prettyPrinter/stmt/const.test	2025-08-13 20:13:15.000000000 +0000
@@ -5,7 +5,24 @@ Constant declarations
 const FOO = 'BAR';
 const FOO = 1 + 1;
 const FOO = BAR, BAR = FOO;
+
+#[Example]
+const FOO = true;
+
+#[First]
+#[Second]
+const FOO = true;
+
+#[First, Second]
+const FOO = true;
 -----
 const FOO = 'BAR';
 const FOO = 1 + 1;
-const FOO = BAR, BAR = FOO;
\ No newline at end of file
+const FOO = BAR, BAR = FOO;
+#[Example]
+const FOO = true;
+#[First]
+#[Second]
+const FOO = true;
+#[First, Second]
+const FOO = true;
\ No newline at end of file
diff -pruN 5.4.0-3/test/code/prettyPrinter/stmt/property_promotion.test 5.6.1-2/test/code/prettyPrinter/stmt/property_promotion.test
--- 5.4.0-3/test/code/prettyPrinter/stmt/property_promotion.test	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/test/code/prettyPrinter/stmt/property_promotion.test	2025-08-13 20:13:15.000000000 +0000
@@ -9,13 +9,14 @@ class Point
         protected array $y = [],
         private string $z = 'hello',
         public readonly int $a = 0,
+        protected final bool $b = true,
     ) {
     }
 }
 -----
 class Point
 {
-    public function __construct(public float $x = 0.0, protected array $y = [], private string $z = 'hello', public readonly int $a = 0)
+    public function __construct(public float $x = 0.0, protected array $y = [], private string $z = 'hello', public readonly int $a = 0, final protected bool $b = true)
     {
     }
 }
diff -pruN 5.4.0-3/test/code/prettyPrinter/stmt/voidCast.test 5.6.1-2/test/code/prettyPrinter/stmt/voidCast.test
--- 5.4.0-3/test/code/prettyPrinter/stmt/voidCast.test	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.1-2/test/code/prettyPrinter/stmt/voidCast.test	2025-08-13 20:13:15.000000000 +0000
@@ -0,0 +1,6 @@
+Void cast
+-----
+<?php
+(void) foo();
+-----
+(void) foo();
\ No newline at end of file
diff -pruN 5.4.0-3/test_old/run.php 5.6.1-2/test_old/run.php
--- 5.4.0-3/test_old/run.php	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/test_old/run.php	2025-08-13 20:13:15.000000000 +0000
@@ -1,6 +1,6 @@
 <?php
 
-error_reporting(E_ALL | E_STRICT);
+error_reporting(E_ALL);
 ini_set('short_open_tag', false);
 
 if ('cli' !== php_sapi_name()) {
@@ -121,6 +121,8 @@ switch ($testType) {
 | Zend.tests.type_declarations.intersection_types.parsing_comment
 # comments in property fetch syntax, not emulated on old PHP versions
 | Zend.tests.gh14961
+# harmless pretty print difference for clone($x, )
+| Zend.tests.clone.ast
 )\.phpt$~x', $file)) {
                 return null;
             }
diff -pruN 5.4.0-3/tools/composer.json 5.6.1-2/tools/composer.json
--- 5.4.0-3/tools/composer.json	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/tools/composer.json	2025-08-13 20:13:15.000000000 +0000
@@ -1,6 +1,6 @@
 {
     "require": {
         "friendsofphp/php-cs-fixer": "^3.10",
-        "phpstan/phpstan": "^1.8"
+        "phpstan/phpstan": "^2.0"
     }
 }
diff -pruN 5.4.0-3/tools/fuzzing/target.php 5.6.1-2/tools/fuzzing/target.php
--- 5.4.0-3/tools/fuzzing/target.php	2024-12-30 11:07:19.000000000 +0000
+++ 5.6.1-2/tools/fuzzing/target.php	2025-08-13 20:13:15.000000000 +0000
@@ -2,6 +2,7 @@
 
 /** @var PhpFuzzer\Fuzzer $fuzzer */
 
+use PhpParser\Node;
 use PhpParser\Node\Expr;
 use PhpParser\Node\Scalar;
 use PhpParser\Node\Stmt;
@@ -95,6 +96,13 @@ $visitor = new class extends PhpParser\N
         ) {
             $this->hasProblematicConstruct = true;
         }
+
+        // clone($x, ) is not preserved precisely.
+        if ($node instanceof Expr\FuncCall && $node->name instanceof Node\Name &&
+            $node->name->toLowerString() == 'clone' && count($node->args) == 1
+        ) {
+            $this->hasProblematicConstruct = true;
+        }
     }
 };
 $traverser = new PhpParser\NodeTraverser();
