summaryrefslogtreecommitdiff
path: root/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt
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/Stmt
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/Stmt')
-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
49 files changed, 2092 insertions, 0 deletions
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';
+ }
+}