summaryrefslogtreecommitdiff
path: root/vendor/nikic/php-parser/lib/PhpParser/Node
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2022-03-22 12:24:31 +0300
committerAndrew Dolgov <[email protected]>2022-03-22 12:24:31 +0300
commit1c4f7ab3b838b23afb2ee4dab14acbf75956e952 (patch)
tree0a19274107d717efe92d2c0376cd3105fead5a11 /vendor/nikic/php-parser/lib/PhpParser/Node
parent711662948768492e8d05b778a7d80eacaec368d2 (diff)
* add phpunit as a dev dependency
* add some basic tests for UrlHelper::rewrite_relative() * fix UrlHelper::rewrite_relative() to work better on non-absolute relative URL paths
Diffstat (limited to 'vendor/nikic/php-parser/lib/PhpParser/Node')
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Arg.php46
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Attribute.php34
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php29
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/ComplexType.php14
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Const_.php37
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr.php9
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php34
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php41
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php34
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php79
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php34
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php12
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseOr.php12
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseXor.php12
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php12
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Concat.php12
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Div.php12
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Minus.php12
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mod.php12
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mul.php12
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Plus.php12
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Pow.php12
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftLeft.php12
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftRight.php12
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignRef.php34
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php40
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseOr.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseXor.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanAnd.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanOr.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Coalesce.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Concat.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Div.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Equal.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Greater.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalAnd.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalOr.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalXor.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Minus.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mod.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mul.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotEqual.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotIdentical.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Plus.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pow.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftLeft.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftRight.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Spaceship.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php39
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php26
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.php12
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Bool_.php12
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Double.php17
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Int_.php12
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Object_.php12
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/String_.php12
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Unset_.php12
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php36
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php79
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php34
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php31
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php31
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php34
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php39
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php39
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php35
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php31
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php45
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php41
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php45
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php35
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php35
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php46
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php36
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php38
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php34
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php43
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Identifier.php75
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/IntersectionType.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/MatchArm.php31
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Name.php242
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php50
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php50
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/NullableType.php28
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Param.php60
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Scalar.php7
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php70
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php31
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php78
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php28
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Dir.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/File.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Function_.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Line.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Method.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Namespace_.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Trait_.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php141
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt.php9
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php34
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php41
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php80
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php109
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php159
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php112
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php34
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php34
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php34
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php34
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/EnumCase.php37
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Enum_.php40
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php33
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php43
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php47
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php77
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php31
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php39
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php43
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php37
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php31
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php38
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php17
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php91
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php34
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php37
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php34
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Throw_.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php34
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php13
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.php38
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php34
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php32
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php38
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php52
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php47
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php34
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/UnionType.php28
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php17
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/VariadicPlaceholder.php27
178 files changed, 5846 insertions, 0 deletions
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Arg.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Arg.php
new file mode 100644
index 000000000..bcf130e68
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Arg.php
@@ -0,0 +1,46 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node;
+
+use PhpParser\Node\VariadicPlaceholder;
+use PhpParser\NodeAbstract;
+
+class Arg extends NodeAbstract
+{
+ /** @var Identifier|null Parameter name (for named parameters) */
+ public $name;
+ /** @var Expr Value to pass */
+ public $value;
+ /** @var bool Whether to pass by ref */
+ public $byRef;
+ /** @var bool Whether to unpack the argument */
+ public $unpack;
+
+ /**
+ * Constructs a function call argument node.
+ *
+ * @param Expr $value Value to pass
+ * @param bool $byRef Whether to pass by ref
+ * @param bool $unpack Whether to unpack the argument
+ * @param array $attributes Additional attributes
+ * @param Identifier|null $name Parameter name (for named parameters)
+ */
+ public function __construct(
+ Expr $value, bool $byRef = false, bool $unpack = false, array $attributes = [],
+ Identifier $name = null
+ ) {
+ $this->attributes = $attributes;
+ $this->name = $name;
+ $this->value = $value;
+ $this->byRef = $byRef;
+ $this->unpack = $unpack;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['name', 'value', 'byRef', 'unpack'];
+ }
+
+ public function getType() : string {
+ return 'Arg';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Attribute.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Attribute.php
new file mode 100644
index 000000000..c96f66e51
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Attribute.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node;
+
+use PhpParser\Node;
+use PhpParser\NodeAbstract;
+
+class Attribute extends NodeAbstract
+{
+ /** @var Name Attribute name */
+ public $name;
+
+ /** @var Arg[] Attribute arguments */
+ public $args;
+
+ /**
+ * @param Node\Name $name Attribute name
+ * @param Arg[] $args Attribute arguments
+ * @param array $attributes Additional node attributes
+ */
+ public function __construct(Name $name, array $args = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->name = $name;
+ $this->args = $args;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['name', 'args'];
+ }
+
+ public function getType() : string {
+ return 'Attribute';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php b/vendor/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php
new file mode 100644
index 000000000..613bfc413
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php
@@ -0,0 +1,29 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node;
+
+use PhpParser\Node;
+use PhpParser\NodeAbstract;
+
+class AttributeGroup extends NodeAbstract
+{
+ /** @var Attribute[] Attributes */
+ public $attrs;
+
+ /**
+ * @param Attribute[] $attrs PHP attributes
+ * @param array $attributes Additional node attributes
+ */
+ public function __construct(array $attrs, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->attrs = $attrs;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['attrs'];
+ }
+
+ public function getType() : string {
+ return 'AttributeGroup';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/ComplexType.php b/vendor/nikic/php-parser/lib/PhpParser/Node/ComplexType.php
new file mode 100644
index 000000000..9505532ae
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/ComplexType.php
@@ -0,0 +1,14 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node;
+
+use PhpParser\NodeAbstract;
+
+/**
+ * This is a base class for complex types, including nullable types and union types.
+ *
+ * It does not provide any shared behavior and exists only for type-checking purposes.
+ */
+abstract class ComplexType extends NodeAbstract
+{
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Const_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Const_.php
new file mode 100644
index 000000000..b69eb16fa
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Const_.php
@@ -0,0 +1,37 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node;
+
+use PhpParser\NodeAbstract;
+
+class Const_ extends NodeAbstract
+{
+ /** @var Identifier Name */
+ public $name;
+ /** @var Expr Value */
+ public $value;
+
+ /** @var Name Namespaced name (if using NameResolver) */
+ public $namespacedName;
+
+ /**
+ * Constructs a const node for use in class const and const statements.
+ *
+ * @param string|Identifier $name Name
+ * @param Expr $value Value
+ * @param array $attributes Additional attributes
+ */
+ public function __construct($name, Expr $value, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->name = \is_string($name) ? new Identifier($name) : $name;
+ $this->value = $value;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['name', 'value'];
+ }
+
+ public function getType() : string {
+ return 'Const';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr.php
new file mode 100644
index 000000000..6cf4df223
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr.php
@@ -0,0 +1,9 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node;
+
+use PhpParser\NodeAbstract;
+
+abstract class Expr extends NodeAbstract
+{
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php
new file mode 100644
index 000000000..71694478e
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class ArrayDimFetch extends Expr
+{
+ /** @var Expr Variable */
+ public $var;
+ /** @var null|Expr Array index / dim */
+ public $dim;
+
+ /**
+ * Constructs an array index fetch node.
+ *
+ * @param Expr $var Variable
+ * @param null|Expr $dim Array index / dim
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $var, Expr $dim = null, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->var = $var;
+ $this->dim = $dim;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['var', 'dim'];
+ }
+
+ public function getType() : string {
+ return 'Expr_ArrayDimFetch';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php
new file mode 100644
index 000000000..1b078f821
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php
@@ -0,0 +1,41 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class ArrayItem extends Expr
+{
+ /** @var null|Expr Key */
+ public $key;
+ /** @var Expr Value */
+ public $value;
+ /** @var bool Whether to assign by reference */
+ public $byRef;
+ /** @var bool Whether to unpack the argument */
+ public $unpack;
+
+ /**
+ * Constructs an array item node.
+ *
+ * @param Expr $value Value
+ * @param null|Expr $key Key
+ * @param bool $byRef Whether to assign by reference
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $value, Expr $key = null, bool $byRef = false, array $attributes = [], bool $unpack = false) {
+ $this->attributes = $attributes;
+ $this->key = $key;
+ $this->value = $value;
+ $this->byRef = $byRef;
+ $this->unpack = $unpack;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['key', 'value', 'byRef', 'unpack'];
+ }
+
+ public function getType() : string {
+ return 'Expr_ArrayItem';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php
new file mode 100644
index 000000000..e6eaa2834
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class Array_ extends Expr
+{
+ // For use in "kind" attribute
+ const KIND_LONG = 1; // array() syntax
+ const KIND_SHORT = 2; // [] syntax
+
+ /** @var (ArrayItem|null)[] Items */
+ public $items;
+
+ /**
+ * Constructs an array node.
+ *
+ * @param (ArrayItem|null)[] $items Items of the array
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $items = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->items = $items;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['items'];
+ }
+
+ public function getType() : string {
+ return 'Expr_Array';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php
new file mode 100644
index 000000000..c273fb7ee
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php
@@ -0,0 +1,79 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node;
+use PhpParser\Node\Expr;
+use PhpParser\Node\FunctionLike;
+
+class ArrowFunction extends Expr implements FunctionLike
+{
+ /** @var bool */
+ public $static;
+
+ /** @var bool */
+ public $byRef;
+
+ /** @var Node\Param[] */
+ public $params = [];
+
+ /** @var null|Node\Identifier|Node\Name|Node\ComplexType */
+ public $returnType;
+
+ /** @var Expr */
+ public $expr;
+ /** @var Node\AttributeGroup[] */
+ public $attrGroups;
+
+ /**
+ * @param array $subNodes Array of the following optional subnodes:
+ * 'static' => false : Whether the closure is static
+ * 'byRef' => false : Whether to return by reference
+ * 'params' => array() : Parameters
+ * 'returnType' => null : Return type
+ * 'expr' => Expr : Expression body
+ * 'attrGroups' => array() : PHP attribute groups
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $subNodes = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->static = $subNodes['static'] ?? false;
+ $this->byRef = $subNodes['byRef'] ?? false;
+ $this->params = $subNodes['params'] ?? [];
+ $returnType = $subNodes['returnType'] ?? null;
+ $this->returnType = \is_string($returnType) ? new Node\Identifier($returnType) : $returnType;
+ $this->expr = $subNodes['expr'];
+ $this->attrGroups = $subNodes['attrGroups'] ?? [];
+ }
+
+ public function getSubNodeNames() : array {
+ return ['attrGroups', 'static', 'byRef', 'params', 'returnType', 'expr'];
+ }
+
+ public function returnsByRef() : bool {
+ return $this->byRef;
+ }
+
+ public function getParams() : array {
+ return $this->params;
+ }
+
+ public function getReturnType() {
+ return $this->returnType;
+ }
+
+ public function getAttrGroups() : array {
+ return $this->attrGroups;
+ }
+
+ /**
+ * @return Node\Stmt\Return_[]
+ */
+ public function getStmts() : array {
+ return [new Node\Stmt\Return_($this->expr)];
+ }
+
+ public function getType() : string {
+ return 'Expr_ArrowFunction';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php
new file mode 100644
index 000000000..cf9e6e82b
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class Assign extends Expr
+{
+ /** @var Expr Variable */
+ public $var;
+ /** @var Expr Expression */
+ public $expr;
+
+ /**
+ * Constructs an assignment node.
+ *
+ * @param Expr $var Variable
+ * @param Expr $expr Expression
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $var, Expr $expr, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->var = $var;
+ $this->expr = $expr;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['var', 'expr'];
+ }
+
+ public function getType() : string {
+ return 'Expr_Assign';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php
new file mode 100644
index 000000000..bce8604f1
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+abstract class AssignOp extends Expr
+{
+ /** @var Expr Variable */
+ public $var;
+ /** @var Expr Expression */
+ public $expr;
+
+ /**
+ * Constructs a compound assignment operation node.
+ *
+ * @param Expr $var Variable
+ * @param Expr $expr Expression
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $var, Expr $expr, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->var = $var;
+ $this->expr = $expr;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['var', 'expr'];
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php
new file mode 100644
index 000000000..420284cdc
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php
@@ -0,0 +1,12 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\AssignOp;
+
+use PhpParser\Node\Expr\AssignOp;
+
+class BitwiseAnd extends AssignOp
+{
+ public function getType() : string {
+ return 'Expr_AssignOp_BitwiseAnd';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseOr.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseOr.php
new file mode 100644
index 000000000..481ad3bbc
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseOr.php
@@ -0,0 +1,12 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\AssignOp;
+
+use PhpParser\Node\Expr\AssignOp;
+
+class BitwiseOr extends AssignOp
+{
+ public function getType() : string {
+ return 'Expr_AssignOp_BitwiseOr';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseXor.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseXor.php
new file mode 100644
index 000000000..f41d4c8e7
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseXor.php
@@ -0,0 +1,12 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\AssignOp;
+
+use PhpParser\Node\Expr\AssignOp;
+
+class BitwiseXor extends AssignOp
+{
+ public function getType() : string {
+ return 'Expr_AssignOp_BitwiseXor';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php
new file mode 100644
index 000000000..c0e9b316c
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php
@@ -0,0 +1,12 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\AssignOp;
+
+use PhpParser\Node\Expr\AssignOp;
+
+class Coalesce extends AssignOp
+{
+ public function getType() : string {
+ return 'Expr_AssignOp_Coalesce';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Concat.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Concat.php
new file mode 100644
index 000000000..ac1682078
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Concat.php
@@ -0,0 +1,12 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\AssignOp;
+
+use PhpParser\Node\Expr\AssignOp;
+
+class Concat extends AssignOp
+{
+ public function getType() : string {
+ return 'Expr_AssignOp_Concat';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Div.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Div.php
new file mode 100644
index 000000000..f1fcfc09a
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Div.php
@@ -0,0 +1,12 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\AssignOp;
+
+use PhpParser\Node\Expr\AssignOp;
+
+class Div extends AssignOp
+{
+ public function getType() : string {
+ return 'Expr_AssignOp_Div';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Minus.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Minus.php
new file mode 100644
index 000000000..82ef4517b
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Minus.php
@@ -0,0 +1,12 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\AssignOp;
+
+use PhpParser\Node\Expr\AssignOp;
+
+class Minus extends AssignOp
+{
+ public function getType() : string {
+ return 'Expr_AssignOp_Minus';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mod.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mod.php
new file mode 100644
index 000000000..be3b4a0ad
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mod.php
@@ -0,0 +1,12 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\AssignOp;
+
+use PhpParser\Node\Expr\AssignOp;
+
+class Mod extends AssignOp
+{
+ public function getType() : string {
+ return 'Expr_AssignOp_Mod';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mul.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mul.php
new file mode 100644
index 000000000..5c196c3bc
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mul.php
@@ -0,0 +1,12 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\AssignOp;
+
+use PhpParser\Node\Expr\AssignOp;
+
+class Mul extends AssignOp
+{
+ public function getType() : string {
+ return 'Expr_AssignOp_Mul';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Plus.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Plus.php
new file mode 100644
index 000000000..dd101c61c
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Plus.php
@@ -0,0 +1,12 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\AssignOp;
+
+use PhpParser\Node\Expr\AssignOp;
+
+class Plus extends AssignOp
+{
+ public function getType() : string {
+ return 'Expr_AssignOp_Plus';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Pow.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Pow.php
new file mode 100644
index 000000000..5e1307d1d
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Pow.php
@@ -0,0 +1,12 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\AssignOp;
+
+use PhpParser\Node\Expr\AssignOp;
+
+class Pow extends AssignOp
+{
+ public function getType() : string {
+ return 'Expr_AssignOp_Pow';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftLeft.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftLeft.php
new file mode 100644
index 000000000..b8f88269b
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftLeft.php
@@ -0,0 +1,12 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\AssignOp;
+
+use PhpParser\Node\Expr\AssignOp;
+
+class ShiftLeft extends AssignOp
+{
+ public function getType() : string {
+ return 'Expr_AssignOp_ShiftLeft';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftRight.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftRight.php
new file mode 100644
index 000000000..e0cc67b7f
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftRight.php
@@ -0,0 +1,12 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\AssignOp;
+
+use PhpParser\Node\Expr\AssignOp;
+
+class ShiftRight extends AssignOp
+{
+ public function getType() : string {
+ return 'Expr_AssignOp_ShiftRight';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignRef.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignRef.php
new file mode 100644
index 000000000..de3c644c3
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignRef.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class AssignRef extends Expr
+{
+ /** @var Expr Variable reference is assigned to */
+ public $var;
+ /** @var Expr Variable which is referenced */
+ public $expr;
+
+ /**
+ * Constructs an assignment node.
+ *
+ * @param Expr $var Variable
+ * @param Expr $expr Expression
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $var, Expr $expr, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->var = $var;
+ $this->expr = $expr;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['var', 'expr'];
+ }
+
+ public function getType() : string {
+ return 'Expr_AssignRef';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php
new file mode 100644
index 000000000..d9c582b0d
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php
@@ -0,0 +1,40 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+abstract class BinaryOp extends Expr
+{
+ /** @var Expr The left hand side expression */
+ public $left;
+ /** @var Expr The right hand side expression */
+ public $right;
+
+ /**
+ * Constructs a binary operator node.
+ *
+ * @param Expr $left The left hand side expression
+ * @param Expr $right The right hand side expression
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $left, Expr $right, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->left = $left;
+ $this->right = $right;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['left', 'right'];
+ }
+
+ /**
+ * Get the operator sigil for this binary operation.
+ *
+ * In the case there are multiple possible sigils for an operator, this method does not
+ * necessarily return the one used in the parsed code.
+ *
+ * @return string
+ */
+ abstract public function getOperatorSigil() : string;
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php
new file mode 100644
index 000000000..d907393bf
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class BitwiseAnd extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '&';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_BitwiseAnd';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseOr.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseOr.php
new file mode 100644
index 000000000..d92069f32
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseOr.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class BitwiseOr extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '|';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_BitwiseOr';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseXor.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseXor.php
new file mode 100644
index 000000000..40fa94f88
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseXor.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class BitwiseXor extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '^';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_BitwiseXor';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanAnd.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanAnd.php
new file mode 100644
index 000000000..4c3c9e9b1
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanAnd.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class BooleanAnd extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '&&';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_BooleanAnd';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanOr.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanOr.php
new file mode 100644
index 000000000..5ad417279
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanOr.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class BooleanOr extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '||';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_BooleanOr';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Coalesce.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Coalesce.php
new file mode 100644
index 000000000..b8cf6f459
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Coalesce.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class Coalesce extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '??';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_Coalesce';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Concat.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Concat.php
new file mode 100644
index 000000000..9a8d9873c
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Concat.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class Concat extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '.';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_Concat';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Div.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Div.php
new file mode 100644
index 000000000..d38df0db4
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Div.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class Div extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '/';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_Div';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Equal.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Equal.php
new file mode 100644
index 000000000..e7b11dc82
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Equal.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class Equal extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '==';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_Equal';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Greater.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Greater.php
new file mode 100644
index 000000000..da01f7a10
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Greater.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class Greater extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '>';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_Greater';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.php
new file mode 100644
index 000000000..d677502cf
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class GreaterOrEqual extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '>=';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_GreaterOrEqual';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php
new file mode 100644
index 000000000..3d96285c6
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class Identical extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '===';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_Identical';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalAnd.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalAnd.php
new file mode 100644
index 000000000..2a3afd548
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalAnd.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class LogicalAnd extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return 'and';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_LogicalAnd';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalOr.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalOr.php
new file mode 100644
index 000000000..21507dba6
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalOr.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class LogicalOr extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return 'or';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_LogicalOr';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalXor.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalXor.php
new file mode 100644
index 000000000..261c6a910
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalXor.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class LogicalXor extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return 'xor';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_LogicalXor';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Minus.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Minus.php
new file mode 100644
index 000000000..54b3c6e90
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Minus.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class Minus extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '-';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_Minus';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mod.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mod.php
new file mode 100644
index 000000000..103404040
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mod.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class Mod extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '%';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_Mod';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mul.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mul.php
new file mode 100644
index 000000000..b82d0b2fc
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mul.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class Mul extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '*';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_Mul';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotEqual.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotEqual.php
new file mode 100644
index 000000000..51075da56
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotEqual.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class NotEqual extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '!=';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_NotEqual';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotIdentical.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotIdentical.php
new file mode 100644
index 000000000..fa4050e05
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotIdentical.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class NotIdentical extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '!==';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_NotIdentical';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Plus.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Plus.php
new file mode 100644
index 000000000..62f022998
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Plus.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class Plus extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '+';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_Plus';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pow.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pow.php
new file mode 100644
index 000000000..572a1e8e4
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pow.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class Pow extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '**';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_Pow';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftLeft.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftLeft.php
new file mode 100644
index 000000000..4e70b4ef0
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftLeft.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class ShiftLeft extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '<<';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_ShiftLeft';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftRight.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftRight.php
new file mode 100644
index 000000000..45acbd046
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftRight.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class ShiftRight extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '>>';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_ShiftRight';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php
new file mode 100644
index 000000000..3cb8e7e0d
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class Smaller extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '<';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_Smaller';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.php
new file mode 100644
index 000000000..83e8e214d
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class SmallerOrEqual extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '<=';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_SmallerOrEqual';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Spaceship.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Spaceship.php
new file mode 100644
index 000000000..8c6d787f6
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Spaceship.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class Spaceship extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '<=>';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_Spaceship';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php
new file mode 100644
index 000000000..ed44984be
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class BitwiseNot extends Expr
+{
+ /** @var Expr Expression */
+ public $expr;
+
+ /**
+ * Constructs a bitwise not node.
+ *
+ * @param Expr $expr Expression
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $expr, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->expr = $expr;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['expr'];
+ }
+
+ public function getType() : string {
+ return 'Expr_BitwiseNot';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php
new file mode 100644
index 000000000..bf27e9f65
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class BooleanNot extends Expr
+{
+ /** @var Expr Expression */
+ public $expr;
+
+ /**
+ * Constructs a boolean not node.
+ *
+ * @param Expr $expr Expression
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $expr, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->expr = $expr;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['expr'];
+ }
+
+ public function getType() : string {
+ return 'Expr_BooleanNot';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php
new file mode 100644
index 000000000..78e1cf349
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php
@@ -0,0 +1,39 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Arg;
+use PhpParser\Node\Expr;
+use PhpParser\Node\VariadicPlaceholder;
+
+abstract class CallLike extends Expr {
+ /**
+ * Return raw arguments, which may be actual Args, or VariadicPlaceholders for first-class
+ * callables.
+ *
+ * @return array<Arg|VariadicPlaceholder>
+ */
+ abstract public function getRawArgs(): array;
+
+ /**
+ * Returns whether this call expression is actually a first class callable.
+ */
+ public function isFirstClassCallable(): bool {
+ foreach ($this->getRawArgs() as $arg) {
+ if ($arg instanceof VariadicPlaceholder) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Assert that this is not a first-class callable and return only ordinary Args.
+ *
+ * @return Arg[]
+ */
+ public function getArgs(): array {
+ assert(!$this->isFirstClassCallable());
+ return $this->getRawArgs();
+ }
+} \ No newline at end of file
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php
new file mode 100644
index 000000000..36769d4fc
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php
@@ -0,0 +1,26 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+abstract class Cast extends Expr
+{
+ /** @var Expr Expression */
+ public $expr;
+
+ /**
+ * Constructs a cast node.
+ *
+ * @param Expr $expr Expression
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $expr, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->expr = $expr;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['expr'];
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.php
new file mode 100644
index 000000000..57cc473b6
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.php
@@ -0,0 +1,12 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\Cast;
+
+use PhpParser\Node\Expr\Cast;
+
+class Array_ extends Cast
+{
+ public function getType() : string {
+ return 'Expr_Cast_Array';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Bool_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Bool_.php
new file mode 100644
index 000000000..04eb4af58
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Bool_.php
@@ -0,0 +1,12 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\Cast;
+
+use PhpParser\Node\Expr\Cast;
+
+class Bool_ extends Cast
+{
+ public function getType() : string {
+ return 'Expr_Cast_Bool';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Double.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Double.php
new file mode 100644
index 000000000..891ba5f87
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Double.php
@@ -0,0 +1,17 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\Cast;
+
+use PhpParser\Node\Expr\Cast;
+
+class Double extends Cast
+{
+ // For use in "kind" attribute
+ const KIND_DOUBLE = 1; // "double" syntax
+ const KIND_FLOAT = 2; // "float" syntax
+ const KIND_REAL = 3; // "real" syntax
+
+ public function getType() : string {
+ return 'Expr_Cast_Double';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Int_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Int_.php
new file mode 100644
index 000000000..01ed594bd
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Int_.php
@@ -0,0 +1,12 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\Cast;
+
+use PhpParser\Node\Expr\Cast;
+
+class Int_ extends Cast
+{
+ public function getType() : string {
+ return 'Expr_Cast_Int';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Object_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Object_.php
new file mode 100644
index 000000000..163752be8
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Object_.php
@@ -0,0 +1,12 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\Cast;
+
+use PhpParser\Node\Expr\Cast;
+
+class Object_ extends Cast
+{
+ public function getType() : string {
+ return 'Expr_Cast_Object';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/String_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/String_.php
new file mode 100644
index 000000000..b3d99270a
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/String_.php
@@ -0,0 +1,12 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\Cast;
+
+use PhpParser\Node\Expr\Cast;
+
+class String_ extends Cast
+{
+ public function getType() : string {
+ return 'Expr_Cast_String';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Unset_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Unset_.php
new file mode 100644
index 000000000..accda3e4f
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Unset_.php
@@ -0,0 +1,12 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\Cast;
+
+use PhpParser\Node\Expr\Cast;
+
+class Unset_ extends Cast
+{
+ public function getType() : string {
+ return 'Expr_Cast_Unset';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php
new file mode 100644
index 000000000..faf832f93
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php
@@ -0,0 +1,36 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+use PhpParser\Node\Identifier;
+use PhpParser\Node\Name;
+
+class ClassConstFetch extends Expr
+{
+ /** @var Name|Expr Class name */
+ public $class;
+ /** @var Identifier|Error Constant name */
+ public $name;
+
+ /**
+ * Constructs a class const fetch node.
+ *
+ * @param Name|Expr $class Class name
+ * @param string|Identifier|Error $name Constant name
+ * @param array $attributes Additional attributes
+ */
+ public function __construct($class, $name, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->class = $class;
+ $this->name = \is_string($name) ? new Identifier($name) : $name;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['class', 'name'];
+ }
+
+ public function getType() : string {
+ return 'Expr_ClassConstFetch';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php
new file mode 100644
index 000000000..db216b8f8
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class Clone_ extends Expr
+{
+ /** @var Expr Expression */
+ public $expr;
+
+ /**
+ * Constructs a clone node.
+ *
+ * @param Expr $expr Expression
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $expr, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->expr = $expr;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['expr'];
+ }
+
+ public function getType() : string {
+ return 'Expr_Clone';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php
new file mode 100644
index 000000000..56ddea6aa
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php
@@ -0,0 +1,79 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node;
+use PhpParser\Node\Expr;
+use PhpParser\Node\FunctionLike;
+
+class Closure extends Expr implements FunctionLike
+{
+ /** @var bool Whether the closure is static */
+ public $static;
+ /** @var bool Whether to return by reference */
+ public $byRef;
+ /** @var Node\Param[] Parameters */
+ public $params;
+ /** @var ClosureUse[] use()s */
+ public $uses;
+ /** @var null|Node\Identifier|Node\Name|Node\ComplexType Return type */
+ public $returnType;
+ /** @var Node\Stmt[] Statements */
+ public $stmts;
+ /** @var Node\AttributeGroup[] PHP attribute groups */
+ public $attrGroups;
+
+ /**
+ * Constructs a lambda function node.
+ *
+ * @param array $subNodes Array of the following optional subnodes:
+ * 'static' => false : Whether the closure is static
+ * 'byRef' => false : Whether to return by reference
+ * 'params' => array(): Parameters
+ * 'uses' => array(): use()s
+ * 'returnType' => null : Return type
+ * 'stmts' => array(): Statements
+ * 'attrGroups' => array(): PHP attributes groups
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $subNodes = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->static = $subNodes['static'] ?? false;
+ $this->byRef = $subNodes['byRef'] ?? false;
+ $this->params = $subNodes['params'] ?? [];
+ $this->uses = $subNodes['uses'] ?? [];
+ $returnType = $subNodes['returnType'] ?? null;
+ $this->returnType = \is_string($returnType) ? new Node\Identifier($returnType) : $returnType;
+ $this->stmts = $subNodes['stmts'] ?? [];
+ $this->attrGroups = $subNodes['attrGroups'] ?? [];
+ }
+
+ public function getSubNodeNames() : array {
+ return ['attrGroups', 'static', 'byRef', 'params', 'uses', 'returnType', 'stmts'];
+ }
+
+ public function returnsByRef() : bool {
+ return $this->byRef;
+ }
+
+ public function getParams() : array {
+ return $this->params;
+ }
+
+ public function getReturnType() {
+ return $this->returnType;
+ }
+
+ /** @return Node\Stmt[] */
+ public function getStmts() : array {
+ return $this->stmts;
+ }
+
+ public function getAttrGroups() : array {
+ return $this->attrGroups;
+ }
+
+ public function getType() : string {
+ return 'Expr_Closure';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php
new file mode 100644
index 000000000..2b8a09666
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class ClosureUse extends Expr
+{
+ /** @var Expr\Variable Variable to use */
+ public $var;
+ /** @var bool Whether to use by reference */
+ public $byRef;
+
+ /**
+ * Constructs a closure use node.
+ *
+ * @param Expr\Variable $var Variable to use
+ * @param bool $byRef Whether to use by reference
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr\Variable $var, bool $byRef = false, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->var = $var;
+ $this->byRef = $byRef;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['var', 'byRef'];
+ }
+
+ public function getType() : string {
+ return 'Expr_ClosureUse';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php
new file mode 100644
index 000000000..14ebd16bd
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php
@@ -0,0 +1,31 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+use PhpParser\Node\Name;
+
+class ConstFetch extends Expr
+{
+ /** @var Name Constant name */
+ public $name;
+
+ /**
+ * Constructs a const fetch node.
+ *
+ * @param Name $name Constant name
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Name $name, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->name = $name;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['name'];
+ }
+
+ public function getType() : string {
+ return 'Expr_ConstFetch';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php
new file mode 100644
index 000000000..4042ec93c
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class Empty_ extends Expr
+{
+ /** @var Expr Expression */
+ public $expr;
+
+ /**
+ * Constructs an empty() node.
+ *
+ * @param Expr $expr Expression
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $expr, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->expr = $expr;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['expr'];
+ }
+
+ public function getType() : string {
+ return 'Expr_Empty';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php
new file mode 100644
index 000000000..1637f3aea
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php
@@ -0,0 +1,31 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+/**
+ * Error node used during parsing with error recovery.
+ *
+ * An error node may be placed at a position where an expression is required, but an error occurred.
+ * Error nodes will not be present if the parser is run in throwOnError mode (the default).
+ */
+class Error extends Expr
+{
+ /**
+ * Constructs an error node.
+ *
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $attributes = []) {
+ $this->attributes = $attributes;
+ }
+
+ public function getSubNodeNames() : array {
+ return [];
+ }
+
+ public function getType() : string {
+ return 'Expr_Error';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php
new file mode 100644
index 000000000..c44ff6f93
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class ErrorSuppress extends Expr
+{
+ /** @var Expr Expression */
+ public $expr;
+
+ /**
+ * Constructs an error suppress node.
+ *
+ * @param Expr $expr Expression
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $expr, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->expr = $expr;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['expr'];
+ }
+
+ public function getType() : string {
+ return 'Expr_ErrorSuppress';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php
new file mode 100644
index 000000000..856854743
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class Eval_ extends Expr
+{
+ /** @var Expr Expression */
+ public $expr;
+
+ /**
+ * Constructs an eval() node.
+ *
+ * @param Expr $expr Expression
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $expr, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->expr = $expr;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['expr'];
+ }
+
+ public function getType() : string {
+ return 'Expr_Eval';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php
new file mode 100644
index 000000000..b88a8f7e6
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class Exit_ extends Expr
+{
+ /* For use in "kind" attribute */
+ const KIND_EXIT = 1;
+ const KIND_DIE = 2;
+
+ /** @var null|Expr Expression */
+ public $expr;
+
+ /**
+ * Constructs an exit() node.
+ *
+ * @param null|Expr $expr Expression
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $expr = null, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->expr = $expr;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['expr'];
+ }
+
+ public function getType() : string {
+ return 'Expr_Exit';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php
new file mode 100644
index 000000000..2de4d0dd5
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php
@@ -0,0 +1,39 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node;
+use PhpParser\Node\Expr;
+
+class FuncCall extends CallLike
+{
+ /** @var Node\Name|Expr Function name */
+ public $name;
+ /** @var array<Node\Arg|Node\VariadicPlaceholder> Arguments */
+ public $args;
+
+ /**
+ * Constructs a function call node.
+ *
+ * @param Node\Name|Expr $name Function name
+ * @param array<Node\Arg|Node\VariadicPlaceholder> $args Arguments
+ * @param array $attributes Additional attributes
+ */
+ public function __construct($name, array $args = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->name = $name;
+ $this->args = $args;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['name', 'args'];
+ }
+
+ public function getType() : string {
+ return 'Expr_FuncCall';
+ }
+
+ public function getRawArgs(): array {
+ return $this->args;
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php
new file mode 100644
index 000000000..07ce5968e
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php
@@ -0,0 +1,39 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class Include_ extends Expr
+{
+ const TYPE_INCLUDE = 1;
+ const TYPE_INCLUDE_ONCE = 2;
+ const TYPE_REQUIRE = 3;
+ const TYPE_REQUIRE_ONCE = 4;
+
+ /** @var Expr Expression */
+ public $expr;
+ /** @var int Type of include */
+ public $type;
+
+ /**
+ * Constructs an include node.
+ *
+ * @param Expr $expr Expression
+ * @param int $type Type of include
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $expr, int $type, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->expr = $expr;
+ $this->type = $type;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['expr', 'type'];
+ }
+
+ public function getType() : string {
+ return 'Expr_Include';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php
new file mode 100644
index 000000000..9000d47bb
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php
@@ -0,0 +1,35 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+use PhpParser\Node\Name;
+
+class Instanceof_ extends Expr
+{
+ /** @var Expr Expression */
+ public $expr;
+ /** @var Name|Expr Class name */
+ public $class;
+
+ /**
+ * Constructs an instanceof check node.
+ *
+ * @param Expr $expr Expression
+ * @param Name|Expr $class Class name
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $expr, $class, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->expr = $expr;
+ $this->class = $class;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['expr', 'class'];
+ }
+
+ public function getType() : string {
+ return 'Expr_Instanceof';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php
new file mode 100644
index 000000000..76b738758
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class Isset_ extends Expr
+{
+ /** @var Expr[] Variables */
+ public $vars;
+
+ /**
+ * Constructs an array node.
+ *
+ * @param Expr[] $vars Variables
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $vars, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->vars = $vars;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['vars'];
+ }
+
+ public function getType() : string {
+ return 'Expr_Isset';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php
new file mode 100644
index 000000000..c27a27b95
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class List_ extends Expr
+{
+ /** @var (ArrayItem|null)[] List of items to assign to */
+ public $items;
+
+ /**
+ * Constructs a list() destructuring node.
+ *
+ * @param (ArrayItem|null)[] $items List of items to assign to
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $items, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->items = $items;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['items'];
+ }
+
+ public function getType() : string {
+ return 'Expr_List';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php
new file mode 100644
index 000000000..2455a3026
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php
@@ -0,0 +1,31 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node;
+use PhpParser\Node\MatchArm;
+
+class Match_ extends Node\Expr
+{
+ /** @var Node\Expr */
+ public $cond;
+ /** @var MatchArm[] */
+ public $arms;
+
+ /**
+ * @param MatchArm[] $arms
+ */
+ public function __construct(Node\Expr $cond, array $arms = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->cond = $cond;
+ $this->arms = $arms;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['cond', 'arms'];
+ }
+
+ public function getType() : string {
+ return 'Expr_Match';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php
new file mode 100644
index 000000000..49ca48356
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php
@@ -0,0 +1,45 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Arg;
+use PhpParser\Node\Expr;
+use PhpParser\Node\Identifier;
+use PhpParser\Node\VariadicPlaceholder;
+
+class MethodCall extends CallLike
+{
+ /** @var Expr Variable holding object */
+ public $var;
+ /** @var Identifier|Expr Method name */
+ public $name;
+ /** @var array<Arg|VariadicPlaceholder> Arguments */
+ public $args;
+
+ /**
+ * Constructs a function call node.
+ *
+ * @param Expr $var Variable holding object
+ * @param string|Identifier|Expr $name Method name
+ * @param array<Arg|VariadicPlaceholder> $args Arguments
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $var, $name, array $args = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->var = $var;
+ $this->name = \is_string($name) ? new Identifier($name) : $name;
+ $this->args = $args;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['var', 'name', 'args'];
+ }
+
+ public function getType() : string {
+ return 'Expr_MethodCall';
+ }
+
+ public function getRawArgs(): array {
+ return $this->args;
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php
new file mode 100644
index 000000000..e2bb64928
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php
@@ -0,0 +1,41 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node;
+use PhpParser\Node\Arg;
+use PhpParser\Node\Expr;
+use PhpParser\Node\VariadicPlaceholder;
+
+class New_ extends CallLike
+{
+ /** @var Node\Name|Expr|Node\Stmt\Class_ Class name */
+ public $class;
+ /** @var array<Arg|VariadicPlaceholder> Arguments */
+ public $args;
+
+ /**
+ * Constructs a function call node.
+ *
+ * @param Node\Name|Expr|Node\Stmt\Class_ $class Class name (or class node for anonymous classes)
+ * @param array<Arg|VariadicPlaceholder> $args Arguments
+ * @param array $attributes Additional attributes
+ */
+ public function __construct($class, array $args = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->class = $class;
+ $this->args = $args;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['class', 'args'];
+ }
+
+ public function getType() : string {
+ return 'Expr_New';
+ }
+
+ public function getRawArgs(): array {
+ return $this->args;
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php
new file mode 100644
index 000000000..07a571fd8
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php
@@ -0,0 +1,45 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Arg;
+use PhpParser\Node\Expr;
+use PhpParser\Node\Identifier;
+use PhpParser\Node\VariadicPlaceholder;
+
+class NullsafeMethodCall extends CallLike
+{
+ /** @var Expr Variable holding object */
+ public $var;
+ /** @var Identifier|Expr Method name */
+ public $name;
+ /** @var array<Arg|VariadicPlaceholder> Arguments */
+ public $args;
+
+ /**
+ * Constructs a nullsafe method call node.
+ *
+ * @param Expr $var Variable holding object
+ * @param string|Identifier|Expr $name Method name
+ * @param array<Arg|VariadicPlaceholder> $args Arguments
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $var, $name, array $args = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->var = $var;
+ $this->name = \is_string($name) ? new Identifier($name) : $name;
+ $this->args = $args;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['var', 'name', 'args'];
+ }
+
+ public function getType() : string {
+ return 'Expr_NullsafeMethodCall';
+ }
+
+ public function getRawArgs(): array {
+ return $this->args;
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php
new file mode 100644
index 000000000..9317eb3b9
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php
@@ -0,0 +1,35 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+use PhpParser\Node\Identifier;
+
+class NullsafePropertyFetch extends Expr
+{
+ /** @var Expr Variable holding object */
+ public $var;
+ /** @var Identifier|Expr Property name */
+ public $name;
+
+ /**
+ * Constructs a nullsafe property fetch node.
+ *
+ * @param Expr $var Variable holding object
+ * @param string|Identifier|Expr $name Property name
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $var, $name, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->var = $var;
+ $this->name = \is_string($name) ? new Identifier($name) : $name;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['var', 'name'];
+ }
+
+ public function getType() : string {
+ return 'Expr_NullsafePropertyFetch';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php
new file mode 100644
index 000000000..94d6c296d
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class PostDec extends Expr
+{
+ /** @var Expr Variable */
+ public $var;
+
+ /**
+ * Constructs a post decrement node.
+ *
+ * @param Expr $var Variable
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $var, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->var = $var;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['var'];
+ }
+
+ public function getType() : string {
+ return 'Expr_PostDec';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php
new file mode 100644
index 000000000..005c443a2
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class PostInc extends Expr
+{
+ /** @var Expr Variable */
+ public $var;
+
+ /**
+ * Constructs a post increment node.
+ *
+ * @param Expr $var Variable
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $var, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->var = $var;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['var'];
+ }
+
+ public function getType() : string {
+ return 'Expr_PostInc';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php
new file mode 100644
index 000000000..a5ca685a8
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class PreDec extends Expr
+{
+ /** @var Expr Variable */
+ public $var;
+
+ /**
+ * Constructs a pre decrement node.
+ *
+ * @param Expr $var Variable
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $var, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->var = $var;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['var'];
+ }
+
+ public function getType() : string {
+ return 'Expr_PreDec';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php
new file mode 100644
index 000000000..0986c4474
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class PreInc extends Expr
+{
+ /** @var Expr Variable */
+ public $var;
+
+ /**
+ * Constructs a pre increment node.
+ *
+ * @param Expr $var Variable
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $var, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->var = $var;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['var'];
+ }
+
+ public function getType() : string {
+ return 'Expr_PreInc';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php
new file mode 100644
index 000000000..2d43c2ac8
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class Print_ extends Expr
+{
+ /** @var Expr Expression */
+ public $expr;
+
+ /**
+ * Constructs an print() node.
+ *
+ * @param Expr $expr Expression
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $expr, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->expr = $expr;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['expr'];
+ }
+
+ public function getType() : string {
+ return 'Expr_Print';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php
new file mode 100644
index 000000000..4281f31cc
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php
@@ -0,0 +1,35 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+use PhpParser\Node\Identifier;
+
+class PropertyFetch extends Expr
+{
+ /** @var Expr Variable holding object */
+ public $var;
+ /** @var Identifier|Expr Property name */
+ public $name;
+
+ /**
+ * Constructs a function call node.
+ *
+ * @param Expr $var Variable holding object
+ * @param string|Identifier|Expr $name Property name
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $var, $name, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->var = $var;
+ $this->name = \is_string($name) ? new Identifier($name) : $name;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['var', 'name'];
+ }
+
+ public function getType() : string {
+ return 'Expr_PropertyFetch';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php
new file mode 100644
index 000000000..537a7cc80
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class ShellExec extends Expr
+{
+ /** @var array Encapsed string array */
+ public $parts;
+
+ /**
+ * Constructs a shell exec (backtick) node.
+ *
+ * @param array $parts Encapsed string array
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $parts, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->parts = $parts;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['parts'];
+ }
+
+ public function getType() : string {
+ return 'Expr_ShellExec';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php
new file mode 100644
index 000000000..d0d099c47
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php
@@ -0,0 +1,46 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node;
+use PhpParser\Node\Arg;
+use PhpParser\Node\Expr;
+use PhpParser\Node\Identifier;
+use PhpParser\Node\VariadicPlaceholder;
+
+class StaticCall extends CallLike
+{
+ /** @var Node\Name|Expr Class name */
+ public $class;
+ /** @var Identifier|Expr Method name */
+ public $name;
+ /** @var array<Arg|VariadicPlaceholder> Arguments */
+ public $args;
+
+ /**
+ * Constructs a static method call node.
+ *
+ * @param Node\Name|Expr $class Class name
+ * @param string|Identifier|Expr $name Method name
+ * @param array<Arg|VariadicPlaceholder> $args Arguments
+ * @param array $attributes Additional attributes
+ */
+ public function __construct($class, $name, array $args = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->class = $class;
+ $this->name = \is_string($name) ? new Identifier($name) : $name;
+ $this->args = $args;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['class', 'name', 'args'];
+ }
+
+ public function getType() : string {
+ return 'Expr_StaticCall';
+ }
+
+ public function getRawArgs(): array {
+ return $this->args;
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php
new file mode 100644
index 000000000..1ee1a25e5
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php
@@ -0,0 +1,36 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+use PhpParser\Node\Name;
+use PhpParser\Node\VarLikeIdentifier;
+
+class StaticPropertyFetch extends Expr
+{
+ /** @var Name|Expr Class name */
+ public $class;
+ /** @var VarLikeIdentifier|Expr Property name */
+ public $name;
+
+ /**
+ * Constructs a static property fetch node.
+ *
+ * @param Name|Expr $class Class name
+ * @param string|VarLikeIdentifier|Expr $name Property name
+ * @param array $attributes Additional attributes
+ */
+ public function __construct($class, $name, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->class = $class;
+ $this->name = \is_string($name) ? new VarLikeIdentifier($name) : $name;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['class', 'name'];
+ }
+
+ public function getType() : string {
+ return 'Expr_StaticPropertyFetch';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php
new file mode 100644
index 000000000..9316f47d4
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php
@@ -0,0 +1,38 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class Ternary extends Expr
+{
+ /** @var Expr Condition */
+ public $cond;
+ /** @var null|Expr Expression for true */
+ public $if;
+ /** @var Expr Expression for false */
+ public $else;
+
+ /**
+ * Constructs a ternary operator node.
+ *
+ * @param Expr $cond Condition
+ * @param null|Expr $if Expression for true
+ * @param Expr $else Expression for false
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $cond, $if, Expr $else, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->cond = $cond;
+ $this->if = $if;
+ $this->else = $else;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['cond', 'if', 'else'];
+ }
+
+ public function getType() : string {
+ return 'Expr_Ternary';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php
new file mode 100644
index 000000000..5c97f0e2b
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node;
+
+class Throw_ extends Node\Expr
+{
+ /** @var Node\Expr Expression */
+ public $expr;
+
+ /**
+ * Constructs a throw expression node.
+ *
+ * @param Node\Expr $expr Expression
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Node\Expr $expr, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->expr = $expr;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['expr'];
+ }
+
+ public function getType() : string {
+ return 'Expr_Throw';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php
new file mode 100644
index 000000000..ce8808bc6
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class UnaryMinus extends Expr
+{
+ /** @var Expr Expression */
+ public $expr;
+
+ /**
+ * Constructs a unary minus node.
+ *
+ * @param Expr $expr Expression
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $expr, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->expr = $expr;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['expr'];
+ }
+
+ public function getType() : string {
+ return 'Expr_UnaryMinus';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php
new file mode 100644
index 000000000..d23047e54
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class UnaryPlus extends Expr
+{
+ /** @var Expr Expression */
+ public $expr;
+
+ /**
+ * Constructs a unary plus node.
+ *
+ * @param Expr $expr Expression
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $expr, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->expr = $expr;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['expr'];
+ }
+
+ public function getType() : string {
+ return 'Expr_UnaryPlus';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php
new file mode 100644
index 000000000..b47d38e93
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class Variable extends Expr
+{
+ /** @var string|Expr Name */
+ public $name;
+
+ /**
+ * Constructs a variable node.
+ *
+ * @param string|Expr $name Name
+ * @param array $attributes Additional attributes
+ */
+ public function __construct($name, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->name = $name;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['name'];
+ }
+
+ public function getType() : string {
+ return 'Expr_Variable';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php
new file mode 100644
index 000000000..a3efce618
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class YieldFrom extends Expr
+{
+ /** @var Expr Expression to yield from */
+ public $expr;
+
+ /**
+ * Constructs an "yield from" node.
+ *
+ * @param Expr $expr Expression
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $expr, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->expr = $expr;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['expr'];
+ }
+
+ public function getType() : string {
+ return 'Expr_YieldFrom';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php
new file mode 100644
index 000000000..aef8fc333
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class Yield_ extends Expr
+{
+ /** @var null|Expr Key expression */
+ public $key;
+ /** @var null|Expr Value expression */
+ public $value;
+
+ /**
+ * Constructs a yield expression node.
+ *
+ * @param null|Expr $value Value expression
+ * @param null|Expr $key Key expression
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $value = null, Expr $key = null, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->key = $key;
+ $this->value = $value;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['key', 'value'];
+ }
+
+ public function getType() : string {
+ return 'Expr_Yield';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php b/vendor/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php
new file mode 100644
index 000000000..5a825e731
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php
@@ -0,0 +1,43 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node;
+
+use PhpParser\Node;
+
+interface FunctionLike extends Node
+{
+ /**
+ * Whether to return by reference
+ *
+ * @return bool
+ */
+ public function returnsByRef() : bool;
+
+ /**
+ * List of parameters
+ *
+ * @return Param[]
+ */
+ public function getParams() : array;
+
+ /**
+ * Get the declared return type or null
+ *
+ * @return null|Identifier|Name|ComplexType
+ */
+ public function getReturnType();
+
+ /**
+ * The function body
+ *
+ * @return Stmt[]|null
+ */
+ public function getStmts();
+
+ /**
+ * Get PHP attribute groups.
+ *
+ * @return AttributeGroup[]
+ */
+ public function getAttrGroups() : array;
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Identifier.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Identifier.php
new file mode 100644
index 000000000..2f262db0a
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Identifier.php
@@ -0,0 +1,75 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node;
+
+use PhpParser\NodeAbstract;
+
+/**
+ * Represents a non-namespaced name. Namespaced names are represented using Name nodes.
+ */
+class Identifier extends NodeAbstract
+{
+ /** @var string Identifier as string */
+ public $name;
+
+ private static $specialClassNames = [
+ 'self' => true,
+ 'parent' => true,
+ 'static' => true,
+ ];
+
+ /**
+ * Constructs an identifier node.
+ *
+ * @param string $name Identifier as string
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(string $name, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->name = $name;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['name'];
+ }
+
+ /**
+ * Get identifier as string.
+ *
+ * @return string Identifier as string.
+ */
+ public function toString() : string {
+ return $this->name;
+ }
+
+ /**
+ * Get lowercased identifier as string.
+ *
+ * @return string Lowercased identifier as string
+ */
+ public function toLowerString() : string {
+ return strtolower($this->name);
+ }
+
+ /**
+ * Checks whether the identifier is a special class name (self, parent or static).
+ *
+ * @return bool Whether identifier is a special class name
+ */
+ public function isSpecialClassName() : bool {
+ return isset(self::$specialClassNames[strtolower($this->name)]);
+ }
+
+ /**
+ * Get identifier as string.
+ *
+ * @return string Identifier as string
+ */
+ public function __toString() : string {
+ return $this->name;
+ }
+
+ public function getType() : string {
+ return 'Identifier';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/IntersectionType.php b/vendor/nikic/php-parser/lib/PhpParser/Node/IntersectionType.php
new file mode 100644
index 000000000..9208e1392
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/IntersectionType.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node;
+
+use PhpParser\NodeAbstract;
+
+class IntersectionType extends ComplexType
+{
+ /** @var (Identifier|Name)[] Types */
+ public $types;
+
+ /**
+ * Constructs an intersection type.
+ *
+ * @param (Identifier|Name)[] $types Types
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $types, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->types = $types;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['types'];
+ }
+
+ public function getType() : string {
+ return 'IntersectionType';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/MatchArm.php b/vendor/nikic/php-parser/lib/PhpParser/Node/MatchArm.php
new file mode 100644
index 000000000..2ae1c86b8
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/MatchArm.php
@@ -0,0 +1,31 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node;
+
+use PhpParser\Node;
+use PhpParser\NodeAbstract;
+
+class MatchArm extends NodeAbstract
+{
+ /** @var null|Node\Expr[] */
+ public $conds;
+ /** @var Node\Expr */
+ public $body;
+
+ /**
+ * @param null|Node\Expr[] $conds
+ */
+ public function __construct($conds, Node\Expr $body, array $attributes = []) {
+ $this->conds = $conds;
+ $this->body = $body;
+ $this->attributes = $attributes;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['conds', 'body'];
+ }
+
+ public function getType() : string {
+ return 'MatchArm';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Name.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Name.php
new file mode 100644
index 000000000..6b1cc9f8e
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Name.php
@@ -0,0 +1,242 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node;
+
+use PhpParser\NodeAbstract;
+
+class Name extends NodeAbstract
+{
+ /** @var string[] Parts of the name */
+ public $parts;
+
+ private static $specialClassNames = [
+ 'self' => true,
+ 'parent' => true,
+ 'static' => true,
+ ];
+
+ /**
+ * Constructs a name node.
+ *
+ * @param string|string[]|self $name Name as string, part array or Name instance (copy ctor)
+ * @param array $attributes Additional attributes
+ */
+ public function __construct($name, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->parts = self::prepareName($name);
+ }
+
+ public function getSubNodeNames() : array {
+ return ['parts'];
+ }
+
+ /**
+ * Gets the first part of the name, i.e. everything before the first namespace separator.
+ *
+ * @return string First part of the name
+ */
+ public function getFirst() : string {
+ return $this->parts[0];
+ }
+
+ /**
+ * Gets the last part of the name, i.e. everything after the last namespace separator.
+ *
+ * @return string Last part of the name
+ */
+ public function getLast() : string {
+ return $this->parts[count($this->parts) - 1];
+ }
+
+ /**
+ * Checks whether the name is unqualified. (E.g. Name)
+ *
+ * @return bool Whether the name is unqualified
+ */
+ public function isUnqualified() : bool {
+ return 1 === count($this->parts);
+ }
+
+ /**
+ * Checks whether the name is qualified. (E.g. Name\Name)
+ *
+ * @return bool Whether the name is qualified
+ */
+ public function isQualified() : bool {
+ return 1 < count($this->parts);
+ }
+
+ /**
+ * Checks whether the name is fully qualified. (E.g. \Name)
+ *
+ * @return bool Whether the name is fully qualified
+ */
+ public function isFullyQualified() : bool {
+ return false;
+ }
+
+ /**
+ * Checks whether the name is explicitly relative to the current namespace. (E.g. namespace\Name)
+ *
+ * @return bool Whether the name is relative
+ */
+ public function isRelative() : bool {
+ return false;
+ }
+
+ /**
+ * Returns a string representation of the name itself, without taking the name type into
+ * account (e.g., not including a leading backslash for fully qualified names).
+ *
+ * @return string String representation
+ */
+ public function toString() : string {
+ return implode('\\', $this->parts);
+ }
+
+ /**
+ * Returns a string representation of the name as it would occur in code (e.g., including
+ * leading backslash for fully qualified names.
+ *
+ * @return string String representation
+ */
+ public function toCodeString() : string {
+ return $this->toString();
+ }
+
+ /**
+ * Returns lowercased string representation of the name, without taking the name type into
+ * account (e.g., no leading backslash for fully qualified names).
+ *
+ * @return string Lowercased string representation
+ */
+ public function toLowerString() : string {
+ return strtolower(implode('\\', $this->parts));
+ }
+
+ /**
+ * Checks whether the identifier is a special class name (self, parent or static).
+ *
+ * @return bool Whether identifier is a special class name
+ */
+ public function isSpecialClassName() : bool {
+ return count($this->parts) === 1
+ && isset(self::$specialClassNames[strtolower($this->parts[0])]);
+ }
+
+ /**
+ * Returns a string representation of the name by imploding the namespace parts with the
+ * namespace separator.
+ *
+ * @return string String representation
+ */
+ public function __toString() : string {
+ return implode('\\', $this->parts);
+ }
+
+ /**
+ * Gets a slice of a name (similar to array_slice).
+ *
+ * This method returns a new instance of the same type as the original and with the same
+ * attributes.
+ *
+ * If the slice is empty, null is returned. The null value will be correctly handled in
+ * concatenations using concat().
+ *
+ * Offset and length have the same meaning as in array_slice().
+ *
+ * @param int $offset Offset to start the slice at (may be negative)
+ * @param int|null $length Length of the slice (may be negative)
+ *
+ * @return static|null Sliced name
+ */
+ public function slice(int $offset, int $length = null) {
+ $numParts = count($this->parts);
+
+ $realOffset = $offset < 0 ? $offset + $numParts : $offset;
+ if ($realOffset < 0 || $realOffset > $numParts) {
+ throw new \OutOfBoundsException(sprintf('Offset %d is out of bounds', $offset));
+ }
+
+ if (null === $length) {
+ $realLength = $numParts - $realOffset;
+ } else {
+ $realLength = $length < 0 ? $length + $numParts - $realOffset : $length;
+ if ($realLength < 0 || $realLength > $numParts) {
+ throw new \OutOfBoundsException(sprintf('Length %d is out of bounds', $length));
+ }
+ }
+
+ if ($realLength === 0) {
+ // Empty slice is represented as null
+ return null;
+ }
+
+ return new static(array_slice($this->parts, $realOffset, $realLength), $this->attributes);
+ }
+
+ /**
+ * Concatenate two names, yielding a new Name instance.
+ *
+ * The type of the generated instance depends on which class this method is called on, for
+ * example Name\FullyQualified::concat() will yield a Name\FullyQualified instance.
+ *
+ * If one of the arguments is null, a new instance of the other name will be returned. If both
+ * arguments are null, null will be returned. As such, writing
+ * Name::concat($namespace, $shortName)
+ * where $namespace is a Name node or null will work as expected.
+ *
+ * @param string|string[]|self|null $name1 The first name
+ * @param string|string[]|self|null $name2 The second name
+ * @param array $attributes Attributes to assign to concatenated name
+ *
+ * @return static|null Concatenated name
+ */
+ public static function concat($name1, $name2, array $attributes = []) {
+ if (null === $name1 && null === $name2) {
+ return null;
+ } elseif (null === $name1) {
+ return new static(self::prepareName($name2), $attributes);
+ } elseif (null === $name2) {
+ return new static(self::prepareName($name1), $attributes);
+ } else {
+ return new static(
+ array_merge(self::prepareName($name1), self::prepareName($name2)), $attributes
+ );
+ }
+ }
+
+ /**
+ * Prepares a (string, array or Name node) name for use in name changing methods by converting
+ * it to an array.
+ *
+ * @param string|string[]|self $name Name to prepare
+ *
+ * @return string[] Prepared name
+ */
+ private static function prepareName($name) : array {
+ if (\is_string($name)) {
+ if ('' === $name) {
+ throw new \InvalidArgumentException('Name cannot be empty');
+ }
+
+ return explode('\\', $name);
+ } elseif (\is_array($name)) {
+ if (empty($name)) {
+ throw new \InvalidArgumentException('Name cannot be empty');
+ }
+
+ return $name;
+ } elseif ($name instanceof self) {
+ return $name->parts;
+ }
+
+ throw new \InvalidArgumentException(
+ 'Expected string, array of parts or Name instance'
+ );
+ }
+
+ public function getType() : string {
+ return 'Name';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php
new file mode 100644
index 000000000..1df93a56b
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php
@@ -0,0 +1,50 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Name;
+
+class FullyQualified extends \PhpParser\Node\Name
+{
+ /**
+ * Checks whether the name is unqualified. (E.g. Name)
+ *
+ * @return bool Whether the name is unqualified
+ */
+ public function isUnqualified() : bool {
+ return false;
+ }
+
+ /**
+ * Checks whether the name is qualified. (E.g. Name\Name)
+ *
+ * @return bool Whether the name is qualified
+ */
+ public function isQualified() : bool {
+ return false;
+ }
+
+ /**
+ * Checks whether the name is fully qualified. (E.g. \Name)
+ *
+ * @return bool Whether the name is fully qualified
+ */
+ public function isFullyQualified() : bool {
+ return true;
+ }
+
+ /**
+ * Checks whether the name is explicitly relative to the current namespace. (E.g. namespace\Name)
+ *
+ * @return bool Whether the name is relative
+ */
+ public function isRelative() : bool {
+ return false;
+ }
+
+ public function toCodeString() : string {
+ return '\\' . $this->toString();
+ }
+
+ public function getType() : string {
+ return 'Name_FullyQualified';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php
new file mode 100644
index 000000000..57bf7af2b
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php
@@ -0,0 +1,50 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Name;
+
+class Relative extends \PhpParser\Node\Name
+{
+ /**
+ * Checks whether the name is unqualified. (E.g. Name)
+ *
+ * @return bool Whether the name is unqualified
+ */
+ public function isUnqualified() : bool {
+ return false;
+ }
+
+ /**
+ * Checks whether the name is qualified. (E.g. Name\Name)
+ *
+ * @return bool Whether the name is qualified
+ */
+ public function isQualified() : bool {
+ return false;
+ }
+
+ /**
+ * Checks whether the name is fully qualified. (E.g. \Name)
+ *
+ * @return bool Whether the name is fully qualified
+ */
+ public function isFullyQualified() : bool {
+ return false;
+ }
+
+ /**
+ * Checks whether the name is explicitly relative to the current namespace. (E.g. namespace\Name)
+ *
+ * @return bool Whether the name is relative
+ */
+ public function isRelative() : bool {
+ return true;
+ }
+
+ public function toCodeString() : string {
+ return 'namespace\\' . $this->toString();
+ }
+
+ public function getType() : string {
+ return 'Name_Relative';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/NullableType.php b/vendor/nikic/php-parser/lib/PhpParser/Node/NullableType.php
new file mode 100644
index 000000000..d68e26a38
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/NullableType.php
@@ -0,0 +1,28 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node;
+
+class NullableType extends ComplexType
+{
+ /** @var Identifier|Name Type */
+ public $type;
+
+ /**
+ * Constructs a nullable type (wrapping another type).
+ *
+ * @param string|Identifier|Name $type Type
+ * @param array $attributes Additional attributes
+ */
+ public function __construct($type, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->type = \is_string($type) ? new Identifier($type) : $type;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['type'];
+ }
+
+ public function getType() : string {
+ return 'NullableType';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Param.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Param.php
new file mode 100644
index 000000000..1e90b7944
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Param.php
@@ -0,0 +1,60 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node;
+
+use PhpParser\NodeAbstract;
+
+class Param extends NodeAbstract
+{
+ /** @var null|Identifier|Name|ComplexType Type declaration */
+ public $type;
+ /** @var bool Whether parameter is passed by reference */
+ public $byRef;
+ /** @var bool Whether this is a variadic argument */
+ public $variadic;
+ /** @var Expr\Variable|Expr\Error Parameter variable */
+ public $var;
+ /** @var null|Expr Default value */
+ public $default;
+ /** @var int */
+ public $flags;
+ /** @var AttributeGroup[] PHP attribute groups */
+ public $attrGroups;
+
+ /**
+ * Constructs a parameter node.
+ *
+ * @param Expr\Variable|Expr\Error $var Parameter variable
+ * @param null|Expr $default Default value
+ * @param null|string|Identifier|Name|ComplexType $type Type declaration
+ * @param bool $byRef Whether is passed by reference
+ * @param bool $variadic Whether this is a variadic argument
+ * @param array $attributes Additional attributes
+ * @param int $flags Optional visibility flags
+ * @param AttributeGroup[] $attrGroups PHP attribute groups
+ */
+ public function __construct(
+ $var, Expr $default = null, $type = null,
+ bool $byRef = false, bool $variadic = false,
+ array $attributes = [],
+ int $flags = 0,
+ array $attrGroups = []
+ ) {
+ $this->attributes = $attributes;
+ $this->type = \is_string($type) ? new Identifier($type) : $type;
+ $this->byRef = $byRef;
+ $this->variadic = $variadic;
+ $this->var = $var;
+ $this->default = $default;
+ $this->flags = $flags;
+ $this->attrGroups = $attrGroups;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['attrGroups', 'flags', 'type', 'byRef', 'variadic', 'var', 'default'];
+ }
+
+ public function getType() : string {
+ return 'Param';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar.php
new file mode 100644
index 000000000..8117909b6
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar.php
@@ -0,0 +1,7 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node;
+
+abstract class Scalar extends Expr
+{
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php
new file mode 100644
index 000000000..29ce0dd40
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php
@@ -0,0 +1,70 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Scalar;
+
+use PhpParser\Node\Scalar;
+
+class DNumber extends Scalar
+{
+ /** @var float Number value */
+ public $value;
+
+ /**
+ * Constructs a float number scalar node.
+ *
+ * @param float $value Value of the number
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(float $value, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->value = $value;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['value'];
+ }
+
+ /**
+ * @internal
+ *
+ * Parses a DNUMBER token like PHP would.
+ *
+ * @param string $str A string number
+ *
+ * @return float The parsed number
+ */
+ public static function parse(string $str) : float {
+ $str = str_replace('_', '', $str);
+
+ // if string contains any of .eE just cast it to float
+ if (false !== strpbrk($str, '.eE')) {
+ return (float) $str;
+ }
+
+ // otherwise it's an integer notation that overflowed into a float
+ // if it starts with 0 it's one of the special integer notations
+ if ('0' === $str[0]) {
+ // hex
+ if ('x' === $str[1] || 'X' === $str[1]) {
+ return hexdec($str);
+ }
+
+ // bin
+ if ('b' === $str[1] || 'B' === $str[1]) {
+ return bindec($str);
+ }
+
+ // oct
+ // substr($str, 0, strcspn($str, '89')) cuts the string at the first invalid digit (8 or 9)
+ // so that only the digits before that are used
+ return octdec(substr($str, 0, strcspn($str, '89')));
+ }
+
+ // dec
+ return (float) $str;
+ }
+
+ public function getType() : string {
+ return 'Scalar_DNumber';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php
new file mode 100644
index 000000000..fa5d2e268
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php
@@ -0,0 +1,31 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Scalar;
+
+use PhpParser\Node\Expr;
+use PhpParser\Node\Scalar;
+
+class Encapsed extends Scalar
+{
+ /** @var Expr[] list of string parts */
+ public $parts;
+
+ /**
+ * Constructs an encapsed string node.
+ *
+ * @param Expr[] $parts Encaps list
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $parts, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->parts = $parts;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['parts'];
+ }
+
+ public function getType() : string {
+ return 'Scalar_Encapsed';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php
new file mode 100644
index 000000000..bb3194c1d
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Scalar;
+
+use PhpParser\Node\Scalar;
+
+class EncapsedStringPart extends Scalar
+{
+ /** @var string String value */
+ public $value;
+
+ /**
+ * Constructs a node representing a string part of an encapsed string.
+ *
+ * @param string $value String value
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(string $value, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->value = $value;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['value'];
+ }
+
+ public function getType() : string {
+ return 'Scalar_EncapsedStringPart';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php
new file mode 100644
index 000000000..f17dd1f8a
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php
@@ -0,0 +1,78 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Scalar;
+
+use PhpParser\Error;
+use PhpParser\Node\Scalar;
+
+class LNumber extends Scalar
+{
+ /* For use in "kind" attribute */
+ const KIND_BIN = 2;
+ const KIND_OCT = 8;
+ const KIND_DEC = 10;
+ const KIND_HEX = 16;
+
+ /** @var int Number value */
+ public $value;
+
+ /**
+ * Constructs an integer number scalar node.
+ *
+ * @param int $value Value of the number
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(int $value, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->value = $value;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['value'];
+ }
+
+ /**
+ * Constructs an LNumber node from a string number literal.
+ *
+ * @param string $str String number literal (decimal, octal, hex or binary)
+ * @param array $attributes Additional attributes
+ * @param bool $allowInvalidOctal Whether to allow invalid octal numbers (PHP 5)
+ *
+ * @return LNumber The constructed LNumber, including kind attribute
+ */
+ public static function fromString(string $str, array $attributes = [], bool $allowInvalidOctal = false) : LNumber {
+ $str = str_replace('_', '', $str);
+
+ if ('0' !== $str[0] || '0' === $str) {
+ $attributes['kind'] = LNumber::KIND_DEC;
+ return new LNumber((int) $str, $attributes);
+ }
+
+ if ('x' === $str[1] || 'X' === $str[1]) {
+ $attributes['kind'] = LNumber::KIND_HEX;
+ return new LNumber(hexdec($str), $attributes);
+ }
+
+ if ('b' === $str[1] || 'B' === $str[1]) {
+ $attributes['kind'] = LNumber::KIND_BIN;
+ return new LNumber(bindec($str), $attributes);
+ }
+
+ if (!$allowInvalidOctal && strpbrk($str, '89')) {
+ throw new Error('Invalid numeric literal', $attributes);
+ }
+
+ // Strip optional explicit octal prefix.
+ if ('o' === $str[1] || 'O' === $str[1]) {
+ $str = substr($str, 2);
+ }
+
+ // use intval instead of octdec to get proper cutting behavior with malformed numbers
+ $attributes['kind'] = LNumber::KIND_OCT;
+ return new LNumber(intval($str, 8), $attributes);
+ }
+
+ public function getType() : string {
+ return 'Scalar_LNumber';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php
new file mode 100644
index 000000000..941f0c762
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php
@@ -0,0 +1,28 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Scalar;
+
+use PhpParser\Node\Scalar;
+
+abstract class MagicConst extends Scalar
+{
+ /**
+ * Constructs a magic constant node.
+ *
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $attributes = []) {
+ $this->attributes = $attributes;
+ }
+
+ public function getSubNodeNames() : array {
+ return [];
+ }
+
+ /**
+ * Get name of magic constant.
+ *
+ * @return string Name of magic constant
+ */
+ abstract public function getName() : string;
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.php
new file mode 100644
index 000000000..244328476
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Scalar\MagicConst;
+
+use PhpParser\Node\Scalar\MagicConst;
+
+class Class_ extends MagicConst
+{
+ public function getName() : string {
+ return '__CLASS__';
+ }
+
+ public function getType() : string {
+ return 'Scalar_MagicConst_Class';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Dir.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Dir.php
new file mode 100644
index 000000000..2b618473e
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Dir.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Scalar\MagicConst;
+
+use PhpParser\Node\Scalar\MagicConst;
+
+class Dir extends MagicConst
+{
+ public function getName() : string {
+ return '__DIR__';
+ }
+
+ public function getType() : string {
+ return 'Scalar_MagicConst_Dir';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/File.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/File.php
new file mode 100644
index 000000000..3422db069
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/File.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Scalar\MagicConst;
+
+use PhpParser\Node\Scalar\MagicConst;
+
+class File extends MagicConst
+{
+ public function getName() : string {
+ return '__FILE__';
+ }
+
+ public function getType() : string {
+ return 'Scalar_MagicConst_File';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Function_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Function_.php
new file mode 100644
index 000000000..1db65a151
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Function_.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Scalar\MagicConst;
+
+use PhpParser\Node\Scalar\MagicConst;
+
+class Function_ extends MagicConst
+{
+ public function getName() : string {
+ return '__FUNCTION__';
+ }
+
+ public function getType() : string {
+ return 'Scalar_MagicConst_Function';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Line.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Line.php
new file mode 100644
index 000000000..25d3de57c
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Line.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Scalar\MagicConst;
+
+use PhpParser\Node\Scalar\MagicConst;
+
+class Line extends MagicConst
+{
+ public function getName() : string {
+ return '__LINE__';
+ }
+
+ public function getType() : string {
+ return 'Scalar_MagicConst_Line';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Method.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Method.php
new file mode 100644
index 000000000..d168d56f1
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Method.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Scalar\MagicConst;
+
+use PhpParser\Node\Scalar\MagicConst;
+
+class Method extends MagicConst
+{
+ public function getName() : string {
+ return '__METHOD__';
+ }
+
+ public function getType() : string {
+ return 'Scalar_MagicConst_Method';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Namespace_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Namespace_.php
new file mode 100644
index 000000000..4fabb751a
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Namespace_.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Scalar\MagicConst;
+
+use PhpParser\Node\Scalar\MagicConst;
+
+class Namespace_ extends MagicConst
+{
+ public function getName() : string {
+ return '__NAMESPACE__';
+ }
+
+ public function getType() : string {
+ return 'Scalar_MagicConst_Namespace';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Trait_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Trait_.php
new file mode 100644
index 000000000..5ee7e40a3
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Trait_.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Scalar\MagicConst;
+
+use PhpParser\Node\Scalar\MagicConst;
+
+class Trait_ extends MagicConst
+{
+ public function getName() : string {
+ return '__TRAIT__';
+ }
+
+ public function getType() : string {
+ return 'Scalar_MagicConst_Trait';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php
new file mode 100644
index 000000000..8a6d93a47
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php
@@ -0,0 +1,141 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Scalar;
+
+use PhpParser\Error;
+use PhpParser\Node\Scalar;
+
+class String_ extends Scalar
+{
+ /* For use in "kind" attribute */
+ const KIND_SINGLE_QUOTED = 1;
+ const KIND_DOUBLE_QUOTED = 2;
+ const KIND_HEREDOC = 3;
+ const KIND_NOWDOC = 4;
+
+ /** @var string String value */
+ public $value;
+
+ protected static $replacements = [
+ '\\' => '\\',
+ '$' => '$',
+ 'n' => "\n",
+ 'r' => "\r",
+ 't' => "\t",
+ 'f' => "\f",
+ 'v' => "\v",
+ 'e' => "\x1B",
+ ];
+
+ /**
+ * Constructs a string scalar node.
+ *
+ * @param string $value Value of the string
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(string $value, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->value = $value;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['value'];
+ }
+
+ /**
+ * @internal
+ *
+ * Parses a string token.
+ *
+ * @param string $str String token content
+ * @param bool $parseUnicodeEscape Whether to parse PHP 7 \u escapes
+ *
+ * @return string The parsed string
+ */
+ public static function parse(string $str, bool $parseUnicodeEscape = true) : string {
+ $bLength = 0;
+ if ('b' === $str[0] || 'B' === $str[0]) {
+ $bLength = 1;
+ }
+
+ if ('\'' === $str[$bLength]) {
+ return str_replace(
+ ['\\\\', '\\\''],
+ ['\\', '\''],
+ substr($str, $bLength + 1, -1)
+ );
+ } else {
+ return self::parseEscapeSequences(
+ substr($str, $bLength + 1, -1), '"', $parseUnicodeEscape
+ );
+ }
+ }
+
+ /**
+ * @internal
+ *
+ * Parses escape sequences in strings (all string types apart from single quoted).
+ *
+ * @param string $str String without quotes
+ * @param null|string $quote Quote type
+ * @param bool $parseUnicodeEscape Whether to parse PHP 7 \u escapes
+ *
+ * @return string String with escape sequences parsed
+ */
+ public static function parseEscapeSequences(string $str, $quote, bool $parseUnicodeEscape = true) : string {
+ if (null !== $quote) {
+ $str = str_replace('\\' . $quote, $quote, $str);
+ }
+
+ $extra = '';
+ if ($parseUnicodeEscape) {
+ $extra = '|u\{([0-9a-fA-F]+)\}';
+ }
+
+ return preg_replace_callback(
+ '~\\\\([\\\\$nrtfve]|[xX][0-9a-fA-F]{1,2}|[0-7]{1,3}' . $extra . ')~',
+ function($matches) {
+ $str = $matches[1];
+
+ if (isset(self::$replacements[$str])) {
+ return self::$replacements[$str];
+ } elseif ('x' === $str[0] || 'X' === $str[0]) {
+ return chr(hexdec(substr($str, 1)));
+ } elseif ('u' === $str[0]) {
+ return self::codePointToUtf8(hexdec($matches[2]));
+ } else {
+ return chr(octdec($str));
+ }
+ },
+ $str
+ );
+ }
+
+ /**
+ * Converts a Unicode code point to its UTF-8 encoded representation.
+ *
+ * @param int $num Code point
+ *
+ * @return string UTF-8 representation of code point
+ */
+ private static function codePointToUtf8(int $num) : string {
+ if ($num <= 0x7F) {
+ return chr($num);
+ }
+ if ($num <= 0x7FF) {
+ return chr(($num>>6) + 0xC0) . chr(($num&0x3F) + 0x80);
+ }
+ if ($num <= 0xFFFF) {
+ return chr(($num>>12) + 0xE0) . chr((($num>>6)&0x3F) + 0x80) . chr(($num&0x3F) + 0x80);
+ }
+ if ($num <= 0x1FFFFF) {
+ return chr(($num>>18) + 0xF0) . chr((($num>>12)&0x3F) + 0x80)
+ . chr((($num>>6)&0x3F) + 0x80) . chr(($num&0x3F) + 0x80);
+ }
+ throw new Error('Invalid UTF-8 codepoint escape sequence: Codepoint too large');
+ }
+
+ public function getType() : string {
+ return 'Scalar_String';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt.php
new file mode 100644
index 000000000..69d33e579
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt.php
@@ -0,0 +1,9 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node;
+
+use PhpParser\NodeAbstract;
+
+abstract class Stmt extends NodeAbstract
+{
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php
new file mode 100644
index 000000000..6adc5a6c6
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class Break_ extends Node\Stmt
+{
+ /** @var null|Node\Expr Number of loops to break */
+ public $num;
+
+ /**
+ * Constructs a break node.
+ *
+ * @param null|Node\Expr $num Number of loops to break
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Node\Expr $num = null, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->num = $num;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['num'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Break';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php
new file mode 100644
index 000000000..2bf044c90
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class Case_ extends Node\Stmt
+{
+ /** @var null|Node\Expr Condition (null for default) */
+ public $cond;
+ /** @var Node\Stmt[] Statements */
+ public $stmts;
+
+ /**
+ * Constructs a case node.
+ *
+ * @param null|Node\Expr $cond Condition (null for default)
+ * @param Node\Stmt[] $stmts Statements
+ * @param array $attributes Additional attributes
+ */
+ public function __construct($cond, array $stmts = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->cond = $cond;
+ $this->stmts = $stmts;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['cond', 'stmts'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Case';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php
new file mode 100644
index 000000000..9b9c09478
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php
@@ -0,0 +1,41 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+use PhpParser\Node\Expr;
+
+class Catch_ extends Node\Stmt
+{
+ /** @var Node\Name[] Types of exceptions to catch */
+ public $types;
+ /** @var Expr\Variable|null Variable for exception */
+ public $var;
+ /** @var Node\Stmt[] Statements */
+ public $stmts;
+
+ /**
+ * Constructs a catch node.
+ *
+ * @param Node\Name[] $types Types of exceptions to catch
+ * @param Expr\Variable|null $var Variable for exception
+ * @param Node\Stmt[] $stmts Statements
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(
+ array $types, Expr\Variable $var = null, array $stmts = [], array $attributes = []
+ ) {
+ $this->attributes = $attributes;
+ $this->types = $types;
+ $this->var = $var;
+ $this->stmts = $stmts;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['types', 'var', 'stmts'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Catch';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php
new file mode 100644
index 000000000..1fc7f3362
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php
@@ -0,0 +1,80 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class ClassConst extends Node\Stmt
+{
+ /** @var int Modifiers */
+ public $flags;
+ /** @var Node\Const_[] Constant declarations */
+ public $consts;
+ /** @var Node\AttributeGroup[] */
+ public $attrGroups;
+
+ /**
+ * Constructs a class const list node.
+ *
+ * @param Node\Const_[] $consts Constant declarations
+ * @param int $flags Modifiers
+ * @param array $attributes Additional attributes
+ * @param Node\AttributeGroup[] $attrGroups PHP attribute groups
+ */
+ public function __construct(
+ array $consts,
+ int $flags = 0,
+ array $attributes = [],
+ array $attrGroups = []
+ ) {
+ $this->attributes = $attributes;
+ $this->flags = $flags;
+ $this->consts = $consts;
+ $this->attrGroups = $attrGroups;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['attrGroups', 'flags', 'consts'];
+ }
+
+ /**
+ * Whether constant is explicitly or implicitly public.
+ *
+ * @return bool
+ */
+ public function isPublic() : bool {
+ return ($this->flags & Class_::MODIFIER_PUBLIC) !== 0
+ || ($this->flags & Class_::VISIBILITY_MODIFIER_MASK) === 0;
+ }
+
+ /**
+ * Whether constant is protected.
+ *
+ * @return bool
+ */
+ public function isProtected() : bool {
+ return (bool) ($this->flags & Class_::MODIFIER_PROTECTED);
+ }
+
+ /**
+ * Whether constant is private.
+ *
+ * @return bool
+ */
+ public function isPrivate() : bool {
+ return (bool) ($this->flags & Class_::MODIFIER_PRIVATE);
+ }
+
+ /**
+ * Whether constant is final.
+ *
+ * @return bool
+ */
+ public function isFinal() : bool {
+ return (bool) ($this->flags & Class_::MODIFIER_FINAL);
+ }
+
+ public function getType() : string {
+ return 'Stmt_ClassConst';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php
new file mode 100644
index 000000000..6c3369172
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php
@@ -0,0 +1,109 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+abstract class ClassLike extends Node\Stmt
+{
+ /** @var Node\Identifier|null Name */
+ public $name;
+ /** @var Node\Stmt[] Statements */
+ public $stmts;
+ /** @var Node\AttributeGroup[] PHP attribute groups */
+ public $attrGroups;
+
+ /** @var Node\Name Namespaced name (if using NameResolver) */
+ public $namespacedName;
+
+ /**
+ * @return TraitUse[]
+ */
+ public function getTraitUses() : array {
+ $traitUses = [];
+ foreach ($this->stmts as $stmt) {
+ if ($stmt instanceof TraitUse) {
+ $traitUses[] = $stmt;
+ }
+ }
+ return $traitUses;
+ }
+
+ /**
+ * @return ClassConst[]
+ */
+ public function getConstants() : array {
+ $constants = [];
+ foreach ($this->stmts as $stmt) {
+ if ($stmt instanceof ClassConst) {
+ $constants[] = $stmt;
+ }
+ }
+ return $constants;
+ }
+
+ /**
+ * @return Property[]
+ */
+ public function getProperties() : array {
+ $properties = [];
+ foreach ($this->stmts as $stmt) {
+ if ($stmt instanceof Property) {
+ $properties[] = $stmt;
+ }
+ }
+ return $properties;
+ }
+
+ /**
+ * Gets property with the given name defined directly in this class/interface/trait.
+ *
+ * @param string $name Name of the property
+ *
+ * @return Property|null Property node or null if the property does not exist
+ */
+ public function getProperty(string $name) {
+ foreach ($this->stmts as $stmt) {
+ if ($stmt instanceof Property) {
+ foreach ($stmt->props as $prop) {
+ if ($prop instanceof PropertyProperty && $name === $prop->name->toString()) {
+ return $stmt;
+ }
+ }
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Gets all methods defined directly in this class/interface/trait
+ *
+ * @return ClassMethod[]
+ */
+ public function getMethods() : array {
+ $methods = [];
+ foreach ($this->stmts as $stmt) {
+ if ($stmt instanceof ClassMethod) {
+ $methods[] = $stmt;
+ }
+ }
+ return $methods;
+ }
+
+ /**
+ * Gets method with the given name defined directly in this class/interface/trait.
+ *
+ * @param string $name Name of the method (compared case-insensitively)
+ *
+ * @return ClassMethod|null Method node or null if the method does not exist
+ */
+ public function getMethod(string $name) {
+ $lowerName = strtolower($name);
+ foreach ($this->stmts as $stmt) {
+ if ($stmt instanceof ClassMethod && $lowerName === $stmt->name->toLowerString()) {
+ return $stmt;
+ }
+ }
+ return null;
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php
new file mode 100644
index 000000000..09b877a92
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php
@@ -0,0 +1,159 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+use PhpParser\Node\FunctionLike;
+
+class ClassMethod extends Node\Stmt implements FunctionLike
+{
+ /** @var int Flags */
+ public $flags;
+ /** @var bool Whether to return by reference */
+ public $byRef;
+ /** @var Node\Identifier Name */
+ public $name;
+ /** @var Node\Param[] Parameters */
+ public $params;
+ /** @var null|Node\Identifier|Node\Name|Node\ComplexType Return type */
+ public $returnType;
+ /** @var Node\Stmt[]|null Statements */
+ public $stmts;
+ /** @var Node\AttributeGroup[] PHP attribute groups */
+ public $attrGroups;
+
+ private static $magicNames = [
+ '__construct' => true,
+ '__destruct' => true,
+ '__call' => true,
+ '__callstatic' => true,
+ '__get' => true,
+ '__set' => true,
+ '__isset' => true,
+ '__unset' => true,
+ '__sleep' => true,
+ '__wakeup' => true,
+ '__tostring' => true,
+ '__set_state' => true,
+ '__clone' => true,
+ '__invoke' => true,
+ '__debuginfo' => true,
+ ];
+
+ /**
+ * Constructs a class method node.
+ *
+ * @param string|Node\Identifier $name Name
+ * @param array $subNodes Array of the following optional subnodes:
+ * 'flags => MODIFIER_PUBLIC: Flags
+ * 'byRef' => false : Whether to return by reference
+ * 'params' => array() : Parameters
+ * 'returnType' => null : Return type
+ * 'stmts' => array() : Statements
+ * 'attrGroups' => array() : PHP attribute groups
+ * @param array $attributes Additional attributes
+ */
+ public function __construct($name, array $subNodes = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->flags = $subNodes['flags'] ?? $subNodes['type'] ?? 0;
+ $this->byRef = $subNodes['byRef'] ?? false;
+ $this->name = \is_string($name) ? new Node\Identifier($name) : $name;
+ $this->params = $subNodes['params'] ?? [];
+ $returnType = $subNodes['returnType'] ?? null;
+ $this->returnType = \is_string($returnType) ? new Node\Identifier($returnType) : $returnType;
+ $this->stmts = array_key_exists('stmts', $subNodes) ? $subNodes['stmts'] : [];
+ $this->attrGroups = $subNodes['attrGroups'] ?? [];
+ }
+
+ public function getSubNodeNames() : array {
+ return ['attrGroups', 'flags', 'byRef', 'name', 'params', 'returnType', 'stmts'];
+ }
+
+ public function returnsByRef() : bool {
+ return $this->byRef;
+ }
+
+ public function getParams() : array {
+ return $this->params;
+ }
+
+ public function getReturnType() {
+ return $this->returnType;
+ }
+
+ public function getStmts() {
+ return $this->stmts;
+ }
+
+ public function getAttrGroups() : array {
+ return $this->attrGroups;
+ }
+
+ /**
+ * Whether the method is explicitly or implicitly public.
+ *
+ * @return bool
+ */
+ public function isPublic() : bool {
+ return ($this->flags & Class_::MODIFIER_PUBLIC) !== 0
+ || ($this->flags & Class_::VISIBILITY_MODIFIER_MASK) === 0;
+ }
+
+ /**
+ * Whether the method is protected.
+ *
+ * @return bool
+ */
+ public function isProtected() : bool {
+ return (bool) ($this->flags & Class_::MODIFIER_PROTECTED);
+ }
+
+ /**
+ * Whether the method is private.
+ *
+ * @return bool
+ */
+ public function isPrivate() : bool {
+ return (bool) ($this->flags & Class_::MODIFIER_PRIVATE);
+ }
+
+ /**
+ * Whether the method is abstract.
+ *
+ * @return bool
+ */
+ public function isAbstract() : bool {
+ return (bool) ($this->flags & Class_::MODIFIER_ABSTRACT);
+ }
+
+ /**
+ * Whether the method is final.
+ *
+ * @return bool
+ */
+ public function isFinal() : bool {
+ return (bool) ($this->flags & Class_::MODIFIER_FINAL);
+ }
+
+ /**
+ * Whether the method is static.
+ *
+ * @return bool
+ */
+ public function isStatic() : bool {
+ return (bool) ($this->flags & Class_::MODIFIER_STATIC);
+ }
+
+ /**
+ * Whether the method is magic.
+ *
+ * @return bool
+ */
+ public function isMagic() : bool {
+ return isset(self::$magicNames[$this->name->toLowerString()]);
+ }
+
+ public function getType() : string {
+ return 'Stmt_ClassMethod';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php
new file mode 100644
index 000000000..b290aaf6d
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php
@@ -0,0 +1,112 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Error;
+use PhpParser\Node;
+
+class Class_ extends ClassLike
+{
+ const MODIFIER_PUBLIC = 1;
+ const MODIFIER_PROTECTED = 2;
+ const MODIFIER_PRIVATE = 4;
+ const MODIFIER_STATIC = 8;
+ const MODIFIER_ABSTRACT = 16;
+ const MODIFIER_FINAL = 32;
+ const MODIFIER_READONLY = 64;
+
+ const VISIBILITY_MODIFIER_MASK = 7; // 1 | 2 | 4
+
+ /** @var int Type */
+ public $flags;
+ /** @var null|Node\Name Name of extended class */
+ public $extends;
+ /** @var Node\Name[] Names of implemented interfaces */
+ public $implements;
+
+ /**
+ * Constructs a class node.
+ *
+ * @param string|Node\Identifier|null $name Name
+ * @param array $subNodes Array of the following optional subnodes:
+ * 'flags' => 0 : Flags
+ * 'extends' => null : Name of extended class
+ * 'implements' => array(): Names of implemented interfaces
+ * 'stmts' => array(): Statements
+ * 'attrGroups' => array(): PHP attribute groups
+ * @param array $attributes Additional attributes
+ */
+ public function __construct($name, array $subNodes = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->flags = $subNodes['flags'] ?? $subNodes['type'] ?? 0;
+ $this->name = \is_string($name) ? new Node\Identifier($name) : $name;
+ $this->extends = $subNodes['extends'] ?? null;
+ $this->implements = $subNodes['implements'] ?? [];
+ $this->stmts = $subNodes['stmts'] ?? [];
+ $this->attrGroups = $subNodes['attrGroups'] ?? [];
+ }
+
+ public function getSubNodeNames() : array {
+ return ['attrGroups', 'flags', 'name', 'extends', 'implements', 'stmts'];
+ }
+
+ /**
+ * Whether the class is explicitly abstract.
+ *
+ * @return bool
+ */
+ public function isAbstract() : bool {
+ return (bool) ($this->flags & self::MODIFIER_ABSTRACT);
+ }
+
+ /**
+ * Whether the class is final.
+ *
+ * @return bool
+ */
+ public function isFinal() : bool {
+ return (bool) ($this->flags & self::MODIFIER_FINAL);
+ }
+
+ /**
+ * Whether the class is anonymous.
+ *
+ * @return bool
+ */
+ public function isAnonymous() : bool {
+ return null === $this->name;
+ }
+
+ /**
+ * @internal
+ */
+ public static function verifyModifier($a, $b) {
+ if ($a & self::VISIBILITY_MODIFIER_MASK && $b & self::VISIBILITY_MODIFIER_MASK) {
+ throw new Error('Multiple access type modifiers are not allowed');
+ }
+
+ if ($a & self::MODIFIER_ABSTRACT && $b & self::MODIFIER_ABSTRACT) {
+ throw new Error('Multiple abstract modifiers are not allowed');
+ }
+
+ if ($a & self::MODIFIER_STATIC && $b & self::MODIFIER_STATIC) {
+ throw new Error('Multiple static modifiers are not allowed');
+ }
+
+ if ($a & self::MODIFIER_FINAL && $b & self::MODIFIER_FINAL) {
+ throw new Error('Multiple final modifiers are not allowed');
+ }
+
+ if ($a & self::MODIFIER_READONLY && $b & self::MODIFIER_READONLY) {
+ throw new Error('Multiple readonly modifiers are not allowed');
+ }
+
+ if ($a & 48 && $b & 48) {
+ throw new Error('Cannot use the final modifier on an abstract class member');
+ }
+ }
+
+ public function getType() : string {
+ return 'Stmt_Class';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php
new file mode 100644
index 000000000..e6316345e
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class Const_ extends Node\Stmt
+{
+ /** @var Node\Const_[] Constant declarations */
+ public $consts;
+
+ /**
+ * Constructs a const list node.
+ *
+ * @param Node\Const_[] $consts Constant declarations
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $consts, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->consts = $consts;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['consts'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Const';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php
new file mode 100644
index 000000000..24882683b
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class Continue_ extends Node\Stmt
+{
+ /** @var null|Node\Expr Number of loops to continue */
+ public $num;
+
+ /**
+ * Constructs a continue node.
+ *
+ * @param null|Node\Expr $num Number of loops to continue
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Node\Expr $num = null, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->num = $num;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['num'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Continue';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php
new file mode 100644
index 000000000..ac07f30c7
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class DeclareDeclare extends Node\Stmt
+{
+ /** @var Node\Identifier Key */
+ public $key;
+ /** @var Node\Expr Value */
+ public $value;
+
+ /**
+ * Constructs a declare key=>value pair node.
+ *
+ * @param string|Node\Identifier $key Key
+ * @param Node\Expr $value Value
+ * @param array $attributes Additional attributes
+ */
+ public function __construct($key, Node\Expr $value, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->key = \is_string($key) ? new Node\Identifier($key) : $key;
+ $this->value = $value;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['key', 'value'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_DeclareDeclare';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php
new file mode 100644
index 000000000..f46ff0baf
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class Declare_ extends Node\Stmt
+{
+ /** @var DeclareDeclare[] List of declares */
+ public $declares;
+ /** @var Node\Stmt[]|null Statements */
+ public $stmts;
+
+ /**
+ * Constructs a declare node.
+ *
+ * @param DeclareDeclare[] $declares List of declares
+ * @param Node\Stmt[]|null $stmts Statements
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $declares, array $stmts = null, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->declares = $declares;
+ $this->stmts = $stmts;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['declares', 'stmts'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Declare';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php
new file mode 100644
index 000000000..78e90da03
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class Do_ extends Node\Stmt
+{
+ /** @var Node\Stmt[] Statements */
+ public $stmts;
+ /** @var Node\Expr Condition */
+ public $cond;
+
+ /**
+ * Constructs a do while node.
+ *
+ * @param Node\Expr $cond Condition
+ * @param Node\Stmt[] $stmts Statements
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Node\Expr $cond, array $stmts = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->cond = $cond;
+ $this->stmts = $stmts;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['stmts', 'cond'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Do';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php
new file mode 100644
index 000000000..7cc50d5d6
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class Echo_ extends Node\Stmt
+{
+ /** @var Node\Expr[] Expressions */
+ public $exprs;
+
+ /**
+ * Constructs an echo node.
+ *
+ * @param Node\Expr[] $exprs Expressions
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $exprs, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->exprs = $exprs;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['exprs'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Echo';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php
new file mode 100644
index 000000000..eef1ece32
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class ElseIf_ extends Node\Stmt
+{
+ /** @var Node\Expr Condition */
+ public $cond;
+ /** @var Node\Stmt[] Statements */
+ public $stmts;
+
+ /**
+ * Constructs an elseif node.
+ *
+ * @param Node\Expr $cond Condition
+ * @param Node\Stmt[] $stmts Statements
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Node\Expr $cond, array $stmts = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->cond = $cond;
+ $this->stmts = $stmts;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['cond', 'stmts'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_ElseIf';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php
new file mode 100644
index 000000000..0e61778e2
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class Else_ extends Node\Stmt
+{
+ /** @var Node\Stmt[] Statements */
+ public $stmts;
+
+ /**
+ * Constructs an else node.
+ *
+ * @param Node\Stmt[] $stmts Statements
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $stmts = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->stmts = $stmts;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['stmts'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Else';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/EnumCase.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/EnumCase.php
new file mode 100644
index 000000000..5beff8b39
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/EnumCase.php
@@ -0,0 +1,37 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+use PhpParser\Node\AttributeGroup;
+
+class EnumCase extends Node\Stmt
+{
+ /** @var Node\Identifier Enum case name */
+ public $name;
+ /** @var Node\Expr|null Enum case expression */
+ public $expr;
+ /** @var Node\AttributeGroup[] PHP attribute groups */
+ public $attrGroups;
+
+ /**
+ * @param string|Node\Identifier $name Enum case name
+ * @param Node\Expr|null $expr Enum case expression
+ * @param AttributeGroup[] $attrGroups PHP attribute groups
+ * @param array $attributes Additional attributes
+ */
+ public function __construct($name, Node\Expr $expr = null, array $attrGroups = [], array $attributes = []) {
+ parent::__construct($attributes);
+ $this->name = \is_string($name) ? new Node\Identifier($name) : $name;
+ $this->expr = $expr;
+ $this->attrGroups = $attrGroups;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['attrGroups', 'name', 'expr'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_EnumCase';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Enum_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Enum_.php
new file mode 100644
index 000000000..3a50c225d
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Enum_.php
@@ -0,0 +1,40 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class Enum_ extends ClassLike
+{
+ /** @var null|Node\Identifier Scalar Type */
+ public $scalarType;
+ /** @var Node\Name[] Names of implemented interfaces */
+ public $implements;
+
+ /**
+ * @param string|Node\Identifier|null $name Name
+ * @param array $subNodes Array of the following optional subnodes:
+ * 'scalarType' => null : Scalar type
+ * 'implements' => array() : Names of implemented interfaces
+ * 'stmts' => array() : Statements
+ * 'attrGroups' => array() : PHP attribute groups
+ * @param array $attributes Additional attributes
+ */
+ public function __construct($name, array $subNodes = [], array $attributes = []) {
+ $this->name = \is_string($name) ? new Node\Identifier($name) : $name;
+ $this->scalarType = $subNodes['scalarType'] ?? null;
+ $this->implements = $subNodes['implements'] ?? [];
+ $this->stmts = $subNodes['stmts'] ?? [];
+ $this->attrGroups = $subNodes['attrGroups'] ?? [];
+
+ parent::__construct($attributes);
+ }
+
+ public function getSubNodeNames() : array {
+ return ['attrGroups', 'name', 'scalarType', 'implements', 'stmts'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Enum';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php
new file mode 100644
index 000000000..99d1687de
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php
@@ -0,0 +1,33 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+/**
+ * Represents statements of type "expr;"
+ */
+class Expression extends Node\Stmt
+{
+ /** @var Node\Expr Expression */
+ public $expr;
+
+ /**
+ * Constructs an expression statement.
+ *
+ * @param Node\Expr $expr Expression
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Node\Expr $expr, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->expr = $expr;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['expr'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Expression';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php
new file mode 100644
index 000000000..d55b8b687
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class Finally_ extends Node\Stmt
+{
+ /** @var Node\Stmt[] Statements */
+ public $stmts;
+
+ /**
+ * Constructs a finally node.
+ *
+ * @param Node\Stmt[] $stmts Statements
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $stmts = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->stmts = $stmts;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['stmts'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Finally';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php
new file mode 100644
index 000000000..1323d37cf
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php
@@ -0,0 +1,43 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class For_ extends Node\Stmt
+{
+ /** @var Node\Expr[] Init expressions */
+ public $init;
+ /** @var Node\Expr[] Loop conditions */
+ public $cond;
+ /** @var Node\Expr[] Loop expressions */
+ public $loop;
+ /** @var Node\Stmt[] Statements */
+ public $stmts;
+
+ /**
+ * Constructs a for loop node.
+ *
+ * @param array $subNodes Array of the following optional subnodes:
+ * 'init' => array(): Init expressions
+ * 'cond' => array(): Loop conditions
+ * 'loop' => array(): Loop expressions
+ * 'stmts' => array(): Statements
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $subNodes = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->init = $subNodes['init'] ?? [];
+ $this->cond = $subNodes['cond'] ?? [];
+ $this->loop = $subNodes['loop'] ?? [];
+ $this->stmts = $subNodes['stmts'] ?? [];
+ }
+
+ public function getSubNodeNames() : array {
+ return ['init', 'cond', 'loop', 'stmts'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_For';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php
new file mode 100644
index 000000000..0556a7ce5
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php
@@ -0,0 +1,47 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class Foreach_ extends Node\Stmt
+{
+ /** @var Node\Expr Expression to iterate */
+ public $expr;
+ /** @var null|Node\Expr Variable to assign key to */
+ public $keyVar;
+ /** @var bool Whether to assign value by reference */
+ public $byRef;
+ /** @var Node\Expr Variable to assign value to */
+ public $valueVar;
+ /** @var Node\Stmt[] Statements */
+ public $stmts;
+
+ /**
+ * Constructs a foreach node.
+ *
+ * @param Node\Expr $expr Expression to iterate
+ * @param Node\Expr $valueVar Variable to assign value to
+ * @param array $subNodes Array of the following optional subnodes:
+ * 'keyVar' => null : Variable to assign key to
+ * 'byRef' => false : Whether to assign value by reference
+ * 'stmts' => array(): Statements
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Node\Expr $expr, Node\Expr $valueVar, array $subNodes = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->expr = $expr;
+ $this->keyVar = $subNodes['keyVar'] ?? null;
+ $this->byRef = $subNodes['byRef'] ?? false;
+ $this->valueVar = $valueVar;
+ $this->stmts = $subNodes['stmts'] ?? [];
+ }
+
+ public function getSubNodeNames() : array {
+ return ['expr', 'keyVar', 'byRef', 'valueVar', 'stmts'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Foreach';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php
new file mode 100644
index 000000000..abb7ee5c8
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php
@@ -0,0 +1,77 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+use PhpParser\Node\FunctionLike;
+
+class Function_ extends Node\Stmt implements FunctionLike
+{
+ /** @var bool Whether function returns by reference */
+ public $byRef;
+ /** @var Node\Identifier Name */
+ public $name;
+ /** @var Node\Param[] Parameters */
+ public $params;
+ /** @var null|Node\Identifier|Node\Name|Node\ComplexType Return type */
+ public $returnType;
+ /** @var Node\Stmt[] Statements */
+ public $stmts;
+ /** @var Node\AttributeGroup[] PHP attribute groups */
+ public $attrGroups;
+
+ /** @var Node\Name Namespaced name (if using NameResolver) */
+ public $namespacedName;
+
+ /**
+ * Constructs a function node.
+ *
+ * @param string|Node\Identifier $name Name
+ * @param array $subNodes Array of the following optional subnodes:
+ * 'byRef' => false : Whether to return by reference
+ * 'params' => array(): Parameters
+ * 'returnType' => null : Return type
+ * 'stmts' => array(): Statements
+ * 'attrGroups' => array(): PHP attribute groups
+ * @param array $attributes Additional attributes
+ */
+ public function __construct($name, array $subNodes = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->byRef = $subNodes['byRef'] ?? false;
+ $this->name = \is_string($name) ? new Node\Identifier($name) : $name;
+ $this->params = $subNodes['params'] ?? [];
+ $returnType = $subNodes['returnType'] ?? null;
+ $this->returnType = \is_string($returnType) ? new Node\Identifier($returnType) : $returnType;
+ $this->stmts = $subNodes['stmts'] ?? [];
+ $this->attrGroups = $subNodes['attrGroups'] ?? [];
+ }
+
+ public function getSubNodeNames() : array {
+ return ['attrGroups', 'byRef', 'name', 'params', 'returnType', 'stmts'];
+ }
+
+ public function returnsByRef() : bool {
+ return $this->byRef;
+ }
+
+ public function getParams() : array {
+ return $this->params;
+ }
+
+ public function getReturnType() {
+ return $this->returnType;
+ }
+
+ public function getAttrGroups() : array {
+ return $this->attrGroups;
+ }
+
+ /** @return Node\Stmt[] */
+ public function getStmts() : array {
+ return $this->stmts;
+ }
+
+ public function getType() : string {
+ return 'Stmt_Function';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php
new file mode 100644
index 000000000..a0022ad93
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class Global_ extends Node\Stmt
+{
+ /** @var Node\Expr[] Variables */
+ public $vars;
+
+ /**
+ * Constructs a global variables list node.
+ *
+ * @param Node\Expr[] $vars Variables to unset
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $vars, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->vars = $vars;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['vars'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Global';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php
new file mode 100644
index 000000000..24a57f780
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php
@@ -0,0 +1,31 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node\Identifier;
+use PhpParser\Node\Stmt;
+
+class Goto_ extends Stmt
+{
+ /** @var Identifier Name of label to jump to */
+ public $name;
+
+ /**
+ * Constructs a goto node.
+ *
+ * @param string|Identifier $name Name of label to jump to
+ * @param array $attributes Additional attributes
+ */
+ public function __construct($name, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->name = \is_string($name) ? new Identifier($name) : $name;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['name'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Goto';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php
new file mode 100644
index 000000000..24520d223
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php
@@ -0,0 +1,39 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node\Name;
+use PhpParser\Node\Stmt;
+
+class GroupUse extends Stmt
+{
+ /** @var int Type of group use */
+ public $type;
+ /** @var Name Prefix for uses */
+ public $prefix;
+ /** @var UseUse[] Uses */
+ public $uses;
+
+ /**
+ * Constructs a group use node.
+ *
+ * @param Name $prefix Prefix for uses
+ * @param UseUse[] $uses Uses
+ * @param int $type Type of group use
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Name $prefix, array $uses, int $type = Use_::TYPE_NORMAL, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->type = $type;
+ $this->prefix = $prefix;
+ $this->uses = $uses;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['type', 'prefix', 'uses'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_GroupUse';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php
new file mode 100644
index 000000000..8e624e0f1
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node\Stmt;
+
+class HaltCompiler extends Stmt
+{
+ /** @var string Remaining text after halt compiler statement. */
+ public $remaining;
+
+ /**
+ * Constructs a __halt_compiler node.
+ *
+ * @param string $remaining Remaining text after halt compiler statement.
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(string $remaining, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->remaining = $remaining;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['remaining'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_HaltCompiler';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php
new file mode 100644
index 000000000..a1bae4bf8
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php
@@ -0,0 +1,43 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class If_ extends Node\Stmt
+{
+ /** @var Node\Expr Condition expression */
+ public $cond;
+ /** @var Node\Stmt[] Statements */
+ public $stmts;
+ /** @var ElseIf_[] Elseif clauses */
+ public $elseifs;
+ /** @var null|Else_ Else clause */
+ public $else;
+
+ /**
+ * Constructs an if node.
+ *
+ * @param Node\Expr $cond Condition
+ * @param array $subNodes Array of the following optional subnodes:
+ * 'stmts' => array(): Statements
+ * 'elseifs' => array(): Elseif clauses
+ * 'else' => null : Else clause
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Node\Expr $cond, array $subNodes = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->cond = $cond;
+ $this->stmts = $subNodes['stmts'] ?? [];
+ $this->elseifs = $subNodes['elseifs'] ?? [];
+ $this->else = $subNodes['else'] ?? null;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['cond', 'stmts', 'elseifs', 'else'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_If';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php
new file mode 100644
index 000000000..0711d2842
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node\Stmt;
+
+class InlineHTML extends Stmt
+{
+ /** @var string String */
+ public $value;
+
+ /**
+ * Constructs an inline HTML node.
+ *
+ * @param string $value String
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(string $value, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->value = $value;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['value'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_InlineHTML';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php
new file mode 100644
index 000000000..4d587dd48
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php
@@ -0,0 +1,37 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class Interface_ extends ClassLike
+{
+ /** @var Node\Name[] Extended interfaces */
+ public $extends;
+
+ /**
+ * Constructs a class node.
+ *
+ * @param string|Node\Identifier $name Name
+ * @param array $subNodes Array of the following optional subnodes:
+ * 'extends' => array(): Name of extended interfaces
+ * 'stmts' => array(): Statements
+ * 'attrGroups' => array(): PHP attribute groups
+ * @param array $attributes Additional attributes
+ */
+ public function __construct($name, array $subNodes = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->name = \is_string($name) ? new Node\Identifier($name) : $name;
+ $this->extends = $subNodes['extends'] ?? [];
+ $this->stmts = $subNodes['stmts'] ?? [];
+ $this->attrGroups = $subNodes['attrGroups'] ?? [];
+ }
+
+ public function getSubNodeNames() : array {
+ return ['attrGroups', 'name', 'extends', 'stmts'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Interface';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php
new file mode 100644
index 000000000..3edcb3be7
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php
@@ -0,0 +1,31 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node\Identifier;
+use PhpParser\Node\Stmt;
+
+class Label extends Stmt
+{
+ /** @var Identifier Name */
+ public $name;
+
+ /**
+ * Constructs a label node.
+ *
+ * @param string|Identifier $name Name
+ * @param array $attributes Additional attributes
+ */
+ public function __construct($name, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->name = \is_string($name) ? new Identifier($name) : $name;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['name'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Label';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php
new file mode 100644
index 000000000..c63204577
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php
@@ -0,0 +1,38 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class Namespace_ extends Node\Stmt
+{
+ /* For use in the "kind" attribute */
+ const KIND_SEMICOLON = 1;
+ const KIND_BRACED = 2;
+
+ /** @var null|Node\Name Name */
+ public $name;
+ /** @var Node\Stmt[] Statements */
+ public $stmts;
+
+ /**
+ * Constructs a namespace node.
+ *
+ * @param null|Node\Name $name Name
+ * @param null|Node\Stmt[] $stmts Statements
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Node\Name $name = null, $stmts = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->name = $name;
+ $this->stmts = $stmts;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['name', 'stmts'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Namespace';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php
new file mode 100644
index 000000000..f86f8df7d
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php
@@ -0,0 +1,17 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+/** Nop/empty statement (;). */
+class Nop extends Node\Stmt
+{
+ public function getSubNodeNames() : array {
+ return [];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Nop';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php
new file mode 100644
index 000000000..bc781bbff
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php
@@ -0,0 +1,91 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+use PhpParser\Node\ComplexType;
+use PhpParser\Node\Identifier;
+use PhpParser\Node\Name;
+
+class Property extends Node\Stmt
+{
+ /** @var int Modifiers */
+ public $flags;
+ /** @var PropertyProperty[] Properties */
+ public $props;
+ /** @var null|Identifier|Name|ComplexType Type declaration */
+ public $type;
+ /** @var Node\AttributeGroup[] PHP attribute groups */
+ public $attrGroups;
+
+ /**
+ * Constructs a class property list node.
+ *
+ * @param int $flags Modifiers
+ * @param PropertyProperty[] $props Properties
+ * @param array $attributes Additional attributes
+ * @param null|string|Identifier|Name|ComplexType $type Type declaration
+ * @param Node\AttributeGroup[] $attrGroups PHP attribute groups
+ */
+ public function __construct(int $flags, array $props, array $attributes = [], $type = null, array $attrGroups = []) {
+ $this->attributes = $attributes;
+ $this->flags = $flags;
+ $this->props = $props;
+ $this->type = \is_string($type) ? new Identifier($type) : $type;
+ $this->attrGroups = $attrGroups;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['attrGroups', 'flags', 'type', 'props'];
+ }
+
+ /**
+ * Whether the property is explicitly or implicitly public.
+ *
+ * @return bool
+ */
+ public function isPublic() : bool {
+ return ($this->flags & Class_::MODIFIER_PUBLIC) !== 0
+ || ($this->flags & Class_::VISIBILITY_MODIFIER_MASK) === 0;
+ }
+
+ /**
+ * Whether the property is protected.
+ *
+ * @return bool
+ */
+ public function isProtected() : bool {
+ return (bool) ($this->flags & Class_::MODIFIER_PROTECTED);
+ }
+
+ /**
+ * Whether the property is private.
+ *
+ * @return bool
+ */
+ public function isPrivate() : bool {
+ return (bool) ($this->flags & Class_::MODIFIER_PRIVATE);
+ }
+
+ /**
+ * Whether the property is static.
+ *
+ * @return bool
+ */
+ public function isStatic() : bool {
+ return (bool) ($this->flags & Class_::MODIFIER_STATIC);
+ }
+
+ /**
+ * Whether the property is readonly.
+ *
+ * @return bool
+ */
+ public function isReadonly() : bool {
+ return (bool) ($this->flags & Class_::MODIFIER_READONLY);
+ }
+
+ public function getType() : string {
+ return 'Stmt_Property';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php
new file mode 100644
index 000000000..205731e20
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class PropertyProperty extends Node\Stmt
+{
+ /** @var Node\VarLikeIdentifier Name */
+ public $name;
+ /** @var null|Node\Expr Default */
+ public $default;
+
+ /**
+ * Constructs a class property node.
+ *
+ * @param string|Node\VarLikeIdentifier $name Name
+ * @param null|Node\Expr $default Default value
+ * @param array $attributes Additional attributes
+ */
+ public function __construct($name, Node\Expr $default = null, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->name = \is_string($name) ? new Node\VarLikeIdentifier($name) : $name;
+ $this->default = $default;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['name', 'default'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_PropertyProperty';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php
new file mode 100644
index 000000000..efc578c58
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class Return_ extends Node\Stmt
+{
+ /** @var null|Node\Expr Expression */
+ public $expr;
+
+ /**
+ * Constructs a return node.
+ *
+ * @param null|Node\Expr $expr Expression
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Node\Expr $expr = null, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->expr = $expr;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['expr'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Return';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php
new file mode 100644
index 000000000..29584560d
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php
@@ -0,0 +1,37 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+use PhpParser\Node\Expr;
+
+class StaticVar extends Node\Stmt
+{
+ /** @var Expr\Variable Variable */
+ public $var;
+ /** @var null|Node\Expr Default value */
+ public $default;
+
+ /**
+ * Constructs a static variable node.
+ *
+ * @param Expr\Variable $var Name
+ * @param null|Node\Expr $default Default value
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(
+ Expr\Variable $var, Node\Expr $default = null, array $attributes = []
+ ) {
+ $this->attributes = $attributes;
+ $this->var = $var;
+ $this->default = $default;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['var', 'default'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_StaticVar';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php
new file mode 100644
index 000000000..464898ffa
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node\Stmt;
+
+class Static_ extends Stmt
+{
+ /** @var StaticVar[] Variable definitions */
+ public $vars;
+
+ /**
+ * Constructs a static variables list node.
+ *
+ * @param StaticVar[] $vars Variable definitions
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $vars, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->vars = $vars;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['vars'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Static';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php
new file mode 100644
index 000000000..2c8dae022
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class Switch_ extends Node\Stmt
+{
+ /** @var Node\Expr Condition */
+ public $cond;
+ /** @var Case_[] Case list */
+ public $cases;
+
+ /**
+ * Constructs a case node.
+ *
+ * @param Node\Expr $cond Condition
+ * @param Case_[] $cases Case list
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Node\Expr $cond, array $cases, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->cond = $cond;
+ $this->cases = $cases;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['cond', 'cases'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Switch';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Throw_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Throw_.php
new file mode 100644
index 000000000..a34e2b362
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Throw_.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class Throw_ extends Node\Stmt
+{
+ /** @var Node\Expr Expression */
+ public $expr;
+
+ /**
+ * Constructs a legacy throw statement node.
+ *
+ * @param Node\Expr $expr Expression
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Node\Expr $expr, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->expr = $expr;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['expr'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Throw';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php
new file mode 100644
index 000000000..9e97053b4
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class TraitUse extends Node\Stmt
+{
+ /** @var Node\Name[] Traits */
+ public $traits;
+ /** @var TraitUseAdaptation[] Adaptations */
+ public $adaptations;
+
+ /**
+ * Constructs a trait use node.
+ *
+ * @param Node\Name[] $traits Traits
+ * @param TraitUseAdaptation[] $adaptations Adaptations
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $traits, array $adaptations = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->traits = $traits;
+ $this->adaptations = $adaptations;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['traits', 'adaptations'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_TraitUse';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php
new file mode 100644
index 000000000..8bdd2c041
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php
@@ -0,0 +1,13 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+abstract class TraitUseAdaptation extends Node\Stmt
+{
+ /** @var Node\Name|null Trait name */
+ public $trait;
+ /** @var Node\Identifier Method name */
+ public $method;
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.php
new file mode 100644
index 000000000..a3bccbd10
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.php
@@ -0,0 +1,38 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt\TraitUseAdaptation;
+
+use PhpParser\Node;
+
+class Alias extends Node\Stmt\TraitUseAdaptation
+{
+ /** @var null|int New modifier */
+ public $newModifier;
+ /** @var null|Node\Identifier New name */
+ public $newName;
+
+ /**
+ * Constructs a trait use precedence adaptation node.
+ *
+ * @param null|Node\Name $trait Trait name
+ * @param string|Node\Identifier $method Method name
+ * @param null|int $newModifier New modifier
+ * @param null|string|Node\Identifier $newName New name
+ * @param array $attributes Additional attributes
+ */
+ public function __construct($trait, $method, $newModifier, $newName, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->trait = $trait;
+ $this->method = \is_string($method) ? new Node\Identifier($method) : $method;
+ $this->newModifier = $newModifier;
+ $this->newName = \is_string($newName) ? new Node\Identifier($newName) : $newName;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['trait', 'method', 'newModifier', 'newName'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_TraitUseAdaptation_Alias';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php
new file mode 100644
index 000000000..80385f64e
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt\TraitUseAdaptation;
+
+use PhpParser\Node;
+
+class Precedence extends Node\Stmt\TraitUseAdaptation
+{
+ /** @var Node\Name[] Overwritten traits */
+ public $insteadof;
+
+ /**
+ * Constructs a trait use precedence adaptation node.
+ *
+ * @param Node\Name $trait Trait name
+ * @param string|Node\Identifier $method Method name
+ * @param Node\Name[] $insteadof Overwritten traits
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Node\Name $trait, $method, array $insteadof, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->trait = $trait;
+ $this->method = \is_string($method) ? new Node\Identifier($method) : $method;
+ $this->insteadof = $insteadof;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['trait', 'method', 'insteadof'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_TraitUseAdaptation_Precedence';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php
new file mode 100644
index 000000000..0cec203ac
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php
@@ -0,0 +1,32 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class Trait_ extends ClassLike
+{
+ /**
+ * Constructs a trait node.
+ *
+ * @param string|Node\Identifier $name Name
+ * @param array $subNodes Array of the following optional subnodes:
+ * 'stmts' => array(): Statements
+ * 'attrGroups' => array(): PHP attribute groups
+ * @param array $attributes Additional attributes
+ */
+ public function __construct($name, array $subNodes = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->name = \is_string($name) ? new Node\Identifier($name) : $name;
+ $this->stmts = $subNodes['stmts'] ?? [];
+ $this->attrGroups = $subNodes['attrGroups'] ?? [];
+ }
+
+ public function getSubNodeNames() : array {
+ return ['attrGroups', 'name', 'stmts'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Trait';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php
new file mode 100644
index 000000000..7fc158c57
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php
@@ -0,0 +1,38 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class TryCatch extends Node\Stmt
+{
+ /** @var Node\Stmt[] Statements */
+ public $stmts;
+ /** @var Catch_[] Catches */
+ public $catches;
+ /** @var null|Finally_ Optional finally node */
+ public $finally;
+
+ /**
+ * Constructs a try catch node.
+ *
+ * @param Node\Stmt[] $stmts Statements
+ * @param Catch_[] $catches Catches
+ * @param null|Finally_ $finally Optional finally node
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $stmts, array $catches, Finally_ $finally = null, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->stmts = $stmts;
+ $this->catches = $catches;
+ $this->finally = $finally;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['stmts', 'catches', 'finally'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_TryCatch';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php
new file mode 100644
index 000000000..310e427aa
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class Unset_ extends Node\Stmt
+{
+ /** @var Node\Expr[] Variables to unset */
+ public $vars;
+
+ /**
+ * Constructs an unset node.
+ *
+ * @param Node\Expr[] $vars Variables to unset
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $vars, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->vars = $vars;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['vars'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Unset';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php
new file mode 100644
index 000000000..32bd7847d
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php
@@ -0,0 +1,52 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+use PhpParser\Node\Identifier;
+
+class UseUse extends Node\Stmt
+{
+ /** @var int One of the Stmt\Use_::TYPE_* constants. Will only differ from TYPE_UNKNOWN for mixed group uses */
+ public $type;
+ /** @var Node\Name Namespace, class, function or constant to alias */
+ public $name;
+ /** @var Identifier|null Alias */
+ public $alias;
+
+ /**
+ * Constructs an alias (use) node.
+ *
+ * @param Node\Name $name Namespace/Class to alias
+ * @param null|string|Identifier $alias Alias
+ * @param int $type Type of the use element (for mixed group use only)
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Node\Name $name, $alias = null, int $type = Use_::TYPE_UNKNOWN, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->type = $type;
+ $this->name = $name;
+ $this->alias = \is_string($alias) ? new Identifier($alias) : $alias;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['type', 'name', 'alias'];
+ }
+
+ /**
+ * Get alias. If not explicitly given this is the last component of the used name.
+ *
+ * @return Identifier
+ */
+ public function getAlias() : Identifier {
+ if (null !== $this->alias) {
+ return $this->alias;
+ }
+
+ return new Identifier($this->name->getLast());
+ }
+
+ public function getType() : string {
+ return 'Stmt_UseUse';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php
new file mode 100644
index 000000000..8753da313
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php
@@ -0,0 +1,47 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node\Stmt;
+
+class Use_ extends Stmt
+{
+ /**
+ * Unknown type. Both Stmt\Use_ / Stmt\GroupUse and Stmt\UseUse have a $type property, one of them will always be
+ * TYPE_UNKNOWN while the other has one of the three other possible types. For normal use statements the type on the
+ * Stmt\UseUse is unknown. It's only the other way around for mixed group use declarations.
+ */
+ const TYPE_UNKNOWN = 0;
+ /** Class or namespace import */
+ const TYPE_NORMAL = 1;
+ /** Function import */
+ const TYPE_FUNCTION = 2;
+ /** Constant import */
+ const TYPE_CONSTANT = 3;
+
+ /** @var int Type of alias */
+ public $type;
+ /** @var UseUse[] Aliases */
+ public $uses;
+
+ /**
+ * Constructs an alias (use) list node.
+ *
+ * @param UseUse[] $uses Aliases
+ * @param int $type Type of alias
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $uses, int $type = self::TYPE_NORMAL, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->type = $type;
+ $this->uses = $uses;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['type', 'uses'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Use';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php
new file mode 100644
index 000000000..f41034f8c
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class While_ extends Node\Stmt
+{
+ /** @var Node\Expr Condition */
+ public $cond;
+ /** @var Node\Stmt[] Statements */
+ public $stmts;
+
+ /**
+ * Constructs a while node.
+ *
+ * @param Node\Expr $cond Condition
+ * @param Node\Stmt[] $stmts Statements
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Node\Expr $cond, array $stmts = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->cond = $cond;
+ $this->stmts = $stmts;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['cond', 'stmts'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_While';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/UnionType.php b/vendor/nikic/php-parser/lib/PhpParser/Node/UnionType.php
new file mode 100644
index 000000000..61c2d8106
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/UnionType.php
@@ -0,0 +1,28 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node;
+
+class UnionType extends ComplexType
+{
+ /** @var (Identifier|Name)[] Types */
+ public $types;
+
+ /**
+ * Constructs a union type.
+ *
+ * @param (Identifier|Name)[] $types Types
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $types, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->types = $types;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['types'];
+ }
+
+ public function getType() : string {
+ return 'UnionType';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php b/vendor/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php
new file mode 100644
index 000000000..a30807a6d
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php
@@ -0,0 +1,17 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node;
+
+/**
+ * Represents a name that is written in source code with a leading dollar,
+ * but is not a proper variable. The leading dollar is not stored as part of the name.
+ *
+ * Examples: Names in property declarations are formatted as variables. Names in static property
+ * lookups are also formatted as variables.
+ */
+class VarLikeIdentifier extends Identifier
+{
+ public function getType() : string {
+ return 'VarLikeIdentifier';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/VariadicPlaceholder.php b/vendor/nikic/php-parser/lib/PhpParser/Node/VariadicPlaceholder.php
new file mode 100644
index 000000000..403a24df2
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/VariadicPlaceholder.php
@@ -0,0 +1,27 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node;
+
+use PhpParser\NodeAbstract;
+
+/**
+ * Represents the "..." in "foo(...)" of the first-class callable syntax.
+ */
+class VariadicPlaceholder extends NodeAbstract {
+ /**
+ * Create a variadic argument placeholder (first-class callable syntax).
+ *
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $attributes = []) {
+ $this->attributes = $attributes;
+ }
+
+ public function getType(): string {
+ return 'VariadicPlaceholder';
+ }
+
+ public function getSubNodeNames(): array {
+ return [];
+ }
+} \ No newline at end of file