From d8fd7242fb960c45a565b904d013a745161ff471 Mon Sep 17 00:00:00 2001
From: bcweaver <brianweaver@gmail.com>
Date: Tue, 25 Jun 2019 13:18:39 -0400
Subject: [PATCH] Update drush:  8.1.17 - 8.2.3

---
 vendor/composer/ClassLoader.php               |    4 +-
 vendor/composer/autoload_classmap.php         |   47 +-
 vendor/composer/autoload_namespaces.php       |    2 -
 vendor/composer/autoload_psr4.php             |    3 +
 vendor/composer/autoload_static.php           |   73 +-
 vendor/composer/installed.json                |  304 +-
 .../annotated-command/.scenarios.lock/install |   57 +
 .../.scenarios.lock/phpunit4/.gitignore       |    1 +
 .../.scenarios.lock/phpunit4/composer.json    |   61 +
 .../.scenarios.lock/phpunit4/composer.lock    | 1624 +++++++++++
 .../.scenarios.lock/symfony2/.gitignore       |    2 +
 .../.scenarios.lock/symfony2/composer.json    |   61 +
 .../.scenarios.lock/symfony4/.gitignore       |    1 +
 .../.scenarios.lock/symfony4/composer.json    |   62 +
 .../.scenarios.lock/symfony4/composer.lock    | 2520 ++++++++++++++++
 .../annotated-command/CHANGELOG.md            |   43 +
 .../consolidation/annotated-command/LICENSE   |   19 +-
 .../consolidation/annotated-command/README.md |  111 +-
 .../annotated-command/composer.json           |   59 +-
 .../annotated-command/composer.lock           |  673 ++---
 .../annotated-command/dependencies.yml        |   10 +
 .../annotated-command/phpunit.xml.dist        |    2 +-
 .../src/AnnotatedCommand.php                  |  118 +-
 .../src/AnnotatedCommandFactory.php           |    3 +
 .../annotated-command/src/AnnotationData.php  |   17 +
 .../annotated-command/src/CommandData.php     |   54 +-
 .../src/CommandFileDiscovery.php              |   68 +-
 .../src/CommandProcessor.php                  |  211 +-
 .../annotated-command/src/CommandResult.php   |   71 +
 .../src/Help/HelpDocumentBuilder.php          |   76 +
 .../src/Hooks/StatusDeterminerInterface.php   |    4 +
 .../src/Input/StdinAwareInterface.php         |   34 +
 .../src/Input/StdinAwareTrait.php             |   30 +
 .../src/Input/StdinHandler.php                |  247 ++
 .../src/ParameterInjection.php                |   57 +
 .../src/ParameterInjector.php                 |   10 +
 .../src/Parser/CommandInfo.php                |   24 +-
 .../src/Parser/CommandInfoDeserializer.php    |    4 +-
 .../src/Parser/CommandInfoSerializer.php      |    2 +
 .../Parser/Internal/BespokeDocBlockParser.php |   40 +-
 .../Internal/FullyQualifiedClassCache.php     |    2 +-
 .../annotated-command/src/ResultWriter.php    |  210 ++
 .../output-formatters/.scenarios.lock/install |   57 +
 .../.scenarios.lock/symfony2/.gitignore       |    2 +
 .../.scenarios.lock/symfony2/composer.json    |   65 +
 .../.scenarios.lock/symfony3/.gitignore       |    1 +
 .../.scenarios.lock/symfony3/composer.json    |   67 +
 .../.scenarios.lock/symfony3/composer.lock    | 2364 +++++++++++++++
 .../.scenarios.lock/symfony4/.gitignore       |    1 +
 .../.scenarios.lock/symfony4/composer.json    |   66 +
 .../.scenarios.lock/symfony4/composer.lock    | 2566 +++++++++++++++++
 .../output-formatters/CHANGELOG.md            |   28 +
 .../consolidation/output-formatters/LICENSE   |   13 +-
 .../consolidation/output-formatters/README.md |  190 +-
 .../output-formatters/composer.json           |   59 +-
 .../output-formatters/composer.lock           |  699 +++--
 .../output-formatters/phpunit.xml.dist        |    2 +-
 .../src/FormatterManager.php                  |   37 +
 .../src/Formatters/CsvFormatter.php           |   32 +-
 .../src/Formatters/NoOutputFormatter.php      |   40 +
 .../src/Formatters/StringFormatter.php        |   24 +-
 .../src/Options/FormatterOptions.php          |   19 +
 .../src/StructuredData/AbstractListData.php   |   68 +
 .../StructuredData/AbstractStructuredList.php |   39 +-
 .../StructuredData/ConversionInterface.php    |   15 +
 .../src/StructuredData/FieldProcessor.php     |   39 +
 .../src/StructuredData/ListDataFromKeys.php   |   16 +-
 .../src/StructuredData/PropertyList.php       |   15 +-
 .../src/StructuredData/RowsOfFields.php       |   15 +-
 .../src/StructuredData/UnstructuredData.php   |   30 +
 .../StructuredData/UnstructuredInterface.php  |   14 +
 .../StructuredData/UnstructuredListData.php   |   30 +
 .../src/Transformations/ReorderFields.php     |    3 +
 .../StringTransformationInterface.php         |   13 +
 .../Transformations/TableTransformation.php   |   21 +-
 .../UnstructuredDataFieldAccessor.php         |   36 +
 .../UnstructuredDataListTransformation.php    |   38 +
 .../UnstructuredDataTransformation.php        |   52 +
 vendor/drush/drush/.circleci/config.yml       |   24 +
 vendor/drush/drush/.travis.yml                |   67 +-
 vendor/drush/drush/circle.yml                 |   15 -
 .../drush/commands/core/archive.drush.inc     |    4 +-
 .../drush/drush/commands/core/cache.drush.inc |    8 +-
 .../drush/drush/commands/core/cli.drush.inc   |   10 +-
 .../drush/commands/core/config.drush.inc      |   18 +-
 .../drush/drush/commands/core/core.drush.inc  |   30 +-
 .../drush/drush/commands/core/docs.drush.inc  |   22 +
 .../drush/commands/core/drupal/update.inc     |    5 +
 .../drush/commands/core/drupal/update_7.inc   |    5 +
 .../drush/drush/commands/core/field.drush.inc |    5 +
 .../drush/drush/commands/core/image.drush.inc |    4 +-
 .../drush/drush/commands/core/init.drush.inc  |    2 +-
 .../drush/commands/core/locale.d8.drush.inc   |    1 +
 .../drush/drush/commands/core/queue.drush.inc |    2 +
 .../drush/drush/commands/core/role.drush.inc  |   10 +-
 .../drush/commands/core/search.drush.inc      |    2 +
 .../drush/commands/core/shellalias.drush.inc  |    2 +-
 .../commands/core/site_install.drush.inc      |   52 +-
 .../drush/commands/core/sitealias.drush.inc   |    4 +-
 .../drush/drush/commands/core/ssh.drush.inc   |    2 +-
 .../drush/drush/commands/core/state.drush.inc |    6 +-
 .../drush/drush/commands/core/topic.drush.inc |    2 +-
 .../drush/drush/commands/core/usage.drush.inc |    4 +-
 .../drush/commands/core/variable.drush.inc    |    6 +-
 .../drush/commands/core/views.d8.drush.inc    |   12 +-
 .../drush/commands/core/watchdog.drush.inc    |    6 +-
 .../drush/commands/make/make.download.inc     |    2 +-
 .../pm/package_handler/git_drupalorg.inc      |    4 +-
 vendor/drush/drush/commands/pm/pm.drush.inc   |   27 +-
 vendor/drush/drush/commands/sql/sql.drush.inc |   15 +-
 .../drush/drush/commands/user/user.drush.inc  |   18 +-
 vendor/drush/drush/composer.json              |    9 +-
 vendor/drush/drush/composer.lock              |  479 ++-
 vendor/drush/drush/docs/make.md               |    4 +-
 vendor/drush/drush/drush.info                 |    2 +-
 vendor/drush/drush/examples/example.make      |    4 +-
 vendor/drush/drush/examples/example.make.yml  |    4 +-
 .../includes/annotationcommand_adapter.inc    |   95 +-
 vendor/drush/drush/includes/command.inc       |   10 +-
 vendor/drush/drush/includes/drush.inc         |    1 +
 vendor/drush/drush/includes/environment.inc   |   11 +-
 vendor/drush/drush/includes/preflight.inc     |   37 +-
 vendor/drush/drush/includes/sitealias.inc     |    9 +-
 .../lib/Drush/Commands/DrushCommands.php      |  102 +
 .../drush/drush/lib/Drush/ConfigAdapter.php   |  110 +
 vendor/drush/drush/lib/Drush/Drush.php        |  413 +++
 vendor/drush/drush/lib/Drush/DrushConfig.php  |  138 +
 .../Drush/Exceptions/UserAbortException.php   |   14 +
 vendor/drush/drush/lib/Drush/Log/Logger.php   |    3 +
 .../Drush/SiteAlias/AliasManagerAdapter.php   |   64 +
 .../SiteAlias/AliasManagerAdapterInjector.php |   18 +
 .../lib/Drush/SiteAlias/ProcessManager.php    |  159 +
 .../SiteAlias/ProcessManagerInjector.php      |   19 +
 vendor/drush/drush/lib/Drush/Sql/SqlBase.php  |    9 +-
 .../drush/drush/lib/Drush/Sql/Sqlmysqli.php   |    7 +
 vendor/drush/drush/lib/Drush/Sql/Sqlpgsql.php |    2 +-
 .../drush/src/TestTraits/CliTestTrait.php     |  222 ++
 .../drush/src/TestTraits/DrushTestTrait.php   |  116 +
 .../drush/src/TestTraits/OutputUtilsTrait.php |  165 ++
 .../drush/drush/tests/Unish/UnishTestCase.php |   48 +
 vendor/drush/drush/tests/bootstrap.inc        |    3 +
 vendor/drush/drush/tests/generateMakeTest.php |    3 +
 vendor/drush/drush/tests/makeTest.php         |    4 +-
 vendor/drush/drush/tests/makefiles/git.make   |    2 +-
 vendor/drush/drush/tests/pmDownloadTest.php   |    2 +-
 .../drush/tests/pmEnDisUnListInfoTest.php     |    3 +
 vendor/drush/drush/tests/pmUpdateCodeTest.php |    4 +-
 .../drush/drush/tests/pmUpdateStatusTest.php  |    4 +
 vendor/drush/drush/tests/testChildren.sh      |   16 -
 .../php-console-color/.travis.yml             |   17 +-
 .../jakub-onderka/php-console-color/LICENSE   |   27 +
 .../jakub-onderka/php-console-color/README.md |   10 +
 .../php-console-color/composer.json           |   11 +-
 .../php-console-color/phpunit.xml             |    7 +-
 .../PhpConsoleColor => }/ConsoleColor.php     |   23 +-
 .../InvalidStyleException.php                 |    0
 .../PhpConsoleColor => }/ConsoleColorTest.php |    0
 .../php-console-color/tests/bootstrap.php     |    2 -
 .../php-console-highlighter/.travis.yml       |   17 +-
 .../php-console-highlighter/README.md         |    2 +
 .../php-console-highlighter/composer.json     |   10 +-
 .../php-console-highlighter/phpunit.xml       |    6 +-
 .../Highlighter.php                           |   40 +-
 .../HigligterTest.php                         |   15 +-
 .../tests/bootstrap.php                       |    2 -
 vendor/nikic/php-parser/.travis.yml           |    8 +-
 vendor/nikic/php-parser/CHANGELOG.md          |   88 +-
 vendor/nikic/php-parser/README.md             |    6 +-
 vendor/nikic/php-parser/bin/php-parse         |   27 +-
 vendor/nikic/php-parser/composer.json         |   24 +-
 .../php-parser/doc/0_Introduction.markdown    |    6 +-
 .../doc/2_Usage_of_basic_components.markdown  |    3 +-
 .../doc/component/AST_builders.markdown       |   29 +-
 .../component/JSON_representation.markdown    |    6 +-
 .../doc/component/Walking_the_AST.markdown    |   10 +-
 vendor/nikic/php-parser/grammar/php5.y        |   24 +-
 vendor/nikic/php-parser/grammar/php7.y        |   45 +-
 .../php-parser/grammar/rebuildParsers.php     |   36 +-
 vendor/nikic/php-parser/grammar/tokens.y      |    3 +-
 .../lib/PhpParser/Builder/Param.php           |   19 +-
 .../lib/PhpParser/Builder/Property.php        |   22 +-
 .../lib/PhpParser/Builder/TraitUse.php        |   64 +
 .../PhpParser/Builder/TraitUseAdaptation.php  |  148 +
 .../lib/PhpParser/BuilderFactory.php          |   82 +-
 .../lib/PhpParser/BuilderHelpers.php          |    2 +-
 .../Internal/PrintableNewAnonClassNode.php    |    3 +-
 .../nikic/php-parser/lib/PhpParser/Lexer.php  |   39 +-
 .../lib/PhpParser/Lexer/Emulative.php         |  244 +-
 .../CoaleseEqualTokenEmulator.php             |   54 +
 .../Lexer/TokenEmulator/FnTokenEmulator.php   |   66 +
 .../TokenEmulator/TokenEmulatorInterface.php  |   17 +
 .../php-parser/lib/PhpParser/Node/Arg.php     |    2 +-
 .../php-parser/lib/PhpParser/Node/Const_.php  |    2 +-
 .../lib/PhpParser/Node/Expr/ArrayDimFetch.php |    2 +-
 .../lib/PhpParser/Node/Expr/ArrayItem.php     |   11 +-
 .../lib/PhpParser/Node/Expr/Array_.php        |    2 +-
 .../lib/PhpParser/Node/Expr/ArrowFunction.php |   71 +
 .../lib/PhpParser/Node/Expr/Assign.php        |    2 +-
 .../lib/PhpParser/Node/Expr/AssignOp.php      |    2 +-
 .../PhpParser/Node/Expr/AssignOp/Coalesce.php |   12 +
 .../lib/PhpParser/Node/Expr/AssignRef.php     |    2 +-
 .../lib/PhpParser/Node/Expr/BinaryOp.php      |    2 +-
 .../lib/PhpParser/Node/Expr/BitwiseNot.php    |    2 +-
 .../lib/PhpParser/Node/Expr/BooleanNot.php    |    2 +-
 .../lib/PhpParser/Node/Expr/Cast.php          |    2 +-
 .../lib/PhpParser/Node/Expr/Cast/Double.php   |    5 +
 .../PhpParser/Node/Expr/ClassConstFetch.php   |    2 +-
 .../lib/PhpParser/Node/Expr/Clone_.php        |    2 +-
 .../lib/PhpParser/Node/Expr/Closure.php       |    2 +-
 .../lib/PhpParser/Node/Expr/ClosureUse.php    |    2 +-
 .../lib/PhpParser/Node/Expr/ConstFetch.php    |    2 +-
 .../lib/PhpParser/Node/Expr/Empty_.php        |    2 +-
 .../lib/PhpParser/Node/Expr/Error.php         |    2 +-
 .../lib/PhpParser/Node/Expr/ErrorSuppress.php |    2 +-
 .../lib/PhpParser/Node/Expr/Eval_.php         |    2 +-
 .../lib/PhpParser/Node/Expr/Exit_.php         |    2 +-
 .../lib/PhpParser/Node/Expr/FuncCall.php      |    2 +-
 .../lib/PhpParser/Node/Expr/Include_.php      |    2 +-
 .../lib/PhpParser/Node/Expr/Instanceof_.php   |    2 +-
 .../lib/PhpParser/Node/Expr/Isset_.php        |    2 +-
 .../lib/PhpParser/Node/Expr/List_.php         |    2 +-
 .../lib/PhpParser/Node/Expr/MethodCall.php    |    2 +-
 .../lib/PhpParser/Node/Expr/New_.php          |    2 +-
 .../lib/PhpParser/Node/Expr/PostDec.php       |    2 +-
 .../lib/PhpParser/Node/Expr/PostInc.php       |    2 +-
 .../lib/PhpParser/Node/Expr/PreDec.php        |    2 +-
 .../lib/PhpParser/Node/Expr/PreInc.php        |    2 +-
 .../lib/PhpParser/Node/Expr/Print_.php        |    2 +-
 .../lib/PhpParser/Node/Expr/PropertyFetch.php |    2 +-
 .../lib/PhpParser/Node/Expr/ShellExec.php     |    2 +-
 .../lib/PhpParser/Node/Expr/StaticCall.php    |    4 +-
 .../Node/Expr/StaticPropertyFetch.php         |    2 +-
 .../lib/PhpParser/Node/Expr/Ternary.php       |    2 +-
 .../lib/PhpParser/Node/Expr/UnaryMinus.php    |    2 +-
 .../lib/PhpParser/Node/Expr/UnaryPlus.php     |    2 +-
 .../lib/PhpParser/Node/Expr/Variable.php      |    2 +-
 .../lib/PhpParser/Node/Expr/YieldFrom.php     |    2 +-
 .../lib/PhpParser/Node/Expr/Yield_.php        |    2 +-
 .../lib/PhpParser/Node/Identifier.php         |    2 +-
 .../php-parser/lib/PhpParser/Node/Name.php    |    8 +-
 .../lib/PhpParser/Node/NullableType.php       |    2 +-
 .../php-parser/lib/PhpParser/Node/Param.php   |   18 +-
 .../lib/PhpParser/Node/Scalar/DNumber.php     |    2 +-
 .../lib/PhpParser/Node/Scalar/Encapsed.php    |    2 +-
 .../Node/Scalar/EncapsedStringPart.php        |    2 +-
 .../lib/PhpParser/Node/Scalar/LNumber.php     |    2 +-
 .../lib/PhpParser/Node/Scalar/MagicConst.php  |    2 +-
 .../lib/PhpParser/Node/Scalar/String_.php     |   25 +-
 .../lib/PhpParser/Node/Stmt/Break_.php        |    2 +-
 .../lib/PhpParser/Node/Stmt/Case_.php         |    4 +-
 .../lib/PhpParser/Node/Stmt/Catch_.php        |    2 +-
 .../lib/PhpParser/Node/Stmt/ClassConst.php    |    2 +-
 .../lib/PhpParser/Node/Stmt/ClassMethod.php   |    2 +-
 .../lib/PhpParser/Node/Stmt/Class_.php        |    2 +-
 .../lib/PhpParser/Node/Stmt/Const_.php        |    2 +-
 .../lib/PhpParser/Node/Stmt/Continue_.php     |    2 +-
 .../PhpParser/Node/Stmt/DeclareDeclare.php    |    2 +-
 .../lib/PhpParser/Node/Stmt/Declare_.php      |    2 +-
 .../lib/PhpParser/Node/Stmt/Do_.php           |    2 +-
 .../lib/PhpParser/Node/Stmt/Echo_.php         |    2 +-
 .../lib/PhpParser/Node/Stmt/ElseIf_.php       |    2 +-
 .../lib/PhpParser/Node/Stmt/Else_.php         |    2 +-
 .../lib/PhpParser/Node/Stmt/Expression.php    |    2 +-
 .../lib/PhpParser/Node/Stmt/Finally_.php      |    2 +-
 .../lib/PhpParser/Node/Stmt/For_.php          |    2 +-
 .../lib/PhpParser/Node/Stmt/Foreach_.php      |    2 +-
 .../lib/PhpParser/Node/Stmt/Function_.php     |    2 +-
 .../lib/PhpParser/Node/Stmt/Global_.php       |    2 +-
 .../lib/PhpParser/Node/Stmt/Goto_.php         |    2 +-
 .../lib/PhpParser/Node/Stmt/GroupUse.php      |    2 +-
 .../lib/PhpParser/Node/Stmt/HaltCompiler.php  |    2 +-
 .../lib/PhpParser/Node/Stmt/If_.php           |    2 +-
 .../lib/PhpParser/Node/Stmt/InlineHTML.php    |    2 +-
 .../lib/PhpParser/Node/Stmt/Interface_.php    |    2 +-
 .../lib/PhpParser/Node/Stmt/Label.php         |    2 +-
 .../lib/PhpParser/Node/Stmt/Namespace_.php    |    2 +-
 .../lib/PhpParser/Node/Stmt/Property.php      |   21 +-
 .../PhpParser/Node/Stmt/PropertyProperty.php  |    2 +-
 .../lib/PhpParser/Node/Stmt/Return_.php       |    2 +-
 .../lib/PhpParser/Node/Stmt/StaticVar.php     |    2 +-
 .../lib/PhpParser/Node/Stmt/Static_.php       |    2 +-
 .../lib/PhpParser/Node/Stmt/Switch_.php       |    2 +-
 .../lib/PhpParser/Node/Stmt/Throw_.php        |    2 +-
 .../lib/PhpParser/Node/Stmt/TraitUse.php      |    2 +-
 .../Node/Stmt/TraitUseAdaptation/Alias.php    |    2 +-
 .../Stmt/TraitUseAdaptation/Precedence.php    |    2 +-
 .../lib/PhpParser/Node/Stmt/Trait_.php        |    2 +-
 .../lib/PhpParser/Node/Stmt/TryCatch.php      |    2 +-
 .../lib/PhpParser/Node/Stmt/Unset_.php        |    2 +-
 .../lib/PhpParser/Node/Stmt/UseUse.php        |    2 +-
 .../lib/PhpParser/Node/Stmt/Use_.php          |    2 +-
 .../lib/PhpParser/Node/Stmt/While_.php        |    2 +-
 .../php-parser/lib/PhpParser/NodeAbstract.php |    8 +-
 .../lib/PhpParser/NodeTraverser.php           |   46 +-
 .../PhpParser/NodeVisitor/NameResolver.php    |    5 +-
 .../php-parser/lib/PhpParser/Parser/Php5.php  | 2195 +++++++-------
 .../php-parser/lib/PhpParser/Parser/Php7.php  | 2023 ++++++-------
 .../lib/PhpParser/Parser/Tokens.php           |  224 +-
 .../lib/PhpParser/ParserAbstract.php          |  149 +
 .../lib/PhpParser/PrettyPrinter/Standard.php  |   31 +-
 .../lib/PhpParser/PrettyPrinterAbstract.php   |  152 +-
 vendor/nikic/php-parser/phpunit.xml.dist      |    4 +-
 .../test/PhpParser/Builder/ClassTest.php      |   27 +-
 .../test/PhpParser/Builder/FunctionTest.php   |   21 +-
 .../test/PhpParser/Builder/InterfaceTest.php  |    9 +-
 .../test/PhpParser/Builder/MethodTest.php     |   21 +-
 .../test/PhpParser/Builder/NamespaceTest.php  |    3 +-
 .../test/PhpParser/Builder/ParamTest.php      |   25 +-
 .../test/PhpParser/Builder/PropertyTest.php   |    3 +-
 .../test/PhpParser/Builder/TraitTest.php      |    9 +-
 .../Builder/TraitUseAdaptationTest.php        |  106 +
 .../test/PhpParser/Builder/TraitUseTest.php   |   52 +
 .../test/PhpParser/Builder/UseTest.php        |   10 +-
 .../test/PhpParser/BuilderFactoryTest.php     |  109 +-
 .../test/PhpParser/CodeParsingTest.php        |    9 +-
 .../test/PhpParser/CodeTestAbstract.php       |    6 +-
 .../php-parser/test/PhpParser/CommentTest.php |    4 +-
 .../test/PhpParser/ConstExprEvaluatorTest.php |    9 +-
 .../PhpParser/ErrorHandler/CollectingTest.php |    3 +-
 .../PhpParser/ErrorHandler/ThrowingTest.php   |    9 +-
 .../php-parser/test/PhpParser/ErrorTest.php   |   10 +-
 .../test/PhpParser/Internal/DifferTest.php    |    4 +-
 .../test/PhpParser/JsonDecoderTest.php        |    4 +-
 .../test/PhpParser/Lexer/EmulativeTest.php    |   93 +-
 .../php-parser/test/PhpParser/LexerTest.php   |    9 +-
 .../test/PhpParser/NameContextTest.php        |    3 +-
 .../test/PhpParser/Node/IdentifierTest.php    |    4 +-
 .../test/PhpParser/Node/NameTest.php          |   46 +-
 .../PhpParser/Node/Scalar/MagicConstTest.php  |    4 +-
 .../test/PhpParser/Node/Scalar/StringTest.php |    4 +-
 .../PhpParser/Node/Stmt/ClassConstTest.php    |    4 +-
 .../PhpParser/Node/Stmt/ClassMethodTest.php   |    3 +-
 .../test/PhpParser/Node/Stmt/ClassTest.php    |    4 +-
 .../PhpParser/Node/Stmt/InterfaceTest.php     |    3 +-
 .../test/PhpParser/Node/Stmt/PropertyTest.php |    4 +-
 .../test/PhpParser/NodeAbstractTest.php       |    4 +-
 .../test/PhpParser/NodeDumperTest.php         |   11 +-
 .../test/PhpParser/NodeFinderTest.php         |    3 +-
 .../test/PhpParser/NodeTraverserTest.php      |   78 +-
 .../NodeVisitor/FindingVisitorTest.php        |    3 +-
 .../NodeVisitor/FirstFindingVisitorTest.php   |    3 +-
 .../NodeVisitor/NameResolverTest.php          |   28 +-
 .../test/PhpParser/Parser/MultipleTest.php    |    6 +-
 .../test/PhpParser/Parser/Php5Test.php        |    2 -
 .../test/PhpParser/Parser/Php7Test.php        |    2 -
 .../test/PhpParser/ParserFactoryTest.php      |    3 +-
 .../php-parser/test/PhpParser/ParserTest.php  |   58 +-
 .../test/PhpParser/PrettyPrinterTest.php      |   20 +-
 .../addingPropertyType.test                   |   39 +
 .../code/formatPreservation/anonClasses.test  |   14 +-
 .../code/formatPreservation/array_spread.test |   29 +
 .../formatPreservation/arrow_function.test    |   97 +
 .../emptyListInsertion.test                   |  110 +
 .../formatPreservation/listInsertion.test     |    5 +-
 .../removingPropertyType.test                 |   22 +
 .../test/code/parser/commentAtEndOfClass.test |    1 +
 .../code/parser/errorHandling/recovery.test   |   43 +-
 .../test/code/parser/expr/arrayDef.test       |   12 +
 .../code/parser/expr/arrayDestructuring.test  |   12 +
 .../test/code/parser/expr/arraySpread.test    |  432 +++
 .../test/code/parser/expr/arrow_function.test |  145 +
 .../test/code/parser/expr/assign.test         |   34 +-
 .../test/code/parser/expr/constant_expr.test  |    3 +
 .../expr/fetchAndCall/constantDeref.test      |   12 +
 .../test/code/parser/expr/issetAndEmpty.test  |    3 +
 .../test/code/parser/expr/listReferences.test |    4 +
 .../test/code/parser/expr/listWithKeys.test   |    5 +
 .../code/parser/expr/uvs/indirectCall.test    |    4 +
 .../test/code/parser/expr/uvs/isset.test      |    3 +
 .../test/code/parser/expr/uvs/misc.test       |    2 +
 .../test/code/parser/exprStmtMode.test        |   57 -
 .../test/code/parser/nopPositions.test        |   13 +
 .../code/parser/scalar/flexibleDocString.test |  361 +++
 .../scalar/flexibleDocStringErrors.test       |  117 +
 .../test/code/parser/semiReserved.test        |    2 +
 .../code/parser/stmt/class/anonymous.test     |    1 +
 .../parser/stmt/class/implicitPublic.test     |    2 +
 .../test/code/parser/stmt/class/modifier.test |    5 +
 .../code/parser/stmt/class/php4Style.test     |    1 +
 .../code/parser/stmt/class/propertyTypes.test |   70 +
 .../test/code/parser/stmt/class/simple.test   |    3 +
 .../parser/stmt/function/defaultValues.test   |    3 +
 .../stmt/generator/yieldPrecedence.test       |    3 +
 .../test/code/parser/stmt/loop/foreach.test   |    4 +
 .../code/prettyPrinter/expr/arraySpread.test  |    8 +
 .../prettyPrinter/expr/arrow_function.test    |   18 +
 .../code/prettyPrinter/expr/operators.test    |   11 +-
 .../code/prettyPrinter/stmt/properties.test   |   20 +
 vendor/nikic/php-parser/test/updateTests.php  |    2 +-
 .../nikic/php-parser/test_old/run-php-src.sh  |    4 +-
 vendor/nikic/php-parser/test_old/run.php      |   28 +-
 vendor/psy/psysh/box.json.dist                |    1 -
 vendor/psy/psysh/composer.json                |    2 +-
 vendor/psy/psysh/src/CodeCleaner/ListPass.php |   29 +-
 .../psy/psysh/src/CodeCleaner/RequirePass.php |    5 +-
 .../src/CodeCleaner/ValidClassNamePass.php    |   17 +-
 vendor/psy/psysh/src/ExecutionLoopClosure.php |    4 +-
 vendor/psy/psysh/src/Readline/Transient.php   |    2 +-
 vendor/psy/psysh/src/Shell.php                |   18 +-
 .../CodeCleaner/Fixtures/TraitWithStatic.php  |   20 +
 .../psysh/test/CodeCleaner/ListPassTest.php   |   11 +
 .../CodeCleaner/ValidClassNamePassTest.php    |    1 +
 vendor/psy/psysh/vendor-bin/box/composer.json |    2 +-
 vendor/symfony/console/Application.php        |    9 +
 .../symfony/console/Helper/QuestionHelper.php |   39 +-
 .../symfony/console/Tests/ApplicationTest.php |   31 +-
 ...hp => TestAmbiguousCommandRegistering.php} |    8 +-
 ...p => TestAmbiguousCommandRegistering2.php} |    8 +-
 .../Tests/Helper/QuestionHelperTest.php       |   31 +
 .../ClassNotFoundFatalErrorHandler.php        |    6 +-
 .../symfony/finder/Comparator/Comparator.php  |    2 +-
 vendor/symfony/finder/Finder.php              |  105 +-
 vendor/symfony/finder/Glob.php                |   14 +-
 .../finder/Iterator/CustomFilterIterator.php  |    2 +-
 .../Iterator/DateRangeFilterIterator.php      |    2 +-
 .../ExcludeDirectoryFilterIterator.php        |    6 +-
 .../Iterator/MultiplePcreFilterIterator.php   |    6 +-
 .../Iterator/RecursiveDirectoryIterator.php   |    2 +-
 .../Iterator/SizeRangeFilterIterator.php      |    2 +-
 .../finder/Iterator/SortableIterator.php      |    4 +-
 vendor/symfony/finder/LICENSE                 |    2 +-
 .../Tests/Comparator/ComparatorTest.php       |    6 +-
 .../Tests/Comparator/DateComparatorTest.php   |   18 +-
 .../Tests/Comparator/NumberComparatorTest.php |   56 +-
 vendor/symfony/finder/Tests/FinderTest.php    |  239 +-
 vendor/symfony/finder/Tests/GlobTest.php      |    8 +-
 .../Iterator/CustomFilterIteratorTest.php     |   14 +-
 .../Iterator/DateRangeFilterIteratorTest.php  |   22 +-
 .../Iterator/DepthRangeFilterIteratorTest.php |   30 +-
 .../ExcludeDirectoryFilterIteratorTest.php    |   22 +-
 .../Iterator/FileTypeFilterIteratorTest.php   |   16 +-
 .../FilecontentFilterIteratorTest.php         |   44 +-
 .../Iterator/FilenameFilterIteratorTest.php   |   18 +-
 .../Tests/Iterator/FilterIteratorTest.php     |    2 +-
 .../finder/Tests/Iterator/Iterator.php        |    4 +-
 .../Tests/Iterator/IteratorTestCase.php       |    6 +-
 .../Tests/Iterator/MockFileListIterator.php   |    2 +-
 .../finder/Tests/Iterator/MockSplFileInfo.php |   16 +-
 .../MultiplePcreFilterIteratorTest.php        |   36 +-
 .../Tests/Iterator/PathFilterIteratorTest.php |   48 +-
 .../Tests/Iterator/RealIteratorTestCase.php   |    8 +-
 .../RecursiveDirectoryIteratorTest.php        |    6 +-
 .../Iterator/SizeRangeFilterIteratorTest.php  |   10 +-
 .../Tests/Iterator/SortableIteratorTest.php   |   66 +-
 vendor/symfony/finder/phpunit.xml.dist        |    2 +-
 .../symfony/var-dumper/Caster/AmqpCaster.php  |   50 +-
 vendor/symfony/var-dumper/Caster/ArgsStub.php |   12 +-
 vendor/symfony/var-dumper/Caster/Caster.php   |   10 +-
 .../symfony/var-dumper/Caster/ClassStub.php   |   10 +-
 .../symfony/var-dumper/Caster/DOMCaster.php   |   78 +-
 .../symfony/var-dumper/Caster/DateCaster.php  |   10 +-
 .../var-dumper/Caster/DoctrineCaster.php      |   12 +-
 .../var-dumper/Caster/ExceptionCaster.php     |   34 +-
 vendor/symfony/var-dumper/Caster/LinkStub.php |    6 +-
 .../symfony/var-dumper/Caster/PdoCaster.php   |   28 +-
 .../symfony/var-dumper/Caster/PgSqlCaster.php |   20 +-
 .../symfony/var-dumper/Caster/RedisCaster.php |   20 +-
 .../var-dumper/Caster/ReflectionCaster.php    |   57 +-
 .../symfony/var-dumper/Caster/SplCaster.php   |   44 +-
 .../symfony/var-dumper/Caster/StubCaster.php  |    6 +-
 .../var-dumper/Caster/SymfonyCaster.php       |    4 +-
 .../var-dumper/Caster/XmlReaderCaster.php     |   16 +-
 .../var-dumper/Caster/XmlResourceCaster.php   |    4 +-
 .../var-dumper/Cloner/AbstractCloner.php      |  234 +-
 vendor/symfony/var-dumper/Cloner/Cursor.php   |    2 +-
 vendor/symfony/var-dumper/Cloner/Data.php     |   18 +-
 vendor/symfony/var-dumper/Cloner/Stub.php     |   32 +-
 .../symfony/var-dumper/Cloner/VarCloner.php   |   34 +-
 .../var-dumper/Dumper/AbstractDumper.php      |    4 +-
 .../symfony/var-dumper/Dumper/CliDumper.php   |   34 +-
 .../symfony/var-dumper/Dumper/HtmlDumper.php  |   26 +-
 vendor/symfony/var-dumper/LICENSE             |    2 +-
 vendor/symfony/var-dumper/README.md           |    4 +-
 .../var-dumper/Resources/functions/dump.php   |    4 +-
 .../var-dumper/Tests/Caster/CasterTest.php    |  124 +-
 .../Tests/Caster/DateCasterTest.php           |  154 +-
 .../Tests/Caster/ExceptionCasterTest.php      |   16 +-
 .../var-dumper/Tests/Caster/PdoCasterTest.php |    4 +-
 .../Tests/Caster/ReflectionCasterTest.php     |   32 +-
 .../var-dumper/Tests/Caster/SplCasterTest.php |   34 +-
 .../Tests/Caster/StubCasterTest.php           |   26 +-
 .../Tests/Caster/XmlReaderCasterTest.php      |   68 +-
 .../var-dumper/Tests/Cloner/DataTest.php      |   16 +-
 .../var-dumper/Tests/Cloner/VarClonerTest.php |   44 +-
 .../var-dumper/Tests/Dumper/CliDumperTest.php |   38 +-
 .../var-dumper/Tests/Dumper/FunctionsTest.php |   57 +
 .../Tests/Dumper/HtmlDumperTest.php           |    4 +-
 .../var-dumper/Tests/Fixtures/Twig.php        |    6 +-
 .../var-dumper/Tests/Fixtures/dumb-var.php    |   10 +-
 .../Tests/Test/VarDumperTestTraitTest.php     |    2 +-
 vendor/symfony/var-dumper/VarDumper.php       |    2 +-
 vendor/symfony/var-dumper/phpunit.xml.dist    |    2 +-
 vendor/webmozart/assert/.composer-auth.json   |    7 -
 vendor/webmozart/assert/.styleci.yml          |   11 -
 vendor/webmozart/assert/CHANGELOG.md          |   23 +
 vendor/webmozart/assert/README.md             |    8 +-
 vendor/webmozart/assert/composer.json         |   19 +-
 vendor/webmozart/assert/src/Assert.php        |  106 +-
 498 files changed, 22554 insertions(+), 5753 deletions(-)
 create mode 100644 vendor/consolidation/annotated-command/.scenarios.lock/install
 create mode 100644 vendor/consolidation/annotated-command/.scenarios.lock/phpunit4/.gitignore
 create mode 100644 vendor/consolidation/annotated-command/.scenarios.lock/phpunit4/composer.json
 create mode 100644 vendor/consolidation/annotated-command/.scenarios.lock/phpunit4/composer.lock
 create mode 100644 vendor/consolidation/annotated-command/.scenarios.lock/symfony2/.gitignore
 create mode 100644 vendor/consolidation/annotated-command/.scenarios.lock/symfony2/composer.json
 create mode 100644 vendor/consolidation/annotated-command/.scenarios.lock/symfony4/.gitignore
 create mode 100644 vendor/consolidation/annotated-command/.scenarios.lock/symfony4/composer.json
 create mode 100644 vendor/consolidation/annotated-command/.scenarios.lock/symfony4/composer.lock
 create mode 100644 vendor/consolidation/annotated-command/dependencies.yml
 create mode 100644 vendor/consolidation/annotated-command/src/CommandResult.php
 create mode 100644 vendor/consolidation/annotated-command/src/Help/HelpDocumentBuilder.php
 create mode 100644 vendor/consolidation/annotated-command/src/Input/StdinAwareInterface.php
 create mode 100644 vendor/consolidation/annotated-command/src/Input/StdinAwareTrait.php
 create mode 100644 vendor/consolidation/annotated-command/src/Input/StdinHandler.php
 create mode 100644 vendor/consolidation/annotated-command/src/ParameterInjection.php
 create mode 100644 vendor/consolidation/annotated-command/src/ParameterInjector.php
 create mode 100644 vendor/consolidation/annotated-command/src/ResultWriter.php
 create mode 100644 vendor/consolidation/output-formatters/.scenarios.lock/install
 create mode 100644 vendor/consolidation/output-formatters/.scenarios.lock/symfony2/.gitignore
 create mode 100644 vendor/consolidation/output-formatters/.scenarios.lock/symfony2/composer.json
 create mode 100644 vendor/consolidation/output-formatters/.scenarios.lock/symfony3/.gitignore
 create mode 100644 vendor/consolidation/output-formatters/.scenarios.lock/symfony3/composer.json
 create mode 100644 vendor/consolidation/output-formatters/.scenarios.lock/symfony3/composer.lock
 create mode 100644 vendor/consolidation/output-formatters/.scenarios.lock/symfony4/.gitignore
 create mode 100644 vendor/consolidation/output-formatters/.scenarios.lock/symfony4/composer.json
 create mode 100644 vendor/consolidation/output-formatters/.scenarios.lock/symfony4/composer.lock
 create mode 100644 vendor/consolidation/output-formatters/src/Formatters/NoOutputFormatter.php
 create mode 100644 vendor/consolidation/output-formatters/src/StructuredData/AbstractListData.php
 create mode 100644 vendor/consolidation/output-formatters/src/StructuredData/ConversionInterface.php
 create mode 100644 vendor/consolidation/output-formatters/src/StructuredData/FieldProcessor.php
 create mode 100644 vendor/consolidation/output-formatters/src/StructuredData/UnstructuredData.php
 create mode 100644 vendor/consolidation/output-formatters/src/StructuredData/UnstructuredInterface.php
 create mode 100644 vendor/consolidation/output-formatters/src/StructuredData/UnstructuredListData.php
 create mode 100644 vendor/consolidation/output-formatters/src/Transformations/StringTransformationInterface.php
 create mode 100644 vendor/consolidation/output-formatters/src/Transformations/UnstructuredDataFieldAccessor.php
 create mode 100644 vendor/consolidation/output-formatters/src/Transformations/UnstructuredDataListTransformation.php
 create mode 100644 vendor/consolidation/output-formatters/src/Transformations/UnstructuredDataTransformation.php
 create mode 100644 vendor/drush/drush/.circleci/config.yml
 delete mode 100644 vendor/drush/drush/circle.yml
 create mode 100644 vendor/drush/drush/lib/Drush/Commands/DrushCommands.php
 create mode 100644 vendor/drush/drush/lib/Drush/ConfigAdapter.php
 create mode 100644 vendor/drush/drush/lib/Drush/Drush.php
 create mode 100644 vendor/drush/drush/lib/Drush/DrushConfig.php
 create mode 100644 vendor/drush/drush/lib/Drush/Exceptions/UserAbortException.php
 create mode 100644 vendor/drush/drush/lib/Drush/SiteAlias/AliasManagerAdapter.php
 create mode 100644 vendor/drush/drush/lib/Drush/SiteAlias/AliasManagerAdapterInjector.php
 create mode 100644 vendor/drush/drush/lib/Drush/SiteAlias/ProcessManager.php
 create mode 100644 vendor/drush/drush/lib/Drush/SiteAlias/ProcessManagerInjector.php
 create mode 100644 vendor/drush/drush/lib/Drush/Sql/Sqlmysqli.php
 create mode 100644 vendor/drush/drush/src/TestTraits/CliTestTrait.php
 create mode 100644 vendor/drush/drush/src/TestTraits/DrushTestTrait.php
 create mode 100644 vendor/drush/drush/src/TestTraits/OutputUtilsTrait.php
 delete mode 100755 vendor/drush/drush/tests/testChildren.sh
 create mode 100644 vendor/jakub-onderka/php-console-color/LICENSE
 create mode 100644 vendor/jakub-onderka/php-console-color/README.md
 rename vendor/jakub-onderka/php-console-color/src/{JakubOnderka/PhpConsoleColor => }/ConsoleColor.php (90%)
 rename vendor/jakub-onderka/php-console-color/src/{JakubOnderka/PhpConsoleColor => }/InvalidStyleException.php (100%)
 rename vendor/jakub-onderka/php-console-color/tests/{JakubOnderka/PhpConsoleColor => }/ConsoleColorTest.php (100%)
 delete mode 100644 vendor/jakub-onderka/php-console-color/tests/bootstrap.php
 rename vendor/jakub-onderka/php-console-highlighter/src/{JakubOnderka/PhpConsoleHighlighter => }/Highlighter.php (94%)
 rename vendor/jakub-onderka/php-console-highlighter/tests/{JakubOnderka/PhpConsoleHighligter => }/HigligterTest.php (93%)
 delete mode 100644 vendor/jakub-onderka/php-console-highlighter/tests/bootstrap.php
 create mode 100644 vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php
 create mode 100644 vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php
 create mode 100644 vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/CoaleseEqualTokenEmulator.php
 create mode 100644 vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FnTokenEmulator.php
 create mode 100644 vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulatorInterface.php
 create mode 100644 vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php
 create mode 100644 vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php
 create mode 100644 vendor/nikic/php-parser/test/PhpParser/Builder/TraitUseAdaptationTest.php
 create mode 100644 vendor/nikic/php-parser/test/PhpParser/Builder/TraitUseTest.php
 create mode 100644 vendor/nikic/php-parser/test/code/formatPreservation/addingPropertyType.test
 create mode 100644 vendor/nikic/php-parser/test/code/formatPreservation/array_spread.test
 create mode 100644 vendor/nikic/php-parser/test/code/formatPreservation/arrow_function.test
 create mode 100644 vendor/nikic/php-parser/test/code/formatPreservation/emptyListInsertion.test
 create mode 100644 vendor/nikic/php-parser/test/code/formatPreservation/removingPropertyType.test
 create mode 100644 vendor/nikic/php-parser/test/code/parser/expr/arraySpread.test
 create mode 100644 vendor/nikic/php-parser/test/code/parser/expr/arrow_function.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/exprStmtMode.test
 create mode 100644 vendor/nikic/php-parser/test/code/parser/nopPositions.test
 create mode 100644 vendor/nikic/php-parser/test/code/parser/scalar/flexibleDocString.test
 create mode 100644 vendor/nikic/php-parser/test/code/parser/scalar/flexibleDocStringErrors.test
 create mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/class/propertyTypes.test
 create mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/expr/arraySpread.test
 create mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/expr/arrow_function.test
 create mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/stmt/properties.test
 create mode 100644 vendor/psy/psysh/test/CodeCleaner/Fixtures/TraitWithStatic.php
 rename vendor/symfony/console/Tests/Fixtures/{TestToto.php => TestAmbiguousCommandRegistering.php} (65%)
 rename vendor/symfony/console/Tests/Fixtures/{TestTiti.php => TestAmbiguousCommandRegistering2.php} (62%)
 create mode 100644 vendor/symfony/var-dumper/Tests/Dumper/FunctionsTest.php
 delete mode 100644 vendor/webmozart/assert/.composer-auth.json
 delete mode 100644 vendor/webmozart/assert/.styleci.yml

diff --git a/vendor/composer/ClassLoader.php b/vendor/composer/ClassLoader.php
index fce8549f07..dc02dfb114 100644
--- a/vendor/composer/ClassLoader.php
+++ b/vendor/composer/ClassLoader.php
@@ -279,7 +279,7 @@ public function isClassMapAuthoritative()
      */
     public function setApcuPrefix($apcuPrefix)
     {
-        $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
+        $this->apcuPrefix = function_exists('apcu_fetch') && ini_get('apc.enabled') ? $apcuPrefix : null;
     }
 
     /**
@@ -377,7 +377,7 @@ private function findFileWithExtension($class, $ext)
             $subPath = $class;
             while (false !== $lastPos = strrpos($subPath, '\\')) {
                 $subPath = substr($subPath, 0, $lastPos);
-                $search = $subPath . '\\';
+                $search = $subPath.'\\';
                 if (isset($this->prefixDirsPsr4[$search])) {
                     $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
                     foreach ($this->prefixDirsPsr4[$search] as $dir) {
diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php
index ac031cc8af..5fda7ff2c5 100644
--- a/vendor/composer/autoload_classmap.php
+++ b/vendor/composer/autoload_classmap.php
@@ -271,12 +271,14 @@
     'Consolidation\\AnnotatedCommand\\CommandFileDiscovery' => $vendorDir . '/consolidation/annotated-command/src/CommandFileDiscovery.php',
     'Consolidation\\AnnotatedCommand\\CommandInfoAltererInterface' => $vendorDir . '/consolidation/annotated-command/src/CommandInfoAltererInterface.php',
     'Consolidation\\AnnotatedCommand\\CommandProcessor' => $vendorDir . '/consolidation/annotated-command/src/CommandProcessor.php',
+    'Consolidation\\AnnotatedCommand\\CommandResult' => $vendorDir . '/consolidation/annotated-command/src/CommandResult.php',
     'Consolidation\\AnnotatedCommand\\Events\\CustomEventAwareInterface' => $vendorDir . '/consolidation/annotated-command/src/Events/CustomEventAwareInterface.php',
     'Consolidation\\AnnotatedCommand\\Events\\CustomEventAwareTrait' => $vendorDir . '/consolidation/annotated-command/src/Events/CustomEventAwareTrait.php',
     'Consolidation\\AnnotatedCommand\\ExitCodeInterface' => $vendorDir . '/consolidation/annotated-command/src/ExitCodeInterface.php',
     'Consolidation\\AnnotatedCommand\\Help\\HelpCommand' => $vendorDir . '/consolidation/annotated-command/src/Help/HelpCommand.php',
     'Consolidation\\AnnotatedCommand\\Help\\HelpDocument' => $vendorDir . '/consolidation/annotated-command/src/Help/HelpDocument.php',
     'Consolidation\\AnnotatedCommand\\Help\\HelpDocumentAlter' => $vendorDir . '/consolidation/annotated-command/src/Help/HelpDocumentAlter.php',
+    'Consolidation\\AnnotatedCommand\\Help\\HelpDocumentBuilder' => $vendorDir . '/consolidation/annotated-command/src/Help/HelpDocumentBuilder.php',
     'Consolidation\\AnnotatedCommand\\Hooks\\AlterResultInterface' => $vendorDir . '/consolidation/annotated-command/src/Hooks/AlterResultInterface.php',
     'Consolidation\\AnnotatedCommand\\Hooks\\Dispatchers\\CommandEventHookDispatcher' => $vendorDir . '/consolidation/annotated-command/src/Hooks/Dispatchers/CommandEventHookDispatcher.php',
     'Consolidation\\AnnotatedCommand\\Hooks\\Dispatchers\\ExtracterHookDispatcher' => $vendorDir . '/consolidation/annotated-command/src/Hooks/Dispatchers/ExtracterHookDispatcher.php',
@@ -296,11 +298,16 @@
     'Consolidation\\AnnotatedCommand\\Hooks\\ProcessResultInterface' => $vendorDir . '/consolidation/annotated-command/src/Hooks/ProcessResultInterface.php',
     'Consolidation\\AnnotatedCommand\\Hooks\\StatusDeterminerInterface' => $vendorDir . '/consolidation/annotated-command/src/Hooks/StatusDeterminerInterface.php',
     'Consolidation\\AnnotatedCommand\\Hooks\\ValidatorInterface' => $vendorDir . '/consolidation/annotated-command/src/Hooks/ValidatorInterface.php',
+    'Consolidation\\AnnotatedCommand\\Input\\StdinAwareInterface' => $vendorDir . '/consolidation/annotated-command/src/Input/StdinAwareInterface.php',
+    'Consolidation\\AnnotatedCommand\\Input\\StdinAwareTrait' => $vendorDir . '/consolidation/annotated-command/src/Input/StdinAwareTrait.php',
+    'Consolidation\\AnnotatedCommand\\Input\\StdinHandler' => $vendorDir . '/consolidation/annotated-command/src/Input/StdinHandler.php',
     'Consolidation\\AnnotatedCommand\\Options\\AlterOptionsCommandEvent' => $vendorDir . '/consolidation/annotated-command/src/Options/AlterOptionsCommandEvent.php',
     'Consolidation\\AnnotatedCommand\\Options\\AutomaticOptionsProviderInterface' => $vendorDir . '/consolidation/annotated-command/src/Options/AutomaticOptionsProviderInterface.php',
     'Consolidation\\AnnotatedCommand\\Options\\PrepareFormatter' => $vendorDir . '/consolidation/annotated-command/src/Options/PrepareFormatter.php',
     'Consolidation\\AnnotatedCommand\\Options\\PrepareTerminalWidthOption' => $vendorDir . '/consolidation/annotated-command/src/Options/PrepareTerminalWidthOption.php',
     'Consolidation\\AnnotatedCommand\\OutputDataInterface' => $vendorDir . '/consolidation/annotated-command/src/OutputDataInterface.php',
+    'Consolidation\\AnnotatedCommand\\ParameterInjection' => $vendorDir . '/consolidation/annotated-command/src/ParameterInjection.php',
+    'Consolidation\\AnnotatedCommand\\ParameterInjector' => $vendorDir . '/consolidation/annotated-command/src/ParameterInjector.php',
     'Consolidation\\AnnotatedCommand\\Parser\\CommandInfo' => $vendorDir . '/consolidation/annotated-command/src/Parser/CommandInfo.php',
     'Consolidation\\AnnotatedCommand\\Parser\\CommandInfoDeserializer' => $vendorDir . '/consolidation/annotated-command/src/Parser/CommandInfoDeserializer.php',
     'Consolidation\\AnnotatedCommand\\Parser\\CommandInfoSerializer' => $vendorDir . '/consolidation/annotated-command/src/Parser/CommandInfoSerializer.php',
@@ -311,6 +318,7 @@
     'Consolidation\\AnnotatedCommand\\Parser\\Internal\\DocblockTag' => $vendorDir . '/consolidation/annotated-command/src/Parser/Internal/DocblockTag.php',
     'Consolidation\\AnnotatedCommand\\Parser\\Internal\\FullyQualifiedClassCache' => $vendorDir . '/consolidation/annotated-command/src/Parser/Internal/FullyQualifiedClassCache.php',
     'Consolidation\\AnnotatedCommand\\Parser\\Internal\\TagFactory' => $vendorDir . '/consolidation/annotated-command/src/Parser/Internal/TagFactory.php',
+    'Consolidation\\AnnotatedCommand\\ResultWriter' => $vendorDir . '/consolidation/annotated-command/src/ResultWriter.php',
     'Consolidation\\OutputFormatters\\Exception\\AbstractDataFormatException' => $vendorDir . '/consolidation/output-formatters/src/Exception/AbstractDataFormatException.php',
     'Consolidation\\OutputFormatters\\Exception\\IncompatibleDataException' => $vendorDir . '/consolidation/output-formatters/src/Exception/IncompatibleDataException.php',
     'Consolidation\\OutputFormatters\\Exception\\InvalidFormatException' => $vendorDir . '/consolidation/output-formatters/src/Exception/InvalidFormatException.php',
@@ -326,6 +334,7 @@
     'Consolidation\\OutputFormatters\\Formatters\\ListFormatter' => $vendorDir . '/consolidation/output-formatters/src/Formatters/ListFormatter.php',
     'Consolidation\\OutputFormatters\\Formatters\\MetadataFormatterInterface' => $vendorDir . '/consolidation/output-formatters/src/Formatters/MetadataFormatterInterface.php',
     'Consolidation\\OutputFormatters\\Formatters\\MetadataFormatterTrait' => $vendorDir . '/consolidation/output-formatters/src/Formatters/MetadataFormatterTrait.php',
+    'Consolidation\\OutputFormatters\\Formatters\\NoOutputFormatter' => $vendorDir . '/consolidation/output-formatters/src/Formatters/NoOutputFormatter.php',
     'Consolidation\\OutputFormatters\\Formatters\\PrintRFormatter' => $vendorDir . '/consolidation/output-formatters/src/Formatters/PrintRFormatter.php',
     'Consolidation\\OutputFormatters\\Formatters\\RenderDataInterface' => $vendorDir . '/consolidation/output-formatters/src/Formatters/RenderDataInterface.php',
     'Consolidation\\OutputFormatters\\Formatters\\RenderTableDataTrait' => $vendorDir . '/consolidation/output-formatters/src/Formatters/RenderTableDataTrait.php',
@@ -340,9 +349,12 @@
     'Consolidation\\OutputFormatters\\Formatters\\YamlFormatter' => $vendorDir . '/consolidation/output-formatters/src/Formatters/YamlFormatter.php',
     'Consolidation\\OutputFormatters\\Options\\FormatterOptions' => $vendorDir . '/consolidation/output-formatters/src/Options/FormatterOptions.php',
     'Consolidation\\OutputFormatters\\Options\\OverrideOptionsInterface' => $vendorDir . '/consolidation/output-formatters/src/Options/OverrideOptionsInterface.php',
+    'Consolidation\\OutputFormatters\\StructuredData\\AbstractListData' => $vendorDir . '/consolidation/output-formatters/src/StructuredData/AbstractListData.php',
     'Consolidation\\OutputFormatters\\StructuredData\\AbstractStructuredList' => $vendorDir . '/consolidation/output-formatters/src/StructuredData/AbstractStructuredList.php',
     'Consolidation\\OutputFormatters\\StructuredData\\AssociativeList' => $vendorDir . '/consolidation/output-formatters/src/StructuredData/AssociativeList.php',
     'Consolidation\\OutputFormatters\\StructuredData\\CallableRenderer' => $vendorDir . '/consolidation/output-formatters/src/StructuredData/CallableRenderer.php',
+    'Consolidation\\OutputFormatters\\StructuredData\\ConversionInterface' => $vendorDir . '/consolidation/output-formatters/src/StructuredData/ConversionInterface.php',
+    'Consolidation\\OutputFormatters\\StructuredData\\FieldProcessor' => $vendorDir . '/consolidation/output-formatters/src/StructuredData/FieldProcessor.php',
     'Consolidation\\OutputFormatters\\StructuredData\\HelpDocument' => $vendorDir . '/consolidation/output-formatters/src/StructuredData/HelpDocument.php',
     'Consolidation\\OutputFormatters\\StructuredData\\ListDataFromKeys' => $vendorDir . '/consolidation/output-formatters/src/StructuredData/ListDataFromKeys.php',
     'Consolidation\\OutputFormatters\\StructuredData\\ListDataInterface' => $vendorDir . '/consolidation/output-formatters/src/StructuredData/ListDataInterface.php',
@@ -359,6 +371,9 @@
     'Consolidation\\OutputFormatters\\StructuredData\\RowsOfFields' => $vendorDir . '/consolidation/output-formatters/src/StructuredData/RowsOfFields.php',
     'Consolidation\\OutputFormatters\\StructuredData\\RowsOfFieldsWithMetadata' => $vendorDir . '/consolidation/output-formatters/src/StructuredData/RowsOfFieldsWithMetadata.php',
     'Consolidation\\OutputFormatters\\StructuredData\\TableDataInterface' => $vendorDir . '/consolidation/output-formatters/src/StructuredData/TableDataInterface.php',
+    'Consolidation\\OutputFormatters\\StructuredData\\UnstructuredData' => $vendorDir . '/consolidation/output-formatters/src/StructuredData/UnstructuredData.php',
+    'Consolidation\\OutputFormatters\\StructuredData\\UnstructuredInterface' => $vendorDir . '/consolidation/output-formatters/src/StructuredData/UnstructuredInterface.php',
+    'Consolidation\\OutputFormatters\\StructuredData\\UnstructuredListData' => $vendorDir . '/consolidation/output-formatters/src/StructuredData/UnstructuredListData.php',
     'Consolidation\\OutputFormatters\\StructuredData\\Xml\\DomDataInterface' => $vendorDir . '/consolidation/output-formatters/src/StructuredData/Xml/DomDataInterface.php',
     'Consolidation\\OutputFormatters\\StructuredData\\Xml\\XmlSchema' => $vendorDir . '/consolidation/output-formatters/src/StructuredData/Xml/XmlSchema.php',
     'Consolidation\\OutputFormatters\\StructuredData\\Xml\\XmlSchemaInterface' => $vendorDir . '/consolidation/output-formatters/src/StructuredData/Xml/XmlSchemaInterface.php',
@@ -368,7 +383,11 @@
     'Consolidation\\OutputFormatters\\Transformations\\PropertyParser' => $vendorDir . '/consolidation/output-formatters/src/Transformations/PropertyParser.php',
     'Consolidation\\OutputFormatters\\Transformations\\ReorderFields' => $vendorDir . '/consolidation/output-formatters/src/Transformations/ReorderFields.php',
     'Consolidation\\OutputFormatters\\Transformations\\SimplifyToArrayInterface' => $vendorDir . '/consolidation/output-formatters/src/Transformations/SimplifyToArrayInterface.php',
+    'Consolidation\\OutputFormatters\\Transformations\\StringTransformationInterface' => $vendorDir . '/consolidation/output-formatters/src/Transformations/StringTransformationInterface.php',
     'Consolidation\\OutputFormatters\\Transformations\\TableTransformation' => $vendorDir . '/consolidation/output-formatters/src/Transformations/TableTransformation.php',
+    'Consolidation\\OutputFormatters\\Transformations\\UnstructuredDataFieldAccessor' => $vendorDir . '/consolidation/output-formatters/src/Transformations/UnstructuredDataFieldAccessor.php',
+    'Consolidation\\OutputFormatters\\Transformations\\UnstructuredDataListTransformation' => $vendorDir . '/consolidation/output-formatters/src/Transformations/UnstructuredDataListTransformation.php',
+    'Consolidation\\OutputFormatters\\Transformations\\UnstructuredDataTransformation' => $vendorDir . '/consolidation/output-formatters/src/Transformations/UnstructuredDataTransformation.php',
     'Consolidation\\OutputFormatters\\Transformations\\WordWrapper' => $vendorDir . '/consolidation/output-formatters/src/Transformations/WordWrapper.php',
     'Consolidation\\OutputFormatters\\Transformations\\Wrap\\CalculateWidths' => $vendorDir . '/consolidation/output-formatters/src/Transformations/Wrap/CalculateWidths.php',
     'Consolidation\\OutputFormatters\\Transformations\\Wrap\\ColumnWidths' => $vendorDir . '/consolidation/output-formatters/src/Transformations/Wrap/ColumnWidths.php',
@@ -1953,6 +1972,8 @@
     'Drupal\\Core\\Language\\LanguageManager' => $baseDir . '/web/core/lib/Drupal/Core/Language/LanguageManager.php',
     'Drupal\\Core\\Language\\LanguageManagerInterface' => $baseDir . '/web/core/lib/Drupal/Core/Language/LanguageManagerInterface.php',
     'Drupal\\Core\\Layout\\Annotation\\Layout' => $baseDir . '/web/core/lib/Drupal/Core/Layout/Annotation/Layout.php',
+    'Drupal\\Core\\Layout\\Icon\\IconBuilderInterface' => $baseDir . '/web/core/lib/Drupal/Core/Layout/Icon/IconBuilderInterface.php',
+    'Drupal\\Core\\Layout\\Icon\\SvgIconBuilder' => $baseDir . '/web/core/lib/Drupal/Core/Layout/Icon/SvgIconBuilder.php',
     'Drupal\\Core\\Layout\\LayoutDefault' => $baseDir . '/web/core/lib/Drupal/Core/Layout/LayoutDefault.php',
     'Drupal\\Core\\Layout\\LayoutDefinition' => $baseDir . '/web/core/lib/Drupal/Core/Layout/LayoutDefinition.php',
     'Drupal\\Core\\Layout\\LayoutInterface' => $baseDir . '/web/core/lib/Drupal/Core/Layout/LayoutInterface.php',
@@ -2538,12 +2559,17 @@
     'Drush\\Command\\DrushInputAdapter' => $vendorDir . '/drush/drush/lib/Drush/Command/DrushInputAdapter.php',
     'Drush\\Command\\DrushOutputAdapter' => $vendorDir . '/drush/drush/lib/Drush/Command/DrushOutputAdapter.php',
     'Drush\\Command\\ServiceCommandlist' => $vendorDir . '/drush/drush/lib/Drush/Command/ServiceCommandlist.php',
+    'Drush\\Commands\\DrushCommands' => $vendorDir . '/drush/drush/lib/Drush/Commands/DrushCommands.php',
     'Drush\\Commands\\core\\SanitizeCommands' => $vendorDir . '/drush/drush/lib/Drush/Commands/core/SanitizeCommands.php',
     'Drush\\Commands\\core\\StatusCommands' => $vendorDir . '/drush/drush/lib/Drush/Commands/core/StatusCommands.php',
+    'Drush\\ConfigAdapter' => $vendorDir . '/drush/drush/lib/Drush/ConfigAdapter.php',
     'Drush\\Drupal\\DrupalKernel' => $vendorDir . '/drush/drush/lib/Drush/Drupal/DrupalKernel.php',
     'Drush\\Drupal\\DrushServiceModifier' => $vendorDir . '/drush/drush/lib/Drush/Drupal/DrushServiceModifier.php',
     'Drush\\Drupal\\ExtensionDiscovery' => $vendorDir . '/drush/drush/lib/Drush/Drupal/ExtensionDiscovery.php',
     'Drush\\Drupal\\FindCommandsCompilerPass' => $vendorDir . '/drush/drush/lib/Drush/Drupal/FindCommandsCompilerPass.php',
+    'Drush\\Drush' => $vendorDir . '/drush/drush/lib/Drush/Drush.php',
+    'Drush\\DrushConfig' => $vendorDir . '/drush/drush/lib/Drush/DrushConfig.php',
+    'Drush\\Exceptions\\UserAbortException' => $vendorDir . '/drush/drush/lib/Drush/Exceptions/UserAbortException.php',
     'Drush\\Log\\DrushLog' => $vendorDir . '/drush/drush/lib/Drush/Log/DrushLog.php',
     'Drush\\Log\\LogLevel' => $vendorDir . '/drush/drush/lib/Drush/Log/LogLevel.php',
     'Drush\\Log\\Logger' => $vendorDir . '/drush/drush/lib/Drush/Log/Logger.php',
@@ -2565,6 +2591,10 @@
     'Drush\\Role\\Role8' => $vendorDir . '/drush/drush/lib/Drush/Role/Role8.php',
     'Drush\\Role\\RoleBase' => $vendorDir . '/drush/drush/lib/Drush/Role/RoleBase.php',
     'Drush\\Role\\RoleException' => $vendorDir . '/drush/drush/lib/Drush/Role/RoleException.php',
+    'Drush\\SiteAlias\\AliasManagerAdapter' => $vendorDir . '/drush/drush/lib/Drush/SiteAlias/AliasManagerAdapter.php',
+    'Drush\\SiteAlias\\AliasManagerAdapterInjector' => $vendorDir . '/drush/drush/lib/Drush/SiteAlias/AliasManagerAdapterInjector.php',
+    'Drush\\SiteAlias\\ProcessManager' => $vendorDir . '/drush/drush/lib/Drush/SiteAlias/ProcessManager.php',
+    'Drush\\SiteAlias\\ProcessManagerInjector' => $vendorDir . '/drush/drush/lib/Drush/SiteAlias/ProcessManagerInjector.php',
     'Drush\\Sql\\Sql6' => $vendorDir . '/drush/drush/lib/Drush/Sql/Sql6.php',
     'Drush\\Sql\\Sql7' => $vendorDir . '/drush/drush/lib/Drush/Sql/Sql7.php',
     'Drush\\Sql\\Sql8' => $vendorDir . '/drush/drush/lib/Drush/Sql/Sql8.php',
@@ -2572,10 +2602,14 @@
     'Drush\\Sql\\SqlException' => $vendorDir . '/drush/drush/lib/Drush/Sql/SqlException.php',
     'Drush\\Sql\\SqlVersion' => $vendorDir . '/drush/drush/lib/Drush/Sql/SqlVersion.php',
     'Drush\\Sql\\Sqlmysql' => $vendorDir . '/drush/drush/lib/Drush/Sql/Sqlmysql.php',
+    'Drush\\Sql\\Sqlmysqli' => $vendorDir . '/drush/drush/lib/Drush/Sql/Sqlmysqli.php',
     'Drush\\Sql\\Sqloracle' => $vendorDir . '/drush/drush/lib/Drush/Sql/Sqloracle.php',
     'Drush\\Sql\\Sqlpgsql' => $vendorDir . '/drush/drush/lib/Drush/Sql/Sqlpgsql.php',
     'Drush\\Sql\\Sqlsqlite' => $vendorDir . '/drush/drush/lib/Drush/Sql/Sqlsqlite.php',
     'Drush\\Sql\\Sqlsqlsrv' => $vendorDir . '/drush/drush/lib/Drush/Sql/Sqlsqlsrv.php',
+    'Drush\\TestTraits\\CliTestTrait' => $vendorDir . '/drush/drush/src/TestTraits/CliTestTrait.php',
+    'Drush\\TestTraits\\DrushTestTrait' => $vendorDir . '/drush/drush/src/TestTraits/DrushTestTrait.php',
+    'Drush\\TestTraits\\OutputUtilsTrait' => $vendorDir . '/drush/drush/src/TestTraits/OutputUtilsTrait.php',
     'Drush\\UpdateService\\Project' => $vendorDir . '/drush/drush/lib/Drush/UpdateService/Project.php',
     'Drush\\UpdateService\\ReleaseInfo' => $vendorDir . '/drush/drush/lib/Drush/UpdateService/ReleaseInfo.php',
     'Drush\\UpdateService\\StatusInfoDrupal6' => $vendorDir . '/drush/drush/lib/Drush/UpdateService/StatusInfoDrupal6.php',
@@ -2768,9 +2802,9 @@
     'JaimePerez\\TwigConfigurableI18n\\Twig\\Extensions\\Extension\\I18n' => $vendorDir . '/jaimeperez/twig-configurable-i18n/src/Twig/Extensions/Extension/I18n.php',
     'JaimePerez\\TwigConfigurableI18n\\Twig\\Extensions\\Node\\Trans' => $vendorDir . '/jaimeperez/twig-configurable-i18n/src/Twig/Extensions/Node/Trans.php',
     'JaimePerez\\TwigConfigurableI18n\\Twig\\Extensions\\TokenParser\\Trans' => $vendorDir . '/jaimeperez/twig-configurable-i18n/src/Twig/Extensions/TokenParser/Trans.php',
-    'JakubOnderka\\PhpConsoleColor\\ConsoleColor' => $vendorDir . '/jakub-onderka/php-console-color/src/JakubOnderka/PhpConsoleColor/ConsoleColor.php',
-    'JakubOnderka\\PhpConsoleColor\\InvalidStyleException' => $vendorDir . '/jakub-onderka/php-console-color/src/JakubOnderka/PhpConsoleColor/InvalidStyleException.php',
-    'JakubOnderka\\PhpConsoleHighlighter\\Highlighter' => $vendorDir . '/jakub-onderka/php-console-highlighter/src/JakubOnderka/PhpConsoleHighlighter/Highlighter.php',
+    'JakubOnderka\\PhpConsoleColor\\ConsoleColor' => $vendorDir . '/jakub-onderka/php-console-color/src/ConsoleColor.php',
+    'JakubOnderka\\PhpConsoleColor\\InvalidStyleException' => $vendorDir . '/jakub-onderka/php-console-color/src/InvalidStyleException.php',
+    'JakubOnderka\\PhpConsoleHighlighter\\Highlighter' => $vendorDir . '/jakub-onderka/php-console-highlighter/src/Highlighter.php',
     'Masterminds\\HTML5' => $vendorDir . '/masterminds/html5/src/HTML5.php',
     'Masterminds\\HTML5\\Elements' => $vendorDir . '/masterminds/html5/src/HTML5/Elements.php',
     'Masterminds\\HTML5\\Entities' => $vendorDir . '/masterminds/html5/src/HTML5/Entities.php',
@@ -2810,6 +2844,8 @@
     'PhpParser\\Builder\\Namespace_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Namespace_.php',
     'PhpParser\\Builder\\Param' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Param.php',
     'PhpParser\\Builder\\Property' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Property.php',
+    'PhpParser\\Builder\\TraitUse' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php',
+    'PhpParser\\Builder\\TraitUseAdaptation' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php',
     'PhpParser\\Builder\\Trait_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Trait_.php',
     'PhpParser\\Builder\\Use_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Use_.php',
     'PhpParser\\Comment' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Comment.php',
@@ -2827,6 +2863,9 @@
     'PhpParser\\JsonDecoder' => $vendorDir . '/nikic/php-parser/lib/PhpParser/JsonDecoder.php',
     'PhpParser\\Lexer' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer.php',
     'PhpParser\\Lexer\\Emulative' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php',
+    'PhpParser\\Lexer\\TokenEmulator\\CoaleseEqualTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/CoaleseEqualTokenEmulator.php',
+    'PhpParser\\Lexer\\TokenEmulator\\FnTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FnTokenEmulator.php',
+    'PhpParser\\Lexer\\TokenEmulator\\TokenEmulatorInterface' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulatorInterface.php',
     'PhpParser\\NameContext' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NameContext.php',
     'PhpParser\\Node' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node.php',
     'PhpParser\\NodeAbstract' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeAbstract.php',
@@ -2846,11 +2885,13 @@
     'PhpParser\\Node\\Expr\\ArrayDimFetch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php',
     'PhpParser\\Node\\Expr\\ArrayItem' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php',
     'PhpParser\\Node\\Expr\\Array_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php',
+    'PhpParser\\Node\\Expr\\ArrowFunction' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php',
     'PhpParser\\Node\\Expr\\Assign' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php',
     'PhpParser\\Node\\Expr\\AssignOp' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php',
     'PhpParser\\Node\\Expr\\AssignOp\\BitwiseAnd' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php',
     'PhpParser\\Node\\Expr\\AssignOp\\BitwiseOr' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseOr.php',
     'PhpParser\\Node\\Expr\\AssignOp\\BitwiseXor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseXor.php',
+    'PhpParser\\Node\\Expr\\AssignOp\\Coalesce' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php',
     'PhpParser\\Node\\Expr\\AssignOp\\Concat' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Concat.php',
     'PhpParser\\Node\\Expr\\AssignOp\\Div' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Div.php',
     'PhpParser\\Node\\Expr\\AssignOp\\Minus' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Minus.php',
diff --git a/vendor/composer/autoload_namespaces.php b/vendor/composer/autoload_namespaces.php
index ce921821ca..3c85b1d0b1 100644
--- a/vendor/composer/autoload_namespaces.php
+++ b/vendor/composer/autoload_namespaces.php
@@ -10,8 +10,6 @@
     'Twig_' => array($vendorDir . '/twig/twig/lib'),
     'Stack' => array($vendorDir . '/stack/builder/src'),
     'SAML2\\' => array($vendorDir . '/simplesamlphp/saml2/src'),
-    'JakubOnderka\\PhpConsoleHighlighter' => array($vendorDir . '/jakub-onderka/php-console-highlighter/src'),
-    'JakubOnderka\\PhpConsoleColor' => array($vendorDir . '/jakub-onderka/php-console-color/src'),
     'Egulias\\' => array($vendorDir . '/egulias/email-validator/src'),
     'EasyRdf_' => array($vendorDir . '/easyrdf/easyrdf/lib'),
     'Drush' => array($vendorDir . '/drush/drush/lib'),
diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php
index 0b8bd6f2a3..8495a07e53 100644
--- a/vendor/composer/autoload_psr4.php
+++ b/vendor/composer/autoload_psr4.php
@@ -56,12 +56,15 @@
     'PantheonSystems\\CDNBehatHelpers\\' => array($baseDir . '/web/modules/pantheon_advanced_page_cache/tests/behat/helper_classes'),
     'OomphInc\\ComposerInstallersExtender\\' => array($vendorDir . '/oomphinc/composer-installers-extender/src'),
     'Masterminds\\' => array($vendorDir . '/masterminds/html5/src'),
+    'JakubOnderka\\PhpConsoleHighlighter\\' => array($vendorDir . '/jakub-onderka/php-console-highlighter/src'),
+    'JakubOnderka\\PhpConsoleColor\\' => array($vendorDir . '/jakub-onderka/php-console-color/src'),
     'JaimePerez\\TwigConfigurableI18n\\' => array($vendorDir . '/jaimeperez/twig-configurable-i18n/src'),
     'GuzzleHttp\\Psr7\\' => array($vendorDir . '/guzzlehttp/psr7/src'),
     'GuzzleHttp\\Promise\\' => array($vendorDir . '/guzzlehttp/promises/src'),
     'GuzzleHttp\\' => array($vendorDir . '/guzzlehttp/guzzle/src'),
     'Gettext\\Languages\\' => array($vendorDir . '/gettext/languages/src'),
     'Gettext\\' => array($vendorDir . '/gettext/gettext/src'),
+    'Drush\\' => array($vendorDir . '/drush/drush/src'),
     'Drupal\\redis\\' => array($baseDir . '/web/modules/redis/src'),
     'Drupal\\Driver\\' => array($baseDir . '/web/drivers/lib/Drupal/Driver'),
     'Drupal\\Core\\' => array($baseDir . '/web/core/lib/Drupal/Core'),
diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php
index 2dea499e27..d7032e74af 100644
--- a/vendor/composer/autoload_static.php
+++ b/vendor/composer/autoload_static.php
@@ -120,6 +120,8 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         ),
         'J' => 
         array (
+            'JakubOnderka\\PhpConsoleHighlighter\\' => 35,
+            'JakubOnderka\\PhpConsoleColor\\' => 29,
             'JaimePerez\\TwigConfigurableI18n\\' => 32,
         ),
         'G' => 
@@ -132,6 +134,7 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         ),
         'D' => 
         array (
+            'Drush\\' => 6,
             'Drupal\\redis\\' => 13,
             'Drupal\\Driver\\' => 14,
             'Drupal\\Core\\' => 12,
@@ -366,6 +369,14 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         array (
             0 => __DIR__ . '/..' . '/masterminds/html5/src',
         ),
+        'JakubOnderka\\PhpConsoleHighlighter\\' => 
+        array (
+            0 => __DIR__ . '/..' . '/jakub-onderka/php-console-highlighter/src',
+        ),
+        'JakubOnderka\\PhpConsoleColor\\' => 
+        array (
+            0 => __DIR__ . '/..' . '/jakub-onderka/php-console-color/src',
+        ),
         'JaimePerez\\TwigConfigurableI18n\\' => 
         array (
             0 => __DIR__ . '/..' . '/jaimeperez/twig-configurable-i18n/src',
@@ -390,6 +401,10 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         array (
             0 => __DIR__ . '/..' . '/gettext/gettext/src',
         ),
+        'Drush\\' => 
+        array (
+            0 => __DIR__ . '/..' . '/drush/drush/src',
+        ),
         'Drupal\\redis\\' => 
         array (
             0 => __DIR__ . '/../..' . '/web/modules/redis/src',
@@ -499,17 +514,6 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
                 0 => __DIR__ . '/..' . '/simplesamlphp/saml2/src',
             ),
         ),
-        'J' => 
-        array (
-            'JakubOnderka\\PhpConsoleHighlighter' => 
-            array (
-                0 => __DIR__ . '/..' . '/jakub-onderka/php-console-highlighter/src',
-            ),
-            'JakubOnderka\\PhpConsoleColor' => 
-            array (
-                0 => __DIR__ . '/..' . '/jakub-onderka/php-console-color/src',
-            ),
-        ),
         'E' => 
         array (
             'Egulias\\' => 
@@ -823,12 +827,14 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         'Consolidation\\AnnotatedCommand\\CommandFileDiscovery' => __DIR__ . '/..' . '/consolidation/annotated-command/src/CommandFileDiscovery.php',
         'Consolidation\\AnnotatedCommand\\CommandInfoAltererInterface' => __DIR__ . '/..' . '/consolidation/annotated-command/src/CommandInfoAltererInterface.php',
         'Consolidation\\AnnotatedCommand\\CommandProcessor' => __DIR__ . '/..' . '/consolidation/annotated-command/src/CommandProcessor.php',
+        'Consolidation\\AnnotatedCommand\\CommandResult' => __DIR__ . '/..' . '/consolidation/annotated-command/src/CommandResult.php',
         'Consolidation\\AnnotatedCommand\\Events\\CustomEventAwareInterface' => __DIR__ . '/..' . '/consolidation/annotated-command/src/Events/CustomEventAwareInterface.php',
         'Consolidation\\AnnotatedCommand\\Events\\CustomEventAwareTrait' => __DIR__ . '/..' . '/consolidation/annotated-command/src/Events/CustomEventAwareTrait.php',
         'Consolidation\\AnnotatedCommand\\ExitCodeInterface' => __DIR__ . '/..' . '/consolidation/annotated-command/src/ExitCodeInterface.php',
         'Consolidation\\AnnotatedCommand\\Help\\HelpCommand' => __DIR__ . '/..' . '/consolidation/annotated-command/src/Help/HelpCommand.php',
         'Consolidation\\AnnotatedCommand\\Help\\HelpDocument' => __DIR__ . '/..' . '/consolidation/annotated-command/src/Help/HelpDocument.php',
         'Consolidation\\AnnotatedCommand\\Help\\HelpDocumentAlter' => __DIR__ . '/..' . '/consolidation/annotated-command/src/Help/HelpDocumentAlter.php',
+        'Consolidation\\AnnotatedCommand\\Help\\HelpDocumentBuilder' => __DIR__ . '/..' . '/consolidation/annotated-command/src/Help/HelpDocumentBuilder.php',
         'Consolidation\\AnnotatedCommand\\Hooks\\AlterResultInterface' => __DIR__ . '/..' . '/consolidation/annotated-command/src/Hooks/AlterResultInterface.php',
         'Consolidation\\AnnotatedCommand\\Hooks\\Dispatchers\\CommandEventHookDispatcher' => __DIR__ . '/..' . '/consolidation/annotated-command/src/Hooks/Dispatchers/CommandEventHookDispatcher.php',
         'Consolidation\\AnnotatedCommand\\Hooks\\Dispatchers\\ExtracterHookDispatcher' => __DIR__ . '/..' . '/consolidation/annotated-command/src/Hooks/Dispatchers/ExtracterHookDispatcher.php',
@@ -848,11 +854,16 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         'Consolidation\\AnnotatedCommand\\Hooks\\ProcessResultInterface' => __DIR__ . '/..' . '/consolidation/annotated-command/src/Hooks/ProcessResultInterface.php',
         'Consolidation\\AnnotatedCommand\\Hooks\\StatusDeterminerInterface' => __DIR__ . '/..' . '/consolidation/annotated-command/src/Hooks/StatusDeterminerInterface.php',
         'Consolidation\\AnnotatedCommand\\Hooks\\ValidatorInterface' => __DIR__ . '/..' . '/consolidation/annotated-command/src/Hooks/ValidatorInterface.php',
+        'Consolidation\\AnnotatedCommand\\Input\\StdinAwareInterface' => __DIR__ . '/..' . '/consolidation/annotated-command/src/Input/StdinAwareInterface.php',
+        'Consolidation\\AnnotatedCommand\\Input\\StdinAwareTrait' => __DIR__ . '/..' . '/consolidation/annotated-command/src/Input/StdinAwareTrait.php',
+        'Consolidation\\AnnotatedCommand\\Input\\StdinHandler' => __DIR__ . '/..' . '/consolidation/annotated-command/src/Input/StdinHandler.php',
         'Consolidation\\AnnotatedCommand\\Options\\AlterOptionsCommandEvent' => __DIR__ . '/..' . '/consolidation/annotated-command/src/Options/AlterOptionsCommandEvent.php',
         'Consolidation\\AnnotatedCommand\\Options\\AutomaticOptionsProviderInterface' => __DIR__ . '/..' . '/consolidation/annotated-command/src/Options/AutomaticOptionsProviderInterface.php',
         'Consolidation\\AnnotatedCommand\\Options\\PrepareFormatter' => __DIR__ . '/..' . '/consolidation/annotated-command/src/Options/PrepareFormatter.php',
         'Consolidation\\AnnotatedCommand\\Options\\PrepareTerminalWidthOption' => __DIR__ . '/..' . '/consolidation/annotated-command/src/Options/PrepareTerminalWidthOption.php',
         'Consolidation\\AnnotatedCommand\\OutputDataInterface' => __DIR__ . '/..' . '/consolidation/annotated-command/src/OutputDataInterface.php',
+        'Consolidation\\AnnotatedCommand\\ParameterInjection' => __DIR__ . '/..' . '/consolidation/annotated-command/src/ParameterInjection.php',
+        'Consolidation\\AnnotatedCommand\\ParameterInjector' => __DIR__ . '/..' . '/consolidation/annotated-command/src/ParameterInjector.php',
         'Consolidation\\AnnotatedCommand\\Parser\\CommandInfo' => __DIR__ . '/..' . '/consolidation/annotated-command/src/Parser/CommandInfo.php',
         'Consolidation\\AnnotatedCommand\\Parser\\CommandInfoDeserializer' => __DIR__ . '/..' . '/consolidation/annotated-command/src/Parser/CommandInfoDeserializer.php',
         'Consolidation\\AnnotatedCommand\\Parser\\CommandInfoSerializer' => __DIR__ . '/..' . '/consolidation/annotated-command/src/Parser/CommandInfoSerializer.php',
@@ -863,6 +874,7 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         'Consolidation\\AnnotatedCommand\\Parser\\Internal\\DocblockTag' => __DIR__ . '/..' . '/consolidation/annotated-command/src/Parser/Internal/DocblockTag.php',
         'Consolidation\\AnnotatedCommand\\Parser\\Internal\\FullyQualifiedClassCache' => __DIR__ . '/..' . '/consolidation/annotated-command/src/Parser/Internal/FullyQualifiedClassCache.php',
         'Consolidation\\AnnotatedCommand\\Parser\\Internal\\TagFactory' => __DIR__ . '/..' . '/consolidation/annotated-command/src/Parser/Internal/TagFactory.php',
+        'Consolidation\\AnnotatedCommand\\ResultWriter' => __DIR__ . '/..' . '/consolidation/annotated-command/src/ResultWriter.php',
         'Consolidation\\OutputFormatters\\Exception\\AbstractDataFormatException' => __DIR__ . '/..' . '/consolidation/output-formatters/src/Exception/AbstractDataFormatException.php',
         'Consolidation\\OutputFormatters\\Exception\\IncompatibleDataException' => __DIR__ . '/..' . '/consolidation/output-formatters/src/Exception/IncompatibleDataException.php',
         'Consolidation\\OutputFormatters\\Exception\\InvalidFormatException' => __DIR__ . '/..' . '/consolidation/output-formatters/src/Exception/InvalidFormatException.php',
@@ -878,6 +890,7 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         'Consolidation\\OutputFormatters\\Formatters\\ListFormatter' => __DIR__ . '/..' . '/consolidation/output-formatters/src/Formatters/ListFormatter.php',
         'Consolidation\\OutputFormatters\\Formatters\\MetadataFormatterInterface' => __DIR__ . '/..' . '/consolidation/output-formatters/src/Formatters/MetadataFormatterInterface.php',
         'Consolidation\\OutputFormatters\\Formatters\\MetadataFormatterTrait' => __DIR__ . '/..' . '/consolidation/output-formatters/src/Formatters/MetadataFormatterTrait.php',
+        'Consolidation\\OutputFormatters\\Formatters\\NoOutputFormatter' => __DIR__ . '/..' . '/consolidation/output-formatters/src/Formatters/NoOutputFormatter.php',
         'Consolidation\\OutputFormatters\\Formatters\\PrintRFormatter' => __DIR__ . '/..' . '/consolidation/output-formatters/src/Formatters/PrintRFormatter.php',
         'Consolidation\\OutputFormatters\\Formatters\\RenderDataInterface' => __DIR__ . '/..' . '/consolidation/output-formatters/src/Formatters/RenderDataInterface.php',
         'Consolidation\\OutputFormatters\\Formatters\\RenderTableDataTrait' => __DIR__ . '/..' . '/consolidation/output-formatters/src/Formatters/RenderTableDataTrait.php',
@@ -892,9 +905,12 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         'Consolidation\\OutputFormatters\\Formatters\\YamlFormatter' => __DIR__ . '/..' . '/consolidation/output-formatters/src/Formatters/YamlFormatter.php',
         'Consolidation\\OutputFormatters\\Options\\FormatterOptions' => __DIR__ . '/..' . '/consolidation/output-formatters/src/Options/FormatterOptions.php',
         'Consolidation\\OutputFormatters\\Options\\OverrideOptionsInterface' => __DIR__ . '/..' . '/consolidation/output-formatters/src/Options/OverrideOptionsInterface.php',
+        'Consolidation\\OutputFormatters\\StructuredData\\AbstractListData' => __DIR__ . '/..' . '/consolidation/output-formatters/src/StructuredData/AbstractListData.php',
         'Consolidation\\OutputFormatters\\StructuredData\\AbstractStructuredList' => __DIR__ . '/..' . '/consolidation/output-formatters/src/StructuredData/AbstractStructuredList.php',
         'Consolidation\\OutputFormatters\\StructuredData\\AssociativeList' => __DIR__ . '/..' . '/consolidation/output-formatters/src/StructuredData/AssociativeList.php',
         'Consolidation\\OutputFormatters\\StructuredData\\CallableRenderer' => __DIR__ . '/..' . '/consolidation/output-formatters/src/StructuredData/CallableRenderer.php',
+        'Consolidation\\OutputFormatters\\StructuredData\\ConversionInterface' => __DIR__ . '/..' . '/consolidation/output-formatters/src/StructuredData/ConversionInterface.php',
+        'Consolidation\\OutputFormatters\\StructuredData\\FieldProcessor' => __DIR__ . '/..' . '/consolidation/output-formatters/src/StructuredData/FieldProcessor.php',
         'Consolidation\\OutputFormatters\\StructuredData\\HelpDocument' => __DIR__ . '/..' . '/consolidation/output-formatters/src/StructuredData/HelpDocument.php',
         'Consolidation\\OutputFormatters\\StructuredData\\ListDataFromKeys' => __DIR__ . '/..' . '/consolidation/output-formatters/src/StructuredData/ListDataFromKeys.php',
         'Consolidation\\OutputFormatters\\StructuredData\\ListDataInterface' => __DIR__ . '/..' . '/consolidation/output-formatters/src/StructuredData/ListDataInterface.php',
@@ -911,6 +927,9 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         'Consolidation\\OutputFormatters\\StructuredData\\RowsOfFields' => __DIR__ . '/..' . '/consolidation/output-formatters/src/StructuredData/RowsOfFields.php',
         'Consolidation\\OutputFormatters\\StructuredData\\RowsOfFieldsWithMetadata' => __DIR__ . '/..' . '/consolidation/output-formatters/src/StructuredData/RowsOfFieldsWithMetadata.php',
         'Consolidation\\OutputFormatters\\StructuredData\\TableDataInterface' => __DIR__ . '/..' . '/consolidation/output-formatters/src/StructuredData/TableDataInterface.php',
+        'Consolidation\\OutputFormatters\\StructuredData\\UnstructuredData' => __DIR__ . '/..' . '/consolidation/output-formatters/src/StructuredData/UnstructuredData.php',
+        'Consolidation\\OutputFormatters\\StructuredData\\UnstructuredInterface' => __DIR__ . '/..' . '/consolidation/output-formatters/src/StructuredData/UnstructuredInterface.php',
+        'Consolidation\\OutputFormatters\\StructuredData\\UnstructuredListData' => __DIR__ . '/..' . '/consolidation/output-formatters/src/StructuredData/UnstructuredListData.php',
         'Consolidation\\OutputFormatters\\StructuredData\\Xml\\DomDataInterface' => __DIR__ . '/..' . '/consolidation/output-formatters/src/StructuredData/Xml/DomDataInterface.php',
         'Consolidation\\OutputFormatters\\StructuredData\\Xml\\XmlSchema' => __DIR__ . '/..' . '/consolidation/output-formatters/src/StructuredData/Xml/XmlSchema.php',
         'Consolidation\\OutputFormatters\\StructuredData\\Xml\\XmlSchemaInterface' => __DIR__ . '/..' . '/consolidation/output-formatters/src/StructuredData/Xml/XmlSchemaInterface.php',
@@ -920,7 +939,11 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         'Consolidation\\OutputFormatters\\Transformations\\PropertyParser' => __DIR__ . '/..' . '/consolidation/output-formatters/src/Transformations/PropertyParser.php',
         'Consolidation\\OutputFormatters\\Transformations\\ReorderFields' => __DIR__ . '/..' . '/consolidation/output-formatters/src/Transformations/ReorderFields.php',
         'Consolidation\\OutputFormatters\\Transformations\\SimplifyToArrayInterface' => __DIR__ . '/..' . '/consolidation/output-formatters/src/Transformations/SimplifyToArrayInterface.php',
+        'Consolidation\\OutputFormatters\\Transformations\\StringTransformationInterface' => __DIR__ . '/..' . '/consolidation/output-formatters/src/Transformations/StringTransformationInterface.php',
         'Consolidation\\OutputFormatters\\Transformations\\TableTransformation' => __DIR__ . '/..' . '/consolidation/output-formatters/src/Transformations/TableTransformation.php',
+        'Consolidation\\OutputFormatters\\Transformations\\UnstructuredDataFieldAccessor' => __DIR__ . '/..' . '/consolidation/output-formatters/src/Transformations/UnstructuredDataFieldAccessor.php',
+        'Consolidation\\OutputFormatters\\Transformations\\UnstructuredDataListTransformation' => __DIR__ . '/..' . '/consolidation/output-formatters/src/Transformations/UnstructuredDataListTransformation.php',
+        'Consolidation\\OutputFormatters\\Transformations\\UnstructuredDataTransformation' => __DIR__ . '/..' . '/consolidation/output-formatters/src/Transformations/UnstructuredDataTransformation.php',
         'Consolidation\\OutputFormatters\\Transformations\\WordWrapper' => __DIR__ . '/..' . '/consolidation/output-formatters/src/Transformations/WordWrapper.php',
         'Consolidation\\OutputFormatters\\Transformations\\Wrap\\CalculateWidths' => __DIR__ . '/..' . '/consolidation/output-formatters/src/Transformations/Wrap/CalculateWidths.php',
         'Consolidation\\OutputFormatters\\Transformations\\Wrap\\ColumnWidths' => __DIR__ . '/..' . '/consolidation/output-formatters/src/Transformations/Wrap/ColumnWidths.php',
@@ -2505,6 +2528,8 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         'Drupal\\Core\\Language\\LanguageManager' => __DIR__ . '/../..' . '/web/core/lib/Drupal/Core/Language/LanguageManager.php',
         'Drupal\\Core\\Language\\LanguageManagerInterface' => __DIR__ . '/../..' . '/web/core/lib/Drupal/Core/Language/LanguageManagerInterface.php',
         'Drupal\\Core\\Layout\\Annotation\\Layout' => __DIR__ . '/../..' . '/web/core/lib/Drupal/Core/Layout/Annotation/Layout.php',
+        'Drupal\\Core\\Layout\\Icon\\IconBuilderInterface' => __DIR__ . '/../..' . '/web/core/lib/Drupal/Core/Layout/Icon/IconBuilderInterface.php',
+        'Drupal\\Core\\Layout\\Icon\\SvgIconBuilder' => __DIR__ . '/../..' . '/web/core/lib/Drupal/Core/Layout/Icon/SvgIconBuilder.php',
         'Drupal\\Core\\Layout\\LayoutDefault' => __DIR__ . '/../..' . '/web/core/lib/Drupal/Core/Layout/LayoutDefault.php',
         'Drupal\\Core\\Layout\\LayoutDefinition' => __DIR__ . '/../..' . '/web/core/lib/Drupal/Core/Layout/LayoutDefinition.php',
         'Drupal\\Core\\Layout\\LayoutInterface' => __DIR__ . '/../..' . '/web/core/lib/Drupal/Core/Layout/LayoutInterface.php',
@@ -3090,12 +3115,17 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         'Drush\\Command\\DrushInputAdapter' => __DIR__ . '/..' . '/drush/drush/lib/Drush/Command/DrushInputAdapter.php',
         'Drush\\Command\\DrushOutputAdapter' => __DIR__ . '/..' . '/drush/drush/lib/Drush/Command/DrushOutputAdapter.php',
         'Drush\\Command\\ServiceCommandlist' => __DIR__ . '/..' . '/drush/drush/lib/Drush/Command/ServiceCommandlist.php',
+        'Drush\\Commands\\DrushCommands' => __DIR__ . '/..' . '/drush/drush/lib/Drush/Commands/DrushCommands.php',
         'Drush\\Commands\\core\\SanitizeCommands' => __DIR__ . '/..' . '/drush/drush/lib/Drush/Commands/core/SanitizeCommands.php',
         'Drush\\Commands\\core\\StatusCommands' => __DIR__ . '/..' . '/drush/drush/lib/Drush/Commands/core/StatusCommands.php',
+        'Drush\\ConfigAdapter' => __DIR__ . '/..' . '/drush/drush/lib/Drush/ConfigAdapter.php',
         'Drush\\Drupal\\DrupalKernel' => __DIR__ . '/..' . '/drush/drush/lib/Drush/Drupal/DrupalKernel.php',
         'Drush\\Drupal\\DrushServiceModifier' => __DIR__ . '/..' . '/drush/drush/lib/Drush/Drupal/DrushServiceModifier.php',
         'Drush\\Drupal\\ExtensionDiscovery' => __DIR__ . '/..' . '/drush/drush/lib/Drush/Drupal/ExtensionDiscovery.php',
         'Drush\\Drupal\\FindCommandsCompilerPass' => __DIR__ . '/..' . '/drush/drush/lib/Drush/Drupal/FindCommandsCompilerPass.php',
+        'Drush\\Drush' => __DIR__ . '/..' . '/drush/drush/lib/Drush/Drush.php',
+        'Drush\\DrushConfig' => __DIR__ . '/..' . '/drush/drush/lib/Drush/DrushConfig.php',
+        'Drush\\Exceptions\\UserAbortException' => __DIR__ . '/..' . '/drush/drush/lib/Drush/Exceptions/UserAbortException.php',
         'Drush\\Log\\DrushLog' => __DIR__ . '/..' . '/drush/drush/lib/Drush/Log/DrushLog.php',
         'Drush\\Log\\LogLevel' => __DIR__ . '/..' . '/drush/drush/lib/Drush/Log/LogLevel.php',
         'Drush\\Log\\Logger' => __DIR__ . '/..' . '/drush/drush/lib/Drush/Log/Logger.php',
@@ -3117,6 +3147,10 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         'Drush\\Role\\Role8' => __DIR__ . '/..' . '/drush/drush/lib/Drush/Role/Role8.php',
         'Drush\\Role\\RoleBase' => __DIR__ . '/..' . '/drush/drush/lib/Drush/Role/RoleBase.php',
         'Drush\\Role\\RoleException' => __DIR__ . '/..' . '/drush/drush/lib/Drush/Role/RoleException.php',
+        'Drush\\SiteAlias\\AliasManagerAdapter' => __DIR__ . '/..' . '/drush/drush/lib/Drush/SiteAlias/AliasManagerAdapter.php',
+        'Drush\\SiteAlias\\AliasManagerAdapterInjector' => __DIR__ . '/..' . '/drush/drush/lib/Drush/SiteAlias/AliasManagerAdapterInjector.php',
+        'Drush\\SiteAlias\\ProcessManager' => __DIR__ . '/..' . '/drush/drush/lib/Drush/SiteAlias/ProcessManager.php',
+        'Drush\\SiteAlias\\ProcessManagerInjector' => __DIR__ . '/..' . '/drush/drush/lib/Drush/SiteAlias/ProcessManagerInjector.php',
         'Drush\\Sql\\Sql6' => __DIR__ . '/..' . '/drush/drush/lib/Drush/Sql/Sql6.php',
         'Drush\\Sql\\Sql7' => __DIR__ . '/..' . '/drush/drush/lib/Drush/Sql/Sql7.php',
         'Drush\\Sql\\Sql8' => __DIR__ . '/..' . '/drush/drush/lib/Drush/Sql/Sql8.php',
@@ -3124,10 +3158,14 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         'Drush\\Sql\\SqlException' => __DIR__ . '/..' . '/drush/drush/lib/Drush/Sql/SqlException.php',
         'Drush\\Sql\\SqlVersion' => __DIR__ . '/..' . '/drush/drush/lib/Drush/Sql/SqlVersion.php',
         'Drush\\Sql\\Sqlmysql' => __DIR__ . '/..' . '/drush/drush/lib/Drush/Sql/Sqlmysql.php',
+        'Drush\\Sql\\Sqlmysqli' => __DIR__ . '/..' . '/drush/drush/lib/Drush/Sql/Sqlmysqli.php',
         'Drush\\Sql\\Sqloracle' => __DIR__ . '/..' . '/drush/drush/lib/Drush/Sql/Sqloracle.php',
         'Drush\\Sql\\Sqlpgsql' => __DIR__ . '/..' . '/drush/drush/lib/Drush/Sql/Sqlpgsql.php',
         'Drush\\Sql\\Sqlsqlite' => __DIR__ . '/..' . '/drush/drush/lib/Drush/Sql/Sqlsqlite.php',
         'Drush\\Sql\\Sqlsqlsrv' => __DIR__ . '/..' . '/drush/drush/lib/Drush/Sql/Sqlsqlsrv.php',
+        'Drush\\TestTraits\\CliTestTrait' => __DIR__ . '/..' . '/drush/drush/src/TestTraits/CliTestTrait.php',
+        'Drush\\TestTraits\\DrushTestTrait' => __DIR__ . '/..' . '/drush/drush/src/TestTraits/DrushTestTrait.php',
+        'Drush\\TestTraits\\OutputUtilsTrait' => __DIR__ . '/..' . '/drush/drush/src/TestTraits/OutputUtilsTrait.php',
         'Drush\\UpdateService\\Project' => __DIR__ . '/..' . '/drush/drush/lib/Drush/UpdateService/Project.php',
         'Drush\\UpdateService\\ReleaseInfo' => __DIR__ . '/..' . '/drush/drush/lib/Drush/UpdateService/ReleaseInfo.php',
         'Drush\\UpdateService\\StatusInfoDrupal6' => __DIR__ . '/..' . '/drush/drush/lib/Drush/UpdateService/StatusInfoDrupal6.php',
@@ -3320,9 +3358,9 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         'JaimePerez\\TwigConfigurableI18n\\Twig\\Extensions\\Extension\\I18n' => __DIR__ . '/..' . '/jaimeperez/twig-configurable-i18n/src/Twig/Extensions/Extension/I18n.php',
         'JaimePerez\\TwigConfigurableI18n\\Twig\\Extensions\\Node\\Trans' => __DIR__ . '/..' . '/jaimeperez/twig-configurable-i18n/src/Twig/Extensions/Node/Trans.php',
         'JaimePerez\\TwigConfigurableI18n\\Twig\\Extensions\\TokenParser\\Trans' => __DIR__ . '/..' . '/jaimeperez/twig-configurable-i18n/src/Twig/Extensions/TokenParser/Trans.php',
-        'JakubOnderka\\PhpConsoleColor\\ConsoleColor' => __DIR__ . '/..' . '/jakub-onderka/php-console-color/src/JakubOnderka/PhpConsoleColor/ConsoleColor.php',
-        'JakubOnderka\\PhpConsoleColor\\InvalidStyleException' => __DIR__ . '/..' . '/jakub-onderka/php-console-color/src/JakubOnderka/PhpConsoleColor/InvalidStyleException.php',
-        'JakubOnderka\\PhpConsoleHighlighter\\Highlighter' => __DIR__ . '/..' . '/jakub-onderka/php-console-highlighter/src/JakubOnderka/PhpConsoleHighlighter/Highlighter.php',
+        'JakubOnderka\\PhpConsoleColor\\ConsoleColor' => __DIR__ . '/..' . '/jakub-onderka/php-console-color/src/ConsoleColor.php',
+        'JakubOnderka\\PhpConsoleColor\\InvalidStyleException' => __DIR__ . '/..' . '/jakub-onderka/php-console-color/src/InvalidStyleException.php',
+        'JakubOnderka\\PhpConsoleHighlighter\\Highlighter' => __DIR__ . '/..' . '/jakub-onderka/php-console-highlighter/src/Highlighter.php',
         'Masterminds\\HTML5' => __DIR__ . '/..' . '/masterminds/html5/src/HTML5.php',
         'Masterminds\\HTML5\\Elements' => __DIR__ . '/..' . '/masterminds/html5/src/HTML5/Elements.php',
         'Masterminds\\HTML5\\Entities' => __DIR__ . '/..' . '/masterminds/html5/src/HTML5/Entities.php',
@@ -3362,6 +3400,8 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         'PhpParser\\Builder\\Namespace_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Namespace_.php',
         'PhpParser\\Builder\\Param' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Param.php',
         'PhpParser\\Builder\\Property' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Property.php',
+        'PhpParser\\Builder\\TraitUse' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php',
+        'PhpParser\\Builder\\TraitUseAdaptation' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php',
         'PhpParser\\Builder\\Trait_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Trait_.php',
         'PhpParser\\Builder\\Use_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Use_.php',
         'PhpParser\\Comment' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Comment.php',
@@ -3379,6 +3419,9 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         'PhpParser\\JsonDecoder' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/JsonDecoder.php',
         'PhpParser\\Lexer' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer.php',
         'PhpParser\\Lexer\\Emulative' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php',
+        'PhpParser\\Lexer\\TokenEmulator\\CoaleseEqualTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/CoaleseEqualTokenEmulator.php',
+        'PhpParser\\Lexer\\TokenEmulator\\FnTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FnTokenEmulator.php',
+        'PhpParser\\Lexer\\TokenEmulator\\TokenEmulatorInterface' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulatorInterface.php',
         'PhpParser\\NameContext' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NameContext.php',
         'PhpParser\\Node' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node.php',
         'PhpParser\\NodeAbstract' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeAbstract.php',
@@ -3398,11 +3441,13 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         'PhpParser\\Node\\Expr\\ArrayDimFetch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php',
         'PhpParser\\Node\\Expr\\ArrayItem' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php',
         'PhpParser\\Node\\Expr\\Array_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php',
+        'PhpParser\\Node\\Expr\\ArrowFunction' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php',
         'PhpParser\\Node\\Expr\\Assign' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php',
         'PhpParser\\Node\\Expr\\AssignOp' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php',
         'PhpParser\\Node\\Expr\\AssignOp\\BitwiseAnd' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php',
         'PhpParser\\Node\\Expr\\AssignOp\\BitwiseOr' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseOr.php',
         'PhpParser\\Node\\Expr\\AssignOp\\BitwiseXor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseXor.php',
+        'PhpParser\\Node\\Expr\\AssignOp\\Coalesce' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php',
         'PhpParser\\Node\\Expr\\AssignOp\\Concat' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Concat.php',
         'PhpParser\\Node\\Expr\\AssignOp\\Div' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Div.php',
         'PhpParser\\Node\\Expr\\AssignOp\\Minus' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Minus.php',
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index b5c5b7faf9..180ab31b54 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -175,7 +175,9 @@
         "version_normalized": "4.8.0.0",
         "dist": {
             "type": "zip",
-            "url": "https://download.ckeditor.com/indentblock/releases/indentblock_4.8.0.zip"
+            "url": "https://download.ckeditor.com/indentblock/releases/indentblock_4.8.0.zip",
+            "reference": null,
+            "shasum": null
         },
         "require": {
             "composer/installers": "~1.0"
@@ -481,36 +483,80 @@
     },
     {
         "name": "consolidation/annotated-command",
-        "version": "2.8.4",
-        "version_normalized": "2.8.4.0",
+        "version": "2.12.0",
+        "version_normalized": "2.12.0.0",
         "source": {
             "type": "git",
             "url": "https://github.com/consolidation/annotated-command.git",
-            "reference": "651541a0b68318a2a202bda558a676e5ad92223c"
+            "reference": "512a2e54c98f3af377589de76c43b24652bcb789"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/consolidation/annotated-command/zipball/651541a0b68318a2a202bda558a676e5ad92223c",
-            "reference": "651541a0b68318a2a202bda558a676e5ad92223c",
+            "url": "https://api.github.com/repos/consolidation/annotated-command/zipball/512a2e54c98f3af377589de76c43b24652bcb789",
+            "reference": "512a2e54c98f3af377589de76c43b24652bcb789",
             "shasum": ""
         },
         "require": {
-            "consolidation/output-formatters": "^3.1.12",
-            "php": ">=5.4.0",
+            "consolidation/output-formatters": "^3.4",
+            "php": ">=5.4.5",
             "psr/log": "^1",
             "symfony/console": "^2.8|^3|^4",
             "symfony/event-dispatcher": "^2.5|^3|^4",
             "symfony/finder": "^2.5|^3|^4"
         },
         "require-dev": {
-            "g1a/composer-test-scenarios": "^2",
+            "g1a/composer-test-scenarios": "^3",
+            "php-coveralls/php-coveralls": "^1",
             "phpunit/phpunit": "^6",
-            "satooshi/php-coveralls": "^2",
             "squizlabs/php_codesniffer": "^2.7"
         },
-        "time": "2018-05-25T18:04:25+00:00",
+        "time": "2019-03-08T16:55:03+00:00",
         "type": "library",
         "extra": {
+            "scenarios": {
+                "symfony4": {
+                    "require": {
+                        "symfony/console": "^4.0"
+                    },
+                    "config": {
+                        "platform": {
+                            "php": "7.1.3"
+                        }
+                    }
+                },
+                "symfony2": {
+                    "require": {
+                        "symfony/console": "^2.8"
+                    },
+                    "require-dev": {
+                        "phpunit/phpunit": "^4.8.36"
+                    },
+                    "remove": [
+                        "php-coveralls/php-coveralls"
+                    ],
+                    "config": {
+                        "platform": {
+                            "php": "5.4.8"
+                        }
+                    },
+                    "scenario-options": {
+                        "create-lockfile": "false"
+                    }
+                },
+                "phpunit4": {
+                    "require-dev": {
+                        "phpunit/phpunit": "^4.8.36"
+                    },
+                    "remove": [
+                        "php-coveralls/php-coveralls"
+                    ],
+                    "config": {
+                        "platform": {
+                            "php": "5.4.8"
+                        }
+                    }
+                }
+            },
             "branch-alias": {
                 "dev-master": "2.x-dev"
             }
@@ -535,39 +581,85 @@
     },
     {
         "name": "consolidation/output-formatters",
-        "version": "3.2.1",
-        "version_normalized": "3.2.1.0",
+        "version": "3.5.0",
+        "version_normalized": "3.5.0.0",
         "source": {
             "type": "git",
             "url": "https://github.com/consolidation/output-formatters.git",
-            "reference": "d78ef59aea19d3e2e5a23f90a055155ee78a0ad5"
+            "reference": "99ec998ffb697e0eada5aacf81feebfb13023605"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/d78ef59aea19d3e2e5a23f90a055155ee78a0ad5",
-            "reference": "d78ef59aea19d3e2e5a23f90a055155ee78a0ad5",
+            "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/99ec998ffb697e0eada5aacf81feebfb13023605",
+            "reference": "99ec998ffb697e0eada5aacf81feebfb13023605",
             "shasum": ""
         },
         "require": {
+            "dflydev/dot-access-data": "^1.1.0",
             "php": ">=5.4.0",
             "symfony/console": "^2.8|^3|^4",
             "symfony/finder": "^2.5|^3|^4"
         },
         "require-dev": {
-            "g1a/composer-test-scenarios": "^2",
+            "g1a/composer-test-scenarios": "^3",
+            "php-coveralls/php-coveralls": "^1",
             "phpunit/phpunit": "^5.7.27",
-            "satooshi/php-coveralls": "^2",
             "squizlabs/php_codesniffer": "^2.7",
-            "symfony/console": "3.2.3",
             "symfony/var-dumper": "^2.8|^3|^4",
             "victorjonsson/markdowndocs": "^1.3"
         },
         "suggest": {
             "symfony/var-dumper": "For using the var_dump formatter"
         },
-        "time": "2018-05-25T18:02:34+00:00",
+        "time": "2019-05-30T23:16:01+00:00",
         "type": "library",
         "extra": {
+            "scenarios": {
+                "symfony4": {
+                    "require": {
+                        "symfony/console": "^4.0"
+                    },
+                    "require-dev": {
+                        "phpunit/phpunit": "^6"
+                    },
+                    "config": {
+                        "platform": {
+                            "php": "7.1.3"
+                        }
+                    }
+                },
+                "symfony3": {
+                    "require": {
+                        "symfony/console": "^3.4",
+                        "symfony/finder": "^3.4",
+                        "symfony/var-dumper": "^3.4"
+                    },
+                    "config": {
+                        "platform": {
+                            "php": "5.6.32"
+                        }
+                    }
+                },
+                "symfony2": {
+                    "require": {
+                        "symfony/console": "^2.8"
+                    },
+                    "require-dev": {
+                        "phpunit/phpunit": "^4.8.36"
+                    },
+                    "remove": [
+                        "php-coveralls/php-coveralls"
+                    ],
+                    "config": {
+                        "platform": {
+                            "php": "5.4.8"
+                        }
+                    },
+                    "scenario-options": {
+                        "create-lockfile": "false"
+                    }
+                }
+            },
             "branch-alias": {
                 "dev-master": "3.x-dev"
             }
@@ -654,7 +746,9 @@
         "version_normalized": "4.2.0.0",
         "dist": {
             "type": "zip",
-            "url": "https://github.com/desandro/masonry/archive/v4.2.0.zip"
+            "url": "https://github.com/desandro/masonry/archive/v4.2.0.zip",
+            "reference": null,
+            "shasum": null
         },
         "type": "drupal-library",
         "installation-source": "dist"
@@ -7792,21 +7886,21 @@
     },
     {
         "name": "drush/drush",
-        "version": "8.1.17",
-        "version_normalized": "8.1.17.0",
+        "version": "8.2.3",
+        "version_normalized": "8.2.3.0",
         "source": {
             "type": "git",
             "url": "https://github.com/drush-ops/drush.git",
-            "reference": "7ea681dc7e639f6ddab906e78611d3558f88d9b0"
+            "reference": "bf2b2471b9410e0ff4adc23aee020ee1aff28610"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/drush-ops/drush/zipball/7ea681dc7e639f6ddab906e78611d3558f88d9b0",
-            "reference": "7ea681dc7e639f6ddab906e78611d3558f88d9b0",
+            "url": "https://api.github.com/repos/drush-ops/drush/zipball/bf2b2471b9410e0ff4adc23aee020ee1aff28610",
+            "reference": "bf2b2471b9410e0ff4adc23aee020ee1aff28610",
             "shasum": ""
         },
         "require": {
-            "consolidation/annotated-command": "^2.8.1",
+            "consolidation/annotated-command": "^2.12.0",
             "consolidation/output-formatters": "~3",
             "pear/console_table": "~1.3.1",
             "php": ">=5.4.5",
@@ -7817,6 +7911,7 @@
             "symfony/finder": "~2.7|^3",
             "symfony/var-dumper": "~2.7|^3",
             "symfony/yaml": "~2.3|^3",
+            "webflo/drupal-finder": "^1.1.0",
             "webmozart/path-util": "~2"
         },
         "require-dev": {
@@ -7832,7 +7927,7 @@
             "drush/config-extra": "Provides configuration workflow commands, such as config-merge.",
             "ext-pcntl": "*"
         },
-        "time": "2018-05-23T16:58:54+00:00",
+        "time": "2019-04-03T04:20:26+00:00",
         "bin": [
             "drush",
             "drush.launcher",
@@ -7850,6 +7945,9 @@
             "psr-0": {
                 "Drush": "lib/",
                 "Consolidation": "lib/"
+            },
+            "psr-4": {
+                "Drush\\": "src/"
             }
         },
         "notification-url": "https://packagist.org/downloads/",
@@ -8483,35 +8581,35 @@
     },
     {
         "name": "jakub-onderka/php-console-color",
-        "version": "0.1",
-        "version_normalized": "0.1.0.0",
+        "version": "v0.2",
+        "version_normalized": "0.2.0.0",
         "source": {
             "type": "git",
             "url": "https://github.com/JakubOnderka/PHP-Console-Color.git",
-            "reference": "e0b393dacf7703fc36a4efc3df1435485197e6c1"
+            "reference": "d5deaecff52a0d61ccb613bb3804088da0307191"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Color/zipball/e0b393dacf7703fc36a4efc3df1435485197e6c1",
-            "reference": "e0b393dacf7703fc36a4efc3df1435485197e6c1",
+            "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Color/zipball/d5deaecff52a0d61ccb613bb3804088da0307191",
+            "reference": "d5deaecff52a0d61ccb613bb3804088da0307191",
             "shasum": ""
         },
         "require": {
-            "php": ">=5.3.2"
+            "php": ">=5.4.0"
         },
         "require-dev": {
             "jakub-onderka/php-code-style": "1.0",
-            "jakub-onderka/php-parallel-lint": "0.*",
+            "jakub-onderka/php-parallel-lint": "1.0",
             "jakub-onderka/php-var-dump-check": "0.*",
-            "phpunit/phpunit": "3.7.*",
+            "phpunit/phpunit": "~4.3",
             "squizlabs/php_codesniffer": "1.*"
         },
-        "time": "2014-04-08T15:00:19+00:00",
+        "time": "2018-09-29T17:23:10+00:00",
         "type": "library",
         "installation-source": "dist",
         "autoload": {
-            "psr-0": {
-                "JakubOnderka\\PhpConsoleColor": "src/"
+            "psr-4": {
+                "JakubOnderka\\PhpConsoleColor\\": "src/"
             }
         },
         "notification-url": "https://packagist.org/downloads/",
@@ -8521,43 +8619,43 @@
         "authors": [
             {
                 "name": "Jakub Onderka",
-                "email": "jakub.onderka@gmail.com",
-                "homepage": "http://www.acci.cz"
+                "email": "jakub.onderka@gmail.com"
             }
         ]
     },
     {
         "name": "jakub-onderka/php-console-highlighter",
-        "version": "v0.3.2",
-        "version_normalized": "0.3.2.0",
+        "version": "v0.4",
+        "version_normalized": "0.4.0.0",
         "source": {
             "type": "git",
             "url": "https://github.com/JakubOnderka/PHP-Console-Highlighter.git",
-            "reference": "7daa75df45242c8d5b75a22c00a201e7954e4fb5"
+            "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Highlighter/zipball/7daa75df45242c8d5b75a22c00a201e7954e4fb5",
-            "reference": "7daa75df45242c8d5b75a22c00a201e7954e4fb5",
+            "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Highlighter/zipball/9f7a229a69d52506914b4bc61bfdb199d90c5547",
+            "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547",
             "shasum": ""
         },
         "require": {
-            "jakub-onderka/php-console-color": "~0.1",
-            "php": ">=5.3.0"
+            "ext-tokenizer": "*",
+            "jakub-onderka/php-console-color": "~0.2",
+            "php": ">=5.4.0"
         },
         "require-dev": {
             "jakub-onderka/php-code-style": "~1.0",
-            "jakub-onderka/php-parallel-lint": "~0.5",
+            "jakub-onderka/php-parallel-lint": "~1.0",
             "jakub-onderka/php-var-dump-check": "~0.1",
             "phpunit/phpunit": "~4.0",
             "squizlabs/php_codesniffer": "~1.5"
         },
-        "time": "2015-04-20T18:58:01+00:00",
+        "time": "2018-09-29T18:48:56+00:00",
         "type": "library",
         "installation-source": "dist",
         "autoload": {
-            "psr-0": {
-                "JakubOnderka\\PhpConsoleHighlighter": "src/"
+            "psr-4": {
+                "JakubOnderka\\PhpConsoleHighlighter\\": "src/"
             }
         },
         "notification-url": "https://packagist.org/downloads/",
@@ -8570,7 +8668,8 @@
                 "email": "acci@acci.cz",
                 "homepage": "http://www.acci.cz/"
             }
-        ]
+        ],
+        "description": "Highlight PHP code in terminal"
     },
     {
         "name": "masterminds/html5",
@@ -8677,17 +8776,17 @@
     },
     {
         "name": "nikic/php-parser",
-        "version": "v4.0.3",
-        "version_normalized": "4.0.3.0",
+        "version": "v4.2.2",
+        "version_normalized": "4.2.2.0",
         "source": {
             "type": "git",
             "url": "https://github.com/nikic/PHP-Parser.git",
-            "reference": "bd088dc940a418f09cda079a9b5c7c478890fb8d"
+            "reference": "1bd73cc04c3843ad8d6b0bfc0956026a151fc420"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/bd088dc940a418f09cda079a9b5c7c478890fb8d",
-            "reference": "bd088dc940a418f09cda079a9b5c7c478890fb8d",
+            "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/1bd73cc04c3843ad8d6b0bfc0956026a151fc420",
+            "reference": "1bd73cc04c3843ad8d6b0bfc0956026a151fc420",
             "shasum": ""
         },
         "require": {
@@ -8697,14 +8796,14 @@
         "require-dev": {
             "phpunit/phpunit": "^6.5 || ^7.0"
         },
-        "time": "2018-07-15T17:25:16+00:00",
+        "time": "2019-05-25T20:07:01+00:00",
         "bin": [
             "bin/php-parse"
         ],
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "4.0-dev"
+                "dev-master": "4.2-dev"
             }
         },
         "installation-source": "dist",
@@ -9061,24 +9160,24 @@
     },
     {
         "name": "psy/psysh",
-        "version": "v0.9.7",
-        "version_normalized": "0.9.7.0",
+        "version": "v0.9.9",
+        "version_normalized": "0.9.9.0",
         "source": {
             "type": "git",
             "url": "https://github.com/bobthecow/psysh.git",
-            "reference": "4f5b6c090948773a8bfeea6a0f07ab7d0b24e932"
+            "reference": "9aaf29575bb8293206bb0420c1e1c87ff2ffa94e"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/bobthecow/psysh/zipball/4f5b6c090948773a8bfeea6a0f07ab7d0b24e932",
-            "reference": "4f5b6c090948773a8bfeea6a0f07ab7d0b24e932",
+            "url": "https://api.github.com/repos/bobthecow/psysh/zipball/9aaf29575bb8293206bb0420c1e1c87ff2ffa94e",
+            "reference": "9aaf29575bb8293206bb0420c1e1c87ff2ffa94e",
             "shasum": ""
         },
         "require": {
             "dnoegel/php-xdg-base-dir": "0.1",
             "ext-json": "*",
             "ext-tokenizer": "*",
-            "jakub-onderka/php-console-highlighter": "0.3.*",
+            "jakub-onderka/php-console-highlighter": "0.3.*|0.4.*",
             "nikic/php-parser": "~1.3|~2.0|~3.0|~4.0",
             "php": ">=5.4.0",
             "symfony/console": "~2.3.10|^2.4.2|~3.0|~4.0",
@@ -9096,7 +9195,7 @@
             "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history.",
             "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit."
         },
-        "time": "2018-08-11T15:54:43+00:00",
+        "time": "2018-10-13T15:16:03+00:00",
         "bin": [
             "bin/psysh"
         ],
@@ -9681,17 +9780,17 @@
     },
     {
         "name": "symfony/console",
-        "version": "v3.4.27",
-        "version_normalized": "3.4.27.0",
+        "version": "v3.4.28",
+        "version_normalized": "3.4.28.0",
         "source": {
             "type": "git",
             "url": "https://github.com/symfony/console.git",
-            "reference": "15a9104356436cb26e08adab97706654799d31d8"
+            "reference": "8e1d1e406dd31727fa70cd5a99cda202e9d6a5c6"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/symfony/console/zipball/15a9104356436cb26e08adab97706654799d31d8",
-            "reference": "15a9104356436cb26e08adab97706654799d31d8",
+            "url": "https://api.github.com/repos/symfony/console/zipball/8e1d1e406dd31727fa70cd5a99cda202e9d6a5c6",
+            "reference": "8e1d1e406dd31727fa70cd5a99cda202e9d6a5c6",
             "shasum": ""
         },
         "require": {
@@ -9720,7 +9819,7 @@
             "symfony/lock": "",
             "symfony/process": ""
         },
-        "time": "2019-04-08T09:29:13+00:00",
+        "time": "2019-05-09T08:42:51+00:00",
         "type": "library",
         "extra": {
             "branch-alias": {
@@ -9810,17 +9909,17 @@
     },
     {
         "name": "symfony/debug",
-        "version": "v3.4.27",
-        "version_normalized": "3.4.27.0",
+        "version": "v3.4.28",
+        "version_normalized": "3.4.28.0",
         "source": {
             "type": "git",
             "url": "https://github.com/symfony/debug.git",
-            "reference": "681afbb26488903c5ac15e63734f1d8ac430c9b9"
+            "reference": "671fc55bd14800668b1d0a3708c3714940e30a8c"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/symfony/debug/zipball/681afbb26488903c5ac15e63734f1d8ac430c9b9",
-            "reference": "681afbb26488903c5ac15e63734f1d8ac430c9b9",
+            "url": "https://api.github.com/repos/symfony/debug/zipball/671fc55bd14800668b1d0a3708c3714940e30a8c",
+            "reference": "671fc55bd14800668b1d0a3708c3714940e30a8c",
             "shasum": ""
         },
         "require": {
@@ -9833,7 +9932,7 @@
         "require-dev": {
             "symfony/http-kernel": "~2.8|~3.0|~4.0"
         },
-        "time": "2019-04-11T09:48:14+00:00",
+        "time": "2019-05-18T13:32:47+00:00",
         "type": "library",
         "extra": {
             "branch-alias": {
@@ -10000,8 +10099,8 @@
     },
     {
         "name": "symfony/event-dispatcher",
-        "version": "v3.4.27",
-        "version_normalized": "3.4.27.0",
+        "version": "v3.4.28",
+        "version_normalized": "3.4.28.0",
         "source": {
             "type": "git",
             "url": "https://github.com/symfony/event-dispatcher.git",
@@ -10117,23 +10216,23 @@
     },
     {
         "name": "symfony/finder",
-        "version": "v3.4.14",
-        "version_normalized": "3.4.14.0",
+        "version": "v3.4.28",
+        "version_normalized": "3.4.28.0",
         "source": {
             "type": "git",
             "url": "https://github.com/symfony/finder.git",
-            "reference": "8a84fcb207451df0013b2c74cbbf1b62d47b999a"
+            "reference": "fa5d962a71f2169dfe1cbae217fa5a2799859f6c"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/symfony/finder/zipball/8a84fcb207451df0013b2c74cbbf1b62d47b999a",
-            "reference": "8a84fcb207451df0013b2c74cbbf1b62d47b999a",
+            "url": "https://api.github.com/repos/symfony/finder/zipball/fa5d962a71f2169dfe1cbae217fa5a2799859f6c",
+            "reference": "fa5d962a71f2169dfe1cbae217fa5a2799859f6c",
             "shasum": ""
         },
         "require": {
             "php": "^5.5.9|>=7.0.8"
         },
-        "time": "2018-07-26T11:19:56+00:00",
+        "time": "2019-05-24T12:25:55+00:00",
         "type": "library",
         "extra": {
             "branch-alias": {
@@ -10992,17 +11091,17 @@
     },
     {
         "name": "symfony/var-dumper",
-        "version": "v3.4.14",
-        "version_normalized": "3.4.14.0",
+        "version": "v3.4.28",
+        "version_normalized": "3.4.28.0",
         "source": {
             "type": "git",
             "url": "https://github.com/symfony/var-dumper.git",
-            "reference": "f62a394bd3de96f2f5e8f4c7d685035897fb3cb3"
+            "reference": "ca5fef348a0440411bbca0f9ec14e9a11625bd6a"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/symfony/var-dumper/zipball/f62a394bd3de96f2f5e8f4c7d685035897fb3cb3",
-            "reference": "f62a394bd3de96f2f5e8f4c7d685035897fb3cb3",
+            "url": "https://api.github.com/repos/symfony/var-dumper/zipball/ca5fef348a0440411bbca0f9ec14e9a11625bd6a",
+            "reference": "ca5fef348a0440411bbca0f9ec14e9a11625bd6a",
             "shasum": ""
         },
         "require": {
@@ -11021,7 +11120,7 @@
             "ext-intl": "To show region name in time zone dump",
             "ext-symfony_debug": ""
         },
-        "time": "2018-07-26T11:19:56+00:00",
+        "time": "2019-05-01T09:52:10+00:00",
         "type": "library",
         "extra": {
             "branch-alias": {
@@ -11063,8 +11162,8 @@
     },
     {
         "name": "symfony/yaml",
-        "version": "v3.4.27",
-        "version_normalized": "3.4.27.0",
+        "version": "v3.4.28",
+        "version_normalized": "3.4.28.0",
         "source": {
             "type": "git",
             "url": "https://github.com/symfony/yaml.git",
@@ -11334,27 +11433,28 @@
     },
     {
         "name": "webmozart/assert",
-        "version": "1.3.0",
-        "version_normalized": "1.3.0.0",
+        "version": "1.4.0",
+        "version_normalized": "1.4.0.0",
         "source": {
             "type": "git",
             "url": "https://github.com/webmozart/assert.git",
-            "reference": "0df1908962e7a3071564e857d86874dad1ef204a"
+            "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a",
-            "reference": "0df1908962e7a3071564e857d86874dad1ef204a",
+            "url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9",
+            "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9",
             "shasum": ""
         },
         "require": {
-            "php": "^5.3.3 || ^7.0"
+            "php": "^5.3.3 || ^7.0",
+            "symfony/polyfill-ctype": "^1.8"
         },
         "require-dev": {
             "phpunit/phpunit": "^4.6",
             "sebastian/version": "^1.0.1"
         },
-        "time": "2018-01-29T19:49:41+00:00",
+        "time": "2018-12-25T11:19:39+00:00",
         "type": "library",
         "extra": {
             "branch-alias": {
diff --git a/vendor/consolidation/annotated-command/.scenarios.lock/install b/vendor/consolidation/annotated-command/.scenarios.lock/install
new file mode 100644
index 0000000000..16c69e107c
--- /dev/null
+++ b/vendor/consolidation/annotated-command/.scenarios.lock/install
@@ -0,0 +1,57 @@
+#!/bin/bash
+
+SCENARIO=$1
+DEPENDENCIES=${2-install}
+
+# Convert the aliases 'highest', 'lowest' and 'lock' to
+# the corresponding composer command to run.
+case $DEPENDENCIES in
+  highest)
+    DEPENDENCIES=update
+    ;;
+  lowest)
+    DEPENDENCIES='update --prefer-lowest'
+    ;;
+  lock|default|"")
+    DEPENDENCIES=install
+    ;;
+esac
+
+original_name=scenarios
+recommended_name=".scenarios.lock"
+
+base="$original_name"
+if [ -d "$recommended_name" ] ; then
+  base="$recommended_name"
+fi
+
+# If scenario is not specified, install the lockfile at
+# the root of the project.
+dir="$base/${SCENARIO}"
+if [ -z "$SCENARIO" ] || [ "$SCENARIO" == "default" ] ; then
+  SCENARIO=default
+  dir=.
+fi
+
+# Test to make sure that the selected scenario exists.
+if [ ! -d "$dir" ] ; then
+  echo "Requested scenario '${SCENARIO}' does not exist."
+  exit 1
+fi
+
+echo
+echo "::"
+echo ":: Switch to ${SCENARIO} scenario"
+echo "::"
+echo
+
+set -ex
+
+composer -n validate --working-dir=$dir --no-check-all --ansi
+composer -n --working-dir=$dir ${DEPENDENCIES} --prefer-dist --no-scripts
+
+# If called from a CI context, print out some extra information about
+# what we just installed.
+if [[ -n "$CI" ]] ; then
+  composer -n --working-dir=$dir info
+fi
diff --git a/vendor/consolidation/annotated-command/.scenarios.lock/phpunit4/.gitignore b/vendor/consolidation/annotated-command/.scenarios.lock/phpunit4/.gitignore
new file mode 100644
index 0000000000..5657f6ea7d
--- /dev/null
+++ b/vendor/consolidation/annotated-command/.scenarios.lock/phpunit4/.gitignore
@@ -0,0 +1 @@
+vendor
\ No newline at end of file
diff --git a/vendor/consolidation/annotated-command/.scenarios.lock/phpunit4/composer.json b/vendor/consolidation/annotated-command/.scenarios.lock/phpunit4/composer.json
new file mode 100644
index 0000000000..13a0f7a03a
--- /dev/null
+++ b/vendor/consolidation/annotated-command/.scenarios.lock/phpunit4/composer.json
@@ -0,0 +1,61 @@
+{
+    "name": "consolidation/annotated-command",
+    "description": "Initialize Symfony Console commands from annotated command class methods.",
+    "license": "MIT",
+    "authors": [
+        {
+            "name": "Greg Anderson",
+            "email": "greg.1.anderson@greenknowe.org"
+        }
+    ],
+    "autoload": {
+        "psr-4": {
+            "Consolidation\\AnnotatedCommand\\": "../../src"
+        }
+    },
+    "autoload-dev": {
+        "psr-4": {
+            "Consolidation\\TestUtils\\": "../../tests/src"
+        }
+    },
+    "require": {
+        "php": ">=5.4.5",
+        "consolidation/output-formatters": "^3.4",
+        "psr/log": "^1",
+        "symfony/console": "^2.8|^3|^4",
+        "symfony/event-dispatcher": "^2.5|^3|^4",
+        "symfony/finder": "^2.5|^3|^4"
+    },
+    "require-dev": {
+        "phpunit/phpunit": "^4.8.36",
+        "g1a/composer-test-scenarios": "^3",
+        "squizlabs/php_codesniffer": "^2.7"
+    },
+    "config": {
+        "platform": {
+            "php": "5.4.8"
+        },
+        "optimize-autoloader": true,
+        "sort-packages": true,
+        "vendor-dir": "../../vendor"
+    },
+    "scripts": {
+        "cs": "phpcs --standard=PSR2 -n src",
+        "cbf": "phpcbf --standard=PSR2 -n src",
+        "unit": "SHELL_INTERACTIVE=true phpunit --colors=always",
+        "lint": [
+            "find src -name '*.php' -print0 | xargs -0 -n1 php -l",
+            "find tests/src -name '*.php' -print0 | xargs -0 -n1 php -l"
+        ],
+        "test": [
+            "@lint",
+            "@unit",
+            "@cs"
+        ]
+    },
+    "extra": {
+        "branch-alias": {
+            "dev-master": "2.x-dev"
+        }
+    }
+}
diff --git a/vendor/consolidation/annotated-command/.scenarios.lock/phpunit4/composer.lock b/vendor/consolidation/annotated-command/.scenarios.lock/phpunit4/composer.lock
new file mode 100644
index 0000000000..b4dfe0de37
--- /dev/null
+++ b/vendor/consolidation/annotated-command/.scenarios.lock/phpunit4/composer.lock
@@ -0,0 +1,1624 @@
+{
+    "_readme": [
+        "This file locks the dependencies of your project to a known state",
+        "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
+        "This file is @generated automatically"
+    ],
+    "content-hash": "3bc1df70645d80d8cf1dc2fce04595ed",
+    "packages": [
+        {
+            "name": "consolidation/output-formatters",
+            "version": "3.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/consolidation/output-formatters.git",
+                "reference": "a942680232094c4a5b21c0b7e54c20cce623ae19"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/a942680232094c4a5b21c0b7e54c20cce623ae19",
+                "reference": "a942680232094c4a5b21c0b7e54c20cce623ae19",
+                "shasum": ""
+            },
+            "require": {
+                "dflydev/dot-access-data": "^1.1.0",
+                "php": ">=5.4.0",
+                "symfony/console": "^2.8|^3|^4",
+                "symfony/finder": "^2.5|^3|^4"
+            },
+            "require-dev": {
+                "g1a/composer-test-scenarios": "^2",
+                "phpunit/phpunit": "^5.7.27",
+                "satooshi/php-coveralls": "^2",
+                "squizlabs/php_codesniffer": "^2.7",
+                "symfony/console": "3.2.3",
+                "symfony/var-dumper": "^2.8|^3|^4",
+                "victorjonsson/markdowndocs": "^1.3"
+            },
+            "suggest": {
+                "symfony/var-dumper": "For using the var_dump formatter"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Consolidation\\OutputFormatters\\": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Greg Anderson",
+                    "email": "greg.1.anderson@greenknowe.org"
+                }
+            ],
+            "description": "Format text by applying transformations provided by plug-in formatters.",
+            "time": "2018-10-19T22:35:38+00:00"
+        },
+        {
+            "name": "dflydev/dot-access-data",
+            "version": "v1.1.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/dflydev/dflydev-dot-access-data.git",
+                "reference": "3fbd874921ab2c041e899d044585a2ab9795df8a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/3fbd874921ab2c041e899d044585a2ab9795df8a",
+                "reference": "3fbd874921ab2c041e899d044585a2ab9795df8a",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.2"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Dflydev\\DotAccessData": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Dragonfly Development Inc.",
+                    "email": "info@dflydev.com",
+                    "homepage": "http://dflydev.com"
+                },
+                {
+                    "name": "Beau Simensen",
+                    "email": "beau@dflydev.com",
+                    "homepage": "http://beausimensen.com"
+                },
+                {
+                    "name": "Carlos Frutos",
+                    "email": "carlos@kiwing.it",
+                    "homepage": "https://github.com/cfrutos"
+                }
+            ],
+            "description": "Given a deep data structure, access data by dot notation.",
+            "homepage": "https://github.com/dflydev/dflydev-dot-access-data",
+            "keywords": [
+                "access",
+                "data",
+                "dot",
+                "notation"
+            ],
+            "time": "2017-01-20T21:14:22+00:00"
+        },
+        {
+            "name": "psr/log",
+            "version": "1.1.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/log.git",
+                "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
+                "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Psr\\Log\\": "Psr/Log/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "http://www.php-fig.org/"
+                }
+            ],
+            "description": "Common interface for logging libraries",
+            "homepage": "https://github.com/php-fig/log",
+            "keywords": [
+                "log",
+                "psr",
+                "psr-3"
+            ],
+            "time": "2018-11-20T15:27:04+00:00"
+        },
+        {
+            "name": "symfony/console",
+            "version": "v2.8.49",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/console.git",
+                "reference": "cbcf4b5e233af15cd2bbd50dee1ccc9b7927dc12"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/console/zipball/cbcf4b5e233af15cd2bbd50dee1ccc9b7927dc12",
+                "reference": "cbcf4b5e233af15cd2bbd50dee1ccc9b7927dc12",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.9",
+                "symfony/debug": "^2.7.2|~3.0.0",
+                "symfony/polyfill-mbstring": "~1.0"
+            },
+            "require-dev": {
+                "psr/log": "~1.0",
+                "symfony/event-dispatcher": "~2.1|~3.0.0",
+                "symfony/process": "~2.1|~3.0.0"
+            },
+            "suggest": {
+                "psr/log-implementation": "For using the console logger",
+                "symfony/event-dispatcher": "",
+                "symfony/process": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.8-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Console\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Console Component",
+            "homepage": "https://symfony.com",
+            "time": "2018-11-20T15:55:20+00:00"
+        },
+        {
+            "name": "symfony/debug",
+            "version": "v2.8.49",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/debug.git",
+                "reference": "74251c8d50dd3be7c4ce0c7b862497cdc641a5d0"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/debug/zipball/74251c8d50dd3be7c4ce0c7b862497cdc641a5d0",
+                "reference": "74251c8d50dd3be7c4ce0c7b862497cdc641a5d0",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.9",
+                "psr/log": "~1.0"
+            },
+            "conflict": {
+                "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
+            },
+            "require-dev": {
+                "symfony/class-loader": "~2.2|~3.0.0",
+                "symfony/http-kernel": "~2.3.24|~2.5.9|^2.6.2|~3.0.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.8-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Debug\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Debug Component",
+            "homepage": "https://symfony.com",
+            "time": "2018-11-11T11:18:13+00:00"
+        },
+        {
+            "name": "symfony/event-dispatcher",
+            "version": "v2.8.49",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/event-dispatcher.git",
+                "reference": "a77e974a5fecb4398833b0709210e3d5e334ffb0"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/a77e974a5fecb4398833b0709210e3d5e334ffb0",
+                "reference": "a77e974a5fecb4398833b0709210e3d5e334ffb0",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.9"
+            },
+            "require-dev": {
+                "psr/log": "~1.0",
+                "symfony/config": "^2.0.5|~3.0.0",
+                "symfony/dependency-injection": "~2.6|~3.0.0",
+                "symfony/expression-language": "~2.6|~3.0.0",
+                "symfony/stopwatch": "~2.3|~3.0.0"
+            },
+            "suggest": {
+                "symfony/dependency-injection": "",
+                "symfony/http-kernel": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.8-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\EventDispatcher\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony EventDispatcher Component",
+            "homepage": "https://symfony.com",
+            "time": "2018-11-21T14:20:20+00:00"
+        },
+        {
+            "name": "symfony/finder",
+            "version": "v2.8.49",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/finder.git",
+                "reference": "1444eac52273e345d9b95129bf914639305a9ba4"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/finder/zipball/1444eac52273e345d9b95129bf914639305a9ba4",
+                "reference": "1444eac52273e345d9b95129bf914639305a9ba4",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.9"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.8-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Finder\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Finder Component",
+            "homepage": "https://symfony.com",
+            "time": "2018-11-11T11:18:13+00:00"
+        },
+        {
+            "name": "symfony/polyfill-mbstring",
+            "version": "v1.10.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-mbstring.git",
+                "reference": "c79c051f5b3a46be09205c73b80b346e4153e494"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494",
+                "reference": "c79c051f5b3a46be09205c73b80b346e4153e494",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "suggest": {
+                "ext-mbstring": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.9-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Polyfill\\Mbstring\\": ""
+                },
+                "files": [
+                    "bootstrap.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill for the Mbstring extension",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "mbstring",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "time": "2018-09-21T13:07:52+00:00"
+        }
+    ],
+    "packages-dev": [
+        {
+            "name": "doctrine/instantiator",
+            "version": "1.0.5",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/doctrine/instantiator.git",
+                "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d",
+                "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3,<8.0-DEV"
+            },
+            "require-dev": {
+                "athletic/athletic": "~0.1.8",
+                "ext-pdo": "*",
+                "ext-phar": "*",
+                "phpunit/phpunit": "~4.0",
+                "squizlabs/php_codesniffer": "~2.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Marco Pivetta",
+                    "email": "ocramius@gmail.com",
+                    "homepage": "http://ocramius.github.com/"
+                }
+            ],
+            "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+            "homepage": "https://github.com/doctrine/instantiator",
+            "keywords": [
+                "constructor",
+                "instantiate"
+            ],
+            "time": "2015-06-14T21:17:01+00:00"
+        },
+        {
+            "name": "g1a/composer-test-scenarios",
+            "version": "3.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/g1a/composer-test-scenarios.git",
+                "reference": "224531e20d13a07942a989a70759f726cd2df9a1"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/g1a/composer-test-scenarios/zipball/224531e20d13a07942a989a70759f726cd2df9a1",
+                "reference": "224531e20d13a07942a989a70759f726cd2df9a1",
+                "shasum": ""
+            },
+            "require": {
+                "composer-plugin-api": "^1.0.0",
+                "php": ">=5.4"
+            },
+            "require-dev": {
+                "composer/composer": "^1.7",
+                "php-coveralls/php-coveralls": "^1.0",
+                "phpunit/phpunit": "^4.8.36|^6",
+                "squizlabs/php_codesniffer": "^2.8"
+            },
+            "bin": [
+                "scripts/dependency-licenses"
+            ],
+            "type": "composer-plugin",
+            "extra": {
+                "class": "ComposerTestScenarios\\Plugin",
+                "branch-alias": {
+                    "dev-master": "3.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "ComposerTestScenarios\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Greg Anderson",
+                    "email": "greg.1.anderson@greenknowe.org"
+                }
+            ],
+            "description": "Useful scripts for testing multiple sets of Composer dependencies.",
+            "time": "2018-11-27T05:58:39+00:00"
+        },
+        {
+            "name": "phpdocumentor/reflection-docblock",
+            "version": "2.0.5",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+                "reference": "e6a969a640b00d8daa3c66518b0405fb41ae0c4b"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/e6a969a640b00d8daa3c66518b0405fb41ae0c4b",
+                "reference": "e6a969a640b00d8daa3c66518b0405fb41ae0c4b",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.0"
+            },
+            "suggest": {
+                "dflydev/markdown": "~1.0",
+                "erusev/parsedown": "~1.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "phpDocumentor": [
+                        "src/"
+                    ]
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Mike van Riel",
+                    "email": "mike.vanriel@naenius.com"
+                }
+            ],
+            "time": "2016-01-25T08:17:30+00:00"
+        },
+        {
+            "name": "phpspec/prophecy",
+            "version": "1.8.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phpspec/prophecy.git",
+                "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
+                "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
+                "shasum": ""
+            },
+            "require": {
+                "doctrine/instantiator": "^1.0.2",
+                "php": "^5.3|^7.0",
+                "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0",
+                "sebastian/comparator": "^1.1|^2.0|^3.0",
+                "sebastian/recursion-context": "^1.0|^2.0|^3.0"
+            },
+            "require-dev": {
+                "phpspec/phpspec": "^2.5|^3.2",
+                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.8.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Prophecy\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Konstantin Kudryashov",
+                    "email": "ever.zet@gmail.com",
+                    "homepage": "http://everzet.com"
+                },
+                {
+                    "name": "Marcello Duarte",
+                    "email": "marcello.duarte@gmail.com"
+                }
+            ],
+            "description": "Highly opinionated mocking framework for PHP 5.3+",
+            "homepage": "https://github.com/phpspec/prophecy",
+            "keywords": [
+                "Double",
+                "Dummy",
+                "fake",
+                "mock",
+                "spy",
+                "stub"
+            ],
+            "time": "2018-08-05T17:53:17+00:00"
+        },
+        {
+            "name": "phpunit/php-code-coverage",
+            "version": "2.2.4",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
+                "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979",
+                "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3",
+                "phpunit/php-file-iterator": "~1.3",
+                "phpunit/php-text-template": "~1.2",
+                "phpunit/php-token-stream": "~1.3",
+                "sebastian/environment": "^1.3.2",
+                "sebastian/version": "~1.0"
+            },
+            "require-dev": {
+                "ext-xdebug": ">=2.1.4",
+                "phpunit/phpunit": "~4"
+            },
+            "suggest": {
+                "ext-dom": "*",
+                "ext-xdebug": ">=2.2.1",
+                "ext-xmlwriter": "*"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.2.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sb@sebastian-bergmann.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
+            "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
+            "keywords": [
+                "coverage",
+                "testing",
+                "xunit"
+            ],
+            "time": "2015-10-06T15:47:00+00:00"
+        },
+        {
+            "name": "phpunit/php-file-iterator",
+            "version": "1.4.5",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
+                "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4",
+                "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.4.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sb@sebastian-bergmann.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "FilterIterator implementation that filters files based on a list of suffixes.",
+            "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
+            "keywords": [
+                "filesystem",
+                "iterator"
+            ],
+            "time": "2017-11-27T13:52:08+00:00"
+        },
+        {
+            "name": "phpunit/php-text-template",
+            "version": "1.2.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-text-template.git",
+                "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
+                "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "type": "library",
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Simple template engine.",
+            "homepage": "https://github.com/sebastianbergmann/php-text-template/",
+            "keywords": [
+                "template"
+            ],
+            "time": "2015-06-21T13:50:34+00:00"
+        },
+        {
+            "name": "phpunit/php-timer",
+            "version": "1.0.9",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-timer.git",
+                "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
+                "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.3.3 || ^7.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sb@sebastian-bergmann.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Utility class for timing",
+            "homepage": "https://github.com/sebastianbergmann/php-timer/",
+            "keywords": [
+                "timer"
+            ],
+            "time": "2017-02-26T11:10:40+00:00"
+        },
+        {
+            "name": "phpunit/php-token-stream",
+            "version": "1.4.12",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-token-stream.git",
+                "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/1ce90ba27c42e4e44e6d8458241466380b51fa16",
+                "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16",
+                "shasum": ""
+            },
+            "require": {
+                "ext-tokenizer": "*",
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.2"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.4-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Wrapper around PHP's tokenizer extension.",
+            "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
+            "keywords": [
+                "tokenizer"
+            ],
+            "time": "2017-12-04T08:55:13+00:00"
+        },
+        {
+            "name": "phpunit/phpunit",
+            "version": "4.8.36",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/phpunit.git",
+                "reference": "46023de9a91eec7dfb06cc56cb4e260017298517"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/46023de9a91eec7dfb06cc56cb4e260017298517",
+                "reference": "46023de9a91eec7dfb06cc56cb4e260017298517",
+                "shasum": ""
+            },
+            "require": {
+                "ext-dom": "*",
+                "ext-json": "*",
+                "ext-pcre": "*",
+                "ext-reflection": "*",
+                "ext-spl": "*",
+                "php": ">=5.3.3",
+                "phpspec/prophecy": "^1.3.1",
+                "phpunit/php-code-coverage": "~2.1",
+                "phpunit/php-file-iterator": "~1.4",
+                "phpunit/php-text-template": "~1.2",
+                "phpunit/php-timer": "^1.0.6",
+                "phpunit/phpunit-mock-objects": "~2.3",
+                "sebastian/comparator": "~1.2.2",
+                "sebastian/diff": "~1.2",
+                "sebastian/environment": "~1.3",
+                "sebastian/exporter": "~1.2",
+                "sebastian/global-state": "~1.0",
+                "sebastian/version": "~1.0",
+                "symfony/yaml": "~2.1|~3.0"
+            },
+            "suggest": {
+                "phpunit/php-invoker": "~1.1"
+            },
+            "bin": [
+                "phpunit"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.8.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "The PHP Unit Testing framework.",
+            "homepage": "https://phpunit.de/",
+            "keywords": [
+                "phpunit",
+                "testing",
+                "xunit"
+            ],
+            "time": "2017-06-21T08:07:12+00:00"
+        },
+        {
+            "name": "phpunit/phpunit-mock-objects",
+            "version": "2.3.8",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
+                "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983",
+                "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983",
+                "shasum": ""
+            },
+            "require": {
+                "doctrine/instantiator": "^1.0.2",
+                "php": ">=5.3.3",
+                "phpunit/php-text-template": "~1.2",
+                "sebastian/exporter": "~1.2"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.4"
+            },
+            "suggest": {
+                "ext-soap": "*"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sb@sebastian-bergmann.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Mock Object library for PHPUnit",
+            "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
+            "keywords": [
+                "mock",
+                "xunit"
+            ],
+            "time": "2015-10-02T06:51:40+00:00"
+        },
+        {
+            "name": "sebastian/comparator",
+            "version": "1.2.4",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/comparator.git",
+                "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be",
+                "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3",
+                "sebastian/diff": "~1.2",
+                "sebastian/exporter": "~1.2 || ~2.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.4"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.2.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Jeff Welch",
+                    "email": "whatthejeff@gmail.com"
+                },
+                {
+                    "name": "Volker Dusch",
+                    "email": "github@wallbash.com"
+                },
+                {
+                    "name": "Bernhard Schussek",
+                    "email": "bschussek@2bepublished.at"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Provides the functionality to compare PHP values for equality",
+            "homepage": "http://www.github.com/sebastianbergmann/comparator",
+            "keywords": [
+                "comparator",
+                "compare",
+                "equality"
+            ],
+            "time": "2017-01-29T09:50:25+00:00"
+        },
+        {
+            "name": "sebastian/diff",
+            "version": "1.4.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/diff.git",
+                "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4",
+                "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.3.3 || ^7.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.4-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Kore Nordmann",
+                    "email": "mail@kore-nordmann.de"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Diff implementation",
+            "homepage": "https://github.com/sebastianbergmann/diff",
+            "keywords": [
+                "diff"
+            ],
+            "time": "2017-05-22T07:24:03+00:00"
+        },
+        {
+            "name": "sebastian/environment",
+            "version": "1.3.8",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/environment.git",
+                "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/be2c607e43ce4c89ecd60e75c6a85c126e754aea",
+                "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.3.3 || ^7.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.8 || ^5.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.3.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Provides functionality to handle HHVM/PHP environments",
+            "homepage": "http://www.github.com/sebastianbergmann/environment",
+            "keywords": [
+                "Xdebug",
+                "environment",
+                "hhvm"
+            ],
+            "time": "2016-08-18T05:49:44+00:00"
+        },
+        {
+            "name": "sebastian/exporter",
+            "version": "1.2.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/exporter.git",
+                "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/42c4c2eec485ee3e159ec9884f95b431287edde4",
+                "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3",
+                "sebastian/recursion-context": "~1.0"
+            },
+            "require-dev": {
+                "ext-mbstring": "*",
+                "phpunit/phpunit": "~4.4"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.3.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Jeff Welch",
+                    "email": "whatthejeff@gmail.com"
+                },
+                {
+                    "name": "Volker Dusch",
+                    "email": "github@wallbash.com"
+                },
+                {
+                    "name": "Bernhard Schussek",
+                    "email": "bschussek@2bepublished.at"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                },
+                {
+                    "name": "Adam Harvey",
+                    "email": "aharvey@php.net"
+                }
+            ],
+            "description": "Provides the functionality to export PHP variables for visualization",
+            "homepage": "http://www.github.com/sebastianbergmann/exporter",
+            "keywords": [
+                "export",
+                "exporter"
+            ],
+            "time": "2016-06-17T09:04:28+00:00"
+        },
+        {
+            "name": "sebastian/global-state",
+            "version": "1.1.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/global-state.git",
+                "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4",
+                "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.2"
+            },
+            "suggest": {
+                "ext-uopz": "*"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Snapshotting of global state",
+            "homepage": "http://www.github.com/sebastianbergmann/global-state",
+            "keywords": [
+                "global state"
+            ],
+            "time": "2015-10-12T03:26:01+00:00"
+        },
+        {
+            "name": "sebastian/recursion-context",
+            "version": "1.0.5",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/recursion-context.git",
+                "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/b19cc3298482a335a95f3016d2f8a6950f0fbcd7",
+                "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.4"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Jeff Welch",
+                    "email": "whatthejeff@gmail.com"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                },
+                {
+                    "name": "Adam Harvey",
+                    "email": "aharvey@php.net"
+                }
+            ],
+            "description": "Provides functionality to recursively process PHP variables",
+            "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
+            "time": "2016-10-03T07:41:43+00:00"
+        },
+        {
+            "name": "sebastian/version",
+            "version": "1.0.6",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/version.git",
+                "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
+                "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
+                "shasum": ""
+            },
+            "type": "library",
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Library that helps with managing the version number of Git-hosted PHP projects",
+            "homepage": "https://github.com/sebastianbergmann/version",
+            "time": "2015-06-21T13:59:46+00:00"
+        },
+        {
+            "name": "squizlabs/php_codesniffer",
+            "version": "2.9.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
+                "reference": "2acf168de78487db620ab4bc524135a13cfe6745"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/2acf168de78487db620ab4bc524135a13cfe6745",
+                "reference": "2acf168de78487db620ab4bc524135a13cfe6745",
+                "shasum": ""
+            },
+            "require": {
+                "ext-simplexml": "*",
+                "ext-tokenizer": "*",
+                "ext-xmlwriter": "*",
+                "php": ">=5.1.2"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.0"
+            },
+            "bin": [
+                "scripts/phpcs",
+                "scripts/phpcbf"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "CodeSniffer.php",
+                    "CodeSniffer/CLI.php",
+                    "CodeSniffer/Exception.php",
+                    "CodeSniffer/File.php",
+                    "CodeSniffer/Fixer.php",
+                    "CodeSniffer/Report.php",
+                    "CodeSniffer/Reporting.php",
+                    "CodeSniffer/Sniff.php",
+                    "CodeSniffer/Tokens.php",
+                    "CodeSniffer/Reports/",
+                    "CodeSniffer/Tokenizers/",
+                    "CodeSniffer/DocGenerators/",
+                    "CodeSniffer/Standards/AbstractPatternSniff.php",
+                    "CodeSniffer/Standards/AbstractScopeSniff.php",
+                    "CodeSniffer/Standards/AbstractVariableSniff.php",
+                    "CodeSniffer/Standards/IncorrectPatternException.php",
+                    "CodeSniffer/Standards/Generic/Sniffs/",
+                    "CodeSniffer/Standards/MySource/Sniffs/",
+                    "CodeSniffer/Standards/PEAR/Sniffs/",
+                    "CodeSniffer/Standards/PSR1/Sniffs/",
+                    "CodeSniffer/Standards/PSR2/Sniffs/",
+                    "CodeSniffer/Standards/Squiz/Sniffs/",
+                    "CodeSniffer/Standards/Zend/Sniffs/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Greg Sherwood",
+                    "role": "lead"
+                }
+            ],
+            "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
+            "homepage": "http://www.squizlabs.com/php-codesniffer",
+            "keywords": [
+                "phpcs",
+                "standards"
+            ],
+            "time": "2018-11-07T22:31:41+00:00"
+        },
+        {
+            "name": "symfony/polyfill-ctype",
+            "version": "v1.10.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-ctype.git",
+                "reference": "e3d826245268269cd66f8326bd8bc066687b4a19"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19",
+                "reference": "e3d826245268269cd66f8326bd8bc066687b4a19",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "suggest": {
+                "ext-ctype": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.9-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Polyfill\\Ctype\\": ""
+                },
+                "files": [
+                    "bootstrap.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                },
+                {
+                    "name": "Gert de Pagter",
+                    "email": "BackEndTea@gmail.com"
+                }
+            ],
+            "description": "Symfony polyfill for ctype functions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "ctype",
+                "polyfill",
+                "portable"
+            ],
+            "time": "2018-08-06T14:22:27+00:00"
+        },
+        {
+            "name": "symfony/yaml",
+            "version": "v2.8.49",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/yaml.git",
+                "reference": "02c1859112aa779d9ab394ae4f3381911d84052b"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/yaml/zipball/02c1859112aa779d9ab394ae4f3381911d84052b",
+                "reference": "02c1859112aa779d9ab394ae4f3381911d84052b",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.9",
+                "symfony/polyfill-ctype": "~1.8"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.8-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Yaml\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Yaml Component",
+            "homepage": "https://symfony.com",
+            "time": "2018-11-11T11:18:13+00:00"
+        }
+    ],
+    "aliases": [],
+    "minimum-stability": "stable",
+    "stability-flags": [],
+    "prefer-stable": false,
+    "prefer-lowest": false,
+    "platform": {
+        "php": ">=5.4.5"
+    },
+    "platform-dev": [],
+    "platform-overrides": {
+        "php": "5.4.8"
+    }
+}
diff --git a/vendor/consolidation/annotated-command/.scenarios.lock/symfony2/.gitignore b/vendor/consolidation/annotated-command/.scenarios.lock/symfony2/.gitignore
new file mode 100644
index 0000000000..88e99d50df
--- /dev/null
+++ b/vendor/consolidation/annotated-command/.scenarios.lock/symfony2/.gitignore
@@ -0,0 +1,2 @@
+vendor
+composer.lock
\ No newline at end of file
diff --git a/vendor/consolidation/annotated-command/.scenarios.lock/symfony2/composer.json b/vendor/consolidation/annotated-command/.scenarios.lock/symfony2/composer.json
new file mode 100644
index 0000000000..17e581d915
--- /dev/null
+++ b/vendor/consolidation/annotated-command/.scenarios.lock/symfony2/composer.json
@@ -0,0 +1,61 @@
+{
+    "name": "consolidation/annotated-command",
+    "description": "Initialize Symfony Console commands from annotated command class methods.",
+    "license": "MIT",
+    "authors": [
+        {
+            "name": "Greg Anderson",
+            "email": "greg.1.anderson@greenknowe.org"
+        }
+    ],
+    "autoload": {
+        "psr-4": {
+            "Consolidation\\AnnotatedCommand\\": "../../src"
+        }
+    },
+    "autoload-dev": {
+        "psr-4": {
+            "Consolidation\\TestUtils\\": "../../tests/src"
+        }
+    },
+    "require": {
+        "symfony/console": "^2.8",
+        "php": ">=5.4.5",
+        "consolidation/output-formatters": "^3.4",
+        "psr/log": "^1",
+        "symfony/event-dispatcher": "^2.5|^3|^4",
+        "symfony/finder": "^2.5|^3|^4"
+    },
+    "require-dev": {
+        "phpunit/phpunit": "^4.8.36",
+        "g1a/composer-test-scenarios": "^3",
+        "squizlabs/php_codesniffer": "^2.7"
+    },
+    "config": {
+        "platform": {
+            "php": "5.4.8"
+        },
+        "optimize-autoloader": true,
+        "sort-packages": true,
+        "vendor-dir": "../../vendor"
+    },
+    "scripts": {
+        "cs": "phpcs --standard=PSR2 -n src",
+        "cbf": "phpcbf --standard=PSR2 -n src",
+        "unit": "SHELL_INTERACTIVE=true phpunit --colors=always",
+        "lint": [
+            "find src -name '*.php' -print0 | xargs -0 -n1 php -l",
+            "find tests/src -name '*.php' -print0 | xargs -0 -n1 php -l"
+        ],
+        "test": [
+            "@lint",
+            "@unit",
+            "@cs"
+        ]
+    },
+    "extra": {
+        "branch-alias": {
+            "dev-master": "2.x-dev"
+        }
+    }
+}
diff --git a/vendor/consolidation/annotated-command/.scenarios.lock/symfony4/.gitignore b/vendor/consolidation/annotated-command/.scenarios.lock/symfony4/.gitignore
new file mode 100644
index 0000000000..5657f6ea7d
--- /dev/null
+++ b/vendor/consolidation/annotated-command/.scenarios.lock/symfony4/.gitignore
@@ -0,0 +1 @@
+vendor
\ No newline at end of file
diff --git a/vendor/consolidation/annotated-command/.scenarios.lock/symfony4/composer.json b/vendor/consolidation/annotated-command/.scenarios.lock/symfony4/composer.json
new file mode 100644
index 0000000000..80f0baaf38
--- /dev/null
+++ b/vendor/consolidation/annotated-command/.scenarios.lock/symfony4/composer.json
@@ -0,0 +1,62 @@
+{
+    "name": "consolidation/annotated-command",
+    "description": "Initialize Symfony Console commands from annotated command class methods.",
+    "license": "MIT",
+    "authors": [
+        {
+            "name": "Greg Anderson",
+            "email": "greg.1.anderson@greenknowe.org"
+        }
+    ],
+    "autoload": {
+        "psr-4": {
+            "Consolidation\\AnnotatedCommand\\": "../../src"
+        }
+    },
+    "autoload-dev": {
+        "psr-4": {
+            "Consolidation\\TestUtils\\": "../../tests/src"
+        }
+    },
+    "require": {
+        "symfony/console": "^4.0",
+        "php": ">=5.4.5",
+        "consolidation/output-formatters": "^3.4",
+        "psr/log": "^1",
+        "symfony/event-dispatcher": "^2.5|^3|^4",
+        "symfony/finder": "^2.5|^3|^4"
+    },
+    "require-dev": {
+        "phpunit/phpunit": "^6",
+        "php-coveralls/php-coveralls": "^1",
+        "g1a/composer-test-scenarios": "^3",
+        "squizlabs/php_codesniffer": "^2.7"
+    },
+    "config": {
+        "platform": {
+            "php": "7.1.3"
+        },
+        "optimize-autoloader": true,
+        "sort-packages": true,
+        "vendor-dir": "../../vendor"
+    },
+    "scripts": {
+        "cs": "phpcs --standard=PSR2 -n src",
+        "cbf": "phpcbf --standard=PSR2 -n src",
+        "unit": "SHELL_INTERACTIVE=true phpunit --colors=always",
+        "lint": [
+            "find src -name '*.php' -print0 | xargs -0 -n1 php -l",
+            "find tests/src -name '*.php' -print0 | xargs -0 -n1 php -l"
+        ],
+        "test": [
+            "@lint",
+            "@unit",
+            "@cs"
+        ]
+    },
+    "extra": {
+        "branch-alias": {
+            "dev-master": "2.x-dev"
+        }
+    }
+}
diff --git a/vendor/consolidation/annotated-command/.scenarios.lock/symfony4/composer.lock b/vendor/consolidation/annotated-command/.scenarios.lock/symfony4/composer.lock
new file mode 100644
index 0000000000..605f4d0d0f
--- /dev/null
+++ b/vendor/consolidation/annotated-command/.scenarios.lock/symfony4/composer.lock
@@ -0,0 +1,2520 @@
+{
+    "_readme": [
+        "This file locks the dependencies of your project to a known state",
+        "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
+        "This file is @generated automatically"
+    ],
+    "content-hash": "c6c8cae7d200f377fc58fdc4d46be678",
+    "packages": [
+        {
+            "name": "consolidation/output-formatters",
+            "version": "3.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/consolidation/output-formatters.git",
+                "reference": "a942680232094c4a5b21c0b7e54c20cce623ae19"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/a942680232094c4a5b21c0b7e54c20cce623ae19",
+                "reference": "a942680232094c4a5b21c0b7e54c20cce623ae19",
+                "shasum": ""
+            },
+            "require": {
+                "dflydev/dot-access-data": "^1.1.0",
+                "php": ">=5.4.0",
+                "symfony/console": "^2.8|^3|^4",
+                "symfony/finder": "^2.5|^3|^4"
+            },
+            "require-dev": {
+                "g1a/composer-test-scenarios": "^2",
+                "phpunit/phpunit": "^5.7.27",
+                "satooshi/php-coveralls": "^2",
+                "squizlabs/php_codesniffer": "^2.7",
+                "symfony/console": "3.2.3",
+                "symfony/var-dumper": "^2.8|^3|^4",
+                "victorjonsson/markdowndocs": "^1.3"
+            },
+            "suggest": {
+                "symfony/var-dumper": "For using the var_dump formatter"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Consolidation\\OutputFormatters\\": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Greg Anderson",
+                    "email": "greg.1.anderson@greenknowe.org"
+                }
+            ],
+            "description": "Format text by applying transformations provided by plug-in formatters.",
+            "time": "2018-10-19T22:35:38+00:00"
+        },
+        {
+            "name": "dflydev/dot-access-data",
+            "version": "v1.1.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/dflydev/dflydev-dot-access-data.git",
+                "reference": "3fbd874921ab2c041e899d044585a2ab9795df8a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/3fbd874921ab2c041e899d044585a2ab9795df8a",
+                "reference": "3fbd874921ab2c041e899d044585a2ab9795df8a",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.2"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Dflydev\\DotAccessData": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Dragonfly Development Inc.",
+                    "email": "info@dflydev.com",
+                    "homepage": "http://dflydev.com"
+                },
+                {
+                    "name": "Beau Simensen",
+                    "email": "beau@dflydev.com",
+                    "homepage": "http://beausimensen.com"
+                },
+                {
+                    "name": "Carlos Frutos",
+                    "email": "carlos@kiwing.it",
+                    "homepage": "https://github.com/cfrutos"
+                }
+            ],
+            "description": "Given a deep data structure, access data by dot notation.",
+            "homepage": "https://github.com/dflydev/dflydev-dot-access-data",
+            "keywords": [
+                "access",
+                "data",
+                "dot",
+                "notation"
+            ],
+            "time": "2017-01-20T21:14:22+00:00"
+        },
+        {
+            "name": "psr/log",
+            "version": "1.1.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/log.git",
+                "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
+                "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Psr\\Log\\": "Psr/Log/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "http://www.php-fig.org/"
+                }
+            ],
+            "description": "Common interface for logging libraries",
+            "homepage": "https://github.com/php-fig/log",
+            "keywords": [
+                "log",
+                "psr",
+                "psr-3"
+            ],
+            "time": "2018-11-20T15:27:04+00:00"
+        },
+        {
+            "name": "symfony/console",
+            "version": "v4.2.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/console.git",
+                "reference": "b0a03c1bb0fcbe288629956cf2f1dd3f1dc97522"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/console/zipball/b0a03c1bb0fcbe288629956cf2f1dd3f1dc97522",
+                "reference": "b0a03c1bb0fcbe288629956cf2f1dd3f1dc97522",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.1.3",
+                "symfony/contracts": "^1.0",
+                "symfony/polyfill-mbstring": "~1.0"
+            },
+            "conflict": {
+                "symfony/dependency-injection": "<3.4",
+                "symfony/process": "<3.3"
+            },
+            "require-dev": {
+                "psr/log": "~1.0",
+                "symfony/config": "~3.4|~4.0",
+                "symfony/dependency-injection": "~3.4|~4.0",
+                "symfony/event-dispatcher": "~3.4|~4.0",
+                "symfony/lock": "~3.4|~4.0",
+                "symfony/process": "~3.4|~4.0"
+            },
+            "suggest": {
+                "psr/log-implementation": "For using the console logger",
+                "symfony/event-dispatcher": "",
+                "symfony/lock": "",
+                "symfony/process": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.2-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Console\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Console Component",
+            "homepage": "https://symfony.com",
+            "time": "2019-01-04T15:13:53+00:00"
+        },
+        {
+            "name": "symfony/contracts",
+            "version": "v1.0.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/contracts.git",
+                "reference": "1aa7ab2429c3d594dd70689604b5cf7421254cdf"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/contracts/zipball/1aa7ab2429c3d594dd70689604b5cf7421254cdf",
+                "reference": "1aa7ab2429c3d594dd70689604b5cf7421254cdf",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.1.3"
+            },
+            "require-dev": {
+                "psr/cache": "^1.0",
+                "psr/container": "^1.0"
+            },
+            "suggest": {
+                "psr/cache": "When using the Cache contracts",
+                "psr/container": "When using the Service contracts",
+                "symfony/cache-contracts-implementation": "",
+                "symfony/service-contracts-implementation": "",
+                "symfony/translation-contracts-implementation": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Contracts\\": ""
+                },
+                "exclude-from-classmap": [
+                    "**/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "A set of abstractions extracted out of the Symfony components",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "abstractions",
+                "contracts",
+                "decoupling",
+                "interfaces",
+                "interoperability",
+                "standards"
+            ],
+            "time": "2018-12-05T08:06:11+00:00"
+        },
+        {
+            "name": "symfony/event-dispatcher",
+            "version": "v4.2.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/event-dispatcher.git",
+                "reference": "887de6d34c86cf0cb6cbf910afb170cdb743cb5e"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/887de6d34c86cf0cb6cbf910afb170cdb743cb5e",
+                "reference": "887de6d34c86cf0cb6cbf910afb170cdb743cb5e",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.1.3",
+                "symfony/contracts": "^1.0"
+            },
+            "conflict": {
+                "symfony/dependency-injection": "<3.4"
+            },
+            "require-dev": {
+                "psr/log": "~1.0",
+                "symfony/config": "~3.4|~4.0",
+                "symfony/dependency-injection": "~3.4|~4.0",
+                "symfony/expression-language": "~3.4|~4.0",
+                "symfony/stopwatch": "~3.4|~4.0"
+            },
+            "suggest": {
+                "symfony/dependency-injection": "",
+                "symfony/http-kernel": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.2-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\EventDispatcher\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony EventDispatcher Component",
+            "homepage": "https://symfony.com",
+            "time": "2019-01-05T16:37:49+00:00"
+        },
+        {
+            "name": "symfony/finder",
+            "version": "v4.2.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/finder.git",
+                "reference": "9094d69e8c6ee3fe186a0ec5a4f1401e506071ce"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/finder/zipball/9094d69e8c6ee3fe186a0ec5a4f1401e506071ce",
+                "reference": "9094d69e8c6ee3fe186a0ec5a4f1401e506071ce",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.1.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.2-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Finder\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Finder Component",
+            "homepage": "https://symfony.com",
+            "time": "2019-01-03T09:07:35+00:00"
+        },
+        {
+            "name": "symfony/polyfill-mbstring",
+            "version": "v1.10.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-mbstring.git",
+                "reference": "c79c051f5b3a46be09205c73b80b346e4153e494"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494",
+                "reference": "c79c051f5b3a46be09205c73b80b346e4153e494",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "suggest": {
+                "ext-mbstring": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.9-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Polyfill\\Mbstring\\": ""
+                },
+                "files": [
+                    "bootstrap.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill for the Mbstring extension",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "mbstring",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "time": "2018-09-21T13:07:52+00:00"
+        }
+    ],
+    "packages-dev": [
+        {
+            "name": "doctrine/instantiator",
+            "version": "1.1.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/doctrine/instantiator.git",
+                "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda",
+                "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.1"
+            },
+            "require-dev": {
+                "athletic/athletic": "~0.1.8",
+                "ext-pdo": "*",
+                "ext-phar": "*",
+                "phpunit/phpunit": "^6.2.3",
+                "squizlabs/php_codesniffer": "^3.0.2"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.2.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Marco Pivetta",
+                    "email": "ocramius@gmail.com",
+                    "homepage": "http://ocramius.github.com/"
+                }
+            ],
+            "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+            "homepage": "https://github.com/doctrine/instantiator",
+            "keywords": [
+                "constructor",
+                "instantiate"
+            ],
+            "time": "2017-07-22T11:58:36+00:00"
+        },
+        {
+            "name": "g1a/composer-test-scenarios",
+            "version": "3.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/g1a/composer-test-scenarios.git",
+                "reference": "224531e20d13a07942a989a70759f726cd2df9a1"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/g1a/composer-test-scenarios/zipball/224531e20d13a07942a989a70759f726cd2df9a1",
+                "reference": "224531e20d13a07942a989a70759f726cd2df9a1",
+                "shasum": ""
+            },
+            "require": {
+                "composer-plugin-api": "^1.0.0",
+                "php": ">=5.4"
+            },
+            "require-dev": {
+                "composer/composer": "^1.7",
+                "php-coveralls/php-coveralls": "^1.0",
+                "phpunit/phpunit": "^4.8.36|^6",
+                "squizlabs/php_codesniffer": "^2.8"
+            },
+            "bin": [
+                "scripts/dependency-licenses"
+            ],
+            "type": "composer-plugin",
+            "extra": {
+                "class": "ComposerTestScenarios\\Plugin",
+                "branch-alias": {
+                    "dev-master": "3.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "ComposerTestScenarios\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Greg Anderson",
+                    "email": "greg.1.anderson@greenknowe.org"
+                }
+            ],
+            "description": "Useful scripts for testing multiple sets of Composer dependencies.",
+            "time": "2018-11-27T05:58:39+00:00"
+        },
+        {
+            "name": "guzzle/guzzle",
+            "version": "v3.8.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/guzzle/guzzle.git",
+                "reference": "4de0618a01b34aa1c8c33a3f13f396dcd3882eba"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/4de0618a01b34aa1c8c33a3f13f396dcd3882eba",
+                "reference": "4de0618a01b34aa1c8c33a3f13f396dcd3882eba",
+                "shasum": ""
+            },
+            "require": {
+                "ext-curl": "*",
+                "php": ">=5.3.3",
+                "symfony/event-dispatcher": ">=2.1"
+            },
+            "replace": {
+                "guzzle/batch": "self.version",
+                "guzzle/cache": "self.version",
+                "guzzle/common": "self.version",
+                "guzzle/http": "self.version",
+                "guzzle/inflection": "self.version",
+                "guzzle/iterator": "self.version",
+                "guzzle/log": "self.version",
+                "guzzle/parser": "self.version",
+                "guzzle/plugin": "self.version",
+                "guzzle/plugin-async": "self.version",
+                "guzzle/plugin-backoff": "self.version",
+                "guzzle/plugin-cache": "self.version",
+                "guzzle/plugin-cookie": "self.version",
+                "guzzle/plugin-curlauth": "self.version",
+                "guzzle/plugin-error-response": "self.version",
+                "guzzle/plugin-history": "self.version",
+                "guzzle/plugin-log": "self.version",
+                "guzzle/plugin-md5": "self.version",
+                "guzzle/plugin-mock": "self.version",
+                "guzzle/plugin-oauth": "self.version",
+                "guzzle/service": "self.version",
+                "guzzle/stream": "self.version"
+            },
+            "require-dev": {
+                "doctrine/cache": "*",
+                "monolog/monolog": "1.*",
+                "phpunit/phpunit": "3.7.*",
+                "psr/log": "1.0.*",
+                "symfony/class-loader": "*",
+                "zendframework/zend-cache": "<2.3",
+                "zendframework/zend-log": "<2.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.8-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Guzzle": "src/",
+                    "Guzzle\\Tests": "tests/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Michael Dowling",
+                    "email": "mtdowling@gmail.com",
+                    "homepage": "https://github.com/mtdowling"
+                },
+                {
+                    "name": "Guzzle Community",
+                    "homepage": "https://github.com/guzzle/guzzle/contributors"
+                }
+            ],
+            "description": "Guzzle is a PHP HTTP client library and framework for building RESTful web service clients",
+            "homepage": "http://guzzlephp.org/",
+            "keywords": [
+                "client",
+                "curl",
+                "framework",
+                "http",
+                "http client",
+                "rest",
+                "web service"
+            ],
+            "abandoned": "guzzlehttp/guzzle",
+            "time": "2014-01-28T22:29:15+00:00"
+        },
+        {
+            "name": "myclabs/deep-copy",
+            "version": "1.8.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/myclabs/DeepCopy.git",
+                "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8",
+                "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.1"
+            },
+            "replace": {
+                "myclabs/deep-copy": "self.version"
+            },
+            "require-dev": {
+                "doctrine/collections": "^1.0",
+                "doctrine/common": "^2.6",
+                "phpunit/phpunit": "^7.1"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "DeepCopy\\": "src/DeepCopy/"
+                },
+                "files": [
+                    "src/DeepCopy/deep_copy.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "description": "Create deep copies (clones) of your objects",
+            "keywords": [
+                "clone",
+                "copy",
+                "duplicate",
+                "object",
+                "object graph"
+            ],
+            "time": "2018-06-11T23:09:50+00:00"
+        },
+        {
+            "name": "phar-io/manifest",
+            "version": "1.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phar-io/manifest.git",
+                "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0",
+                "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0",
+                "shasum": ""
+            },
+            "require": {
+                "ext-dom": "*",
+                "ext-phar": "*",
+                "phar-io/version": "^1.0.1",
+                "php": "^5.6 || ^7.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Arne Blankerts",
+                    "email": "arne@blankerts.de",
+                    "role": "Developer"
+                },
+                {
+                    "name": "Sebastian Heuer",
+                    "email": "sebastian@phpeople.de",
+                    "role": "Developer"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "Developer"
+                }
+            ],
+            "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
+            "time": "2017-03-05T18:14:27+00:00"
+        },
+        {
+            "name": "phar-io/version",
+            "version": "1.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phar-io/version.git",
+                "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df",
+                "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.6 || ^7.0"
+            },
+            "type": "library",
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Arne Blankerts",
+                    "email": "arne@blankerts.de",
+                    "role": "Developer"
+                },
+                {
+                    "name": "Sebastian Heuer",
+                    "email": "sebastian@phpeople.de",
+                    "role": "Developer"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "Developer"
+                }
+            ],
+            "description": "Library for handling version information and constraints",
+            "time": "2017-03-05T17:38:23+00:00"
+        },
+        {
+            "name": "php-coveralls/php-coveralls",
+            "version": "v1.1.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-coveralls/php-coveralls.git",
+                "reference": "37f8f83fe22224eb9d9c6d593cdeb33eedd2a9ad"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-coveralls/php-coveralls/zipball/37f8f83fe22224eb9d9c6d593cdeb33eedd2a9ad",
+                "reference": "37f8f83fe22224eb9d9c6d593cdeb33eedd2a9ad",
+                "shasum": ""
+            },
+            "require": {
+                "ext-json": "*",
+                "ext-simplexml": "*",
+                "guzzle/guzzle": "^2.8 || ^3.0",
+                "php": "^5.3.3 || ^7.0",
+                "psr/log": "^1.0",
+                "symfony/config": "^2.1 || ^3.0 || ^4.0",
+                "symfony/console": "^2.1 || ^3.0 || ^4.0",
+                "symfony/stopwatch": "^2.0 || ^3.0 || ^4.0",
+                "symfony/yaml": "^2.0 || ^3.0 || ^4.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.8.35 || ^5.4.3 || ^6.0"
+            },
+            "suggest": {
+                "symfony/http-kernel": "Allows Symfony integration"
+            },
+            "bin": [
+                "bin/coveralls"
+            ],
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Satooshi\\": "src/Satooshi/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Kitamura Satoshi",
+                    "email": "with.no.parachute@gmail.com",
+                    "homepage": "https://www.facebook.com/satooshi.jp"
+                }
+            ],
+            "description": "PHP client library for Coveralls API",
+            "homepage": "https://github.com/php-coveralls/php-coveralls",
+            "keywords": [
+                "ci",
+                "coverage",
+                "github",
+                "test"
+            ],
+            "time": "2017-12-06T23:17:56+00:00"
+        },
+        {
+            "name": "phpdocumentor/reflection-common",
+            "version": "1.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
+                "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
+                "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.5"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.6"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "phpDocumentor\\Reflection\\": [
+                        "src"
+                    ]
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Jaap van Otterdijk",
+                    "email": "opensource@ijaap.nl"
+                }
+            ],
+            "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
+            "homepage": "http://www.phpdoc.org",
+            "keywords": [
+                "FQSEN",
+                "phpDocumentor",
+                "phpdoc",
+                "reflection",
+                "static analysis"
+            ],
+            "time": "2017-09-11T18:02:19+00:00"
+        },
+        {
+            "name": "phpdocumentor/reflection-docblock",
+            "version": "4.3.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+                "reference": "94fd0001232e47129dd3504189fa1c7225010d08"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08",
+                "reference": "94fd0001232e47129dd3504189fa1c7225010d08",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.0",
+                "phpdocumentor/reflection-common": "^1.0.0",
+                "phpdocumentor/type-resolver": "^0.4.0",
+                "webmozart/assert": "^1.0"
+            },
+            "require-dev": {
+                "doctrine/instantiator": "~1.0.5",
+                "mockery/mockery": "^1.0",
+                "phpunit/phpunit": "^6.4"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "phpDocumentor\\Reflection\\": [
+                        "src/"
+                    ]
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Mike van Riel",
+                    "email": "me@mikevanriel.com"
+                }
+            ],
+            "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
+            "time": "2017-11-30T07:14:17+00:00"
+        },
+        {
+            "name": "phpdocumentor/type-resolver",
+            "version": "0.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phpDocumentor/TypeResolver.git",
+                "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7",
+                "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.5 || ^7.0",
+                "phpdocumentor/reflection-common": "^1.0"
+            },
+            "require-dev": {
+                "mockery/mockery": "^0.9.4",
+                "phpunit/phpunit": "^5.2||^4.8.24"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "phpDocumentor\\Reflection\\": [
+                        "src/"
+                    ]
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Mike van Riel",
+                    "email": "me@mikevanriel.com"
+                }
+            ],
+            "time": "2017-07-14T14:27:02+00:00"
+        },
+        {
+            "name": "phpspec/prophecy",
+            "version": "1.8.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phpspec/prophecy.git",
+                "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
+                "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
+                "shasum": ""
+            },
+            "require": {
+                "doctrine/instantiator": "^1.0.2",
+                "php": "^5.3|^7.0",
+                "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0",
+                "sebastian/comparator": "^1.1|^2.0|^3.0",
+                "sebastian/recursion-context": "^1.0|^2.0|^3.0"
+            },
+            "require-dev": {
+                "phpspec/phpspec": "^2.5|^3.2",
+                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.8.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Prophecy\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Konstantin Kudryashov",
+                    "email": "ever.zet@gmail.com",
+                    "homepage": "http://everzet.com"
+                },
+                {
+                    "name": "Marcello Duarte",
+                    "email": "marcello.duarte@gmail.com"
+                }
+            ],
+            "description": "Highly opinionated mocking framework for PHP 5.3+",
+            "homepage": "https://github.com/phpspec/prophecy",
+            "keywords": [
+                "Double",
+                "Dummy",
+                "fake",
+                "mock",
+                "spy",
+                "stub"
+            ],
+            "time": "2018-08-05T17:53:17+00:00"
+        },
+        {
+            "name": "phpunit/php-code-coverage",
+            "version": "5.3.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
+                "reference": "c89677919c5dd6d3b3852f230a663118762218ac"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c89677919c5dd6d3b3852f230a663118762218ac",
+                "reference": "c89677919c5dd6d3b3852f230a663118762218ac",
+                "shasum": ""
+            },
+            "require": {
+                "ext-dom": "*",
+                "ext-xmlwriter": "*",
+                "php": "^7.0",
+                "phpunit/php-file-iterator": "^1.4.2",
+                "phpunit/php-text-template": "^1.2.1",
+                "phpunit/php-token-stream": "^2.0.1",
+                "sebastian/code-unit-reverse-lookup": "^1.0.1",
+                "sebastian/environment": "^3.0",
+                "sebastian/version": "^2.0.1",
+                "theseer/tokenizer": "^1.1"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^6.0"
+            },
+            "suggest": {
+                "ext-xdebug": "^2.5.5"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "5.3.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
+            "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
+            "keywords": [
+                "coverage",
+                "testing",
+                "xunit"
+            ],
+            "time": "2018-04-06T15:36:58+00:00"
+        },
+        {
+            "name": "phpunit/php-file-iterator",
+            "version": "1.4.5",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
+                "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4",
+                "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.4.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sb@sebastian-bergmann.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "FilterIterator implementation that filters files based on a list of suffixes.",
+            "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
+            "keywords": [
+                "filesystem",
+                "iterator"
+            ],
+            "time": "2017-11-27T13:52:08+00:00"
+        },
+        {
+            "name": "phpunit/php-text-template",
+            "version": "1.2.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-text-template.git",
+                "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
+                "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "type": "library",
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Simple template engine.",
+            "homepage": "https://github.com/sebastianbergmann/php-text-template/",
+            "keywords": [
+                "template"
+            ],
+            "time": "2015-06-21T13:50:34+00:00"
+        },
+        {
+            "name": "phpunit/php-timer",
+            "version": "1.0.9",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-timer.git",
+                "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
+                "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.3.3 || ^7.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sb@sebastian-bergmann.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Utility class for timing",
+            "homepage": "https://github.com/sebastianbergmann/php-timer/",
+            "keywords": [
+                "timer"
+            ],
+            "time": "2017-02-26T11:10:40+00:00"
+        },
+        {
+            "name": "phpunit/php-token-stream",
+            "version": "2.0.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-token-stream.git",
+                "reference": "791198a2c6254db10131eecfe8c06670700904db"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db",
+                "reference": "791198a2c6254db10131eecfe8c06670700904db",
+                "shasum": ""
+            },
+            "require": {
+                "ext-tokenizer": "*",
+                "php": "^7.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^6.2.4"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Wrapper around PHP's tokenizer extension.",
+            "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
+            "keywords": [
+                "tokenizer"
+            ],
+            "time": "2017-11-27T05:48:46+00:00"
+        },
+        {
+            "name": "phpunit/phpunit",
+            "version": "6.5.13",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/phpunit.git",
+                "reference": "0973426fb012359b2f18d3bd1e90ef1172839693"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0973426fb012359b2f18d3bd1e90ef1172839693",
+                "reference": "0973426fb012359b2f18d3bd1e90ef1172839693",
+                "shasum": ""
+            },
+            "require": {
+                "ext-dom": "*",
+                "ext-json": "*",
+                "ext-libxml": "*",
+                "ext-mbstring": "*",
+                "ext-xml": "*",
+                "myclabs/deep-copy": "^1.6.1",
+                "phar-io/manifest": "^1.0.1",
+                "phar-io/version": "^1.0",
+                "php": "^7.0",
+                "phpspec/prophecy": "^1.7",
+                "phpunit/php-code-coverage": "^5.3",
+                "phpunit/php-file-iterator": "^1.4.3",
+                "phpunit/php-text-template": "^1.2.1",
+                "phpunit/php-timer": "^1.0.9",
+                "phpunit/phpunit-mock-objects": "^5.0.9",
+                "sebastian/comparator": "^2.1",
+                "sebastian/diff": "^2.0",
+                "sebastian/environment": "^3.1",
+                "sebastian/exporter": "^3.1",
+                "sebastian/global-state": "^2.0",
+                "sebastian/object-enumerator": "^3.0.3",
+                "sebastian/resource-operations": "^1.0",
+                "sebastian/version": "^2.0.1"
+            },
+            "conflict": {
+                "phpdocumentor/reflection-docblock": "3.0.2",
+                "phpunit/dbunit": "<3.0"
+            },
+            "require-dev": {
+                "ext-pdo": "*"
+            },
+            "suggest": {
+                "ext-xdebug": "*",
+                "phpunit/php-invoker": "^1.1"
+            },
+            "bin": [
+                "phpunit"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "6.5.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "The PHP Unit Testing framework.",
+            "homepage": "https://phpunit.de/",
+            "keywords": [
+                "phpunit",
+                "testing",
+                "xunit"
+            ],
+            "time": "2018-09-08T15:10:43+00:00"
+        },
+        {
+            "name": "phpunit/phpunit-mock-objects",
+            "version": "5.0.10",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
+                "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/cd1cf05c553ecfec36b170070573e540b67d3f1f",
+                "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f",
+                "shasum": ""
+            },
+            "require": {
+                "doctrine/instantiator": "^1.0.5",
+                "php": "^7.0",
+                "phpunit/php-text-template": "^1.2.1",
+                "sebastian/exporter": "^3.1"
+            },
+            "conflict": {
+                "phpunit/phpunit": "<6.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^6.5.11"
+            },
+            "suggest": {
+                "ext-soap": "*"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "5.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Mock Object library for PHPUnit",
+            "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
+            "keywords": [
+                "mock",
+                "xunit"
+            ],
+            "time": "2018-08-09T05:50:03+00:00"
+        },
+        {
+            "name": "sebastian/code-unit-reverse-lookup",
+            "version": "1.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
+                "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
+                "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.6 || ^7.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^5.7 || ^6.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Looks up which function or method a line of code belongs to",
+            "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
+            "time": "2017-03-04T06:30:41+00:00"
+        },
+        {
+            "name": "sebastian/comparator",
+            "version": "2.1.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/comparator.git",
+                "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/34369daee48eafb2651bea869b4b15d75ccc35f9",
+                "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.0",
+                "sebastian/diff": "^2.0 || ^3.0",
+                "sebastian/exporter": "^3.1"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^6.4"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.1.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Jeff Welch",
+                    "email": "whatthejeff@gmail.com"
+                },
+                {
+                    "name": "Volker Dusch",
+                    "email": "github@wallbash.com"
+                },
+                {
+                    "name": "Bernhard Schussek",
+                    "email": "bschussek@2bepublished.at"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Provides the functionality to compare PHP values for equality",
+            "homepage": "https://github.com/sebastianbergmann/comparator",
+            "keywords": [
+                "comparator",
+                "compare",
+                "equality"
+            ],
+            "time": "2018-02-01T13:46:46+00:00"
+        },
+        {
+            "name": "sebastian/diff",
+            "version": "2.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/diff.git",
+                "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd",
+                "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^6.2"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Kore Nordmann",
+                    "email": "mail@kore-nordmann.de"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Diff implementation",
+            "homepage": "https://github.com/sebastianbergmann/diff",
+            "keywords": [
+                "diff"
+            ],
+            "time": "2017-08-03T08:09:46+00:00"
+        },
+        {
+            "name": "sebastian/environment",
+            "version": "3.1.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/environment.git",
+                "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5",
+                "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^6.1"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.1.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Provides functionality to handle HHVM/PHP environments",
+            "homepage": "http://www.github.com/sebastianbergmann/environment",
+            "keywords": [
+                "Xdebug",
+                "environment",
+                "hhvm"
+            ],
+            "time": "2017-07-01T08:51:00+00:00"
+        },
+        {
+            "name": "sebastian/exporter",
+            "version": "3.1.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/exporter.git",
+                "reference": "234199f4528de6d12aaa58b612e98f7d36adb937"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937",
+                "reference": "234199f4528de6d12aaa58b612e98f7d36adb937",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.0",
+                "sebastian/recursion-context": "^3.0"
+            },
+            "require-dev": {
+                "ext-mbstring": "*",
+                "phpunit/phpunit": "^6.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.1.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Jeff Welch",
+                    "email": "whatthejeff@gmail.com"
+                },
+                {
+                    "name": "Volker Dusch",
+                    "email": "github@wallbash.com"
+                },
+                {
+                    "name": "Bernhard Schussek",
+                    "email": "bschussek@2bepublished.at"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                },
+                {
+                    "name": "Adam Harvey",
+                    "email": "aharvey@php.net"
+                }
+            ],
+            "description": "Provides the functionality to export PHP variables for visualization",
+            "homepage": "http://www.github.com/sebastianbergmann/exporter",
+            "keywords": [
+                "export",
+                "exporter"
+            ],
+            "time": "2017-04-03T13:19:02+00:00"
+        },
+        {
+            "name": "sebastian/global-state",
+            "version": "2.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/global-state.git",
+                "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
+                "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^6.0"
+            },
+            "suggest": {
+                "ext-uopz": "*"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Snapshotting of global state",
+            "homepage": "http://www.github.com/sebastianbergmann/global-state",
+            "keywords": [
+                "global state"
+            ],
+            "time": "2017-04-27T15:39:26+00:00"
+        },
+        {
+            "name": "sebastian/object-enumerator",
+            "version": "3.0.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/object-enumerator.git",
+                "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5",
+                "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.0",
+                "sebastian/object-reflector": "^1.1.1",
+                "sebastian/recursion-context": "^3.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^6.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Traverses array structures and object graphs to enumerate all referenced objects",
+            "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
+            "time": "2017-08-03T12:35:26+00:00"
+        },
+        {
+            "name": "sebastian/object-reflector",
+            "version": "1.1.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/object-reflector.git",
+                "reference": "773f97c67f28de00d397be301821b06708fca0be"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be",
+                "reference": "773f97c67f28de00d397be301821b06708fca0be",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^6.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.1-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Allows reflection of object attributes, including inherited and non-public ones",
+            "homepage": "https://github.com/sebastianbergmann/object-reflector/",
+            "time": "2017-03-29T09:07:27+00:00"
+        },
+        {
+            "name": "sebastian/recursion-context",
+            "version": "3.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/recursion-context.git",
+                "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
+                "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^6.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Jeff Welch",
+                    "email": "whatthejeff@gmail.com"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                },
+                {
+                    "name": "Adam Harvey",
+                    "email": "aharvey@php.net"
+                }
+            ],
+            "description": "Provides functionality to recursively process PHP variables",
+            "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
+            "time": "2017-03-03T06:23:57+00:00"
+        },
+        {
+            "name": "sebastian/resource-operations",
+            "version": "1.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/resource-operations.git",
+                "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
+                "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.6.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Provides a list of PHP built-in functions that operate on resources",
+            "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
+            "time": "2015-07-28T20:34:47+00:00"
+        },
+        {
+            "name": "sebastian/version",
+            "version": "2.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/version.git",
+                "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019",
+                "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.6"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Library that helps with managing the version number of Git-hosted PHP projects",
+            "homepage": "https://github.com/sebastianbergmann/version",
+            "time": "2016-10-03T07:35:21+00:00"
+        },
+        {
+            "name": "squizlabs/php_codesniffer",
+            "version": "2.9.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
+                "reference": "2acf168de78487db620ab4bc524135a13cfe6745"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/2acf168de78487db620ab4bc524135a13cfe6745",
+                "reference": "2acf168de78487db620ab4bc524135a13cfe6745",
+                "shasum": ""
+            },
+            "require": {
+                "ext-simplexml": "*",
+                "ext-tokenizer": "*",
+                "ext-xmlwriter": "*",
+                "php": ">=5.1.2"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.0"
+            },
+            "bin": [
+                "scripts/phpcs",
+                "scripts/phpcbf"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "CodeSniffer.php",
+                    "CodeSniffer/CLI.php",
+                    "CodeSniffer/Exception.php",
+                    "CodeSniffer/File.php",
+                    "CodeSniffer/Fixer.php",
+                    "CodeSniffer/Report.php",
+                    "CodeSniffer/Reporting.php",
+                    "CodeSniffer/Sniff.php",
+                    "CodeSniffer/Tokens.php",
+                    "CodeSniffer/Reports/",
+                    "CodeSniffer/Tokenizers/",
+                    "CodeSniffer/DocGenerators/",
+                    "CodeSniffer/Standards/AbstractPatternSniff.php",
+                    "CodeSniffer/Standards/AbstractScopeSniff.php",
+                    "CodeSniffer/Standards/AbstractVariableSniff.php",
+                    "CodeSniffer/Standards/IncorrectPatternException.php",
+                    "CodeSniffer/Standards/Generic/Sniffs/",
+                    "CodeSniffer/Standards/MySource/Sniffs/",
+                    "CodeSniffer/Standards/PEAR/Sniffs/",
+                    "CodeSniffer/Standards/PSR1/Sniffs/",
+                    "CodeSniffer/Standards/PSR2/Sniffs/",
+                    "CodeSniffer/Standards/Squiz/Sniffs/",
+                    "CodeSniffer/Standards/Zend/Sniffs/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Greg Sherwood",
+                    "role": "lead"
+                }
+            ],
+            "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
+            "homepage": "http://www.squizlabs.com/php-codesniffer",
+            "keywords": [
+                "phpcs",
+                "standards"
+            ],
+            "time": "2018-11-07T22:31:41+00:00"
+        },
+        {
+            "name": "symfony/config",
+            "version": "v4.2.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/config.git",
+                "reference": "a7a7d0a0244cfc82f040729ccf769e6cf55a78fb"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/config/zipball/a7a7d0a0244cfc82f040729ccf769e6cf55a78fb",
+                "reference": "a7a7d0a0244cfc82f040729ccf769e6cf55a78fb",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.1.3",
+                "symfony/filesystem": "~3.4|~4.0",
+                "symfony/polyfill-ctype": "~1.8"
+            },
+            "conflict": {
+                "symfony/finder": "<3.4"
+            },
+            "require-dev": {
+                "symfony/dependency-injection": "~3.4|~4.0",
+                "symfony/event-dispatcher": "~3.4|~4.0",
+                "symfony/finder": "~3.4|~4.0",
+                "symfony/yaml": "~3.4|~4.0"
+            },
+            "suggest": {
+                "symfony/yaml": "To use the yaml reference dumper"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.2-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Config\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Config Component",
+            "homepage": "https://symfony.com",
+            "time": "2019-01-03T09:07:35+00:00"
+        },
+        {
+            "name": "symfony/filesystem",
+            "version": "v4.2.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/filesystem.git",
+                "reference": "c2ffd9a93f2d6c5be2f68a0aa7953cc229f871f8"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/filesystem/zipball/c2ffd9a93f2d6c5be2f68a0aa7953cc229f871f8",
+                "reference": "c2ffd9a93f2d6c5be2f68a0aa7953cc229f871f8",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.1.3",
+                "symfony/polyfill-ctype": "~1.8"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.2-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Filesystem\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Filesystem Component",
+            "homepage": "https://symfony.com",
+            "time": "2019-01-03T09:07:35+00:00"
+        },
+        {
+            "name": "symfony/polyfill-ctype",
+            "version": "v1.10.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-ctype.git",
+                "reference": "e3d826245268269cd66f8326bd8bc066687b4a19"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19",
+                "reference": "e3d826245268269cd66f8326bd8bc066687b4a19",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "suggest": {
+                "ext-ctype": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.9-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Polyfill\\Ctype\\": ""
+                },
+                "files": [
+                    "bootstrap.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                },
+                {
+                    "name": "Gert de Pagter",
+                    "email": "BackEndTea@gmail.com"
+                }
+            ],
+            "description": "Symfony polyfill for ctype functions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "ctype",
+                "polyfill",
+                "portable"
+            ],
+            "time": "2018-08-06T14:22:27+00:00"
+        },
+        {
+            "name": "symfony/stopwatch",
+            "version": "v4.2.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/stopwatch.git",
+                "reference": "af62b35760fc92c8dbdce659b4eebdfe0e6a0472"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/stopwatch/zipball/af62b35760fc92c8dbdce659b4eebdfe0e6a0472",
+                "reference": "af62b35760fc92c8dbdce659b4eebdfe0e6a0472",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.1.3",
+                "symfony/contracts": "^1.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.2-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Stopwatch\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Stopwatch Component",
+            "homepage": "https://symfony.com",
+            "time": "2019-01-03T09:07:35+00:00"
+        },
+        {
+            "name": "symfony/yaml",
+            "version": "v4.2.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/yaml.git",
+                "reference": "d0aa6c0ea484087927b49fd513383a7d36190ca6"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/yaml/zipball/d0aa6c0ea484087927b49fd513383a7d36190ca6",
+                "reference": "d0aa6c0ea484087927b49fd513383a7d36190ca6",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.1.3",
+                "symfony/polyfill-ctype": "~1.8"
+            },
+            "conflict": {
+                "symfony/console": "<3.4"
+            },
+            "require-dev": {
+                "symfony/console": "~3.4|~4.0"
+            },
+            "suggest": {
+                "symfony/console": "For validating YAML files using the lint command"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.2-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Yaml\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Yaml Component",
+            "homepage": "https://symfony.com",
+            "time": "2019-01-03T09:07:35+00:00"
+        },
+        {
+            "name": "theseer/tokenizer",
+            "version": "1.1.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/theseer/tokenizer.git",
+                "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b",
+                "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b",
+                "shasum": ""
+            },
+            "require": {
+                "ext-dom": "*",
+                "ext-tokenizer": "*",
+                "ext-xmlwriter": "*",
+                "php": "^7.0"
+            },
+            "type": "library",
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Arne Blankerts",
+                    "email": "arne@blankerts.de",
+                    "role": "Developer"
+                }
+            ],
+            "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
+            "time": "2017-04-07T12:08:54+00:00"
+        },
+        {
+            "name": "webmozart/assert",
+            "version": "1.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/webmozart/assert.git",
+                "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9",
+                "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.3.3 || ^7.0",
+                "symfony/polyfill-ctype": "^1.8"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.6",
+                "sebastian/version": "^1.0.1"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.3-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Webmozart\\Assert\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Bernhard Schussek",
+                    "email": "bschussek@gmail.com"
+                }
+            ],
+            "description": "Assertions to validate method input/output with nice error messages.",
+            "keywords": [
+                "assert",
+                "check",
+                "validate"
+            ],
+            "time": "2018-12-25T11:19:39+00:00"
+        }
+    ],
+    "aliases": [],
+    "minimum-stability": "stable",
+    "stability-flags": [],
+    "prefer-stable": false,
+    "prefer-lowest": false,
+    "platform": {
+        "php": ">=5.4.5"
+    },
+    "platform-dev": [],
+    "platform-overrides": {
+        "php": "7.1.3"
+    }
+}
diff --git a/vendor/consolidation/annotated-command/CHANGELOG.md b/vendor/consolidation/annotated-command/CHANGELOG.md
index 662dbb4fa4..d7dbfdd59e 100644
--- a/vendor/consolidation/annotated-command/CHANGELOG.md
+++ b/vendor/consolidation/annotated-command/CHANGELOG.md
@@ -1,5 +1,48 @@
 # Change Log
 
+### 2.12.0 - 8 Mar 2019
+
+- Allow annotated args and options to specify their default values in their descriptions. (#186)
+
+### 2.11.2 - 1 Feb 2019
+
+- Fix handling of old caches from 2.11.1 that introduced upgrade errors.
+
+### 2.11.1 - 31 Jan 2019
+
+- Cache injected classes (#182)
+
+### 2.11.0 - 27 Jan 2019
+
+- Make injection of InputInterface / OutputInterface general-purpose (#179)
+
+### 2.10.2 - 20 Dec 2018
+
+- Fix commands that have a @param annotation for their InputInterface/OutputInterface params (#176)
+
+### 2.10.1 - 13 Dec 2018
+
+- Add stdin handler convenience class
+- Add setter to AnnotationData to suppliment existing array acces
+- Update to Composer Test Scenarios 3
+
+### 2.10.0 - 14 Nov 2018
+
+- Add a new data type, CommandResult (#167)
+
+### 2.9.0 & 2.9.1 - 19 Sept 2018
+
+- Improve commandfile discovery for extensions installed via Composer. (#156)
+
+### 2.8.5 - 18 Aug 2018
+
+- Add dependencies.yml for dependencies.io
+- Fix warning in AnnotatedCommandFactory when getCommandInfoListFromCache called with null.
+
+### 2.8.4 - 25 May 2018
+
+- Use g1a/composer-test-scenarios for better PHP version matrix testing.
+
 ### 2.8.3 - 23 Feb 2018
 
 - BUGFIX: Do not shift off the command name unless it is there. (#139)
diff --git a/vendor/consolidation/annotated-command/LICENSE b/vendor/consolidation/annotated-command/LICENSE
index b283237da5..7c4d73fd8f 100644
--- a/vendor/consolidation/annotated-command/LICENSE
+++ b/vendor/consolidation/annotated-command/LICENSE
@@ -1,6 +1,6 @@
 The MIT License (MIT)
 
-Copyright (c) 2016-2018 Consolidation Org Developers
+Copyright (c) 2016-2019 Consolidation Org Developers
 
 
 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
@@ -11,11 +11,12 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
 
 DEPENDENCY LICENSES:
 
-Name                             Version  License  
-consolidation/output-formatters  3.2.0    MIT      
-psr/log                          1.0.2    MIT      
-symfony/console                  v3.4.11  MIT      
-symfony/debug                    v3.4.11  MIT      
-symfony/event-dispatcher         v3.4.11  MIT      
-symfony/finder                   v3.4.11  MIT      
-symfony/polyfill-mbstring        v1.8.0   MIT      
+Name                             Version  License
+consolidation/output-formatters  3.4.0    MIT
+dflydev/dot-access-data          v1.1.0   MIT
+psr/log                          1.1.0    MIT
+symfony/console                  v2.8.49  MIT
+symfony/debug                    v2.8.49  MIT
+symfony/event-dispatcher         v2.8.49  MIT
+symfony/finder                   v2.8.49  MIT
+symfony/polyfill-mbstring        v1.10.0  MIT
\ No newline at end of file
diff --git a/vendor/consolidation/annotated-command/README.md b/vendor/consolidation/annotated-command/README.md
index 72227e3cd0..efcba14b44 100644
--- a/vendor/consolidation/annotated-command/README.md
+++ b/vendor/consolidation/annotated-command/README.md
@@ -5,7 +5,7 @@ Initialize Symfony Console commands from annotated command class methods.
 [![Travis CI](https://travis-ci.org/consolidation/annotated-command.svg?branch=master)](https://travis-ci.org/consolidation/annotated-command)
 [![Windows CI](https://ci.appveyor.com/api/projects/status/c2c4lcf43ux4c30p?svg=true)](https://ci.appveyor.com/project/greg-1-anderson/annotated-command)
 [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/consolidation/annotated-command/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/consolidation/annotated-command/?branch=master)
-[![Coverage Status](https://coveralls.io/repos/github/consolidation/annotated-command/badge.svg?branch=master)](https://coveralls.io/github/consolidation/annotated-command?branch=master) 
+[![Coverage Status](https://coveralls.io/repos/github/consolidation/annotated-command/badge.svg?branch=master)](https://coveralls.io/github/consolidation/annotated-command?branch=master)
 [![License](https://poser.pugx.org/consolidation/annotated-command/license)](https://packagist.org/packages/consolidation/annotated-command)
 
 ## Component Status
@@ -24,14 +24,14 @@ Extant commandline tools that utilize this technique include:
 
 This library provides routines to produce the Symfony\Component\Console\Command\Command from all public methods defined in the provided class.
 
-**Note** If you are looking for a very fast way to write a Symfony Console-base command-line tool, you should consider using [Robo](https://github.com/consolidation/Robo), which is built on top of this library, and adds additional conveniences to get you going quickly. See [Using Robo as a Framework](http://robo.li/framework/).  It is possible to use this project without Robo if desired, of course.
+**Note** If you are looking for a very fast way to write a Symfony Console-base command-line tool, you should consider using [Robo](https://github.com/consolidation/Robo), which is built on top of this library, and adds additional conveniences to get you going quickly. Use [g1a/starter](https://github.com/g1a/starter) to quickly scaffold a new commandline tool. See [Using Robo as a Framework](http://robo.li/framework/).  It is possible to use this project without Robo if desired, of course.
 
 ## Library Usage
 
 This is a library intended to be used in some other project.  Require from your composer.json file:
 ```
     "require": {
-        "consolidation/annotated-command": "~2"
+        "consolidation/annotated-command": "^2"
     },
 ```
 
@@ -43,12 +43,12 @@ The rest of the parameters are arguments. Parameters with a default value are op
 class MyCommandClass
 {
     /**
-     * This is the my:cat command
+     * This is the my:echo command
      *
      * This command will concatenate two parameters. If the --flip flag
      * is provided, then the result is the concatenation of two and one.
      *
-     * @command my:cat
+     * @command my:echo
      * @param integer $one The first parameter.
      * @param integer $two The other parameter.
      * @option arr An option that takes multiple values.
@@ -57,7 +57,7 @@ class MyCommandClass
      * @usage bet alpha --flip
      *   Concatenate "alpha" and "bet".
      */
-    public function myCat($one, $two, $options = ['flip' => false])
+    public function myEcho($one, $two, $options = ['flip' => false])
     {
         if ($options['flip']) {
             return "{$two}{$one}";
@@ -65,7 +65,7 @@ class MyCommandClass
         return "{$one}{$two}";
     }
 }
-``` 
+```
 ## Option Default Values
 
 The `$options` array must be an associative array whose key is the name of the option, and whose value is one of:
@@ -103,6 +103,7 @@ The hook **target** specifies which command or commands the hook will be attache
 
 - The command's primary name (e.g. `my:command`) or the command's method name (e.g. myCommand) will attach the hook to only that command.
 - An annotation (e.g. `@foo`) will attach the hook to any command that is annotated with the given label.
+- If the target is specified as `*`, then the hook will be attached to all commands.
 - If the target is omitted, then the hook will be attached to every command defined in the same class as the hook implementation.
 
 There are ten types of hooks in the command processing request flow:
@@ -143,7 +144,7 @@ There are ten types of hooks in the command processing request flow:
    - @status
 - [Extract](#extract-hook)
    - @extract
-   
+
 In addition to these, there are two more hooks available:
 
 - [On-event](#on-event-hook)
@@ -201,6 +202,42 @@ public function initSomeCommand(InputInterface $input, AnnotationData $annotatio
 }
 ```
 
+You may alter the AnnotationData here by using simple array syntax. Below, we
+add an additional display field label for a Property List.
+
+```
+use Consolidation\AnnotatedCommand\AnnotationData;
+use Symfony\Component\Console\Input\InputInterface;
+
+/**
+ * @hook init some:command
+ */
+public function initSomeCommand(InputInterface $input, AnnotationData $annotationData)
+{
+    $annotationData['field-labels'] .= "\n" . "new_field: My new field";
+}
+```
+
+Alternately, you may use the `set()` or `append()` methods on the AnnotationData
+class.
+
+```
+use Consolidation\AnnotatedCommand\AnnotationData;
+use Symfony\Component\Console\Input\InputInterface;
+
+/**
+ * @hook init some:command
+ */
+public function initSomeCommand(InputInterface $input, AnnotationData $annotationData)
+{
+    // Add a line to the field labels.
+    $annotationData->append('field-labels', "\n" . "new_field: My new field");
+    // Replace all field labels.
+    $annotationData->set('field-labels', "one_field: My only field");
+
+}
+```
+
 ### Interact Hook
 
 The interact hook ([InteractorInterface](src/Hooks/InteractorInterface.php)) runs prior to argument and option validation. Required arguments and options not supplied on the command line may be provided during this phase by prompting the user.  Note that the interact hook is not called if the --no-interaction flag is supplied, whereas the command-event hook and the init hook are.
@@ -345,12 +382,20 @@ public function nameSomeCommand($result, CommandData $commandData)
 
 ### Status Hook
 
+**DEPRECATED**
+
+Instead of using a Status Determiner hook, commands should simply return their exit code and result data separately using a CommandResult object.
+
 The status hook ([StatusDeterminerInterface](src/Hooks/StatusDeterminerInterface.php)) is responsible for determing whether a command succeeded (status code 0) or failed (status code > 0).  The result object returned by a command may be a compound object that contains multiple bits of information about the command result.  If the result object implements [ExitCodeInterface](ExitCodeInterface.php), then the `getExitCode()` method of the result object is called to determine what the status result code for the command should be. If ExitCodeInterface is not implemented, then all of the status hooks attached to this command are executed; the first one that successfully returns a result will stop further execution of status hooks, and the result it returned will be used as the status result code for this operation.
 
 If no status hook returns any result, then success is presumed.
 
 ### Extract Hook
 
+**DEPRECATED**
+
+See [RowsOfFieldsWithMetadata in output-formatters](https://github.com/consolidation/output-formatters/blob/master/src/StructuredData/RowsOfFieldsWithMetadata.php) for an alternative that is more flexible for most use cases.
+
 The extract hook ([ExtractOutputInterface](src/Hooks/ExtractOutputInterface.php)) is responsible for determining what the actual rendered output for the command should be.  The result object returned by a command may be a compound object that contains multiple bits of information about the command result.  If the result object implements [OutputDataInterface](OutputDataInterface.php), then the `getOutputData()` method of the result object is called to determine what information should be displayed to the user as a result of the command's execution. If OutputDataInterface is not implemented, then all of the extract hooks attached to this command are executed; the first one that successfully returns output data will stop further execution of extract hooks.
 
 If no extract hook returns any data, then the result object itself is printed if it is a string; otherwise, no output is emitted (other than any produced by the command itself).
@@ -399,8 +444,8 @@ class MyReplaceCommandHook  {
 
   /**
    * @hook replace-command foo:bar
-   * 
-   * Parameters must match original command method. 
+   *
+   * Parameters must match original command method.
    */
   public function myFooBarReplacement($value) {
     print "Hello $value!";
@@ -424,6 +469,46 @@ If you want to use annotations, but still want access to the Symfony Command, e.
 
 It is also possible to add InputInterface and/or OutputInterface parameters to any annotated method of a command file (the parameters must go before command arguments).
 
+## Parameter Injection
+
+Just as this library will by default inject $input and/or $output at the head of the parameter list of any command function, it is also possible to add a handler to inject other objects as well.
+
+Given an implementation of SymfonyStyleInjector similar to the example below:
+```
+use Consolidation\AnnotatedCommand\ParameterInjector
+
+class SymfonyStyleInjector implements ParameterInjector
+{
+    public function get(CommandData $commandData, $interfaceName)
+    {
+        return new MySymfonyStyle($commandData->input(), $commandData->output());
+    }
+}
+```
+Then, an instance of 'MySymfonyStyle' will be provided to any command handler method that takes a SymfonyStyle parameter if the SymfonyStyleInjector is registered in your application's initialization code like so:
+```
+$commandProcessor->parameterInjection()->register('Symfony\Component\Console\Style\SymfonyStyle', new SymfonyStyleInjector);
+```
+
+## Handling Standard Input
+
+Any Symfony command may use the provides StdinHandler to imlement commands that read from standard input.
+
+```php
+  /**
+   * @command example
+   * @option string $file
+   * @default $file -
+   */
+  public function example(InputInterface $input)
+  {
+      $data = StdinHandler::selectStream($input, 'file')->contents();
+  }
+```
+This example will read all of the data available from the stdin stream into $data, or, alternately, will read the entire contents of the file specified via the `--file=/path` option.
+
+For more details, including examples of using the StdinHandle with a DI container, see the comments in [StdinHandler.php](src/Input/StdinHandler.php).
+
 ## API Usage
 
 If you would like to use Annotated Commands to build a commandline tool, it is recommended that you use [Robo as a framework](http://robo.li/framework), as it will set up all of the various command classes for you. If you would like to integrate Annotated Commands into some other framework, see the sections below.
@@ -496,7 +581,7 @@ Listeners can be used to construct command file instances as they are provided t
 
 ### Option Providers
 
-An option provider is given an opportunity to add options to a command as it is being constructed.  
+An option provider is given an opportunity to add options to a command as it is being constructed.
 ```
 public function AnnotatedCommandFactory::addAutomaticOptionProvider(AutomaticOptionsProviderInterface $listener);
 ```
@@ -508,7 +593,3 @@ CommandInfo alterers can adjust information about a command immediately before i
 ```
 public function alterCommandInfo(CommandInfo $commandInfo, $commandFileInstance);
 ```
-
-## Comparison to Existing Solutions
-
-The existing solutions used their own hand-rolled regex-based parsers to process the contents of the DocBlock comments. consolidation/annotated-command uses the [phpdocumentor/reflection-docblock](https://github.com/phpDocumentor/ReflectionDocBlock) project (which is itself a regex-based parser) to interpret DocBlock contents. 
diff --git a/vendor/consolidation/annotated-command/composer.json b/vendor/consolidation/annotated-command/composer.json
index 8bce736854..27e7f7e6cf 100644
--- a/vendor/consolidation/annotated-command/composer.json
+++ b/vendor/consolidation/annotated-command/composer.json
@@ -19,8 +19,8 @@
         }
     },
     "require": {
-        "php": ">=5.4.0",
-        "consolidation/output-formatters": "^3.1.12",
+        "php": ">=5.4.5",
+        "consolidation/output-formatters": "^3.4",
         "psr/log": "^1",
         "symfony/console": "^2.8|^3|^4",
         "symfony/event-dispatcher": "^2.5|^3|^4",
@@ -28,8 +28,8 @@
     },
     "require-dev": {
         "phpunit/phpunit": "^6",
-        "satooshi/php-coveralls": "^2",
-        "g1a/composer-test-scenarios": "^2",
+        "php-coveralls/php-coveralls": "^1",
+        "g1a/composer-test-scenarios": "^3",
         "squizlabs/php_codesniffer": "^2.7"
     },
     "config": {
@@ -51,16 +51,53 @@
             "@lint",
             "@unit",
             "@cs"
-        ],
-        "scenario": "scenarios/install",
-        "post-update-cmd": [
-            "create-scenario symfony4 'symfony/console:^4.0' --platform-php '7.1.3'",
-            "create-scenario symfony2 'symfony/console:^2.8' 'phpunit/phpunit:^4.8.36' --remove 'satooshi/php-coveralls' --platform-php '5.4' --no-lockfile",
-            "create-scenario phpunit4 'phpunit/phpunit:^4.8.36' --remove 'satooshi/php-coveralls' --platform-php '5.4'",
-            "dependency-licenses"
         ]
     },
     "extra": {
+        "scenarios": {
+            "symfony4": {
+                "require": {
+                    "symfony/console": "^4.0"
+                },
+                "config": {
+                    "platform": {
+                        "php": "7.1.3"
+                    }
+                }
+            },
+            "symfony2": {
+                "require": {
+                    "symfony/console": "^2.8"
+                },
+                "require-dev": {
+                    "phpunit/phpunit": "^4.8.36"
+                },
+                "remove": [
+                    "php-coveralls/php-coveralls"
+                ],
+                "config": {
+                    "platform": {
+                        "php": "5.4.8"
+                    }
+                },
+                "scenario-options": {
+                    "create-lockfile": "false"
+                }
+            },
+            "phpunit4": {
+                "require-dev": {
+                    "phpunit/phpunit": "^4.8.36"
+                },
+                "remove": [
+                    "php-coveralls/php-coveralls"
+                ],
+                "config": {
+                    "platform": {
+                        "php": "5.4.8"
+                    }
+                }
+            }
+        },
         "branch-alias": {
             "dev-master": "2.x-dev"
         }
diff --git a/vendor/consolidation/annotated-command/composer.lock b/vendor/consolidation/annotated-command/composer.lock
index 0a102e5a65..6cac1772cd 100644
--- a/vendor/consolidation/annotated-command/composer.lock
+++ b/vendor/consolidation/annotated-command/composer.lock
@@ -4,29 +4,30 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "180dd9d3779b6c35cdb29faac7f66db3",
+    "content-hash": "24232be7f7d45a8b43acde7b26f7f144",
     "packages": [
         {
             "name": "consolidation/output-formatters",
-            "version": "3.2.0",
+            "version": "3.4.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/consolidation/output-formatters.git",
-                "reference": "da889e4bce19f145ca4ec5b1725a946f4eb625a9"
+                "reference": "a942680232094c4a5b21c0b7e54c20cce623ae19"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/da889e4bce19f145ca4ec5b1725a946f4eb625a9",
-                "reference": "da889e4bce19f145ca4ec5b1725a946f4eb625a9",
+                "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/a942680232094c4a5b21c0b7e54c20cce623ae19",
+                "reference": "a942680232094c4a5b21c0b7e54c20cce623ae19",
                 "shasum": ""
             },
             "require": {
+                "dflydev/dot-access-data": "^1.1.0",
                 "php": ">=5.4.0",
                 "symfony/console": "^2.8|^3|^4",
                 "symfony/finder": "^2.5|^3|^4"
             },
             "require-dev": {
-                "g-1-a/composer-test-scenarios": "^2",
+                "g1a/composer-test-scenarios": "^2",
                 "phpunit/phpunit": "^5.7.27",
                 "satooshi/php-coveralls": "^2",
                 "squizlabs/php_codesniffer": "^2.7",
@@ -59,20 +60,79 @@
                 }
             ],
             "description": "Format text by applying transformations provided by plug-in formatters.",
-            "time": "2018-03-20T15:18:32+00:00"
+            "time": "2018-10-19T22:35:38+00:00"
+        },
+        {
+            "name": "dflydev/dot-access-data",
+            "version": "v1.1.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/dflydev/dflydev-dot-access-data.git",
+                "reference": "3fbd874921ab2c041e899d044585a2ab9795df8a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/3fbd874921ab2c041e899d044585a2ab9795df8a",
+                "reference": "3fbd874921ab2c041e899d044585a2ab9795df8a",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.2"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Dflydev\\DotAccessData": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Dragonfly Development Inc.",
+                    "email": "info@dflydev.com",
+                    "homepage": "http://dflydev.com"
+                },
+                {
+                    "name": "Beau Simensen",
+                    "email": "beau@dflydev.com",
+                    "homepage": "http://beausimensen.com"
+                },
+                {
+                    "name": "Carlos Frutos",
+                    "email": "carlos@kiwing.it",
+                    "homepage": "https://github.com/cfrutos"
+                }
+            ],
+            "description": "Given a deep data structure, access data by dot notation.",
+            "homepage": "https://github.com/dflydev/dflydev-dot-access-data",
+            "keywords": [
+                "access",
+                "data",
+                "dot",
+                "notation"
+            ],
+            "time": "2017-01-20T21:14:22+00:00"
         },
         {
             "name": "psr/log",
-            "version": "1.0.2",
+            "version": "1.1.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/php-fig/log.git",
-                "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d"
+                "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
-                "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
+                "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
+                "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
                 "shasum": ""
             },
             "require": {
@@ -106,20 +166,20 @@
                 "psr",
                 "psr-3"
             ],
-            "time": "2016-10-10T12:19:37+00:00"
+            "time": "2018-11-20T15:27:04+00:00"
         },
         {
             "name": "symfony/console",
-            "version": "v3.4.11",
+            "version": "v3.4.21",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/console.git",
-                "reference": "36f83f642443c46f3cf751d4d2ee5d047d757a27"
+                "reference": "a700b874d3692bc8342199adfb6d3b99f62cc61a"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/console/zipball/36f83f642443c46f3cf751d4d2ee5d047d757a27",
-                "reference": "36f83f642443c46f3cf751d4d2ee5d047d757a27",
+                "url": "https://api.github.com/repos/symfony/console/zipball/a700b874d3692bc8342199adfb6d3b99f62cc61a",
+                "reference": "a700b874d3692bc8342199adfb6d3b99f62cc61a",
                 "shasum": ""
             },
             "require": {
@@ -175,20 +235,20 @@
             ],
             "description": "Symfony Console Component",
             "homepage": "https://symfony.com",
-            "time": "2018-05-16T08:49:21+00:00"
+            "time": "2019-01-04T04:42:43+00:00"
         },
         {
             "name": "symfony/debug",
-            "version": "v3.4.11",
+            "version": "v3.4.21",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/debug.git",
-                "reference": "b28fd73fefbac341f673f5efd707d539d6a19f68"
+                "reference": "26d7f23b9bd0b93bee5583e4d6ca5cb1ab31b186"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/debug/zipball/b28fd73fefbac341f673f5efd707d539d6a19f68",
-                "reference": "b28fd73fefbac341f673f5efd707d539d6a19f68",
+                "url": "https://api.github.com/repos/symfony/debug/zipball/26d7f23b9bd0b93bee5583e4d6ca5cb1ab31b186",
+                "reference": "26d7f23b9bd0b93bee5583e4d6ca5cb1ab31b186",
                 "shasum": ""
             },
             "require": {
@@ -231,20 +291,20 @@
             ],
             "description": "Symfony Debug Component",
             "homepage": "https://symfony.com",
-            "time": "2018-05-16T14:03:39+00:00"
+            "time": "2019-01-01T13:45:19+00:00"
         },
         {
             "name": "symfony/event-dispatcher",
-            "version": "v3.4.11",
+            "version": "v3.4.21",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/event-dispatcher.git",
-                "reference": "fdd5abcebd1061ec647089c6c41a07ed60af09f8"
+                "reference": "d1cdd46c53c264a2bd42505bd0e8ce21423bd0e2"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/fdd5abcebd1061ec647089c6c41a07ed60af09f8",
-                "reference": "fdd5abcebd1061ec647089c6c41a07ed60af09f8",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d1cdd46c53c264a2bd42505bd0e8ce21423bd0e2",
+                "reference": "d1cdd46c53c264a2bd42505bd0e8ce21423bd0e2",
                 "shasum": ""
             },
             "require": {
@@ -294,20 +354,20 @@
             ],
             "description": "Symfony EventDispatcher Component",
             "homepage": "https://symfony.com",
-            "time": "2018-04-06T07:35:25+00:00"
+            "time": "2019-01-01T18:08:36+00:00"
         },
         {
             "name": "symfony/finder",
-            "version": "v3.4.11",
+            "version": "v3.4.21",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/finder.git",
-                "reference": "472a92f3df8b247b49ae364275fb32943b9656c6"
+                "reference": "3f2a2ab6315dd7682d4c16dcae1e7b95c8b8555e"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/finder/zipball/472a92f3df8b247b49ae364275fb32943b9656c6",
-                "reference": "472a92f3df8b247b49ae364275fb32943b9656c6",
+                "url": "https://api.github.com/repos/symfony/finder/zipball/3f2a2ab6315dd7682d4c16dcae1e7b95c8b8555e",
+                "reference": "3f2a2ab6315dd7682d4c16dcae1e7b95c8b8555e",
                 "shasum": ""
             },
             "require": {
@@ -343,20 +403,20 @@
             ],
             "description": "Symfony Finder Component",
             "homepage": "https://symfony.com",
-            "time": "2018-05-16T08:49:21+00:00"
+            "time": "2019-01-01T13:45:19+00:00"
         },
         {
             "name": "symfony/polyfill-mbstring",
-            "version": "v1.8.0",
+            "version": "v1.10.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-mbstring.git",
-                "reference": "3296adf6a6454a050679cde90f95350ad604b171"
+                "reference": "c79c051f5b3a46be09205c73b80b346e4153e494"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/3296adf6a6454a050679cde90f95350ad604b171",
-                "reference": "3296adf6a6454a050679cde90f95350ad604b171",
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494",
+                "reference": "c79c051f5b3a46be09205c73b80b346e4153e494",
                 "shasum": ""
             },
             "require": {
@@ -368,7 +428,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.8-dev"
+                    "dev-master": "1.9-dev"
                 }
             },
             "autoload": {
@@ -402,7 +462,7 @@
                 "portable",
                 "shim"
             ],
-            "time": "2018-04-26T10:06:28+00:00"
+            "time": "2018-09-21T13:07:52+00:00"
         }
     ],
     "packages-dev": [
@@ -462,76 +522,41 @@
         },
         {
             "name": "g1a/composer-test-scenarios",
-            "version": "2.0.1",
+            "version": "3.0.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/g1a/composer-test-scenarios.git",
-                "reference": "d9a7619f6e1c01498fad19c34539bd5b0d2506ef"
+                "reference": "224531e20d13a07942a989a70759f726cd2df9a1"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/g1a/composer-test-scenarios/zipball/d9a7619f6e1c01498fad19c34539bd5b0d2506ef",
-                "reference": "d9a7619f6e1c01498fad19c34539bd5b0d2506ef",
-                "shasum": ""
-            },
-            "bin": [
-                "scripts/create-scenario",
-                "scripts/dependency-licenses",
-                "scripts/install-scenario"
-            ],
-            "type": "library",
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Greg Anderson",
-                    "email": "greg.1.anderson@greenknowe.org"
-                }
-            ],
-            "description": "Useful scripts for testing multiple sets of Composer dependencies.",
-            "time": "2018-05-25T16:45:48+00:00"
-        },
-        {
-            "name": "guzzlehttp/guzzle",
-            "version": "6.3.3",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/guzzle/guzzle.git",
-                "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba",
-                "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba",
+                "url": "https://api.github.com/repos/g1a/composer-test-scenarios/zipball/224531e20d13a07942a989a70759f726cd2df9a1",
+                "reference": "224531e20d13a07942a989a70759f726cd2df9a1",
                 "shasum": ""
             },
             "require": {
-                "guzzlehttp/promises": "^1.0",
-                "guzzlehttp/psr7": "^1.4",
-                "php": ">=5.5"
+                "composer-plugin-api": "^1.0.0",
+                "php": ">=5.4"
             },
             "require-dev": {
-                "ext-curl": "*",
-                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
-                "psr/log": "^1.0"
-            },
-            "suggest": {
-                "psr/log": "Required for using the Log middleware"
+                "composer/composer": "^1.7",
+                "php-coveralls/php-coveralls": "^1.0",
+                "phpunit/phpunit": "^4.8.36|^6",
+                "squizlabs/php_codesniffer": "^2.8"
             },
-            "type": "library",
+            "bin": [
+                "scripts/dependency-licenses"
+            ],
+            "type": "composer-plugin",
             "extra": {
+                "class": "ComposerTestScenarios\\Plugin",
                 "branch-alias": {
-                    "dev-master": "6.3-dev"
+                    "dev-master": "3.x-dev"
                 }
             },
             "autoload": {
-                "files": [
-                    "src/functions_include.php"
-                ],
                 "psr-4": {
-                    "GuzzleHttp\\": "src/"
+                    "ComposerTestScenarios\\": "src/"
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -540,113 +565,77 @@
             ],
             "authors": [
                 {
-                    "name": "Michael Dowling",
-                    "email": "mtdowling@gmail.com",
-                    "homepage": "https://github.com/mtdowling"
+                    "name": "Greg Anderson",
+                    "email": "greg.1.anderson@greenknowe.org"
                 }
             ],
-            "description": "Guzzle is a PHP HTTP client library",
-            "homepage": "http://guzzlephp.org/",
-            "keywords": [
-                "client",
-                "curl",
-                "framework",
-                "http",
-                "http client",
-                "rest",
-                "web service"
-            ],
-            "time": "2018-04-22T15:46:56+00:00"
+            "description": "Useful scripts for testing multiple sets of Composer dependencies.",
+            "time": "2018-11-27T05:58:39+00:00"
         },
         {
-            "name": "guzzlehttp/promises",
-            "version": "v1.3.1",
+            "name": "guzzle/guzzle",
+            "version": "v3.8.1",
             "source": {
                 "type": "git",
-                "url": "https://github.com/guzzle/promises.git",
-                "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646"
+                "url": "https://github.com/guzzle/guzzle.git",
+                "reference": "4de0618a01b34aa1c8c33a3f13f396dcd3882eba"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646",
-                "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646",
+                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/4de0618a01b34aa1c8c33a3f13f396dcd3882eba",
+                "reference": "4de0618a01b34aa1c8c33a3f13f396dcd3882eba",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.5.0"
+                "ext-curl": "*",
+                "php": ">=5.3.3",
+                "symfony/event-dispatcher": ">=2.1"
+            },
+            "replace": {
+                "guzzle/batch": "self.version",
+                "guzzle/cache": "self.version",
+                "guzzle/common": "self.version",
+                "guzzle/http": "self.version",
+                "guzzle/inflection": "self.version",
+                "guzzle/iterator": "self.version",
+                "guzzle/log": "self.version",
+                "guzzle/parser": "self.version",
+                "guzzle/plugin": "self.version",
+                "guzzle/plugin-async": "self.version",
+                "guzzle/plugin-backoff": "self.version",
+                "guzzle/plugin-cache": "self.version",
+                "guzzle/plugin-cookie": "self.version",
+                "guzzle/plugin-curlauth": "self.version",
+                "guzzle/plugin-error-response": "self.version",
+                "guzzle/plugin-history": "self.version",
+                "guzzle/plugin-log": "self.version",
+                "guzzle/plugin-md5": "self.version",
+                "guzzle/plugin-mock": "self.version",
+                "guzzle/plugin-oauth": "self.version",
+                "guzzle/service": "self.version",
+                "guzzle/stream": "self.version"
             },
             "require-dev": {
-                "phpunit/phpunit": "^4.0"
+                "doctrine/cache": "*",
+                "monolog/monolog": "1.*",
+                "phpunit/phpunit": "3.7.*",
+                "psr/log": "1.0.*",
+                "symfony/class-loader": "*",
+                "zendframework/zend-cache": "<2.3",
+                "zendframework/zend-log": "<2.3"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.4-dev"
+                    "dev-master": "3.8-dev"
                 }
             },
             "autoload": {
-                "psr-4": {
-                    "GuzzleHttp\\Promise\\": "src/"
-                },
-                "files": [
-                    "src/functions_include.php"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Michael Dowling",
-                    "email": "mtdowling@gmail.com",
-                    "homepage": "https://github.com/mtdowling"
-                }
-            ],
-            "description": "Guzzle promises library",
-            "keywords": [
-                "promise"
-            ],
-            "time": "2016-12-20T10:07:11+00:00"
-        },
-        {
-            "name": "guzzlehttp/psr7",
-            "version": "1.4.2",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/guzzle/psr7.git",
-                "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/guzzle/psr7/zipball/f5b8a8512e2b58b0071a7280e39f14f72e05d87c",
-                "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.4.0",
-                "psr/http-message": "~1.0"
-            },
-            "provide": {
-                "psr/http-message-implementation": "1.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~4.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.4-dev"
+                "psr-0": {
+                    "Guzzle": "src/",
+                    "Guzzle\\Tests": "tests/"
                 }
             },
-            "autoload": {
-                "psr-4": {
-                    "GuzzleHttp\\Psr7\\": "src/"
-                },
-                "files": [
-                    "src/functions_include.php"
-                ]
-            },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "MIT"
@@ -658,21 +647,23 @@
                     "homepage": "https://github.com/mtdowling"
                 },
                 {
-                    "name": "Tobias Schultze",
-                    "homepage": "https://github.com/Tobion"
+                    "name": "Guzzle Community",
+                    "homepage": "https://github.com/guzzle/guzzle/contributors"
                 }
             ],
-            "description": "PSR-7 message implementation that also provides common utility methods",
+            "description": "Guzzle is a PHP HTTP client library and framework for building RESTful web service clients",
+            "homepage": "http://guzzlephp.org/",
             "keywords": [
+                "client",
+                "curl",
+                "framework",
                 "http",
-                "message",
-                "request",
-                "response",
-                "stream",
-                "uri",
-                "url"
-            ],
-            "time": "2017-03-20T17:10:46+00:00"
+                "http client",
+                "rest",
+                "web service"
+            ],
+            "abandoned": "guzzlehttp/guzzle",
+            "time": "2014-01-28T22:29:15+00:00"
         },
         {
             "name": "myclabs/deep-copy",
@@ -821,6 +812,67 @@
             "description": "Library for handling version information and constraints",
             "time": "2017-03-05T17:38:23+00:00"
         },
+        {
+            "name": "php-coveralls/php-coveralls",
+            "version": "v1.1.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-coveralls/php-coveralls.git",
+                "reference": "37f8f83fe22224eb9d9c6d593cdeb33eedd2a9ad"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-coveralls/php-coveralls/zipball/37f8f83fe22224eb9d9c6d593cdeb33eedd2a9ad",
+                "reference": "37f8f83fe22224eb9d9c6d593cdeb33eedd2a9ad",
+                "shasum": ""
+            },
+            "require": {
+                "ext-json": "*",
+                "ext-simplexml": "*",
+                "guzzle/guzzle": "^2.8 || ^3.0",
+                "php": "^5.3.3 || ^7.0",
+                "psr/log": "^1.0",
+                "symfony/config": "^2.1 || ^3.0 || ^4.0",
+                "symfony/console": "^2.1 || ^3.0 || ^4.0",
+                "symfony/stopwatch": "^2.0 || ^3.0 || ^4.0",
+                "symfony/yaml": "^2.0 || ^3.0 || ^4.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.8.35 || ^5.4.3 || ^6.0"
+            },
+            "suggest": {
+                "symfony/http-kernel": "Allows Symfony integration"
+            },
+            "bin": [
+                "bin/coveralls"
+            ],
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Satooshi\\": "src/Satooshi/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Kitamura Satoshi",
+                    "email": "with.no.parachute@gmail.com",
+                    "homepage": "https://www.facebook.com/satooshi.jp"
+                }
+            ],
+            "description": "PHP client library for Coveralls API",
+            "homepage": "https://github.com/php-coveralls/php-coveralls",
+            "keywords": [
+                "ci",
+                "coverage",
+                "github",
+                "test"
+            ],
+            "time": "2017-12-06T23:17:56+00:00"
+        },
         {
             "name": "phpdocumentor/reflection-common",
             "version": "1.0.1",
@@ -975,16 +1027,16 @@
         },
         {
             "name": "phpspec/prophecy",
-            "version": "1.7.6",
+            "version": "1.8.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpspec/prophecy.git",
-                "reference": "33a7e3c4fda54e912ff6338c48823bd5c0f0b712"
+                "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/33a7e3c4fda54e912ff6338c48823bd5c0f0b712",
-                "reference": "33a7e3c4fda54e912ff6338c48823bd5c0f0b712",
+                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
+                "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
                 "shasum": ""
             },
             "require": {
@@ -996,12 +1048,12 @@
             },
             "require-dev": {
                 "phpspec/phpspec": "^2.5|^3.2",
-                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5"
+                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.7.x-dev"
+                    "dev-master": "1.8.x-dev"
                 }
             },
             "autoload": {
@@ -1034,7 +1086,7 @@
                 "spy",
                 "stub"
             ],
-            "time": "2018-04-18T13:57:24+00:00"
+            "time": "2018-08-05T17:53:17+00:00"
         },
         {
             "name": "phpunit/php-code-coverage",
@@ -1287,16 +1339,16 @@
         },
         {
             "name": "phpunit/phpunit",
-            "version": "6.5.8",
+            "version": "6.5.13",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/phpunit.git",
-                "reference": "4f21a3c6b97c42952fd5c2837bb354ec0199b97b"
+                "reference": "0973426fb012359b2f18d3bd1e90ef1172839693"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/4f21a3c6b97c42952fd5c2837bb354ec0199b97b",
-                "reference": "4f21a3c6b97c42952fd5c2837bb354ec0199b97b",
+                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0973426fb012359b2f18d3bd1e90ef1172839693",
+                "reference": "0973426fb012359b2f18d3bd1e90ef1172839693",
                 "shasum": ""
             },
             "require": {
@@ -1314,7 +1366,7 @@
                 "phpunit/php-file-iterator": "^1.4.3",
                 "phpunit/php-text-template": "^1.2.1",
                 "phpunit/php-timer": "^1.0.9",
-                "phpunit/phpunit-mock-objects": "^5.0.5",
+                "phpunit/phpunit-mock-objects": "^5.0.9",
                 "sebastian/comparator": "^2.1",
                 "sebastian/diff": "^2.0",
                 "sebastian/environment": "^3.1",
@@ -1367,20 +1419,20 @@
                 "testing",
                 "xunit"
             ],
-            "time": "2018-04-10T11:38:34+00:00"
+            "time": "2018-09-08T15:10:43+00:00"
         },
         {
             "name": "phpunit/phpunit-mock-objects",
-            "version": "5.0.6",
+            "version": "5.0.10",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
-                "reference": "33fd41a76e746b8fa96d00b49a23dadfa8334cdf"
+                "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/33fd41a76e746b8fa96d00b49a23dadfa8334cdf",
-                "reference": "33fd41a76e746b8fa96d00b49a23dadfa8334cdf",
+                "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/cd1cf05c553ecfec36b170070573e540b67d3f1f",
+                "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f",
                 "shasum": ""
             },
             "require": {
@@ -1393,7 +1445,7 @@
                 "phpunit/phpunit": "<6.0"
             },
             "require-dev": {
-                "phpunit/phpunit": "^6.5"
+                "phpunit/phpunit": "^6.5.11"
             },
             "suggest": {
                 "ext-soap": "*"
@@ -1426,140 +1478,7 @@
                 "mock",
                 "xunit"
             ],
-            "time": "2018-01-06T05:45:45+00:00"
-        },
-        {
-            "name": "psr/http-message",
-            "version": "1.0.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/php-fig/http-message.git",
-                "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
-                "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Psr\\Http\\Message\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "PHP-FIG",
-                    "homepage": "http://www.php-fig.org/"
-                }
-            ],
-            "description": "Common interface for HTTP messages",
-            "homepage": "https://github.com/php-fig/http-message",
-            "keywords": [
-                "http",
-                "http-message",
-                "psr",
-                "psr-7",
-                "request",
-                "response"
-            ],
-            "time": "2016-08-06T14:39:51+00:00"
-        },
-        {
-            "name": "satooshi/php-coveralls",
-            "version": "v2.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/php-coveralls/php-coveralls.git",
-                "reference": "3eaf7eb689cdf6b86801a3843940d974dc657068"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/php-coveralls/php-coveralls/zipball/3eaf7eb689cdf6b86801a3843940d974dc657068",
-                "reference": "3eaf7eb689cdf6b86801a3843940d974dc657068",
-                "shasum": ""
-            },
-            "require": {
-                "ext-json": "*",
-                "ext-simplexml": "*",
-                "guzzlehttp/guzzle": "^6.0",
-                "php": "^5.5 || ^7.0",
-                "psr/log": "^1.0",
-                "symfony/config": "^2.1 || ^3.0 || ^4.0",
-                "symfony/console": "^2.1 || ^3.0 || ^4.0",
-                "symfony/stopwatch": "^2.0 || ^3.0 || ^4.0",
-                "symfony/yaml": "^2.0 || ^3.0 || ^4.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^4.8.35 || ^5.4.3 || ^6.0"
-            },
-            "suggest": {
-                "symfony/http-kernel": "Allows Symfony integration"
-            },
-            "bin": [
-                "bin/php-coveralls"
-            ],
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.0-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "PhpCoveralls\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Kitamura Satoshi",
-                    "email": "with.no.parachute@gmail.com",
-                    "homepage": "https://www.facebook.com/satooshi.jp",
-                    "role": "Original creator"
-                },
-                {
-                    "name": "Takashi Matsuo",
-                    "email": "tmatsuo@google.com"
-                },
-                {
-                    "name": "Google Inc"
-                },
-                {
-                    "name": "Dariusz Ruminski",
-                    "email": "dariusz.ruminski@gmail.com",
-                    "homepage": "https://github.com/keradus"
-                },
-                {
-                    "name": "Contributors",
-                    "homepage": "https://github.com/php-coveralls/php-coveralls/graphs/contributors"
-                }
-            ],
-            "description": "PHP client library for Coveralls API",
-            "homepage": "https://github.com/php-coveralls/php-coveralls",
-            "keywords": [
-                "ci",
-                "coverage",
-                "github",
-                "test"
-            ],
-            "time": "2017-12-08T14:28:16+00:00"
+            "time": "2018-08-09T05:50:03+00:00"
         },
         {
             "name": "sebastian/code-unit-reverse-lookup",
@@ -2122,16 +2041,16 @@
         },
         {
             "name": "squizlabs/php_codesniffer",
-            "version": "2.9.1",
+            "version": "2.9.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
-                "reference": "dcbed1074f8244661eecddfc2a675430d8d33f62"
+                "reference": "2acf168de78487db620ab4bc524135a13cfe6745"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/dcbed1074f8244661eecddfc2a675430d8d33f62",
-                "reference": "dcbed1074f8244661eecddfc2a675430d8d33f62",
+                "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/2acf168de78487db620ab4bc524135a13cfe6745",
+                "reference": "2acf168de78487db620ab4bc524135a13cfe6745",
                 "shasum": ""
             },
             "require": {
@@ -2196,20 +2115,20 @@
                 "phpcs",
                 "standards"
             ],
-            "time": "2017-05-22T02:43:20+00:00"
+            "time": "2018-11-07T22:31:41+00:00"
         },
         {
             "name": "symfony/config",
-            "version": "v3.4.11",
+            "version": "v3.4.21",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/config.git",
-                "reference": "73e055cf2e6467715f187724a0347ea32079967c"
+                "reference": "17c5d8941eb75a03d19bc76a43757738632d87b3"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/config/zipball/73e055cf2e6467715f187724a0347ea32079967c",
-                "reference": "73e055cf2e6467715f187724a0347ea32079967c",
+                "url": "https://api.github.com/repos/symfony/config/zipball/17c5d8941eb75a03d19bc76a43757738632d87b3",
+                "reference": "17c5d8941eb75a03d19bc76a43757738632d87b3",
                 "shasum": ""
             },
             "require": {
@@ -2260,20 +2179,20 @@
             ],
             "description": "Symfony Config Component",
             "homepage": "https://symfony.com",
-            "time": "2018-05-14T16:49:53+00:00"
+            "time": "2019-01-01T13:45:19+00:00"
         },
         {
             "name": "symfony/filesystem",
-            "version": "v3.4.11",
+            "version": "v3.4.21",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/filesystem.git",
-                "reference": "8e03ca3fa52a0f56b87506f38cf7bd3f9442b3a0"
+                "reference": "c24ce3d18ccc9bb9d7e1d6ce9330fcc6061cafde"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/filesystem/zipball/8e03ca3fa52a0f56b87506f38cf7bd3f9442b3a0",
-                "reference": "8e03ca3fa52a0f56b87506f38cf7bd3f9442b3a0",
+                "url": "https://api.github.com/repos/symfony/filesystem/zipball/c24ce3d18ccc9bb9d7e1d6ce9330fcc6061cafde",
+                "reference": "c24ce3d18ccc9bb9d7e1d6ce9330fcc6061cafde",
                 "shasum": ""
             },
             "require": {
@@ -2310,29 +2229,32 @@
             ],
             "description": "Symfony Filesystem Component",
             "homepage": "https://symfony.com",
-            "time": "2018-05-16T08:49:21+00:00"
+            "time": "2019-01-01T13:45:19+00:00"
         },
         {
             "name": "symfony/polyfill-ctype",
-            "version": "v1.8.0",
+            "version": "v1.10.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-ctype.git",
-                "reference": "7cc359f1b7b80fc25ed7796be7d96adc9b354bae"
+                "reference": "e3d826245268269cd66f8326bd8bc066687b4a19"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/7cc359f1b7b80fc25ed7796be7d96adc9b354bae",
-                "reference": "7cc359f1b7b80fc25ed7796be7d96adc9b354bae",
+                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19",
+                "reference": "e3d826245268269cd66f8326bd8bc066687b4a19",
                 "shasum": ""
             },
             "require": {
                 "php": ">=5.3.3"
             },
+            "suggest": {
+                "ext-ctype": "For best performance"
+            },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.8-dev"
+                    "dev-master": "1.9-dev"
                 }
             },
             "autoload": {
@@ -2365,20 +2287,20 @@
                 "polyfill",
                 "portable"
             ],
-            "time": "2018-04-30T19:57:29+00:00"
+            "time": "2018-08-06T14:22:27+00:00"
         },
         {
             "name": "symfony/stopwatch",
-            "version": "v3.4.11",
+            "version": "v3.4.21",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/stopwatch.git",
-                "reference": "eb17cfa072cab26537ac37e9c4ece6c0361369af"
+                "reference": "af55d31cb58c5452d2c160655fa1968b872a8084"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/stopwatch/zipball/eb17cfa072cab26537ac37e9c4ece6c0361369af",
-                "reference": "eb17cfa072cab26537ac37e9c4ece6c0361369af",
+                "url": "https://api.github.com/repos/symfony/stopwatch/zipball/af55d31cb58c5452d2c160655fa1968b872a8084",
+                "reference": "af55d31cb58c5452d2c160655fa1968b872a8084",
                 "shasum": ""
             },
             "require": {
@@ -2414,20 +2336,20 @@
             ],
             "description": "Symfony Stopwatch Component",
             "homepage": "https://symfony.com",
-            "time": "2018-02-17T14:55:25+00:00"
+            "time": "2019-01-01T13:45:19+00:00"
         },
         {
             "name": "symfony/yaml",
-            "version": "v3.4.11",
+            "version": "v3.4.21",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/yaml.git",
-                "reference": "c5010cc1692ce1fa328b1fb666961eb3d4a85bb0"
+                "reference": "554a59a1ccbaac238a89b19c8e551a556fd0e2ea"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/yaml/zipball/c5010cc1692ce1fa328b1fb666961eb3d4a85bb0",
-                "reference": "c5010cc1692ce1fa328b1fb666961eb3d4a85bb0",
+                "url": "https://api.github.com/repos/symfony/yaml/zipball/554a59a1ccbaac238a89b19c8e551a556fd0e2ea",
+                "reference": "554a59a1ccbaac238a89b19c8e551a556fd0e2ea",
                 "shasum": ""
             },
             "require": {
@@ -2473,7 +2395,7 @@
             ],
             "description": "Symfony Yaml Component",
             "homepage": "https://symfony.com",
-            "time": "2018-05-03T23:18:14+00:00"
+            "time": "2019-01-01T13:45:19+00:00"
         },
         {
             "name": "theseer/tokenizer",
@@ -2517,20 +2439,21 @@
         },
         {
             "name": "webmozart/assert",
-            "version": "1.3.0",
+            "version": "1.4.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/webmozart/assert.git",
-                "reference": "0df1908962e7a3071564e857d86874dad1ef204a"
+                "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a",
-                "reference": "0df1908962e7a3071564e857d86874dad1ef204a",
+                "url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9",
+                "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.3.3 || ^7.0"
+                "php": "^5.3.3 || ^7.0",
+                "symfony/polyfill-ctype": "^1.8"
             },
             "require-dev": {
                 "phpunit/phpunit": "^4.6",
@@ -2563,7 +2486,7 @@
                 "check",
                 "validate"
             ],
-            "time": "2018-01-29T19:49:41+00:00"
+            "time": "2018-12-25T11:19:39+00:00"
         }
     ],
     "aliases": [],
@@ -2572,7 +2495,7 @@
     "prefer-stable": false,
     "prefer-lowest": false,
     "platform": {
-        "php": ">=5.4.0"
+        "php": ">=5.4.5"
     },
     "platform-dev": [],
     "platform-overrides": {
diff --git a/vendor/consolidation/annotated-command/dependencies.yml b/vendor/consolidation/annotated-command/dependencies.yml
new file mode 100644
index 0000000000..e6bc6c7eef
--- /dev/null
+++ b/vendor/consolidation/annotated-command/dependencies.yml
@@ -0,0 +1,10 @@
+version: 2
+dependencies:
+- type: php
+  path: /
+  settings:
+    composer_options: ""
+  manifest_updates:
+    filters:
+    - name: ".*"
+      versions: "L.Y.Y"
diff --git a/vendor/consolidation/annotated-command/phpunit.xml.dist b/vendor/consolidation/annotated-command/phpunit.xml.dist
index a35a5042f5..e680109d1d 100644
--- a/vendor/consolidation/annotated-command/phpunit.xml.dist
+++ b/vendor/consolidation/annotated-command/phpunit.xml.dist
@@ -1,7 +1,7 @@
 <phpunit bootstrap="vendor/autoload.php" colors="true">
   <testsuites>
     <testsuite name="annotation-command">
-      <directory prefix="test" suffix=".php">tests</directory>
+      <directory prefix="" suffix="Test.php">tests</directory>
     </testsuite>
   </testsuites>
   <logging>
diff --git a/vendor/consolidation/annotated-command/src/AnnotatedCommand.php b/vendor/consolidation/annotated-command/src/AnnotatedCommand.php
index 41be53a96a..40d26af5ce 100644
--- a/vendor/consolidation/annotated-command/src/AnnotatedCommand.php
+++ b/vendor/consolidation/annotated-command/src/AnnotatedCommand.php
@@ -9,6 +9,7 @@
 use Symfony\Component\Console\Input\InputInterface;
 use Symfony\Component\Console\Input\InputOption;
 use Symfony\Component\Console\Output\OutputInterface;
+use Consolidation\AnnotatedCommand\Help\HelpDocumentBuilder;
 
 /**
  * AnnotatedCommands are created automatically by the
@@ -32,9 +33,8 @@ class AnnotatedCommand extends Command implements HelpDocumentAlter
     protected $annotationData;
     protected $examples = [];
     protected $topics = [];
-    protected $usesInputInterface;
-    protected $usesOutputInterface;
     protected $returnType;
+    protected $injectedClasses = [];
 
     public function __construct($name = null)
     {
@@ -153,118 +153,16 @@ protected function addUsageOrExample($usage, $description)
 
     public function helpAlter(\DomDocument $originalDom)
     {
-        $dom = new \DOMDocument('1.0', 'UTF-8');
-        $dom->appendChild($commandXML = $dom->createElement('command'));
-        $commandXML->setAttribute('id', $this->getName());
-        $commandXML->setAttribute('name', $this->getName());
-
-        // Get the original <command> element and its top-level elements.
-        $originalCommandXML = $this->getSingleElementByTagName($dom, $originalDom, 'command');
-        $originalUsagesXML = $this->getSingleElementByTagName($dom, $originalCommandXML, 'usages');
-        $originalDescriptionXML = $this->getSingleElementByTagName($dom, $originalCommandXML, 'description');
-        $originalHelpXML = $this->getSingleElementByTagName($dom, $originalCommandXML, 'help');
-        $originalArgumentsXML = $this->getSingleElementByTagName($dom, $originalCommandXML, 'arguments');
-        $originalOptionsXML = $this->getSingleElementByTagName($dom, $originalCommandXML, 'options');
-
-        // Keep only the first of the <usage> elements
-        $newUsagesXML = $dom->createElement('usages');
-        $firstUsageXML = $this->getSingleElementByTagName($dom, $originalUsagesXML, 'usage');
-        $newUsagesXML->appendChild($firstUsageXML);
-
-        // Create our own <example> elements
-        $newExamplesXML = $dom->createElement('examples');
-        foreach ($this->examples as $usage => $description) {
-            $newExamplesXML->appendChild($exampleXML = $dom->createElement('example'));
-            $exampleXML->appendChild($usageXML = $dom->createElement('usage', $usage));
-            $exampleXML->appendChild($descriptionXML = $dom->createElement('description', $description));
-        }
-
-        // Create our own <alias> elements
-        $newAliasesXML = $dom->createElement('aliases');
-        foreach ($this->getAliases() as $alias) {
-            $newAliasesXML->appendChild($dom->createElement('alias', $alias));
-        }
-
-        // Create our own <topic> elements
-        $newTopicsXML = $dom->createElement('topics');
-        foreach ($this->getTopics() as $topic) {
-            $newTopicsXML->appendChild($topicXML = $dom->createElement('topic', $topic));
-        }
-
-        // Place the different elements into the <command> element in the desired order
-        $commandXML->appendChild($newUsagesXML);
-        $commandXML->appendChild($newExamplesXML);
-        $commandXML->appendChild($originalDescriptionXML);
-        $commandXML->appendChild($originalArgumentsXML);
-        $commandXML->appendChild($originalOptionsXML);
-        $commandXML->appendChild($originalHelpXML);
-        $commandXML->appendChild($newAliasesXML);
-        $commandXML->appendChild($newTopicsXML);
-
-        return $dom;
-    }
-
-    protected function getSingleElementByTagName($dom, $parent, $tagName)
-    {
-        // There should always be exactly one '<command>' element.
-        $elements = $parent->getElementsByTagName($tagName);
-        $result = $elements->item(0);
-
-        $result = $dom->importNode($result, true);
-
-        return $result;
+        return HelpDocumentBuilder::alter($originalDom, $this);
     }
 
     protected function setCommandArguments($commandInfo)
     {
-        $this->setUsesInputInterface($commandInfo);
-        $this->setUsesOutputInterface($commandInfo);
+        $this->injectedClasses = $commandInfo->getInjectedClasses();
         $this->setCommandArgumentsFromParameters($commandInfo);
         return $this;
     }
 
-    /**
-     * Check whether the first parameter is an InputInterface.
-     */
-    protected function checkUsesInputInterface($params)
-    {
-        /** @var \ReflectionParameter $firstParam */
-        $firstParam = reset($params);
-        return $firstParam && $firstParam->getClass() && $firstParam->getClass()->implementsInterface(
-            '\\Symfony\\Component\\Console\\Input\\InputInterface'
-        );
-    }
-
-    /**
-     * Determine whether this command wants to get its inputs
-     * via an InputInterface or via its command parameters
-     */
-    protected function setUsesInputInterface($commandInfo)
-    {
-        $params = $commandInfo->getParameters();
-        $this->usesInputInterface = $this->checkUsesInputInterface($params);
-        return $this;
-    }
-
-    /**
-     * Determine whether this command wants to send its output directly
-     * to the provided OutputInterface, or whether it will returned
-     * structured output to be processed by the command processor.
-     */
-    protected function setUsesOutputInterface($commandInfo)
-    {
-        $params = $commandInfo->getParameters();
-        $index = $this->checkUsesInputInterface($params) ? 1 : 0;
-        $this->usesOutputInterface =
-            (count($params) > $index) &&
-            $params[$index]->getClass() &&
-            $params[$index]->getClass()->implementsInterface(
-                '\\Symfony\\Component\\Console\\Output\\OutputInterface'
-            )
-        ;
-        return $this;
-    }
-
     protected function setCommandArgumentsFromParameters($commandInfo)
     {
         $args = $commandInfo->arguments()->getValues();
@@ -437,10 +335,10 @@ protected function createCommandData(InputInterface $input, OutputInterface $out
             $output
         );
 
-        $commandData->setUseIOInterfaces(
-            $this->usesInputInterface,
-            $this->usesOutputInterface
-        );
+        // Fetch any classes (e.g. InputInterface / OutputInterface) that
+        // this command's callback wants passed as a parameter and inject
+        // it into the command data.
+        $this->commandProcessor()->injectIntoCommandData($commandData, $this->injectedClasses);
 
         // Allow the commandData to cache the list of options with
         // special default values ('null' and 'true'), as these will
diff --git a/vendor/consolidation/annotated-command/src/AnnotatedCommandFactory.php b/vendor/consolidation/annotated-command/src/AnnotatedCommandFactory.php
index abdd97276f..9f67ef6480 100644
--- a/vendor/consolidation/annotated-command/src/AnnotatedCommandFactory.php
+++ b/vendor/consolidation/annotated-command/src/AnnotatedCommandFactory.php
@@ -184,6 +184,9 @@ protected function storeCommandInfoListInCache($commandFileInstance, $commandInf
     protected function getCommandInfoListFromCache($commandFileInstance)
     {
         $commandInfoList = [];
+        if (!is_object($commandFileInstance)) {
+            return [];
+        }
         $className = get_class($commandFileInstance);
         if (!$this->getDataStore()->has($className)) {
             return [];
diff --git a/vendor/consolidation/annotated-command/src/AnnotationData.php b/vendor/consolidation/annotated-command/src/AnnotationData.php
index 0bcc8b29be..ad7523aacf 100644
--- a/vendor/consolidation/annotated-command/src/AnnotationData.php
+++ b/vendor/consolidation/annotated-command/src/AnnotationData.php
@@ -24,4 +24,21 @@ public function keys()
     {
         return array_keys($this->getArrayCopy());
     }
+
+    public function set($key, $value = '')
+    {
+        $this->offsetSet($key, $value);
+        return $this;
+    }
+
+    public function append($key, $value = '')
+    {
+        $data = $this->offsetGet($key);
+        if (is_array($data)) {
+            $this->offsetSet($key, array_merge($data, $value));
+        } elseif (is_scalar($data)) {
+            $this->offsetSet($key, $data . $value);
+        }
+        return $this;
+    }
 }
diff --git a/vendor/consolidation/annotated-command/src/CommandData.php b/vendor/consolidation/annotated-command/src/CommandData.php
index 4bdb620f57..ab142f01b3 100644
--- a/vendor/consolidation/annotated-command/src/CommandData.php
+++ b/vendor/consolidation/annotated-command/src/CommandData.php
@@ -1,6 +1,7 @@
 <?php
 namespace Consolidation\AnnotatedCommand;
 
+use Consolidation\OutputFormatters\Options\FormatterOptions;
 use Symfony\Component\Console\Input\ArgvInput;
 use Symfony\Component\Console\Input\InputInterface;
 use Symfony\Component\Console\Output\OutputInterface;
@@ -14,43 +15,44 @@ class CommandData
     /** var OutputInterface */
     protected $output;
     /** var boolean */
-    protected $usesInputInterface;
-    /** var boolean */
-    protected $usesOutputInterface;
-    /** var boolean */
     protected $includeOptionsInArgs;
     /** var array */
     protected $specialDefaults = [];
+    /** @var string[] */
+    protected $injectedInstances = [];
+    /** @var FormatterOptions */
+    protected $formatterOptions;
 
     public function __construct(
         AnnotationData $annotationData,
         InputInterface $input,
-        OutputInterface $output,
-        $usesInputInterface = false,
-        $usesOutputInterface = false
+        OutputInterface $output
     ) {
         $this->annotationData = $annotationData;
         $this->input = $input;
         $this->output = $output;
-        $this->usesInputInterface = false;
-        $this->usesOutputInterface = false;
         $this->includeOptionsInArgs = true;
     }
 
     /**
-     * For internal use only; indicates that the function to be called
-     * should be passed an InputInterface &/or an OutputInterface.
-     * @param booean $usesInputInterface
-     * @param boolean $usesOutputInterface
-     * @return self
+     * For internal use only; inject an instance to be passed back
+     * to the command callback as a parameter.
      */
-    public function setUseIOInterfaces($usesInputInterface, $usesOutputInterface)
+    public function injectInstance($injectedInstance)
     {
-        $this->usesInputInterface = $usesInputInterface;
-        $this->usesOutputInterface = $usesOutputInterface;
+        array_unshift($this->injectedInstances, $injectedInstance);
         return $this;
     }
 
+    /**
+     * Provide a reference to the instances that will be added to the
+     * beginning of the parameter list when the command callback is invoked.
+     */
+    public function injectedInstances()
+    {
+        return $this->injectedInstances;
+    }
+
     /**
      * For backwards-compatibility mode only: disable addition of
      * options on the end of the arguments list.
@@ -66,6 +68,16 @@ public function annotationData()
         return $this->annotationData;
     }
 
+    public function formatterOptions()
+    {
+        return $this->formatterOptions;
+    }
+
+    public function setFormatterOptions($formatterOptions)
+    {
+        $this->formatterOptions = $formatterOptions;
+    }
+
     public function input()
     {
         return $this->input;
@@ -174,14 +186,6 @@ public function getArgsWithoutAppName()
             array_shift($args);
         }
 
-        if ($this->usesOutputInterface) {
-            array_unshift($args, $this->output());
-        }
-
-        if ($this->usesInputInterface) {
-            array_unshift($args, $this->input());
-        }
-
         return $args;
     }
 
diff --git a/vendor/consolidation/annotated-command/src/CommandFileDiscovery.php b/vendor/consolidation/annotated-command/src/CommandFileDiscovery.php
index 06489fb086..bdcce7408f 100644
--- a/vendor/consolidation/annotated-command/src/CommandFileDiscovery.php
+++ b/vendor/consolidation/annotated-command/src/CommandFileDiscovery.php
@@ -27,6 +27,15 @@
  * To discover global commands:
  *
  * $commandFiles = $discovery->discover($drupalRoot, '\Drupal');
+ *
+ * WARNING:
+ *
+ * This class is deprecated. Commandfile discovery is complicated, and does
+ * not work from within phar files. It is recommended to instead use a static
+ * list of command classes as shown in https://github.com/g1a/starter/blob/master/example
+ *
+ * For a better alternative when implementing a plugin mechanism, see
+ * https://robo.li/extending/#register-command-files-via-psr-4-autoloading
  */
 class CommandFileDiscovery
 {
@@ -42,6 +51,8 @@ class CommandFileDiscovery
     protected $searchDepth = 2;
     /** @var bool */
     protected $followLinks = false;
+    /** @var string[] */
+    protected $strippedNamespaces;
 
     public function __construct()
     {
@@ -125,6 +136,32 @@ public function setSearchLocations($searchLocations)
         return $this;
     }
 
+    /**
+     * Set a particular namespace part to ignore. This is useful in plugin
+     * mechanisms where the plugin is placed by Composer.
+     *
+     * For example, Drush extensions are placed in `./drush/Commands`.
+     * If the Composer installer path is `"drush/Commands/contrib/{$name}": ["type:drupal-drush"]`,
+     * then Composer will place the command files in `drush/Commands/contrib`.
+     * The namespace should not be any different in this instance than if
+     * the extension were placed in `drush/Commands`, though, so Drush therefore
+     * calls `ignoreNamespacePart('contrib', 'Commands')`. This causes the
+     * `contrib` component to be removed from the namespace if it follows
+     * the namespace `Commands`. If the '$base' parameter is not specified, then
+     * the ignored portion of the namespace may appear anywhere in the path.
+     */
+    public function ignoreNamespacePart($ignore, $base = '')
+    {
+        $replacementPart = '\\';
+        if (!empty($base)) {
+            $replacementPart .= $base . '\\';
+        }
+        $ignoredPart = $replacementPart . $ignore . '\\';
+        $this->strippedNamespaces[$ignoredPart] = $replacementPart;
+
+        return $this;
+    }
+
     /**
      * Add one more location to the search location list.
      *
@@ -205,7 +242,32 @@ public function discover($directoryList, $baseNamespace = '')
                 $this->discoverCommandFiles("$directory/src", $itemsNamespace)
             );
         }
-        return $commandFiles;
+        return $this->fixNamespaces($commandFiles);
+    }
+
+    /**
+     * fixNamespaces will alter the namespaces in the commandFiles
+     * result to remove the Composer placement directory, if any.
+     */
+    protected function fixNamespaces($commandFiles)
+    {
+        // Do nothing unless the client told us to remove some namespace components.
+        if (empty($this->strippedNamespaces)) {
+            return $commandFiles;
+        }
+
+        // Strip out any part of the namespace the client did not want.
+        // @see CommandFileDiscovery::ignoreNamespacePart
+        return array_map(
+            function ($fqcn) {
+                return str_replace(
+                    array_keys($this->strippedNamespaces),
+                    array_values($this->strippedNamespaces),
+                    $fqcn
+                );
+            },
+            $commandFiles
+        );
     }
 
     /**
@@ -304,8 +366,8 @@ protected function discoverCommandFilesInLocation($directory, $depth, $baseNames
         foreach ($finder as $file) {
             $relativePathName = $file->getRelativePathname();
             $relativeNamespaceAndClassname = str_replace(
-                ['/', '.php'],
-                ['\\', ''],
+                ['/', '-', '.php'],
+                ['\\', '_', ''],
                 $relativePathName
             );
             $classname = $this->joinNamespace([$baseNamespace, $relativeNamespaceAndClassname]);
diff --git a/vendor/consolidation/annotated-command/src/CommandProcessor.php b/vendor/consolidation/annotated-command/src/CommandProcessor.php
index ab4ce45d1c..1d1e92da21 100644
--- a/vendor/consolidation/annotated-command/src/CommandProcessor.php
+++ b/vendor/consolidation/annotated-command/src/CommandProcessor.php
@@ -31,16 +31,18 @@ class CommandProcessor implements LoggerAwareInterface
 {
     use LoggerAwareTrait;
 
-    /** var HookManager */
+    /** @var HookManager */
     protected $hookManager;
-    /** var FormatterManager */
+    /** @var FormatterManager */
     protected $formatterManager;
-    /** var callable */
-    protected $displayErrorFunction;
-    /** var PrepareFormatterOptions[] */
+    /** @var PrepareFormatterOptions[] */
     protected $prepareOptionsList = [];
-    /** var boolean */
+    /** @var boolean */
     protected $passExceptions;
+    /** @var ResultWriter */
+    protected $resultWriter;
+    /** @var ParameterInjection */
+    protected $parameterInjection;
 
     public function __construct(HookManager $hookManager)
     {
@@ -56,6 +58,32 @@ public function hookManager()
         return $this->hookManager;
     }
 
+    public function resultWriter()
+    {
+        if (!$this->resultWriter) {
+            $this->setResultWriter(new ResultWriter());
+        }
+        return $this->resultWriter;
+    }
+
+    public function setResultWriter($resultWriter)
+    {
+        $this->resultWriter = $resultWriter;
+    }
+
+    public function parameterInjection()
+    {
+        if (!$this->parameterInjection) {
+            $this->setParameterInjection(new ParameterInjection());
+        }
+        return $this->parameterInjection;
+    }
+
+    public function setParameterInjection($parameterInjection)
+    {
+        $this->parameterInjection = $parameterInjection;
+    }
+
     public function addPrepareFormatter(PrepareFormatter $preparer)
     {
         $this->prepareOptionsList[] = $preparer;
@@ -64,13 +92,13 @@ public function addPrepareFormatter(PrepareFormatter $preparer)
     public function setFormatterManager(FormatterManager $formatterManager)
     {
         $this->formatterManager = $formatterManager;
+        $this->resultWriter()->setFormatterManager($formatterManager);
         return $this;
     }
 
     public function setDisplayErrorFunction(callable $fn)
     {
-        $this->displayErrorFunction = $fn;
-        return $this;
+        $this->resultWriter()->setDisplayErrorFunction($fn);
     }
 
     /**
@@ -169,6 +197,9 @@ public function validateRunAndAlter(
             return $validated;
         }
 
+        // Once we have validated the optins, create the formatter options.
+        $this->createFormatterOptions($commandData);
+
         $replaceDispatcher = new ReplaceCommandHookDispatcher($this->hookManager(), $names);
         if ($this->logger) {
             $replaceDispatcher->setLogger($this->logger);
@@ -188,119 +219,6 @@ public function processResults($names, $result, CommandData $commandData)
         return $processDispatcher->process($result, $commandData);
     }
 
-    /**
-     * Handle the result output and status code calculation.
-     */
-    public function handleResults(OutputInterface $output, $names, $result, CommandData $commandData)
-    {
-        $statusCodeDispatcher = new StatusDeterminerHookDispatcher($this->hookManager(), $names);
-        $status = $statusCodeDispatcher->determineStatusCode($result);
-        // If the result is an integer and no separate status code was provided, then use the result as the status and do no output.
-        if (is_integer($result) && !isset($status)) {
-            return $result;
-        }
-        $status = $this->interpretStatusCode($status);
-
-        // Get the structured output, the output stream and the formatter
-        $extractDispatcher = new ExtracterHookDispatcher($this->hookManager(), $names);
-        $structuredOutput = $extractDispatcher->extractOutput($result);
-        $output = $this->chooseOutputStream($output, $status);
-        if ($status != 0) {
-            return $this->writeErrorMessage($output, $status, $structuredOutput, $result);
-        }
-        if ($this->dataCanBeFormatted($structuredOutput) && isset($this->formatterManager)) {
-            return $this->writeUsingFormatter($output, $structuredOutput, $commandData);
-        }
-        return $this->writeCommandOutput($output, $structuredOutput);
-    }
-
-    protected function dataCanBeFormatted($structuredOutput)
-    {
-        if (!isset($this->formatterManager)) {
-            return false;
-        }
-        return
-            is_object($structuredOutput) ||
-            is_array($structuredOutput);
-    }
-
-    /**
-     * Run the main command callback
-     */
-    protected function runCommandCallback($commandCallback, CommandData $commandData)
-    {
-        $result = false;
-        try {
-            $args = $commandData->getArgsAndOptions();
-            $result = call_user_func_array($commandCallback, $args);
-        } catch (\Exception $e) {
-            $result = $this->commandErrorForException($e);
-        }
-        return $result;
-    }
-
-    /**
-     * Determine the formatter that should be used to render
-     * output.
-     *
-     * If the user specified a format via the --format option,
-     * then always return that.  Otherwise, return the default
-     * format, unless --pipe was specified, in which case
-     * return the default pipe format, format-pipe.
-     *
-     * n.b. --pipe is a handy option introduced in Drush 2
-     * (or perhaps even Drush 1) that indicates that the command
-     * should select the output format that is most appropriate
-     * for use in scripts (e.g. to pipe to another command).
-     *
-     * @return string
-     */
-    protected function getFormat(FormatterOptions $options)
-    {
-        // In Symfony Console, there is no way for us to differentiate
-        // between the user specifying '--format=table', and the user
-        // not specifying --format when the default value is 'table'.
-        // Therefore, we must make --field always override --format; it
-        // cannot become the default value for --format.
-        if ($options->get('field')) {
-            return 'string';
-        }
-        $defaults = [];
-        if ($options->get('pipe')) {
-            return $options->get('pipe-format', [], 'tsv');
-        }
-        return $options->getFormat($defaults);
-    }
-
-    /**
-     * Determine whether we should use stdout or stderr.
-     */
-    protected function chooseOutputStream(OutputInterface $output, $status)
-    {
-        // If the status code indicates an error, then print the
-        // result to stderr rather than stdout
-        if ($status && ($output instanceof ConsoleOutputInterface)) {
-            return $output->getErrorOutput();
-        }
-        return $output;
-    }
-
-    /**
-     * Call the formatter to output the provided data.
-     */
-    protected function writeUsingFormatter(OutputInterface $output, $structuredOutput, CommandData $commandData)
-    {
-        $formatterOptions = $this->createFormatterOptions($commandData);
-        $format = $this->getFormat($formatterOptions);
-        $this->formatterManager->write(
-            $output,
-            $format,
-            $structuredOutput,
-            $formatterOptions
-        );
-        return 0;
-    }
-
     /**
      * Create a FormatterOptions object for use in writing the formatted output.
      * @param CommandData $commandData
@@ -313,51 +231,38 @@ protected function createFormatterOptions($commandData)
         foreach ($this->prepareOptionsList as $preparer) {
             $preparer->prepare($commandData, $formatterOptions);
         }
+        $commandData->setFormatterOptions($formatterOptions);
         return $formatterOptions;
     }
 
     /**
-     * Description
-     * @param OutputInterface $output
-     * @param int $status
-     * @param string $structuredOutput
-     * @param mixed $originalResult
-     * @return type
+     * Handle the result output and status code calculation.
      */
-    protected function writeErrorMessage($output, $status, $structuredOutput, $originalResult)
+    public function handleResults(OutputInterface $output, $names, $result, CommandData $commandData)
     {
-        if (isset($this->displayErrorFunction)) {
-            call_user_func($this->displayErrorFunction, $output, $structuredOutput, $status, $originalResult);
-        } else {
-            $this->writeCommandOutput($output, $structuredOutput);
-        }
-        return $status;
+        $statusCodeDispatcher = new StatusDeterminerHookDispatcher($this->hookManager(), $names);
+        $extractDispatcher = new ExtracterHookDispatcher($this->hookManager(), $names);
+
+        return $this->resultWriter()->handle($output, $result, $commandData, $statusCodeDispatcher, $extractDispatcher);
     }
 
     /**
-     * If the result object is a string, then print it.
+     * Run the main command callback
      */
-    protected function writeCommandOutput(
-        OutputInterface $output,
-        $structuredOutput
-    ) {
-        // If there is no formatter, we will print strings,
-        // but can do no more than that.
-        if (is_string($structuredOutput)) {
-            $output->writeln($structuredOutput);
+    protected function runCommandCallback($commandCallback, CommandData $commandData)
+    {
+        $result = false;
+        try {
+            $args = $this->parameterInjection()->args($commandData);
+            $result = call_user_func_array($commandCallback, $args);
+        } catch (\Exception $e) {
+            $result = $this->commandErrorForException($e);
         }
-        return 0;
+        return $result;
     }
 
-    /**
-     * If a status code was set, then return it; otherwise,
-     * presume success.
-     */
-    protected function interpretStatusCode($status)
+    public function injectIntoCommandData($commandData, $injectedClasses)
     {
-        if (isset($status)) {
-            return $status;
-        }
-        return 0;
+        $this->parameterInjection()->injectIntoCommandData($commandData, $injectedClasses);
     }
 }
diff --git a/vendor/consolidation/annotated-command/src/CommandResult.php b/vendor/consolidation/annotated-command/src/CommandResult.php
new file mode 100644
index 0000000000..6b1a3f80bc
--- /dev/null
+++ b/vendor/consolidation/annotated-command/src/CommandResult.php
@@ -0,0 +1,71 @@
+<?php
+namespace Consolidation\AnnotatedCommand;
+
+/**
+ * Return a CommandResult as the result of a command to pass both an exit
+ * code and result data from a command.
+ *
+ * Usage:
+ *
+ *      return CommandResult::dataWithExitCode(new RowsOfFields($rows), 1);
+ *
+ * The CommandResult can also be used to unambiguously return just
+ * an exit code or just output data.
+ *
+ * Exit code only:
+ *
+ *      return CommandResult::dataWithExitCode(1);
+ *
+ * Data only:
+ *
+ *      return CommandResult::data(new RowsOfFields($rows));
+ *
+ * Historically, it has always been possible to return an integer to indicate
+ * that the result is an exit code, and other return types (typically array
+ * / ArrayObjects) indicating actual data with an implicit exit code of 0.
+ * Using a CommandResult is preferred, though, as it allows the result of the
+ * function to be unambiguously specified without type-based interpretation.
+ *
+ * @package Consolidation\AnnotatedCommand
+ */
+class CommandResult implements ExitCodeInterface, OutputDataInterface
+{
+    protected $data;
+    protected $exitCode;
+
+    protected function __construct($data = null, $exitCode = 0)
+    {
+        $this->data = $data;
+        $this->exitCode = $exitCode;
+    }
+
+    public static function exitCode($exitCode)
+    {
+        return new self(null, $exitCode);
+    }
+
+    public static function data($data)
+    {
+        return new self($data);
+    }
+
+    public static function dataWithExitCode($data, $exitCode)
+    {
+        return new self($data, $exitCode);
+    }
+
+    public function getExitCode()
+    {
+        return $this->exitCode;
+    }
+
+    public function getOutputData()
+    {
+        return $this->data;
+    }
+
+    public function setOutputData($data)
+    {
+        $this->data = $data;
+    }
+}
diff --git a/vendor/consolidation/annotated-command/src/Help/HelpDocumentBuilder.php b/vendor/consolidation/annotated-command/src/Help/HelpDocumentBuilder.php
new file mode 100644
index 0000000000..1071670150
--- /dev/null
+++ b/vendor/consolidation/annotated-command/src/Help/HelpDocumentBuilder.php
@@ -0,0 +1,76 @@
+<?php
+namespace Consolidation\AnnotatedCommand\Help;
+
+use Symfony\Component\Console\Application;
+use Symfony\Component\Console\Descriptor\XmlDescriptor;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+use Consolidation\AnnotatedCommand\AnnotatedCommand;
+
+class HelpDocumentBuilder
+{
+    public static function alter(\DomDocument $originalDom, AnnotatedCommand $command)
+    {
+        $dom = new \DOMDocument('1.0', 'UTF-8');
+        $dom->appendChild($commandXML = $dom->createElement('command'));
+        $commandXML->setAttribute('id', $command->getName());
+        $commandXML->setAttribute('name', $command->getName());
+
+        // Get the original <command> element and its top-level elements.
+        $originalCommandXML = static::getSingleElementByTagName($dom, $originalDom, 'command');
+        $originalUsagesXML = static::getSingleElementByTagName($dom, $originalCommandXML, 'usages');
+        $originalDescriptionXML = static::getSingleElementByTagName($dom, $originalCommandXML, 'description');
+        $originalHelpXML = static::getSingleElementByTagName($dom, $originalCommandXML, 'help');
+        $originalArgumentsXML = static::getSingleElementByTagName($dom, $originalCommandXML, 'arguments');
+        $originalOptionsXML = static::getSingleElementByTagName($dom, $originalCommandXML, 'options');
+
+        // Keep only the first of the <usage> elements
+        $newUsagesXML = $dom->createElement('usages');
+        $firstUsageXML = static::getSingleElementByTagName($dom, $originalUsagesXML, 'usage');
+        $newUsagesXML->appendChild($firstUsageXML);
+
+        // Create our own <example> elements
+        $newExamplesXML = $dom->createElement('examples');
+        foreach ($command->getExampleUsages() as $usage => $description) {
+            $newExamplesXML->appendChild($exampleXML = $dom->createElement('example'));
+            $exampleXML->appendChild($usageXML = $dom->createElement('usage', $usage));
+            $exampleXML->appendChild($descriptionXML = $dom->createElement('description', $description));
+        }
+
+        // Create our own <alias> elements
+        $newAliasesXML = $dom->createElement('aliases');
+        foreach ($command->getAliases() as $alias) {
+            $newAliasesXML->appendChild($dom->createElement('alias', $alias));
+        }
+
+        // Create our own <topic> elements
+        $newTopicsXML = $dom->createElement('topics');
+        foreach ($command->getTopics() as $topic) {
+            $newTopicsXML->appendChild($topicXML = $dom->createElement('topic', $topic));
+        }
+
+        // Place the different elements into the <command> element in the desired order
+        $commandXML->appendChild($newUsagesXML);
+        $commandXML->appendChild($newExamplesXML);
+        $commandXML->appendChild($originalDescriptionXML);
+        $commandXML->appendChild($originalArgumentsXML);
+        $commandXML->appendChild($originalOptionsXML);
+        $commandXML->appendChild($originalHelpXML);
+        $commandXML->appendChild($newAliasesXML);
+        $commandXML->appendChild($newTopicsXML);
+
+        return $dom;
+    }
+
+
+    protected static function getSingleElementByTagName($dom, $parent, $tagName)
+    {
+        // There should always be exactly one '<command>' element.
+        $elements = $parent->getElementsByTagName($tagName);
+        $result = $elements->item(0);
+
+        $result = $dom->importNode($result, true);
+
+        return $result;
+    }
+}
diff --git a/vendor/consolidation/annotated-command/src/Hooks/StatusDeterminerInterface.php b/vendor/consolidation/annotated-command/src/Hooks/StatusDeterminerInterface.php
index 36436d1d71..f66ed04072 100644
--- a/vendor/consolidation/annotated-command/src/Hooks/StatusDeterminerInterface.php
+++ b/vendor/consolidation/annotated-command/src/Hooks/StatusDeterminerInterface.php
@@ -4,6 +4,10 @@
 /**
  * A StatusDeterminer maps from a result to a status exit code.
  *
+ * @deprecated. Instead of using a Status Determiner hook, commands
+ * should simply return their exit code and result data separately
+ * using a CommandResult object.
+ *
  * @see HookManager::addStatusDeterminer()
  */
 interface StatusDeterminerInterface
diff --git a/vendor/consolidation/annotated-command/src/Input/StdinAwareInterface.php b/vendor/consolidation/annotated-command/src/Input/StdinAwareInterface.php
new file mode 100644
index 0000000000..5587986652
--- /dev/null
+++ b/vendor/consolidation/annotated-command/src/Input/StdinAwareInterface.php
@@ -0,0 +1,34 @@
+<?php
+
+namespace Consolidation\AnnotatedCommand\Input;
+
+/**
+ * StdinAwareInterface should be implemented by classes that read from
+ * standard input. This class contains facilities to redirect stdin to
+ * instead read from a file, e.g. in response to an option or argument
+ * value.
+ *
+ * Using StdinAwareInterface is preferable to reading from php://stdin
+ * directly, as it provides a mechanism to instead inject an instance
+ * of StdinHandler that reads from a file, e.g. in tests.
+ *
+ * n.b. If the standard input handler is fetched prior to any code
+ * injecting an stdin handler, you will get an object that is configured
+ * to read from php://stdin.
+ */
+interface StdinAwareInterface
+{
+    /**
+     * Sets the standard input handler.
+     *
+     * @param StdinHandler
+     */
+    public function setStdinHandler(StdinHandler $stdin);
+
+    /**
+     * Returns the standard input handler.
+     *
+     * @return StdinHandler
+     */
+    public function stdin();
+}
diff --git a/vendor/consolidation/annotated-command/src/Input/StdinAwareTrait.php b/vendor/consolidation/annotated-command/src/Input/StdinAwareTrait.php
new file mode 100644
index 0000000000..50f1c4df2f
--- /dev/null
+++ b/vendor/consolidation/annotated-command/src/Input/StdinAwareTrait.php
@@ -0,0 +1,30 @@
+<?php
+
+namespace Consolidation\AnnotatedCommand\Input;
+
+/**
+ * StdinAwareTrait provides the implementation for StdinAwareInterface.
+ */
+trait StdinAwareTrait
+{
+    protected $stdinHandler;
+
+    /**
+     * @inheritdoc
+     */
+    public function setStdinHandler(StdinHandler $stdin)
+    {
+        $this->stdinHandler = $stdin;
+    }
+
+    /**
+     * @inheritdoc
+     */
+    public function stdin()
+    {
+        if (!$this->stdinHandler) {
+            $this->stdinHandler = new StdinHandler();
+        }
+        return $this->stdinHandler;
+    }
+}
diff --git a/vendor/consolidation/annotated-command/src/Input/StdinHandler.php b/vendor/consolidation/annotated-command/src/Input/StdinHandler.php
new file mode 100644
index 0000000000..473458109f
--- /dev/null
+++ b/vendor/consolidation/annotated-command/src/Input/StdinHandler.php
@@ -0,0 +1,247 @@
+<?php
+
+namespace Consolidation\AnnotatedCommand\Input;
+
+use Symfony\Component\Console\Input\StreamableInputInterface;
+use Symfony\Component\Console\Input\InputInterface;
+
+/**
+ * StdinHandler is a thin wrapper around php://stdin. It provides
+ * methods for redirecting input from a file, possibly conditionally
+ * under the control of an Input object.
+ *
+ * Example trivial usage (always reads from stdin):
+ *
+ *      class Example implements StdinAwareInterface
+ *      {
+ *          /**
+ *           * @command cat
+ *           * @param string $file
+ *           * @default $file -
+ *           * /
+ *          public function cat()
+ *          {
+ *               print($this->stdin()->contents());
+ *          }
+ *      }
+ *
+ * Command that reads from stdin or file via an option:
+ *
+ *      /**
+ *       * @command cat
+ *       * @param string $file
+ *       * @default $file -
+ *       * /
+ *      public function cat(InputInterface $input)
+ *      {
+ *          $data = $this->stdin()->select($input, 'file')->contents();
+ *      }
+ *
+ * Command that reads from stdin or file via an option:
+ *
+ *      /**
+ *       * @command cat
+ *       * @option string $file
+ *       * @default $file -
+ *       * /
+ *      public function cat(InputInterface $input)
+ *      {
+ *          $data = $this->stdin()->select($input, 'file')->contents();
+ *      }
+ *
+ * It is also possible to inject the selected stream into the input object,
+ * e.g. if you want the contents of the source file to be fed to any Question
+ * helper et. al. that the $input object is used with.
+ *
+ *      /**
+ *       * @command example
+ *       * @option string $file
+ *       * @default $file -
+ *       * /
+ *      public function example(InputInterface $input)
+ *      {
+ *          $this->stdin()->setStream($input, 'file');
+ *      }
+ *
+ *
+ * Inject an alternate source for standard input in tests.  Presumes that
+ * the object under test gets a reference to the StdinHandler via dependency
+ * injection from the container.
+ *
+ *      $container->get('stdinHandler')->redirect($pathToTestStdinFileFixture);
+ *
+ * You may also inject your stdin file fixture stream into the $input object
+ * as usual, and then use it with 'select()' or 'setStream()' as shown above.
+ *
+ * Finally, this class may also be used in absence of a dependency injection
+ * container by using the static 'selectStream()' method:
+ *
+ *      /**
+ *       * @command example
+ *       * @option string $file
+ *       * @default $file -
+ *       * /
+ *      public function example(InputInterface $input)
+ *      {
+ *          $data = StdinHandler::selectStream($input, 'file')->contents();
+ *      }
+ *
+ * To test a method that uses this technique, simply inject your stdin
+ * fixture into the $input object in your test:
+ *
+ *      $input->setStream(fopen($pathToFixture, 'r'));
+ */
+class StdinHandler
+{
+    protected $path;
+    protected $stream;
+
+    public static function selectStream(InputInterface $input, $optionOrArg)
+    {
+        $handler = new Self();
+
+        return $handler->setStream($input, $optionOrArg);
+    }
+
+    /**
+     * hasPath returns 'true' if the stdin handler has a path to a file.
+     *
+     * @return bool
+     */
+    public function hasPath()
+    {
+        // Once the stream has been opened, we mask the existence of the path.
+        return !$this->hasStream() && !empty($this->path);
+    }
+
+    /**
+     * hasStream returns 'true' if the stdin handler has opened a stream.
+     *
+     * @return bool
+     */
+    public function hasStream()
+    {
+        return !empty($this->stream);
+    }
+
+    /**
+     * path returns the path to any file that was set as a redirection
+     * source, or `php://stdin` if none have been.
+     *
+     * @return string
+     */
+    public function path()
+    {
+        return $this->path ?: 'php://stdin';
+    }
+
+    /**
+     * close closes the input stream if it was opened.
+     */
+    public function close()
+    {
+        if ($this->hasStream()) {
+            fclose($this->stream);
+            $this->stream = null;
+        }
+        return $this;
+    }
+
+    /**
+     * redirect specifies a path to a file that should serve as the
+     * source to read from. If the input path is '-' or empty,
+     * then output will be taken from php://stdin (or whichever source
+     * was provided via the 'redirect' method).
+     *
+     * @return $this
+     */
+    public function redirect($path)
+    {
+        if ($this->pathProvided($path)) {
+            $this->path = $path;
+        }
+
+        return $this;
+    }
+
+    /**
+     * select chooses the source of the input stream based on whether or
+     * not the user provided the specified option or argument on the commandline.
+     * Stdin is selected if there is no user selection.
+     *
+     * @param InputInterface $input
+     * @param string $optionOrArg
+     * @return $this
+     */
+    public function select(InputInterface $input, $optionOrArg)
+    {
+        $this->redirect($this->getOptionOrArg($input, $optionOrArg));
+        if (!$this->hasPath() && ($input instanceof StreamableInputInterface)) {
+            $this->stream = $input->getStream();
+        }
+
+        return $this;
+    }
+
+    /**
+     * getStream opens and returns the stdin stream (or redirect file).
+     */
+    public function getStream()
+    {
+        if (!$this->hasStream()) {
+            $this->stream = fopen($this->path(), 'r');
+        }
+        return $this->stream;
+    }
+
+    /**
+     * setStream functions like 'select', and also sets up the $input
+     * object to read from the selected input stream e.g. when used
+     * with a question helper.
+     */
+    public function setStream(InputInterface $input, $optionOrArg)
+    {
+        $this->select($input, $optionOrArg);
+        if ($input instanceof StreamableInputInterface) {
+            $stream = $this->getStream();
+            $input->setStream($stream);
+        }
+        return $this;
+    }
+
+    /**
+     * contents reads the entire contents of the standard input stream.
+     *
+     * @return string
+     */
+    public function contents()
+    {
+        // Optimization: use file_get_contents if we have a path to a file
+        // and the stream has not been opened yet.
+        if (!$this->hasStream()) {
+            return file_get_contents($this->path());
+        }
+        $stream = $this->getStream();
+        stream_set_blocking($stream, false); // TODO: We did this in backend invoke. Necessary here?
+        $contents = stream_get_contents($stream);
+        $this->close();
+
+        return $contents;
+    }
+
+    /**
+     * Returns 'true' if a path was specfied, and that path was not '-'.
+     */
+    protected function pathProvided($path)
+    {
+        return !empty($path) && ($path != '-');
+    }
+
+    protected function getOptionOrArg(InputInterface $input, $optionOrArg)
+    {
+        if ($input->hasOption($optionOrArg)) {
+            return $input->getOption($optionOrArg);
+        }
+        return $input->getArgument($optionOrArg);
+    }
+}
diff --git a/vendor/consolidation/annotated-command/src/ParameterInjection.php b/vendor/consolidation/annotated-command/src/ParameterInjection.php
new file mode 100644
index 0000000000..630927c9d1
--- /dev/null
+++ b/vendor/consolidation/annotated-command/src/ParameterInjection.php
@@ -0,0 +1,57 @@
+<?php
+namespace Consolidation\AnnotatedCommand;
+
+/**
+ * Prepare parameter list for execurion. Handle injection of any
+ * special values (e.g. $input and $output) into the parameter list.
+ */
+class ParameterInjection implements ParameterInjector
+{
+    public function __construct()
+    {
+        $this->register('Symfony\Component\Console\Input\InputInterface', $this);
+        $this->register('Symfony\Component\Console\Output\OutputInterface', $this);
+    }
+
+    public function register($interfaceName, ParameterInjector $injector)
+    {
+        $this->injectors[$interfaceName] = $injector;
+    }
+
+    public function args($commandData)
+    {
+        return array_merge(
+            $commandData->injectedInstances(),
+            $commandData->getArgsAndOptions()
+        );
+    }
+
+    public function injectIntoCommandData($commandData, $injectedClasses)
+    {
+        foreach ($injectedClasses as $injectedClass) {
+            $injectedInstance = $this->getInstanceToInject($commandData, $injectedClass);
+            $commandData->injectInstance($injectedInstance);
+        }
+    }
+
+    protected function getInstanceToInject(CommandData $commandData, $interfaceName)
+    {
+        if (!isset($this->injectors[$interfaceName])) {
+            return null;
+        }
+
+        return $this->injectors[$interfaceName]->get($commandData, $interfaceName);
+    }
+
+    public function get(CommandData $commandData, $interfaceName)
+    {
+        switch ($interfaceName) {
+            case 'Symfony\Component\Console\Input\InputInterface':
+                return $commandData->input();
+            case 'Symfony\Component\Console\Output\OutputInterface':
+                return $commandData->output();
+        }
+
+        return null;
+    }
+}
diff --git a/vendor/consolidation/annotated-command/src/ParameterInjector.php b/vendor/consolidation/annotated-command/src/ParameterInjector.php
new file mode 100644
index 0000000000..2f2346f62f
--- /dev/null
+++ b/vendor/consolidation/annotated-command/src/ParameterInjector.php
@@ -0,0 +1,10 @@
+<?php
+namespace Consolidation\AnnotatedCommand;
+
+/**
+ * Provide an object for the specified interface or class name.
+ */
+interface ParameterInjector
+{
+    public function get(CommandData $commandData, $interfaceName);
+}
diff --git a/vendor/consolidation/annotated-command/src/Parser/CommandInfo.php b/vendor/consolidation/annotated-command/src/Parser/CommandInfo.php
index 8cb728f3a3..60df470e13 100644
--- a/vendor/consolidation/annotated-command/src/Parser/CommandInfo.php
+++ b/vendor/consolidation/annotated-command/src/Parser/CommandInfo.php
@@ -20,7 +20,7 @@ class CommandInfo
     /**
      * Serialization schema version. Incremented every time the serialization schema changes.
      */
-    const SERIALIZATION_SCHEMA_VERSION = 3;
+    const SERIALIZATION_SCHEMA_VERSION = 4;
 
     /**
      * @var \ReflectionMethod
@@ -88,6 +88,11 @@ class CommandInfo
      */
     protected $returnType;
 
+    /**
+     * @var string[]
+     */
+    protected $injectedClasses = [];
+
     /**
      * Create a new CommandInfo class for a particular method of a class.
      *
@@ -203,6 +208,18 @@ public function getReturnType()
         return $this->returnType;
     }
 
+    public function getInjectedClasses()
+    {
+        $this->parseDocBlock();
+        return $this->injectedClasses;
+    }
+
+    public function setInjectedClasses($injectedClasses)
+    {
+        $this->injectedClasses = $injectedClasses;
+        return $this;
+    }
+
     public function setReturnType($returnType)
     {
         $this->returnType = $returnType;
@@ -634,6 +651,11 @@ protected function determineAgumentClassifications()
         if ($this->lastParameterIsOptionsArray()) {
             array_pop($params);
         }
+        while (!empty($params) && ($params[0]->getClass() != null)) {
+            $param = array_shift($params);
+            $injectedClass = $param->getClass()->getName();
+            array_unshift($this->injectedClasses, $injectedClass);
+        }
         foreach ($params as $param) {
             $this->addParameterToResult($result, $param);
         }
diff --git a/vendor/consolidation/annotated-command/src/Parser/CommandInfoDeserializer.php b/vendor/consolidation/annotated-command/src/Parser/CommandInfoDeserializer.php
index ed193cb548..ae1b5dcd48 100644
--- a/vendor/consolidation/annotated-command/src/Parser/CommandInfoDeserializer.php
+++ b/vendor/consolidation/annotated-command/src/Parser/CommandInfoDeserializer.php
@@ -29,7 +29,7 @@ public static function isValidSerializedData($cache)
             isset($cache['method_name']) &&
             isset($cache['mtime']) &&
             ($cache['schema'] > 0) &&
-            ($cache['schema'] <= CommandInfo::SERIALIZATION_SCHEMA_VERSION) &&
+            ($cache['schema'] == CommandInfo::SERIALIZATION_SCHEMA_VERSION) &&
             self::cachedMethodExists($cache);
     }
 
@@ -45,6 +45,7 @@ public function constructFromCache(CommandInfo $commandInfo, $info_array)
             ->setDescription($info_array['description'])
             ->replaceExampleUsages($info_array['example_usages'])
             ->setReturnType($info_array['return_type'])
+            ->setInjectedClasses($info_array['injected_classes'])
             ;
 
         $this->constructDefaultsWithDescriptions($commandInfo->arguments(), (array)$info_array['arguments']);
@@ -81,6 +82,7 @@ protected function defaultSerializationData()
             'parameters' => [],
             'arguments' => [],
             'options' => [],
+            'injected_classes' => [],
             'mtime' => 0,
         ];
     }
diff --git a/vendor/consolidation/annotated-command/src/Parser/CommandInfoSerializer.php b/vendor/consolidation/annotated-command/src/Parser/CommandInfoSerializer.php
index cab6993d39..21562319c8 100644
--- a/vendor/consolidation/annotated-command/src/Parser/CommandInfoSerializer.php
+++ b/vendor/consolidation/annotated-command/src/Parser/CommandInfoSerializer.php
@@ -23,6 +23,7 @@ public function serialize(CommandInfo $commandInfo)
             'class' => $className,
             'method_name' => $commandInfo->getMethodName(),
             'mtime' => filemtime($path),
+            'injected_classes' => [],
         ];
 
         // If this is a valid method / hook, then add more information.
@@ -38,6 +39,7 @@ public function serialize(CommandInfo $commandInfo)
             ];
             $info['arguments'] = $this->serializeDefaultsWithDescriptions($commandInfo->arguments());
             $info['options'] = $this->serializeDefaultsWithDescriptions($commandInfo->options());
+            $info['injected_classes'] = $commandInfo->getInjectedClasses();
         }
 
         return $info;
diff --git a/vendor/consolidation/annotated-command/src/Parser/Internal/BespokeDocBlockParser.php b/vendor/consolidation/annotated-command/src/Parser/Internal/BespokeDocBlockParser.php
index b53545c621..4b73c967b1 100644
--- a/vendor/consolidation/annotated-command/src/Parser/Internal/BespokeDocBlockParser.php
+++ b/vendor/consolidation/annotated-command/src/Parser/Internal/BespokeDocBlockParser.php
@@ -20,7 +20,7 @@ class BespokeDocBlockParser
         'command' => 'processCommandTag',
         'name' => 'processCommandTag',
         'arg' => 'processArgumentTag',
-        'param' => 'processArgumentTag',
+        'param' => 'processParamTag',
         'return' => 'processReturnTag',
         'option' => 'processOptionTag',
         'default' => 'processDefaultTag',
@@ -83,6 +83,31 @@ protected function processAlternateDescriptionTag($tag)
         $this->commandInfo->setDescription($tag->getContent());
     }
 
+    /**
+     * Store the data from a @param annotation in our argument descriptions.
+     */
+    protected function processParamTag($tag)
+    {
+        if ($tag->hasTypeVariableAndDescription($matches)) {
+            if ($this->ignoredParamType($matches['type'])) {
+                return;
+            }
+        }
+        return $this->processArgumentTag($tag);
+    }
+
+    protected function ignoredParamType($paramType)
+    {
+        // TODO: We should really only allow a couple of types here,
+        // e.g. 'string', 'array', 'bool'. Blacklist things we do not
+        // want for now to avoid breaking commands with weird types.
+        // Fix in the next major version.
+        //
+        // This works:
+        //   return !in_array($paramType, ['string', 'array', 'integer', 'bool']);
+        return preg_match('#(InputInterface|OutputInterface)$#', $paramType);
+    }
+
     /**
      * Store the data from a @arg annotation in our argument descriptions.
      */
@@ -112,7 +137,20 @@ protected function addOptionOrArgumentTag($tag, DefaultsWithDescriptions $set, $
     {
         $variableName = $this->commandInfo->findMatchingOption($name);
         $description = static::removeLineBreaks($description);
+        list($description, $defaultValue) = $this->splitOutDefault($description);
         $set->add($variableName, $description);
+        if ($defaultValue !== null) {
+            $set->setDefaultValue($variableName, $defaultValue);
+        }
+    }
+
+    protected function splitOutDefault($description)
+    {
+        if (!preg_match('#(.*)(Default: *)(.*)#', trim($description), $matches)) {
+            return [$description, null];
+        }
+
+        return [trim($matches[1]), $this->interpretDefaultValue(trim($matches[3]))];
     }
 
     /**
diff --git a/vendor/consolidation/annotated-command/src/Parser/Internal/FullyQualifiedClassCache.php b/vendor/consolidation/annotated-command/src/Parser/Internal/FullyQualifiedClassCache.php
index 4daab65afc..b247e9da0c 100644
--- a/vendor/consolidation/annotated-command/src/Parser/Internal/FullyQualifiedClassCache.php
+++ b/vendor/consolidation/annotated-command/src/Parser/Internal/FullyQualifiedClassCache.php
@@ -88,7 +88,7 @@ protected function readUseStatements($handle)
             // If this is an aliased class, 'use \Foo\Bar as Baz', then adjust
             if (strpos($usedClass, ' as ')) {
                 $unqualifiedClass = preg_replace('#.*\sas\s+#', '', $usedClass);
-                $usedClass = preg_replace('#\s+as\s+#', '', $usedClass);
+                $usedClass = preg_replace('#[a-zA-Z0-9]+\s+as\s+#', '', $usedClass);
             }
             $result[$unqualifiedClass] = $usedClass;
         }
diff --git a/vendor/consolidation/annotated-command/src/ResultWriter.php b/vendor/consolidation/annotated-command/src/ResultWriter.php
new file mode 100644
index 0000000000..a256384e80
--- /dev/null
+++ b/vendor/consolidation/annotated-command/src/ResultWriter.php
@@ -0,0 +1,210 @@
+<?php
+namespace Consolidation\AnnotatedCommand;
+
+use Consolidation\AnnotatedCommand\Hooks\Dispatchers\ReplaceCommandHookDispatcher;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+use Symfony\Component\Console\Output\ConsoleOutputInterface;
+
+use Consolidation\OutputFormatters\FormatterManager;
+use Consolidation\OutputFormatters\Options\FormatterOptions;
+use Consolidation\AnnotatedCommand\Hooks\HookManager;
+use Consolidation\AnnotatedCommand\Options\PrepareFormatter;
+
+use Consolidation\AnnotatedCommand\Hooks\Dispatchers\InitializeHookDispatcher;
+use Consolidation\AnnotatedCommand\Hooks\Dispatchers\OptionsHookDispatcher;
+use Consolidation\AnnotatedCommand\Hooks\Dispatchers\InteractHookDispatcher;
+use Consolidation\AnnotatedCommand\Hooks\Dispatchers\ValidateHookDispatcher;
+use Consolidation\AnnotatedCommand\Hooks\Dispatchers\ProcessResultHookDispatcher;
+use Consolidation\AnnotatedCommand\Hooks\Dispatchers\StatusDeterminerHookDispatcher;
+use Consolidation\AnnotatedCommand\Hooks\Dispatchers\ExtracterHookDispatcher;
+
+/**
+ * Write the results of a command. Inject your ResultWriter
+ * into the CommandProcessor.
+ */
+class ResultWriter
+{
+    /** var FormatterManager */
+    protected $formatterManager;
+    /** @var callable */
+    protected $displayErrorFunction;
+
+    public function setFormatterManager(FormatterManager $formatterManager)
+    {
+        $this->formatterManager = $formatterManager;
+        return $this;
+    }
+
+    /**
+     * Return the formatter manager
+     * @return FormatterManager
+     */
+    public function formatterManager()
+    {
+        return $this->formatterManager;
+    }
+
+    public function setDisplayErrorFunction(callable $fn)
+    {
+        $this->displayErrorFunction = $fn;
+        return $this;
+    }
+
+    /**
+     * Handle the result output and status code calculation.
+     */
+    public function handle(OutputInterface $output, $result, CommandData $commandData, $statusCodeDispatcher = null, $extractDispatcher = null)
+    {
+        // A little messy, for backwards compatibility: if the result implements
+        // ExitCodeInterface, then use that as the exit code. If a status code
+        // dispatcher returns a non-zero result, then we will never print a
+        // result.
+        $status = null;
+        if ($result instanceof ExitCodeInterface) {
+            $status = $result->getExitCode();
+        } elseif (isset($statusCodeDispatcher)) {
+            $status = $statusCodeDispatcher->determineStatusCode($result);
+            if (isset($status) && ($status != 0)) {
+                return $status;
+            }
+        }
+        // If the result is an integer and no separate status code was provided, then use the result as the status and do no output.
+        if (is_integer($result) && !isset($status)) {
+            return $result;
+        }
+        $status = $this->interpretStatusCode($status);
+
+        // Get the structured output, the output stream and the formatter
+        $structuredOutput = $result;
+        if (isset($extractDispatcher)) {
+            $structuredOutput = $extractDispatcher->extractOutput($result);
+        }
+        if (($status != 0) && is_string($structuredOutput)) {
+            $output = $this->chooseOutputStream($output, $status);
+            return $this->writeErrorMessage($output, $status, $structuredOutput, $result);
+        }
+        if ($this->dataCanBeFormatted($structuredOutput) && isset($this->formatterManager)) {
+            return $this->writeUsingFormatter($output, $structuredOutput, $commandData, $status);
+        }
+        return $this->writeCommandOutput($output, $structuredOutput, $status);
+    }
+
+    protected function dataCanBeFormatted($structuredOutput)
+    {
+        if (!isset($this->formatterManager)) {
+            return false;
+        }
+        return
+            is_object($structuredOutput) ||
+            is_array($structuredOutput);
+    }
+
+    /**
+     * Determine the formatter that should be used to render
+     * output.
+     *
+     * If the user specified a format via the --format option,
+     * then always return that.  Otherwise, return the default
+     * format, unless --pipe was specified, in which case
+     * return the default pipe format, format-pipe.
+     *
+     * n.b. --pipe is a handy option introduced in Drush 2
+     * (or perhaps even Drush 1) that indicates that the command
+     * should select the output format that is most appropriate
+     * for use in scripts (e.g. to pipe to another command).
+     *
+     * @return string
+     */
+    protected function getFormat(FormatterOptions $options)
+    {
+        // In Symfony Console, there is no way for us to differentiate
+        // between the user specifying '--format=table', and the user
+        // not specifying --format when the default value is 'table'.
+        // Therefore, we must make --field always override --format; it
+        // cannot become the default value for --format.
+        if ($options->get('field')) {
+            return 'string';
+        }
+        $defaults = [];
+        if ($options->get('pipe')) {
+            return $options->get('pipe-format', [], 'tsv');
+        }
+        return $options->getFormat($defaults);
+    }
+
+    /**
+     * Determine whether we should use stdout or stderr.
+     */
+    protected function chooseOutputStream(OutputInterface $output, $status)
+    {
+        // If the status code indicates an error, then print the
+        // result to stderr rather than stdout
+        if ($status && ($output instanceof ConsoleOutputInterface)) {
+            return $output->getErrorOutput();
+        }
+        return $output;
+    }
+
+    /**
+     * Call the formatter to output the provided data.
+     */
+    protected function writeUsingFormatter(OutputInterface $output, $structuredOutput, CommandData $commandData, $status = 0)
+    {
+        $formatterOptions = $commandData->formatterOptions();
+        $format = $this->getFormat($formatterOptions);
+        $this->formatterManager->write(
+            $output,
+            $format,
+            $structuredOutput,
+            $formatterOptions
+        );
+        return $status;
+    }
+
+    /**
+     * Description
+     * @param OutputInterface $output
+     * @param int $status
+     * @param string $structuredOutput
+     * @param mixed $originalResult
+     * @return type
+     */
+    protected function writeErrorMessage($output, $status, $structuredOutput, $originalResult)
+    {
+        if (isset($this->displayErrorFunction)) {
+            call_user_func($this->displayErrorFunction, $output, $structuredOutput, $status, $originalResult);
+        } else {
+            $this->writeCommandOutput($output, $structuredOutput);
+        }
+        return $status;
+    }
+
+    /**
+     * If the result object is a string, then print it.
+     */
+    protected function writeCommandOutput(
+        OutputInterface $output,
+        $structuredOutput,
+        $status = 0
+    ) {
+        // If there is no formatter, we will print strings,
+        // but can do no more than that.
+        if (is_string($structuredOutput)) {
+            $output->writeln($structuredOutput);
+        }
+        return $status;
+    }
+
+    /**
+     * If a status code was set, then return it; otherwise,
+     * presume success.
+     */
+    protected function interpretStatusCode($status)
+    {
+        if (isset($status)) {
+            return $status;
+        }
+        return 0;
+    }
+}
diff --git a/vendor/consolidation/output-formatters/.scenarios.lock/install b/vendor/consolidation/output-formatters/.scenarios.lock/install
new file mode 100644
index 0000000000..16c69e107c
--- /dev/null
+++ b/vendor/consolidation/output-formatters/.scenarios.lock/install
@@ -0,0 +1,57 @@
+#!/bin/bash
+
+SCENARIO=$1
+DEPENDENCIES=${2-install}
+
+# Convert the aliases 'highest', 'lowest' and 'lock' to
+# the corresponding composer command to run.
+case $DEPENDENCIES in
+  highest)
+    DEPENDENCIES=update
+    ;;
+  lowest)
+    DEPENDENCIES='update --prefer-lowest'
+    ;;
+  lock|default|"")
+    DEPENDENCIES=install
+    ;;
+esac
+
+original_name=scenarios
+recommended_name=".scenarios.lock"
+
+base="$original_name"
+if [ -d "$recommended_name" ] ; then
+  base="$recommended_name"
+fi
+
+# If scenario is not specified, install the lockfile at
+# the root of the project.
+dir="$base/${SCENARIO}"
+if [ -z "$SCENARIO" ] || [ "$SCENARIO" == "default" ] ; then
+  SCENARIO=default
+  dir=.
+fi
+
+# Test to make sure that the selected scenario exists.
+if [ ! -d "$dir" ] ; then
+  echo "Requested scenario '${SCENARIO}' does not exist."
+  exit 1
+fi
+
+echo
+echo "::"
+echo ":: Switch to ${SCENARIO} scenario"
+echo "::"
+echo
+
+set -ex
+
+composer -n validate --working-dir=$dir --no-check-all --ansi
+composer -n --working-dir=$dir ${DEPENDENCIES} --prefer-dist --no-scripts
+
+# If called from a CI context, print out some extra information about
+# what we just installed.
+if [[ -n "$CI" ]] ; then
+  composer -n --working-dir=$dir info
+fi
diff --git a/vendor/consolidation/output-formatters/.scenarios.lock/symfony2/.gitignore b/vendor/consolidation/output-formatters/.scenarios.lock/symfony2/.gitignore
new file mode 100644
index 0000000000..88e99d50df
--- /dev/null
+++ b/vendor/consolidation/output-formatters/.scenarios.lock/symfony2/.gitignore
@@ -0,0 +1,2 @@
+vendor
+composer.lock
\ No newline at end of file
diff --git a/vendor/consolidation/output-formatters/.scenarios.lock/symfony2/composer.json b/vendor/consolidation/output-formatters/.scenarios.lock/symfony2/composer.json
new file mode 100644
index 0000000000..338f4265fc
--- /dev/null
+++ b/vendor/consolidation/output-formatters/.scenarios.lock/symfony2/composer.json
@@ -0,0 +1,65 @@
+{
+    "name": "consolidation/output-formatters",
+    "description": "Format text by applying transformations provided by plug-in formatters.",
+    "license": "MIT",
+    "authors": [
+        {
+            "name": "Greg Anderson",
+            "email": "greg.1.anderson@greenknowe.org"
+        }
+    ],
+    "autoload": {
+        "psr-4": {
+            "Consolidation\\OutputFormatters\\": "../../src"
+        }
+    },
+    "autoload-dev": {
+        "psr-4": {
+            "Consolidation\\TestUtils\\": "../../tests/src"
+        }
+    },
+    "require": {
+        "symfony/console": "^2.8",
+        "php": ">=5.4.0",
+        "dflydev/dot-access-data": "^1.1.0",
+        "symfony/finder": "^2.5|^3|^4"
+    },
+    "require-dev": {
+        "phpunit/phpunit": "^4.8.36",
+        "g1a/composer-test-scenarios": "^3",
+        "squizlabs/php_codesniffer": "^2.7",
+        "symfony/var-dumper": "^2.8|^3|^4",
+        "victorjonsson/markdowndocs": "^1.3"
+    },
+    "suggest": {
+        "symfony/var-dumper": "For using the var_dump formatter"
+    },
+    "config": {
+        "platform": {
+            "php": "5.4.8"
+        },
+        "optimize-autoloader": true,
+        "sort-packages": true,
+        "vendor-dir": "../../vendor"
+    },
+    "scripts": {
+        "api": "phpdoc-md generate src > docs/api.md",
+        "cs": "phpcs --standard=PSR2 -n src",
+        "cbf": "phpcbf --standard=PSR2 -n src",
+        "unit": "phpunit --colors=always",
+        "lint": [
+            "find src -name '*.php' -print0 | xargs -0 -n1 php -l",
+            "find tests/src -name '*.php' -print0 | xargs -0 -n1 php -l"
+        ],
+        "test": [
+            "@lint",
+            "@unit",
+            "@cs"
+        ]
+    },
+    "extra": {
+        "branch-alias": {
+            "dev-master": "3.x-dev"
+        }
+    }
+}
diff --git a/vendor/consolidation/output-formatters/.scenarios.lock/symfony3/.gitignore b/vendor/consolidation/output-formatters/.scenarios.lock/symfony3/.gitignore
new file mode 100644
index 0000000000..5657f6ea7d
--- /dev/null
+++ b/vendor/consolidation/output-formatters/.scenarios.lock/symfony3/.gitignore
@@ -0,0 +1 @@
+vendor
\ No newline at end of file
diff --git a/vendor/consolidation/output-formatters/.scenarios.lock/symfony3/composer.json b/vendor/consolidation/output-formatters/.scenarios.lock/symfony3/composer.json
new file mode 100644
index 0000000000..a4d1f5e784
--- /dev/null
+++ b/vendor/consolidation/output-formatters/.scenarios.lock/symfony3/composer.json
@@ -0,0 +1,67 @@
+{
+    "name": "consolidation/output-formatters",
+    "description": "Format text by applying transformations provided by plug-in formatters.",
+    "license": "MIT",
+    "authors": [
+        {
+            "name": "Greg Anderson",
+            "email": "greg.1.anderson@greenknowe.org"
+        }
+    ],
+    "autoload": {
+        "psr-4": {
+            "Consolidation\\OutputFormatters\\": "../../src"
+        }
+    },
+    "autoload-dev": {
+        "psr-4": {
+            "Consolidation\\TestUtils\\": "../../tests/src"
+        }
+    },
+    "require": {
+        "symfony/console": "^3.4",
+        "symfony/finder": "^3.4",
+        "symfony/var-dumper": "^3.4",
+        "php": ">=5.4.0",
+        "dflydev/dot-access-data": "^1.1.0"
+    },
+    "require-dev": {
+        "g1a/composer-test-scenarios": "^3",
+        "php-coveralls/php-coveralls": "^1",
+        "phpunit/phpunit": "^5.7.27",
+        "squizlabs/php_codesniffer": "^2.7",
+        "symfony/var-dumper": "^2.8|^3|^4",
+        "victorjonsson/markdowndocs": "^1.3"
+    },
+    "suggest": {
+        "symfony/var-dumper": "For using the var_dump formatter"
+    },
+    "config": {
+        "platform": {
+            "php": "5.6.32"
+        },
+        "optimize-autoloader": true,
+        "sort-packages": true,
+        "vendor-dir": "../../vendor"
+    },
+    "scripts": {
+        "api": "phpdoc-md generate src > docs/api.md",
+        "cs": "phpcs --standard=PSR2 -n src",
+        "cbf": "phpcbf --standard=PSR2 -n src",
+        "unit": "phpunit --colors=always",
+        "lint": [
+            "find src -name '*.php' -print0 | xargs -0 -n1 php -l",
+            "find tests/src -name '*.php' -print0 | xargs -0 -n1 php -l"
+        ],
+        "test": [
+            "@lint",
+            "@unit",
+            "@cs"
+        ]
+    },
+    "extra": {
+        "branch-alias": {
+            "dev-master": "3.x-dev"
+        }
+    }
+}
diff --git a/vendor/consolidation/output-formatters/.scenarios.lock/symfony3/composer.lock b/vendor/consolidation/output-formatters/.scenarios.lock/symfony3/composer.lock
new file mode 100644
index 0000000000..1e19004172
--- /dev/null
+++ b/vendor/consolidation/output-formatters/.scenarios.lock/symfony3/composer.lock
@@ -0,0 +1,2364 @@
+{
+    "_readme": [
+        "This file locks the dependencies of your project to a known state",
+        "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
+        "This file is @generated automatically"
+    ],
+    "content-hash": "b93f5c37dbac1262cf9e9a1170b9e3ad",
+    "packages": [
+        {
+            "name": "dflydev/dot-access-data",
+            "version": "v1.1.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/dflydev/dflydev-dot-access-data.git",
+                "reference": "3fbd874921ab2c041e899d044585a2ab9795df8a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/3fbd874921ab2c041e899d044585a2ab9795df8a",
+                "reference": "3fbd874921ab2c041e899d044585a2ab9795df8a",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.2"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Dflydev\\DotAccessData": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Dragonfly Development Inc.",
+                    "email": "info@dflydev.com",
+                    "homepage": "http://dflydev.com"
+                },
+                {
+                    "name": "Beau Simensen",
+                    "email": "beau@dflydev.com",
+                    "homepage": "http://beausimensen.com"
+                },
+                {
+                    "name": "Carlos Frutos",
+                    "email": "carlos@kiwing.it",
+                    "homepage": "https://github.com/cfrutos"
+                }
+            ],
+            "description": "Given a deep data structure, access data by dot notation.",
+            "homepage": "https://github.com/dflydev/dflydev-dot-access-data",
+            "keywords": [
+                "access",
+                "data",
+                "dot",
+                "notation"
+            ],
+            "time": "2017-01-20T21:14:22+00:00"
+        },
+        {
+            "name": "psr/log",
+            "version": "1.1.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/log.git",
+                "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
+                "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Psr\\Log\\": "Psr/Log/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "http://www.php-fig.org/"
+                }
+            ],
+            "description": "Common interface for logging libraries",
+            "homepage": "https://github.com/php-fig/log",
+            "keywords": [
+                "log",
+                "psr",
+                "psr-3"
+            ],
+            "time": "2018-11-20T15:27:04+00:00"
+        },
+        {
+            "name": "symfony/console",
+            "version": "v3.4.18",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/console.git",
+                "reference": "1d228fb4602047d7b26a0554e0d3efd567da5803"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/console/zipball/1d228fb4602047d7b26a0554e0d3efd567da5803",
+                "reference": "1d228fb4602047d7b26a0554e0d3efd567da5803",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.5.9|>=7.0.8",
+                "symfony/debug": "~2.8|~3.0|~4.0",
+                "symfony/polyfill-mbstring": "~1.0"
+            },
+            "conflict": {
+                "symfony/dependency-injection": "<3.4",
+                "symfony/process": "<3.3"
+            },
+            "require-dev": {
+                "psr/log": "~1.0",
+                "symfony/config": "~3.3|~4.0",
+                "symfony/dependency-injection": "~3.4|~4.0",
+                "symfony/event-dispatcher": "~2.8|~3.0|~4.0",
+                "symfony/lock": "~3.4|~4.0",
+                "symfony/process": "~3.3|~4.0"
+            },
+            "suggest": {
+                "psr/log-implementation": "For using the console logger",
+                "symfony/event-dispatcher": "",
+                "symfony/lock": "",
+                "symfony/process": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Console\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Console Component",
+            "homepage": "https://symfony.com",
+            "time": "2018-10-30T16:50:50+00:00"
+        },
+        {
+            "name": "symfony/debug",
+            "version": "v3.4.18",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/debug.git",
+                "reference": "fe9793af008b651c5441bdeab21ede8172dab097"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/debug/zipball/fe9793af008b651c5441bdeab21ede8172dab097",
+                "reference": "fe9793af008b651c5441bdeab21ede8172dab097",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.5.9|>=7.0.8",
+                "psr/log": "~1.0"
+            },
+            "conflict": {
+                "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
+            },
+            "require-dev": {
+                "symfony/http-kernel": "~2.8|~3.0|~4.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Debug\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Debug Component",
+            "homepage": "https://symfony.com",
+            "time": "2018-10-31T09:06:03+00:00"
+        },
+        {
+            "name": "symfony/finder",
+            "version": "v3.4.18",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/finder.git",
+                "reference": "54ba444dddc5bd5708a34bd095ea67c6eb54644d"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/finder/zipball/54ba444dddc5bd5708a34bd095ea67c6eb54644d",
+                "reference": "54ba444dddc5bd5708a34bd095ea67c6eb54644d",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.5.9|>=7.0.8"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Finder\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Finder Component",
+            "homepage": "https://symfony.com",
+            "time": "2018-10-03T08:46:40+00:00"
+        },
+        {
+            "name": "symfony/polyfill-mbstring",
+            "version": "v1.10.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-mbstring.git",
+                "reference": "c79c051f5b3a46be09205c73b80b346e4153e494"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494",
+                "reference": "c79c051f5b3a46be09205c73b80b346e4153e494",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "suggest": {
+                "ext-mbstring": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.9-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Polyfill\\Mbstring\\": ""
+                },
+                "files": [
+                    "bootstrap.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill for the Mbstring extension",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "mbstring",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "time": "2018-09-21T13:07:52+00:00"
+        },
+        {
+            "name": "symfony/var-dumper",
+            "version": "v3.4.18",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/var-dumper.git",
+                "reference": "ff8ac19e97e5c7c3979236b584719a1190f84181"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/var-dumper/zipball/ff8ac19e97e5c7c3979236b584719a1190f84181",
+                "reference": "ff8ac19e97e5c7c3979236b584719a1190f84181",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.5.9|>=7.0.8",
+                "symfony/polyfill-mbstring": "~1.0"
+            },
+            "conflict": {
+                "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0"
+            },
+            "require-dev": {
+                "ext-iconv": "*",
+                "twig/twig": "~1.34|~2.4"
+            },
+            "suggest": {
+                "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).",
+                "ext-intl": "To show region name in time zone dump",
+                "ext-symfony_debug": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.4-dev"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "Resources/functions/dump.php"
+                ],
+                "psr-4": {
+                    "Symfony\\Component\\VarDumper\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony mechanism for exploring and dumping PHP variables",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "debug",
+                "dump"
+            ],
+            "time": "2018-10-02T16:33:53+00:00"
+        }
+    ],
+    "packages-dev": [
+        {
+            "name": "doctrine/instantiator",
+            "version": "1.0.5",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/doctrine/instantiator.git",
+                "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d",
+                "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3,<8.0-DEV"
+            },
+            "require-dev": {
+                "athletic/athletic": "~0.1.8",
+                "ext-pdo": "*",
+                "ext-phar": "*",
+                "phpunit/phpunit": "~4.0",
+                "squizlabs/php_codesniffer": "~2.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Marco Pivetta",
+                    "email": "ocramius@gmail.com",
+                    "homepage": "http://ocramius.github.com/"
+                }
+            ],
+            "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+            "homepage": "https://github.com/doctrine/instantiator",
+            "keywords": [
+                "constructor",
+                "instantiate"
+            ],
+            "time": "2015-06-14T21:17:01+00:00"
+        },
+        {
+            "name": "g1a/composer-test-scenarios",
+            "version": "3.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/g1a/composer-test-scenarios.git",
+                "reference": "2a7156f1572898888ea50ad1d48a6b4d3f9fbf78"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/g1a/composer-test-scenarios/zipball/2a7156f1572898888ea50ad1d48a6b4d3f9fbf78",
+                "reference": "2a7156f1572898888ea50ad1d48a6b4d3f9fbf78",
+                "shasum": ""
+            },
+            "require": {
+                "composer-plugin-api": "^1.0.0",
+                "php": ">=5.4"
+            },
+            "require-dev": {
+                "composer/composer": "^1.7",
+                "php-coveralls/php-coveralls": "^1.0",
+                "phpunit/phpunit": "^4.8.36|^6",
+                "squizlabs/php_codesniffer": "^2.8"
+            },
+            "bin": [
+                "scripts/dependency-licenses"
+            ],
+            "type": "composer-plugin",
+            "extra": {
+                "class": "ComposerTestScenarios\\Plugin",
+                "branch-alias": {
+                    "dev-master": "3.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "ComposerTestScenarios\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Greg Anderson",
+                    "email": "greg.1.anderson@greenknowe.org"
+                }
+            ],
+            "description": "Useful scripts for testing multiple sets of Composer dependencies.",
+            "time": "2018-11-22T05:10:20+00:00"
+        },
+        {
+            "name": "guzzle/guzzle",
+            "version": "v3.9.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/guzzle/guzzle3.git",
+                "reference": "0645b70d953bc1c067bbc8d5bc53194706b628d9"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/guzzle/guzzle3/zipball/0645b70d953bc1c067bbc8d5bc53194706b628d9",
+                "reference": "0645b70d953bc1c067bbc8d5bc53194706b628d9",
+                "shasum": ""
+            },
+            "require": {
+                "ext-curl": "*",
+                "php": ">=5.3.3",
+                "symfony/event-dispatcher": "~2.1"
+            },
+            "replace": {
+                "guzzle/batch": "self.version",
+                "guzzle/cache": "self.version",
+                "guzzle/common": "self.version",
+                "guzzle/http": "self.version",
+                "guzzle/inflection": "self.version",
+                "guzzle/iterator": "self.version",
+                "guzzle/log": "self.version",
+                "guzzle/parser": "self.version",
+                "guzzle/plugin": "self.version",
+                "guzzle/plugin-async": "self.version",
+                "guzzle/plugin-backoff": "self.version",
+                "guzzle/plugin-cache": "self.version",
+                "guzzle/plugin-cookie": "self.version",
+                "guzzle/plugin-curlauth": "self.version",
+                "guzzle/plugin-error-response": "self.version",
+                "guzzle/plugin-history": "self.version",
+                "guzzle/plugin-log": "self.version",
+                "guzzle/plugin-md5": "self.version",
+                "guzzle/plugin-mock": "self.version",
+                "guzzle/plugin-oauth": "self.version",
+                "guzzle/service": "self.version",
+                "guzzle/stream": "self.version"
+            },
+            "require-dev": {
+                "doctrine/cache": "~1.3",
+                "monolog/monolog": "~1.0",
+                "phpunit/phpunit": "3.7.*",
+                "psr/log": "~1.0",
+                "symfony/class-loader": "~2.1",
+                "zendframework/zend-cache": "2.*,<2.3",
+                "zendframework/zend-log": "2.*,<2.3"
+            },
+            "suggest": {
+                "guzzlehttp/guzzle": "Guzzle 5 has moved to a new package name. The package you have installed, Guzzle 3, is deprecated."
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.9-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Guzzle": "src/",
+                    "Guzzle\\Tests": "tests/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Michael Dowling",
+                    "email": "mtdowling@gmail.com",
+                    "homepage": "https://github.com/mtdowling"
+                },
+                {
+                    "name": "Guzzle Community",
+                    "homepage": "https://github.com/guzzle/guzzle/contributors"
+                }
+            ],
+            "description": "PHP HTTP client. This library is deprecated in favor of https://packagist.org/packages/guzzlehttp/guzzle",
+            "homepage": "http://guzzlephp.org/",
+            "keywords": [
+                "client",
+                "curl",
+                "framework",
+                "http",
+                "http client",
+                "rest",
+                "web service"
+            ],
+            "abandoned": "guzzlehttp/guzzle",
+            "time": "2015-03-18T18:23:50+00:00"
+        },
+        {
+            "name": "myclabs/deep-copy",
+            "version": "1.7.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/myclabs/DeepCopy.git",
+                "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
+                "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.6 || ^7.0"
+            },
+            "require-dev": {
+                "doctrine/collections": "^1.0",
+                "doctrine/common": "^2.6",
+                "phpunit/phpunit": "^4.1"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "DeepCopy\\": "src/DeepCopy/"
+                },
+                "files": [
+                    "src/DeepCopy/deep_copy.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "description": "Create deep copies (clones) of your objects",
+            "keywords": [
+                "clone",
+                "copy",
+                "duplicate",
+                "object",
+                "object graph"
+            ],
+            "time": "2017-10-19T19:58:43+00:00"
+        },
+        {
+            "name": "php-coveralls/php-coveralls",
+            "version": "v1.1.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-coveralls/php-coveralls.git",
+                "reference": "37f8f83fe22224eb9d9c6d593cdeb33eedd2a9ad"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-coveralls/php-coveralls/zipball/37f8f83fe22224eb9d9c6d593cdeb33eedd2a9ad",
+                "reference": "37f8f83fe22224eb9d9c6d593cdeb33eedd2a9ad",
+                "shasum": ""
+            },
+            "require": {
+                "ext-json": "*",
+                "ext-simplexml": "*",
+                "guzzle/guzzle": "^2.8 || ^3.0",
+                "php": "^5.3.3 || ^7.0",
+                "psr/log": "^1.0",
+                "symfony/config": "^2.1 || ^3.0 || ^4.0",
+                "symfony/console": "^2.1 || ^3.0 || ^4.0",
+                "symfony/stopwatch": "^2.0 || ^3.0 || ^4.0",
+                "symfony/yaml": "^2.0 || ^3.0 || ^4.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.8.35 || ^5.4.3 || ^6.0"
+            },
+            "suggest": {
+                "symfony/http-kernel": "Allows Symfony integration"
+            },
+            "bin": [
+                "bin/coveralls"
+            ],
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Satooshi\\": "src/Satooshi/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Kitamura Satoshi",
+                    "email": "with.no.parachute@gmail.com",
+                    "homepage": "https://www.facebook.com/satooshi.jp"
+                }
+            ],
+            "description": "PHP client library for Coveralls API",
+            "homepage": "https://github.com/php-coveralls/php-coveralls",
+            "keywords": [
+                "ci",
+                "coverage",
+                "github",
+                "test"
+            ],
+            "time": "2017-12-06T23:17:56+00:00"
+        },
+        {
+            "name": "phpdocumentor/reflection-common",
+            "version": "1.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
+                "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
+                "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.5"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.6"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "phpDocumentor\\Reflection\\": [
+                        "src"
+                    ]
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Jaap van Otterdijk",
+                    "email": "opensource@ijaap.nl"
+                }
+            ],
+            "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
+            "homepage": "http://www.phpdoc.org",
+            "keywords": [
+                "FQSEN",
+                "phpDocumentor",
+                "phpdoc",
+                "reflection",
+                "static analysis"
+            ],
+            "time": "2017-09-11T18:02:19+00:00"
+        },
+        {
+            "name": "phpdocumentor/reflection-docblock",
+            "version": "3.3.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+                "reference": "bf329f6c1aadea3299f08ee804682b7c45b326a2"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/bf329f6c1aadea3299f08ee804682b7c45b326a2",
+                "reference": "bf329f6c1aadea3299f08ee804682b7c45b326a2",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.6 || ^7.0",
+                "phpdocumentor/reflection-common": "^1.0.0",
+                "phpdocumentor/type-resolver": "^0.4.0",
+                "webmozart/assert": "^1.0"
+            },
+            "require-dev": {
+                "mockery/mockery": "^0.9.4",
+                "phpunit/phpunit": "^4.4"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "phpDocumentor\\Reflection\\": [
+                        "src/"
+                    ]
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Mike van Riel",
+                    "email": "me@mikevanriel.com"
+                }
+            ],
+            "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
+            "time": "2017-11-10T14:09:06+00:00"
+        },
+        {
+            "name": "phpdocumentor/type-resolver",
+            "version": "0.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phpDocumentor/TypeResolver.git",
+                "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7",
+                "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.5 || ^7.0",
+                "phpdocumentor/reflection-common": "^1.0"
+            },
+            "require-dev": {
+                "mockery/mockery": "^0.9.4",
+                "phpunit/phpunit": "^5.2||^4.8.24"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "phpDocumentor\\Reflection\\": [
+                        "src/"
+                    ]
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Mike van Riel",
+                    "email": "me@mikevanriel.com"
+                }
+            ],
+            "time": "2017-07-14T14:27:02+00:00"
+        },
+        {
+            "name": "phpspec/prophecy",
+            "version": "1.8.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phpspec/prophecy.git",
+                "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
+                "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
+                "shasum": ""
+            },
+            "require": {
+                "doctrine/instantiator": "^1.0.2",
+                "php": "^5.3|^7.0",
+                "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0",
+                "sebastian/comparator": "^1.1|^2.0|^3.0",
+                "sebastian/recursion-context": "^1.0|^2.0|^3.0"
+            },
+            "require-dev": {
+                "phpspec/phpspec": "^2.5|^3.2",
+                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.8.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Prophecy\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Konstantin Kudryashov",
+                    "email": "ever.zet@gmail.com",
+                    "homepage": "http://everzet.com"
+                },
+                {
+                    "name": "Marcello Duarte",
+                    "email": "marcello.duarte@gmail.com"
+                }
+            ],
+            "description": "Highly opinionated mocking framework for PHP 5.3+",
+            "homepage": "https://github.com/phpspec/prophecy",
+            "keywords": [
+                "Double",
+                "Dummy",
+                "fake",
+                "mock",
+                "spy",
+                "stub"
+            ],
+            "time": "2018-08-05T17:53:17+00:00"
+        },
+        {
+            "name": "phpunit/php-code-coverage",
+            "version": "4.0.8",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
+                "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ef7b2f56815df854e66ceaee8ebe9393ae36a40d",
+                "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d",
+                "shasum": ""
+            },
+            "require": {
+                "ext-dom": "*",
+                "ext-xmlwriter": "*",
+                "php": "^5.6 || ^7.0",
+                "phpunit/php-file-iterator": "^1.3",
+                "phpunit/php-text-template": "^1.2",
+                "phpunit/php-token-stream": "^1.4.2 || ^2.0",
+                "sebastian/code-unit-reverse-lookup": "^1.0",
+                "sebastian/environment": "^1.3.2 || ^2.0",
+                "sebastian/version": "^1.0 || ^2.0"
+            },
+            "require-dev": {
+                "ext-xdebug": "^2.1.4",
+                "phpunit/phpunit": "^5.7"
+            },
+            "suggest": {
+                "ext-xdebug": "^2.5.1"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sb@sebastian-bergmann.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
+            "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
+            "keywords": [
+                "coverage",
+                "testing",
+                "xunit"
+            ],
+            "time": "2017-04-02T07:44:40+00:00"
+        },
+        {
+            "name": "phpunit/php-file-iterator",
+            "version": "1.4.5",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
+                "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4",
+                "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.4.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sb@sebastian-bergmann.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "FilterIterator implementation that filters files based on a list of suffixes.",
+            "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
+            "keywords": [
+                "filesystem",
+                "iterator"
+            ],
+            "time": "2017-11-27T13:52:08+00:00"
+        },
+        {
+            "name": "phpunit/php-text-template",
+            "version": "1.2.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-text-template.git",
+                "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
+                "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "type": "library",
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Simple template engine.",
+            "homepage": "https://github.com/sebastianbergmann/php-text-template/",
+            "keywords": [
+                "template"
+            ],
+            "time": "2015-06-21T13:50:34+00:00"
+        },
+        {
+            "name": "phpunit/php-timer",
+            "version": "1.0.9",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-timer.git",
+                "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
+                "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.3.3 || ^7.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sb@sebastian-bergmann.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Utility class for timing",
+            "homepage": "https://github.com/sebastianbergmann/php-timer/",
+            "keywords": [
+                "timer"
+            ],
+            "time": "2017-02-26T11:10:40+00:00"
+        },
+        {
+            "name": "phpunit/php-token-stream",
+            "version": "1.4.12",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-token-stream.git",
+                "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/1ce90ba27c42e4e44e6d8458241466380b51fa16",
+                "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16",
+                "shasum": ""
+            },
+            "require": {
+                "ext-tokenizer": "*",
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.2"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.4-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Wrapper around PHP's tokenizer extension.",
+            "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
+            "keywords": [
+                "tokenizer"
+            ],
+            "time": "2017-12-04T08:55:13+00:00"
+        },
+        {
+            "name": "phpunit/phpunit",
+            "version": "5.7.27",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/phpunit.git",
+                "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c",
+                "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c",
+                "shasum": ""
+            },
+            "require": {
+                "ext-dom": "*",
+                "ext-json": "*",
+                "ext-libxml": "*",
+                "ext-mbstring": "*",
+                "ext-xml": "*",
+                "myclabs/deep-copy": "~1.3",
+                "php": "^5.6 || ^7.0",
+                "phpspec/prophecy": "^1.6.2",
+                "phpunit/php-code-coverage": "^4.0.4",
+                "phpunit/php-file-iterator": "~1.4",
+                "phpunit/php-text-template": "~1.2",
+                "phpunit/php-timer": "^1.0.6",
+                "phpunit/phpunit-mock-objects": "^3.2",
+                "sebastian/comparator": "^1.2.4",
+                "sebastian/diff": "^1.4.3",
+                "sebastian/environment": "^1.3.4 || ^2.0",
+                "sebastian/exporter": "~2.0",
+                "sebastian/global-state": "^1.1",
+                "sebastian/object-enumerator": "~2.0",
+                "sebastian/resource-operations": "~1.0",
+                "sebastian/version": "^1.0.6|^2.0.1",
+                "symfony/yaml": "~2.1|~3.0|~4.0"
+            },
+            "conflict": {
+                "phpdocumentor/reflection-docblock": "3.0.2"
+            },
+            "require-dev": {
+                "ext-pdo": "*"
+            },
+            "suggest": {
+                "ext-xdebug": "*",
+                "phpunit/php-invoker": "~1.1"
+            },
+            "bin": [
+                "phpunit"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "5.7.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "The PHP Unit Testing framework.",
+            "homepage": "https://phpunit.de/",
+            "keywords": [
+                "phpunit",
+                "testing",
+                "xunit"
+            ],
+            "time": "2018-02-01T05:50:59+00:00"
+        },
+        {
+            "name": "phpunit/phpunit-mock-objects",
+            "version": "3.4.4",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
+                "reference": "a23b761686d50a560cc56233b9ecf49597cc9118"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/a23b761686d50a560cc56233b9ecf49597cc9118",
+                "reference": "a23b761686d50a560cc56233b9ecf49597cc9118",
+                "shasum": ""
+            },
+            "require": {
+                "doctrine/instantiator": "^1.0.2",
+                "php": "^5.6 || ^7.0",
+                "phpunit/php-text-template": "^1.2",
+                "sebastian/exporter": "^1.2 || ^2.0"
+            },
+            "conflict": {
+                "phpunit/phpunit": "<5.4.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^5.4"
+            },
+            "suggest": {
+                "ext-soap": "*"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.2.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sb@sebastian-bergmann.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Mock Object library for PHPUnit",
+            "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
+            "keywords": [
+                "mock",
+                "xunit"
+            ],
+            "time": "2017-06-30T09:13:00+00:00"
+        },
+        {
+            "name": "sebastian/code-unit-reverse-lookup",
+            "version": "1.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
+                "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
+                "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.6 || ^7.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^5.7 || ^6.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Looks up which function or method a line of code belongs to",
+            "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
+            "time": "2017-03-04T06:30:41+00:00"
+        },
+        {
+            "name": "sebastian/comparator",
+            "version": "1.2.4",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/comparator.git",
+                "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be",
+                "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3",
+                "sebastian/diff": "~1.2",
+                "sebastian/exporter": "~1.2 || ~2.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.4"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.2.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Jeff Welch",
+                    "email": "whatthejeff@gmail.com"
+                },
+                {
+                    "name": "Volker Dusch",
+                    "email": "github@wallbash.com"
+                },
+                {
+                    "name": "Bernhard Schussek",
+                    "email": "bschussek@2bepublished.at"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Provides the functionality to compare PHP values for equality",
+            "homepage": "http://www.github.com/sebastianbergmann/comparator",
+            "keywords": [
+                "comparator",
+                "compare",
+                "equality"
+            ],
+            "time": "2017-01-29T09:50:25+00:00"
+        },
+        {
+            "name": "sebastian/diff",
+            "version": "1.4.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/diff.git",
+                "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4",
+                "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.3.3 || ^7.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.4-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Kore Nordmann",
+                    "email": "mail@kore-nordmann.de"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Diff implementation",
+            "homepage": "https://github.com/sebastianbergmann/diff",
+            "keywords": [
+                "diff"
+            ],
+            "time": "2017-05-22T07:24:03+00:00"
+        },
+        {
+            "name": "sebastian/environment",
+            "version": "2.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/environment.git",
+                "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac",
+                "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.6 || ^7.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^5.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Provides functionality to handle HHVM/PHP environments",
+            "homepage": "http://www.github.com/sebastianbergmann/environment",
+            "keywords": [
+                "Xdebug",
+                "environment",
+                "hhvm"
+            ],
+            "time": "2016-11-26T07:53:53+00:00"
+        },
+        {
+            "name": "sebastian/exporter",
+            "version": "2.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/exporter.git",
+                "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4",
+                "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3",
+                "sebastian/recursion-context": "~2.0"
+            },
+            "require-dev": {
+                "ext-mbstring": "*",
+                "phpunit/phpunit": "~4.4"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Jeff Welch",
+                    "email": "whatthejeff@gmail.com"
+                },
+                {
+                    "name": "Volker Dusch",
+                    "email": "github@wallbash.com"
+                },
+                {
+                    "name": "Bernhard Schussek",
+                    "email": "bschussek@2bepublished.at"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                },
+                {
+                    "name": "Adam Harvey",
+                    "email": "aharvey@php.net"
+                }
+            ],
+            "description": "Provides the functionality to export PHP variables for visualization",
+            "homepage": "http://www.github.com/sebastianbergmann/exporter",
+            "keywords": [
+                "export",
+                "exporter"
+            ],
+            "time": "2016-11-19T08:54:04+00:00"
+        },
+        {
+            "name": "sebastian/global-state",
+            "version": "1.1.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/global-state.git",
+                "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4",
+                "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.2"
+            },
+            "suggest": {
+                "ext-uopz": "*"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Snapshotting of global state",
+            "homepage": "http://www.github.com/sebastianbergmann/global-state",
+            "keywords": [
+                "global state"
+            ],
+            "time": "2015-10-12T03:26:01+00:00"
+        },
+        {
+            "name": "sebastian/object-enumerator",
+            "version": "2.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/object-enumerator.git",
+                "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1311872ac850040a79c3c058bea3e22d0f09cbb7",
+                "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.6",
+                "sebastian/recursion-context": "~2.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~5"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Traverses array structures and object graphs to enumerate all referenced objects",
+            "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
+            "time": "2017-02-18T15:18:39+00:00"
+        },
+        {
+            "name": "sebastian/recursion-context",
+            "version": "2.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/recursion-context.git",
+                "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/2c3ba150cbec723aa057506e73a8d33bdb286c9a",
+                "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.4"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Jeff Welch",
+                    "email": "whatthejeff@gmail.com"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                },
+                {
+                    "name": "Adam Harvey",
+                    "email": "aharvey@php.net"
+                }
+            ],
+            "description": "Provides functionality to recursively process PHP variables",
+            "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
+            "time": "2016-11-19T07:33:16+00:00"
+        },
+        {
+            "name": "sebastian/resource-operations",
+            "version": "1.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/resource-operations.git",
+                "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
+                "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.6.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Provides a list of PHP built-in functions that operate on resources",
+            "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
+            "time": "2015-07-28T20:34:47+00:00"
+        },
+        {
+            "name": "sebastian/version",
+            "version": "2.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/version.git",
+                "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019",
+                "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.6"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Library that helps with managing the version number of Git-hosted PHP projects",
+            "homepage": "https://github.com/sebastianbergmann/version",
+            "time": "2016-10-03T07:35:21+00:00"
+        },
+        {
+            "name": "squizlabs/php_codesniffer",
+            "version": "2.9.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
+                "reference": "2acf168de78487db620ab4bc524135a13cfe6745"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/2acf168de78487db620ab4bc524135a13cfe6745",
+                "reference": "2acf168de78487db620ab4bc524135a13cfe6745",
+                "shasum": ""
+            },
+            "require": {
+                "ext-simplexml": "*",
+                "ext-tokenizer": "*",
+                "ext-xmlwriter": "*",
+                "php": ">=5.1.2"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.0"
+            },
+            "bin": [
+                "scripts/phpcs",
+                "scripts/phpcbf"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "CodeSniffer.php",
+                    "CodeSniffer/CLI.php",
+                    "CodeSniffer/Exception.php",
+                    "CodeSniffer/File.php",
+                    "CodeSniffer/Fixer.php",
+                    "CodeSniffer/Report.php",
+                    "CodeSniffer/Reporting.php",
+                    "CodeSniffer/Sniff.php",
+                    "CodeSniffer/Tokens.php",
+                    "CodeSniffer/Reports/",
+                    "CodeSniffer/Tokenizers/",
+                    "CodeSniffer/DocGenerators/",
+                    "CodeSniffer/Standards/AbstractPatternSniff.php",
+                    "CodeSniffer/Standards/AbstractScopeSniff.php",
+                    "CodeSniffer/Standards/AbstractVariableSniff.php",
+                    "CodeSniffer/Standards/IncorrectPatternException.php",
+                    "CodeSniffer/Standards/Generic/Sniffs/",
+                    "CodeSniffer/Standards/MySource/Sniffs/",
+                    "CodeSniffer/Standards/PEAR/Sniffs/",
+                    "CodeSniffer/Standards/PSR1/Sniffs/",
+                    "CodeSniffer/Standards/PSR2/Sniffs/",
+                    "CodeSniffer/Standards/Squiz/Sniffs/",
+                    "CodeSniffer/Standards/Zend/Sniffs/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Greg Sherwood",
+                    "role": "lead"
+                }
+            ],
+            "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
+            "homepage": "http://www.squizlabs.com/php-codesniffer",
+            "keywords": [
+                "phpcs",
+                "standards"
+            ],
+            "time": "2018-11-07T22:31:41+00:00"
+        },
+        {
+            "name": "symfony/config",
+            "version": "v3.4.18",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/config.git",
+                "reference": "99b2fa8acc244e656cdf324ff419fbe6fd300a4d"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/config/zipball/99b2fa8acc244e656cdf324ff419fbe6fd300a4d",
+                "reference": "99b2fa8acc244e656cdf324ff419fbe6fd300a4d",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.5.9|>=7.0.8",
+                "symfony/filesystem": "~2.8|~3.0|~4.0",
+                "symfony/polyfill-ctype": "~1.8"
+            },
+            "conflict": {
+                "symfony/dependency-injection": "<3.3",
+                "symfony/finder": "<3.3"
+            },
+            "require-dev": {
+                "symfony/dependency-injection": "~3.3|~4.0",
+                "symfony/event-dispatcher": "~3.3|~4.0",
+                "symfony/finder": "~3.3|~4.0",
+                "symfony/yaml": "~3.0|~4.0"
+            },
+            "suggest": {
+                "symfony/yaml": "To use the yaml reference dumper"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Config\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Config Component",
+            "homepage": "https://symfony.com",
+            "time": "2018-10-31T09:06:03+00:00"
+        },
+        {
+            "name": "symfony/event-dispatcher",
+            "version": "v2.8.47",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/event-dispatcher.git",
+                "reference": "76494bc38ff38d90d01913d23b5271acd4d78dd3"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/76494bc38ff38d90d01913d23b5271acd4d78dd3",
+                "reference": "76494bc38ff38d90d01913d23b5271acd4d78dd3",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.9"
+            },
+            "require-dev": {
+                "psr/log": "~1.0",
+                "symfony/config": "^2.0.5|~3.0.0",
+                "symfony/dependency-injection": "~2.6|~3.0.0",
+                "symfony/expression-language": "~2.6|~3.0.0",
+                "symfony/stopwatch": "~2.3|~3.0.0"
+            },
+            "suggest": {
+                "symfony/dependency-injection": "",
+                "symfony/http-kernel": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.8-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\EventDispatcher\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony EventDispatcher Component",
+            "homepage": "https://symfony.com",
+            "time": "2018-10-20T23:16:31+00:00"
+        },
+        {
+            "name": "symfony/filesystem",
+            "version": "v3.4.18",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/filesystem.git",
+                "reference": "d69930fc337d767607267d57c20a7403d0a822a4"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/filesystem/zipball/d69930fc337d767607267d57c20a7403d0a822a4",
+                "reference": "d69930fc337d767607267d57c20a7403d0a822a4",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.5.9|>=7.0.8",
+                "symfony/polyfill-ctype": "~1.8"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Filesystem\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Filesystem Component",
+            "homepage": "https://symfony.com",
+            "time": "2018-10-02T12:28:39+00:00"
+        },
+        {
+            "name": "symfony/polyfill-ctype",
+            "version": "v1.10.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-ctype.git",
+                "reference": "e3d826245268269cd66f8326bd8bc066687b4a19"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19",
+                "reference": "e3d826245268269cd66f8326bd8bc066687b4a19",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "suggest": {
+                "ext-ctype": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.9-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Polyfill\\Ctype\\": ""
+                },
+                "files": [
+                    "bootstrap.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                },
+                {
+                    "name": "Gert de Pagter",
+                    "email": "BackEndTea@gmail.com"
+                }
+            ],
+            "description": "Symfony polyfill for ctype functions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "ctype",
+                "polyfill",
+                "portable"
+            ],
+            "time": "2018-08-06T14:22:27+00:00"
+        },
+        {
+            "name": "symfony/stopwatch",
+            "version": "v3.4.18",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/stopwatch.git",
+                "reference": "05e52a39de52ba690aebaed462b2bc8a9649f0a4"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/stopwatch/zipball/05e52a39de52ba690aebaed462b2bc8a9649f0a4",
+                "reference": "05e52a39de52ba690aebaed462b2bc8a9649f0a4",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.5.9|>=7.0.8"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Stopwatch\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Stopwatch Component",
+            "homepage": "https://symfony.com",
+            "time": "2018-10-02T12:28:39+00:00"
+        },
+        {
+            "name": "symfony/yaml",
+            "version": "v3.4.18",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/yaml.git",
+                "reference": "640b6c27fed4066d64b64d5903a86043f4a4de7f"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/yaml/zipball/640b6c27fed4066d64b64d5903a86043f4a4de7f",
+                "reference": "640b6c27fed4066d64b64d5903a86043f4a4de7f",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.5.9|>=7.0.8",
+                "symfony/polyfill-ctype": "~1.8"
+            },
+            "conflict": {
+                "symfony/console": "<3.4"
+            },
+            "require-dev": {
+                "symfony/console": "~3.4|~4.0"
+            },
+            "suggest": {
+                "symfony/console": "For validating YAML files using the lint command"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Yaml\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Yaml Component",
+            "homepage": "https://symfony.com",
+            "time": "2018-10-02T16:33:53+00:00"
+        },
+        {
+            "name": "victorjonsson/markdowndocs",
+            "version": "1.3.8",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/victorjonsson/PHP-Markdown-Documentation-Generator.git",
+                "reference": "c5eb16ff5bd15ee60223883ddacba0ab8797268d"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/victorjonsson/PHP-Markdown-Documentation-Generator/zipball/c5eb16ff5bd15ee60223883ddacba0ab8797268d",
+                "reference": "c5eb16ff5bd15ee60223883ddacba0ab8797268d",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.5.0",
+                "symfony/console": ">=2.6"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "3.7.23"
+            },
+            "bin": [
+                "bin/phpdoc-md"
+            ],
+            "type": "library",
+            "autoload": {
+                "psr-0": {
+                    "PHPDocsMD": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Victor Jonsson",
+                    "email": "kontakt@victorjonsson.se"
+                }
+            ],
+            "description": "Command line tool for generating markdown-formatted class documentation",
+            "homepage": "https://github.com/victorjonsson/PHP-Markdown-Documentation-Generator",
+            "time": "2017-04-20T09:52:47+00:00"
+        },
+        {
+            "name": "webmozart/assert",
+            "version": "1.3.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/webmozart/assert.git",
+                "reference": "0df1908962e7a3071564e857d86874dad1ef204a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a",
+                "reference": "0df1908962e7a3071564e857d86874dad1ef204a",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.3.3 || ^7.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.6",
+                "sebastian/version": "^1.0.1"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.3-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Webmozart\\Assert\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Bernhard Schussek",
+                    "email": "bschussek@gmail.com"
+                }
+            ],
+            "description": "Assertions to validate method input/output with nice error messages.",
+            "keywords": [
+                "assert",
+                "check",
+                "validate"
+            ],
+            "time": "2018-01-29T19:49:41+00:00"
+        }
+    ],
+    "aliases": [],
+    "minimum-stability": "stable",
+    "stability-flags": [],
+    "prefer-stable": false,
+    "prefer-lowest": false,
+    "platform": {
+        "php": ">=5.4.0"
+    },
+    "platform-dev": [],
+    "platform-overrides": {
+        "php": "5.6.32"
+    }
+}
diff --git a/vendor/consolidation/output-formatters/.scenarios.lock/symfony4/.gitignore b/vendor/consolidation/output-formatters/.scenarios.lock/symfony4/.gitignore
new file mode 100644
index 0000000000..5657f6ea7d
--- /dev/null
+++ b/vendor/consolidation/output-formatters/.scenarios.lock/symfony4/.gitignore
@@ -0,0 +1 @@
+vendor
\ No newline at end of file
diff --git a/vendor/consolidation/output-formatters/.scenarios.lock/symfony4/composer.json b/vendor/consolidation/output-formatters/.scenarios.lock/symfony4/composer.json
new file mode 100644
index 0000000000..1767205715
--- /dev/null
+++ b/vendor/consolidation/output-formatters/.scenarios.lock/symfony4/composer.json
@@ -0,0 +1,66 @@
+{
+    "name": "consolidation/output-formatters",
+    "description": "Format text by applying transformations provided by plug-in formatters.",
+    "license": "MIT",
+    "authors": [
+        {
+            "name": "Greg Anderson",
+            "email": "greg.1.anderson@greenknowe.org"
+        }
+    ],
+    "autoload": {
+        "psr-4": {
+            "Consolidation\\OutputFormatters\\": "../../src"
+        }
+    },
+    "autoload-dev": {
+        "psr-4": {
+            "Consolidation\\TestUtils\\": "../../tests/src"
+        }
+    },
+    "require": {
+        "symfony/console": "^4.0",
+        "php": ">=5.4.0",
+        "dflydev/dot-access-data": "^1.1.0",
+        "symfony/finder": "^2.5|^3|^4"
+    },
+    "require-dev": {
+        "phpunit/phpunit": "^6",
+        "g1a/composer-test-scenarios": "^3",
+        "php-coveralls/php-coveralls": "^1",
+        "squizlabs/php_codesniffer": "^2.7",
+        "symfony/var-dumper": "^2.8|^3|^4",
+        "victorjonsson/markdowndocs": "^1.3"
+    },
+    "suggest": {
+        "symfony/var-dumper": "For using the var_dump formatter"
+    },
+    "config": {
+        "platform": {
+            "php": "7.1.3"
+        },
+        "optimize-autoloader": true,
+        "sort-packages": true,
+        "vendor-dir": "../../vendor"
+    },
+    "scripts": {
+        "api": "phpdoc-md generate src > docs/api.md",
+        "cs": "phpcs --standard=PSR2 -n src",
+        "cbf": "phpcbf --standard=PSR2 -n src",
+        "unit": "phpunit --colors=always",
+        "lint": [
+            "find src -name '*.php' -print0 | xargs -0 -n1 php -l",
+            "find tests/src -name '*.php' -print0 | xargs -0 -n1 php -l"
+        ],
+        "test": [
+            "@lint",
+            "@unit",
+            "@cs"
+        ]
+    },
+    "extra": {
+        "branch-alias": {
+            "dev-master": "3.x-dev"
+        }
+    }
+}
diff --git a/vendor/consolidation/output-formatters/.scenarios.lock/symfony4/composer.lock b/vendor/consolidation/output-formatters/.scenarios.lock/symfony4/composer.lock
new file mode 100644
index 0000000000..c43421e24c
--- /dev/null
+++ b/vendor/consolidation/output-formatters/.scenarios.lock/symfony4/composer.lock
@@ -0,0 +1,2566 @@
+{
+    "_readme": [
+        "This file locks the dependencies of your project to a known state",
+        "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
+        "This file is @generated automatically"
+    ],
+    "content-hash": "8be5eb98a4ffa6ddd6a6c8f27bf99e5a",
+    "packages": [
+        {
+            "name": "dflydev/dot-access-data",
+            "version": "v1.1.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/dflydev/dflydev-dot-access-data.git",
+                "reference": "3fbd874921ab2c041e899d044585a2ab9795df8a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/3fbd874921ab2c041e899d044585a2ab9795df8a",
+                "reference": "3fbd874921ab2c041e899d044585a2ab9795df8a",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.2"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Dflydev\\DotAccessData": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Dragonfly Development Inc.",
+                    "email": "info@dflydev.com",
+                    "homepage": "http://dflydev.com"
+                },
+                {
+                    "name": "Beau Simensen",
+                    "email": "beau@dflydev.com",
+                    "homepage": "http://beausimensen.com"
+                },
+                {
+                    "name": "Carlos Frutos",
+                    "email": "carlos@kiwing.it",
+                    "homepage": "https://github.com/cfrutos"
+                }
+            ],
+            "description": "Given a deep data structure, access data by dot notation.",
+            "homepage": "https://github.com/dflydev/dflydev-dot-access-data",
+            "keywords": [
+                "access",
+                "data",
+                "dot",
+                "notation"
+            ],
+            "time": "2017-01-20T21:14:22+00:00"
+        },
+        {
+            "name": "symfony/console",
+            "version": "v4.1.7",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/console.git",
+                "reference": "432122af37d8cd52fba1b294b11976e0d20df595"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/console/zipball/432122af37d8cd52fba1b294b11976e0d20df595",
+                "reference": "432122af37d8cd52fba1b294b11976e0d20df595",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.1.3",
+                "symfony/polyfill-mbstring": "~1.0"
+            },
+            "conflict": {
+                "symfony/dependency-injection": "<3.4",
+                "symfony/process": "<3.3"
+            },
+            "require-dev": {
+                "psr/log": "~1.0",
+                "symfony/config": "~3.4|~4.0",
+                "symfony/dependency-injection": "~3.4|~4.0",
+                "symfony/event-dispatcher": "~3.4|~4.0",
+                "symfony/lock": "~3.4|~4.0",
+                "symfony/process": "~3.4|~4.0"
+            },
+            "suggest": {
+                "psr/log-implementation": "For using the console logger",
+                "symfony/event-dispatcher": "",
+                "symfony/lock": "",
+                "symfony/process": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.1-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Console\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Console Component",
+            "homepage": "https://symfony.com",
+            "time": "2018-10-31T09:30:44+00:00"
+        },
+        {
+            "name": "symfony/finder",
+            "version": "v4.1.7",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/finder.git",
+                "reference": "1f17195b44543017a9c9b2d437c670627e96ad06"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/finder/zipball/1f17195b44543017a9c9b2d437c670627e96ad06",
+                "reference": "1f17195b44543017a9c9b2d437c670627e96ad06",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.1.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.1-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Finder\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Finder Component",
+            "homepage": "https://symfony.com",
+            "time": "2018-10-03T08:47:56+00:00"
+        },
+        {
+            "name": "symfony/polyfill-mbstring",
+            "version": "v1.10.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-mbstring.git",
+                "reference": "c79c051f5b3a46be09205c73b80b346e4153e494"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494",
+                "reference": "c79c051f5b3a46be09205c73b80b346e4153e494",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "suggest": {
+                "ext-mbstring": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.9-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Polyfill\\Mbstring\\": ""
+                },
+                "files": [
+                    "bootstrap.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill for the Mbstring extension",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "mbstring",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "time": "2018-09-21T13:07:52+00:00"
+        }
+    ],
+    "packages-dev": [
+        {
+            "name": "doctrine/instantiator",
+            "version": "1.1.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/doctrine/instantiator.git",
+                "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda",
+                "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.1"
+            },
+            "require-dev": {
+                "athletic/athletic": "~0.1.8",
+                "ext-pdo": "*",
+                "ext-phar": "*",
+                "phpunit/phpunit": "^6.2.3",
+                "squizlabs/php_codesniffer": "^3.0.2"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.2.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Marco Pivetta",
+                    "email": "ocramius@gmail.com",
+                    "homepage": "http://ocramius.github.com/"
+                }
+            ],
+            "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+            "homepage": "https://github.com/doctrine/instantiator",
+            "keywords": [
+                "constructor",
+                "instantiate"
+            ],
+            "time": "2017-07-22T11:58:36+00:00"
+        },
+        {
+            "name": "g1a/composer-test-scenarios",
+            "version": "3.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/g1a/composer-test-scenarios.git",
+                "reference": "2a7156f1572898888ea50ad1d48a6b4d3f9fbf78"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/g1a/composer-test-scenarios/zipball/2a7156f1572898888ea50ad1d48a6b4d3f9fbf78",
+                "reference": "2a7156f1572898888ea50ad1d48a6b4d3f9fbf78",
+                "shasum": ""
+            },
+            "require": {
+                "composer-plugin-api": "^1.0.0",
+                "php": ">=5.4"
+            },
+            "require-dev": {
+                "composer/composer": "^1.7",
+                "php-coveralls/php-coveralls": "^1.0",
+                "phpunit/phpunit": "^4.8.36|^6",
+                "squizlabs/php_codesniffer": "^2.8"
+            },
+            "bin": [
+                "scripts/dependency-licenses"
+            ],
+            "type": "composer-plugin",
+            "extra": {
+                "class": "ComposerTestScenarios\\Plugin",
+                "branch-alias": {
+                    "dev-master": "3.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "ComposerTestScenarios\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Greg Anderson",
+                    "email": "greg.1.anderson@greenknowe.org"
+                }
+            ],
+            "description": "Useful scripts for testing multiple sets of Composer dependencies.",
+            "time": "2018-11-22T05:10:20+00:00"
+        },
+        {
+            "name": "guzzle/guzzle",
+            "version": "v3.9.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/guzzle/guzzle3.git",
+                "reference": "0645b70d953bc1c067bbc8d5bc53194706b628d9"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/guzzle/guzzle3/zipball/0645b70d953bc1c067bbc8d5bc53194706b628d9",
+                "reference": "0645b70d953bc1c067bbc8d5bc53194706b628d9",
+                "shasum": ""
+            },
+            "require": {
+                "ext-curl": "*",
+                "php": ">=5.3.3",
+                "symfony/event-dispatcher": "~2.1"
+            },
+            "replace": {
+                "guzzle/batch": "self.version",
+                "guzzle/cache": "self.version",
+                "guzzle/common": "self.version",
+                "guzzle/http": "self.version",
+                "guzzle/inflection": "self.version",
+                "guzzle/iterator": "self.version",
+                "guzzle/log": "self.version",
+                "guzzle/parser": "self.version",
+                "guzzle/plugin": "self.version",
+                "guzzle/plugin-async": "self.version",
+                "guzzle/plugin-backoff": "self.version",
+                "guzzle/plugin-cache": "self.version",
+                "guzzle/plugin-cookie": "self.version",
+                "guzzle/plugin-curlauth": "self.version",
+                "guzzle/plugin-error-response": "self.version",
+                "guzzle/plugin-history": "self.version",
+                "guzzle/plugin-log": "self.version",
+                "guzzle/plugin-md5": "self.version",
+                "guzzle/plugin-mock": "self.version",
+                "guzzle/plugin-oauth": "self.version",
+                "guzzle/service": "self.version",
+                "guzzle/stream": "self.version"
+            },
+            "require-dev": {
+                "doctrine/cache": "~1.3",
+                "monolog/monolog": "~1.0",
+                "phpunit/phpunit": "3.7.*",
+                "psr/log": "~1.0",
+                "symfony/class-loader": "~2.1",
+                "zendframework/zend-cache": "2.*,<2.3",
+                "zendframework/zend-log": "2.*,<2.3"
+            },
+            "suggest": {
+                "guzzlehttp/guzzle": "Guzzle 5 has moved to a new package name. The package you have installed, Guzzle 3, is deprecated."
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.9-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Guzzle": "src/",
+                    "Guzzle\\Tests": "tests/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Michael Dowling",
+                    "email": "mtdowling@gmail.com",
+                    "homepage": "https://github.com/mtdowling"
+                },
+                {
+                    "name": "Guzzle Community",
+                    "homepage": "https://github.com/guzzle/guzzle/contributors"
+                }
+            ],
+            "description": "PHP HTTP client. This library is deprecated in favor of https://packagist.org/packages/guzzlehttp/guzzle",
+            "homepage": "http://guzzlephp.org/",
+            "keywords": [
+                "client",
+                "curl",
+                "framework",
+                "http",
+                "http client",
+                "rest",
+                "web service"
+            ],
+            "abandoned": "guzzlehttp/guzzle",
+            "time": "2015-03-18T18:23:50+00:00"
+        },
+        {
+            "name": "myclabs/deep-copy",
+            "version": "1.8.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/myclabs/DeepCopy.git",
+                "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8",
+                "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.1"
+            },
+            "replace": {
+                "myclabs/deep-copy": "self.version"
+            },
+            "require-dev": {
+                "doctrine/collections": "^1.0",
+                "doctrine/common": "^2.6",
+                "phpunit/phpunit": "^7.1"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "DeepCopy\\": "src/DeepCopy/"
+                },
+                "files": [
+                    "src/DeepCopy/deep_copy.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "description": "Create deep copies (clones) of your objects",
+            "keywords": [
+                "clone",
+                "copy",
+                "duplicate",
+                "object",
+                "object graph"
+            ],
+            "time": "2018-06-11T23:09:50+00:00"
+        },
+        {
+            "name": "phar-io/manifest",
+            "version": "1.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phar-io/manifest.git",
+                "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0",
+                "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0",
+                "shasum": ""
+            },
+            "require": {
+                "ext-dom": "*",
+                "ext-phar": "*",
+                "phar-io/version": "^1.0.1",
+                "php": "^5.6 || ^7.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Arne Blankerts",
+                    "email": "arne@blankerts.de",
+                    "role": "Developer"
+                },
+                {
+                    "name": "Sebastian Heuer",
+                    "email": "sebastian@phpeople.de",
+                    "role": "Developer"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "Developer"
+                }
+            ],
+            "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
+            "time": "2017-03-05T18:14:27+00:00"
+        },
+        {
+            "name": "phar-io/version",
+            "version": "1.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phar-io/version.git",
+                "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df",
+                "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.6 || ^7.0"
+            },
+            "type": "library",
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Arne Blankerts",
+                    "email": "arne@blankerts.de",
+                    "role": "Developer"
+                },
+                {
+                    "name": "Sebastian Heuer",
+                    "email": "sebastian@phpeople.de",
+                    "role": "Developer"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "Developer"
+                }
+            ],
+            "description": "Library for handling version information and constraints",
+            "time": "2017-03-05T17:38:23+00:00"
+        },
+        {
+            "name": "php-coveralls/php-coveralls",
+            "version": "v1.1.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-coveralls/php-coveralls.git",
+                "reference": "37f8f83fe22224eb9d9c6d593cdeb33eedd2a9ad"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-coveralls/php-coveralls/zipball/37f8f83fe22224eb9d9c6d593cdeb33eedd2a9ad",
+                "reference": "37f8f83fe22224eb9d9c6d593cdeb33eedd2a9ad",
+                "shasum": ""
+            },
+            "require": {
+                "ext-json": "*",
+                "ext-simplexml": "*",
+                "guzzle/guzzle": "^2.8 || ^3.0",
+                "php": "^5.3.3 || ^7.0",
+                "psr/log": "^1.0",
+                "symfony/config": "^2.1 || ^3.0 || ^4.0",
+                "symfony/console": "^2.1 || ^3.0 || ^4.0",
+                "symfony/stopwatch": "^2.0 || ^3.0 || ^4.0",
+                "symfony/yaml": "^2.0 || ^3.0 || ^4.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.8.35 || ^5.4.3 || ^6.0"
+            },
+            "suggest": {
+                "symfony/http-kernel": "Allows Symfony integration"
+            },
+            "bin": [
+                "bin/coveralls"
+            ],
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Satooshi\\": "src/Satooshi/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Kitamura Satoshi",
+                    "email": "with.no.parachute@gmail.com",
+                    "homepage": "https://www.facebook.com/satooshi.jp"
+                }
+            ],
+            "description": "PHP client library for Coveralls API",
+            "homepage": "https://github.com/php-coveralls/php-coveralls",
+            "keywords": [
+                "ci",
+                "coverage",
+                "github",
+                "test"
+            ],
+            "time": "2017-12-06T23:17:56+00:00"
+        },
+        {
+            "name": "phpdocumentor/reflection-common",
+            "version": "1.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
+                "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
+                "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.5"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.6"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "phpDocumentor\\Reflection\\": [
+                        "src"
+                    ]
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Jaap van Otterdijk",
+                    "email": "opensource@ijaap.nl"
+                }
+            ],
+            "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
+            "homepage": "http://www.phpdoc.org",
+            "keywords": [
+                "FQSEN",
+                "phpDocumentor",
+                "phpdoc",
+                "reflection",
+                "static analysis"
+            ],
+            "time": "2017-09-11T18:02:19+00:00"
+        },
+        {
+            "name": "phpdocumentor/reflection-docblock",
+            "version": "4.3.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+                "reference": "94fd0001232e47129dd3504189fa1c7225010d08"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08",
+                "reference": "94fd0001232e47129dd3504189fa1c7225010d08",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.0",
+                "phpdocumentor/reflection-common": "^1.0.0",
+                "phpdocumentor/type-resolver": "^0.4.0",
+                "webmozart/assert": "^1.0"
+            },
+            "require-dev": {
+                "doctrine/instantiator": "~1.0.5",
+                "mockery/mockery": "^1.0",
+                "phpunit/phpunit": "^6.4"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "phpDocumentor\\Reflection\\": [
+                        "src/"
+                    ]
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Mike van Riel",
+                    "email": "me@mikevanriel.com"
+                }
+            ],
+            "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
+            "time": "2017-11-30T07:14:17+00:00"
+        },
+        {
+            "name": "phpdocumentor/type-resolver",
+            "version": "0.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phpDocumentor/TypeResolver.git",
+                "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7",
+                "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.5 || ^7.0",
+                "phpdocumentor/reflection-common": "^1.0"
+            },
+            "require-dev": {
+                "mockery/mockery": "^0.9.4",
+                "phpunit/phpunit": "^5.2||^4.8.24"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "phpDocumentor\\Reflection\\": [
+                        "src/"
+                    ]
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Mike van Riel",
+                    "email": "me@mikevanriel.com"
+                }
+            ],
+            "time": "2017-07-14T14:27:02+00:00"
+        },
+        {
+            "name": "phpspec/prophecy",
+            "version": "1.8.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phpspec/prophecy.git",
+                "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
+                "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
+                "shasum": ""
+            },
+            "require": {
+                "doctrine/instantiator": "^1.0.2",
+                "php": "^5.3|^7.0",
+                "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0",
+                "sebastian/comparator": "^1.1|^2.0|^3.0",
+                "sebastian/recursion-context": "^1.0|^2.0|^3.0"
+            },
+            "require-dev": {
+                "phpspec/phpspec": "^2.5|^3.2",
+                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.8.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Prophecy\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Konstantin Kudryashov",
+                    "email": "ever.zet@gmail.com",
+                    "homepage": "http://everzet.com"
+                },
+                {
+                    "name": "Marcello Duarte",
+                    "email": "marcello.duarte@gmail.com"
+                }
+            ],
+            "description": "Highly opinionated mocking framework for PHP 5.3+",
+            "homepage": "https://github.com/phpspec/prophecy",
+            "keywords": [
+                "Double",
+                "Dummy",
+                "fake",
+                "mock",
+                "spy",
+                "stub"
+            ],
+            "time": "2018-08-05T17:53:17+00:00"
+        },
+        {
+            "name": "phpunit/php-code-coverage",
+            "version": "5.3.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
+                "reference": "c89677919c5dd6d3b3852f230a663118762218ac"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c89677919c5dd6d3b3852f230a663118762218ac",
+                "reference": "c89677919c5dd6d3b3852f230a663118762218ac",
+                "shasum": ""
+            },
+            "require": {
+                "ext-dom": "*",
+                "ext-xmlwriter": "*",
+                "php": "^7.0",
+                "phpunit/php-file-iterator": "^1.4.2",
+                "phpunit/php-text-template": "^1.2.1",
+                "phpunit/php-token-stream": "^2.0.1",
+                "sebastian/code-unit-reverse-lookup": "^1.0.1",
+                "sebastian/environment": "^3.0",
+                "sebastian/version": "^2.0.1",
+                "theseer/tokenizer": "^1.1"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^6.0"
+            },
+            "suggest": {
+                "ext-xdebug": "^2.5.5"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "5.3.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
+            "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
+            "keywords": [
+                "coverage",
+                "testing",
+                "xunit"
+            ],
+            "time": "2018-04-06T15:36:58+00:00"
+        },
+        {
+            "name": "phpunit/php-file-iterator",
+            "version": "1.4.5",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
+                "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4",
+                "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.4.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sb@sebastian-bergmann.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "FilterIterator implementation that filters files based on a list of suffixes.",
+            "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
+            "keywords": [
+                "filesystem",
+                "iterator"
+            ],
+            "time": "2017-11-27T13:52:08+00:00"
+        },
+        {
+            "name": "phpunit/php-text-template",
+            "version": "1.2.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-text-template.git",
+                "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
+                "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "type": "library",
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Simple template engine.",
+            "homepage": "https://github.com/sebastianbergmann/php-text-template/",
+            "keywords": [
+                "template"
+            ],
+            "time": "2015-06-21T13:50:34+00:00"
+        },
+        {
+            "name": "phpunit/php-timer",
+            "version": "1.0.9",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-timer.git",
+                "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
+                "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.3.3 || ^7.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sb@sebastian-bergmann.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Utility class for timing",
+            "homepage": "https://github.com/sebastianbergmann/php-timer/",
+            "keywords": [
+                "timer"
+            ],
+            "time": "2017-02-26T11:10:40+00:00"
+        },
+        {
+            "name": "phpunit/php-token-stream",
+            "version": "2.0.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-token-stream.git",
+                "reference": "791198a2c6254db10131eecfe8c06670700904db"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db",
+                "reference": "791198a2c6254db10131eecfe8c06670700904db",
+                "shasum": ""
+            },
+            "require": {
+                "ext-tokenizer": "*",
+                "php": "^7.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^6.2.4"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Wrapper around PHP's tokenizer extension.",
+            "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
+            "keywords": [
+                "tokenizer"
+            ],
+            "time": "2017-11-27T05:48:46+00:00"
+        },
+        {
+            "name": "phpunit/phpunit",
+            "version": "6.5.13",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/phpunit.git",
+                "reference": "0973426fb012359b2f18d3bd1e90ef1172839693"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0973426fb012359b2f18d3bd1e90ef1172839693",
+                "reference": "0973426fb012359b2f18d3bd1e90ef1172839693",
+                "shasum": ""
+            },
+            "require": {
+                "ext-dom": "*",
+                "ext-json": "*",
+                "ext-libxml": "*",
+                "ext-mbstring": "*",
+                "ext-xml": "*",
+                "myclabs/deep-copy": "^1.6.1",
+                "phar-io/manifest": "^1.0.1",
+                "phar-io/version": "^1.0",
+                "php": "^7.0",
+                "phpspec/prophecy": "^1.7",
+                "phpunit/php-code-coverage": "^5.3",
+                "phpunit/php-file-iterator": "^1.4.3",
+                "phpunit/php-text-template": "^1.2.1",
+                "phpunit/php-timer": "^1.0.9",
+                "phpunit/phpunit-mock-objects": "^5.0.9",
+                "sebastian/comparator": "^2.1",
+                "sebastian/diff": "^2.0",
+                "sebastian/environment": "^3.1",
+                "sebastian/exporter": "^3.1",
+                "sebastian/global-state": "^2.0",
+                "sebastian/object-enumerator": "^3.0.3",
+                "sebastian/resource-operations": "^1.0",
+                "sebastian/version": "^2.0.1"
+            },
+            "conflict": {
+                "phpdocumentor/reflection-docblock": "3.0.2",
+                "phpunit/dbunit": "<3.0"
+            },
+            "require-dev": {
+                "ext-pdo": "*"
+            },
+            "suggest": {
+                "ext-xdebug": "*",
+                "phpunit/php-invoker": "^1.1"
+            },
+            "bin": [
+                "phpunit"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "6.5.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "The PHP Unit Testing framework.",
+            "homepage": "https://phpunit.de/",
+            "keywords": [
+                "phpunit",
+                "testing",
+                "xunit"
+            ],
+            "time": "2018-09-08T15:10:43+00:00"
+        },
+        {
+            "name": "phpunit/phpunit-mock-objects",
+            "version": "5.0.10",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
+                "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/cd1cf05c553ecfec36b170070573e540b67d3f1f",
+                "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f",
+                "shasum": ""
+            },
+            "require": {
+                "doctrine/instantiator": "^1.0.5",
+                "php": "^7.0",
+                "phpunit/php-text-template": "^1.2.1",
+                "sebastian/exporter": "^3.1"
+            },
+            "conflict": {
+                "phpunit/phpunit": "<6.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^6.5.11"
+            },
+            "suggest": {
+                "ext-soap": "*"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "5.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Mock Object library for PHPUnit",
+            "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
+            "keywords": [
+                "mock",
+                "xunit"
+            ],
+            "time": "2018-08-09T05:50:03+00:00"
+        },
+        {
+            "name": "psr/log",
+            "version": "1.1.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/log.git",
+                "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
+                "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Psr\\Log\\": "Psr/Log/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "http://www.php-fig.org/"
+                }
+            ],
+            "description": "Common interface for logging libraries",
+            "homepage": "https://github.com/php-fig/log",
+            "keywords": [
+                "log",
+                "psr",
+                "psr-3"
+            ],
+            "time": "2018-11-20T15:27:04+00:00"
+        },
+        {
+            "name": "sebastian/code-unit-reverse-lookup",
+            "version": "1.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
+                "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
+                "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.6 || ^7.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^5.7 || ^6.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Looks up which function or method a line of code belongs to",
+            "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
+            "time": "2017-03-04T06:30:41+00:00"
+        },
+        {
+            "name": "sebastian/comparator",
+            "version": "2.1.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/comparator.git",
+                "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/34369daee48eafb2651bea869b4b15d75ccc35f9",
+                "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.0",
+                "sebastian/diff": "^2.0 || ^3.0",
+                "sebastian/exporter": "^3.1"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^6.4"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.1.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Jeff Welch",
+                    "email": "whatthejeff@gmail.com"
+                },
+                {
+                    "name": "Volker Dusch",
+                    "email": "github@wallbash.com"
+                },
+                {
+                    "name": "Bernhard Schussek",
+                    "email": "bschussek@2bepublished.at"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Provides the functionality to compare PHP values for equality",
+            "homepage": "https://github.com/sebastianbergmann/comparator",
+            "keywords": [
+                "comparator",
+                "compare",
+                "equality"
+            ],
+            "time": "2018-02-01T13:46:46+00:00"
+        },
+        {
+            "name": "sebastian/diff",
+            "version": "2.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/diff.git",
+                "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd",
+                "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^6.2"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Kore Nordmann",
+                    "email": "mail@kore-nordmann.de"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Diff implementation",
+            "homepage": "https://github.com/sebastianbergmann/diff",
+            "keywords": [
+                "diff"
+            ],
+            "time": "2017-08-03T08:09:46+00:00"
+        },
+        {
+            "name": "sebastian/environment",
+            "version": "3.1.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/environment.git",
+                "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5",
+                "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^6.1"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.1.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Provides functionality to handle HHVM/PHP environments",
+            "homepage": "http://www.github.com/sebastianbergmann/environment",
+            "keywords": [
+                "Xdebug",
+                "environment",
+                "hhvm"
+            ],
+            "time": "2017-07-01T08:51:00+00:00"
+        },
+        {
+            "name": "sebastian/exporter",
+            "version": "3.1.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/exporter.git",
+                "reference": "234199f4528de6d12aaa58b612e98f7d36adb937"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937",
+                "reference": "234199f4528de6d12aaa58b612e98f7d36adb937",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.0",
+                "sebastian/recursion-context": "^3.0"
+            },
+            "require-dev": {
+                "ext-mbstring": "*",
+                "phpunit/phpunit": "^6.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.1.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Jeff Welch",
+                    "email": "whatthejeff@gmail.com"
+                },
+                {
+                    "name": "Volker Dusch",
+                    "email": "github@wallbash.com"
+                },
+                {
+                    "name": "Bernhard Schussek",
+                    "email": "bschussek@2bepublished.at"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                },
+                {
+                    "name": "Adam Harvey",
+                    "email": "aharvey@php.net"
+                }
+            ],
+            "description": "Provides the functionality to export PHP variables for visualization",
+            "homepage": "http://www.github.com/sebastianbergmann/exporter",
+            "keywords": [
+                "export",
+                "exporter"
+            ],
+            "time": "2017-04-03T13:19:02+00:00"
+        },
+        {
+            "name": "sebastian/global-state",
+            "version": "2.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/global-state.git",
+                "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
+                "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^6.0"
+            },
+            "suggest": {
+                "ext-uopz": "*"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Snapshotting of global state",
+            "homepage": "http://www.github.com/sebastianbergmann/global-state",
+            "keywords": [
+                "global state"
+            ],
+            "time": "2017-04-27T15:39:26+00:00"
+        },
+        {
+            "name": "sebastian/object-enumerator",
+            "version": "3.0.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/object-enumerator.git",
+                "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5",
+                "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.0",
+                "sebastian/object-reflector": "^1.1.1",
+                "sebastian/recursion-context": "^3.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^6.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Traverses array structures and object graphs to enumerate all referenced objects",
+            "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
+            "time": "2017-08-03T12:35:26+00:00"
+        },
+        {
+            "name": "sebastian/object-reflector",
+            "version": "1.1.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/object-reflector.git",
+                "reference": "773f97c67f28de00d397be301821b06708fca0be"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be",
+                "reference": "773f97c67f28de00d397be301821b06708fca0be",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^6.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.1-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Allows reflection of object attributes, including inherited and non-public ones",
+            "homepage": "https://github.com/sebastianbergmann/object-reflector/",
+            "time": "2017-03-29T09:07:27+00:00"
+        },
+        {
+            "name": "sebastian/recursion-context",
+            "version": "3.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/recursion-context.git",
+                "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
+                "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^6.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Jeff Welch",
+                    "email": "whatthejeff@gmail.com"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                },
+                {
+                    "name": "Adam Harvey",
+                    "email": "aharvey@php.net"
+                }
+            ],
+            "description": "Provides functionality to recursively process PHP variables",
+            "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
+            "time": "2017-03-03T06:23:57+00:00"
+        },
+        {
+            "name": "sebastian/resource-operations",
+            "version": "1.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/resource-operations.git",
+                "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
+                "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.6.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Provides a list of PHP built-in functions that operate on resources",
+            "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
+            "time": "2015-07-28T20:34:47+00:00"
+        },
+        {
+            "name": "sebastian/version",
+            "version": "2.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/version.git",
+                "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019",
+                "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.6"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Library that helps with managing the version number of Git-hosted PHP projects",
+            "homepage": "https://github.com/sebastianbergmann/version",
+            "time": "2016-10-03T07:35:21+00:00"
+        },
+        {
+            "name": "squizlabs/php_codesniffer",
+            "version": "2.9.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
+                "reference": "2acf168de78487db620ab4bc524135a13cfe6745"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/2acf168de78487db620ab4bc524135a13cfe6745",
+                "reference": "2acf168de78487db620ab4bc524135a13cfe6745",
+                "shasum": ""
+            },
+            "require": {
+                "ext-simplexml": "*",
+                "ext-tokenizer": "*",
+                "ext-xmlwriter": "*",
+                "php": ">=5.1.2"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.0"
+            },
+            "bin": [
+                "scripts/phpcs",
+                "scripts/phpcbf"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "CodeSniffer.php",
+                    "CodeSniffer/CLI.php",
+                    "CodeSniffer/Exception.php",
+                    "CodeSniffer/File.php",
+                    "CodeSniffer/Fixer.php",
+                    "CodeSniffer/Report.php",
+                    "CodeSniffer/Reporting.php",
+                    "CodeSniffer/Sniff.php",
+                    "CodeSniffer/Tokens.php",
+                    "CodeSniffer/Reports/",
+                    "CodeSniffer/Tokenizers/",
+                    "CodeSniffer/DocGenerators/",
+                    "CodeSniffer/Standards/AbstractPatternSniff.php",
+                    "CodeSniffer/Standards/AbstractScopeSniff.php",
+                    "CodeSniffer/Standards/AbstractVariableSniff.php",
+                    "CodeSniffer/Standards/IncorrectPatternException.php",
+                    "CodeSniffer/Standards/Generic/Sniffs/",
+                    "CodeSniffer/Standards/MySource/Sniffs/",
+                    "CodeSniffer/Standards/PEAR/Sniffs/",
+                    "CodeSniffer/Standards/PSR1/Sniffs/",
+                    "CodeSniffer/Standards/PSR2/Sniffs/",
+                    "CodeSniffer/Standards/Squiz/Sniffs/",
+                    "CodeSniffer/Standards/Zend/Sniffs/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Greg Sherwood",
+                    "role": "lead"
+                }
+            ],
+            "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
+            "homepage": "http://www.squizlabs.com/php-codesniffer",
+            "keywords": [
+                "phpcs",
+                "standards"
+            ],
+            "time": "2018-11-07T22:31:41+00:00"
+        },
+        {
+            "name": "symfony/config",
+            "version": "v4.1.7",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/config.git",
+                "reference": "991fec8bbe77367fc8b48ecbaa8a4bd6e905a238"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/config/zipball/991fec8bbe77367fc8b48ecbaa8a4bd6e905a238",
+                "reference": "991fec8bbe77367fc8b48ecbaa8a4bd6e905a238",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.1.3",
+                "symfony/filesystem": "~3.4|~4.0",
+                "symfony/polyfill-ctype": "~1.8"
+            },
+            "conflict": {
+                "symfony/finder": "<3.4"
+            },
+            "require-dev": {
+                "symfony/dependency-injection": "~3.4|~4.0",
+                "symfony/event-dispatcher": "~3.4|~4.0",
+                "symfony/finder": "~3.4|~4.0",
+                "symfony/yaml": "~3.4|~4.0"
+            },
+            "suggest": {
+                "symfony/yaml": "To use the yaml reference dumper"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.1-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Config\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Config Component",
+            "homepage": "https://symfony.com",
+            "time": "2018-10-31T09:09:42+00:00"
+        },
+        {
+            "name": "symfony/event-dispatcher",
+            "version": "v2.8.47",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/event-dispatcher.git",
+                "reference": "76494bc38ff38d90d01913d23b5271acd4d78dd3"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/76494bc38ff38d90d01913d23b5271acd4d78dd3",
+                "reference": "76494bc38ff38d90d01913d23b5271acd4d78dd3",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.9"
+            },
+            "require-dev": {
+                "psr/log": "~1.0",
+                "symfony/config": "^2.0.5|~3.0.0",
+                "symfony/dependency-injection": "~2.6|~3.0.0",
+                "symfony/expression-language": "~2.6|~3.0.0",
+                "symfony/stopwatch": "~2.3|~3.0.0"
+            },
+            "suggest": {
+                "symfony/dependency-injection": "",
+                "symfony/http-kernel": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.8-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\EventDispatcher\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony EventDispatcher Component",
+            "homepage": "https://symfony.com",
+            "time": "2018-10-20T23:16:31+00:00"
+        },
+        {
+            "name": "symfony/filesystem",
+            "version": "v4.1.7",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/filesystem.git",
+                "reference": "fd7bd6535beb1f0a0a9e3ee960666d0598546981"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/filesystem/zipball/fd7bd6535beb1f0a0a9e3ee960666d0598546981",
+                "reference": "fd7bd6535beb1f0a0a9e3ee960666d0598546981",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.1.3",
+                "symfony/polyfill-ctype": "~1.8"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.1-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Filesystem\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Filesystem Component",
+            "homepage": "https://symfony.com",
+            "time": "2018-10-30T13:18:25+00:00"
+        },
+        {
+            "name": "symfony/polyfill-ctype",
+            "version": "v1.10.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-ctype.git",
+                "reference": "e3d826245268269cd66f8326bd8bc066687b4a19"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19",
+                "reference": "e3d826245268269cd66f8326bd8bc066687b4a19",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "suggest": {
+                "ext-ctype": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.9-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Polyfill\\Ctype\\": ""
+                },
+                "files": [
+                    "bootstrap.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                },
+                {
+                    "name": "Gert de Pagter",
+                    "email": "BackEndTea@gmail.com"
+                }
+            ],
+            "description": "Symfony polyfill for ctype functions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "ctype",
+                "polyfill",
+                "portable"
+            ],
+            "time": "2018-08-06T14:22:27+00:00"
+        },
+        {
+            "name": "symfony/polyfill-php72",
+            "version": "v1.10.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-php72.git",
+                "reference": "9050816e2ca34a8e916c3a0ae8b9c2fccf68b631"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9050816e2ca34a8e916c3a0ae8b9c2fccf68b631",
+                "reference": "9050816e2ca34a8e916c3a0ae8b9c2fccf68b631",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.9-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Polyfill\\Php72\\": ""
+                },
+                "files": [
+                    "bootstrap.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "time": "2018-09-21T13:07:52+00:00"
+        },
+        {
+            "name": "symfony/stopwatch",
+            "version": "v4.1.7",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/stopwatch.git",
+                "reference": "5bfc064125b73ff81229e19381ce1c34d3416f4b"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/stopwatch/zipball/5bfc064125b73ff81229e19381ce1c34d3416f4b",
+                "reference": "5bfc064125b73ff81229e19381ce1c34d3416f4b",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.1.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.1-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Stopwatch\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Stopwatch Component",
+            "homepage": "https://symfony.com",
+            "time": "2018-10-02T12:40:59+00:00"
+        },
+        {
+            "name": "symfony/var-dumper",
+            "version": "v4.1.7",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/var-dumper.git",
+                "reference": "60319b45653580b0cdacca499344577d87732f16"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/var-dumper/zipball/60319b45653580b0cdacca499344577d87732f16",
+                "reference": "60319b45653580b0cdacca499344577d87732f16",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.1.3",
+                "symfony/polyfill-mbstring": "~1.0",
+                "symfony/polyfill-php72": "~1.5"
+            },
+            "conflict": {
+                "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0",
+                "symfony/console": "<3.4"
+            },
+            "require-dev": {
+                "ext-iconv": "*",
+                "symfony/process": "~3.4|~4.0",
+                "twig/twig": "~1.34|~2.4"
+            },
+            "suggest": {
+                "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).",
+                "ext-intl": "To show region name in time zone dump",
+                "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script"
+            },
+            "bin": [
+                "Resources/bin/var-dump-server"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.1-dev"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "Resources/functions/dump.php"
+                ],
+                "psr-4": {
+                    "Symfony\\Component\\VarDumper\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony mechanism for exploring and dumping PHP variables",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "debug",
+                "dump"
+            ],
+            "time": "2018-10-02T16:36:10+00:00"
+        },
+        {
+            "name": "symfony/yaml",
+            "version": "v4.1.7",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/yaml.git",
+                "reference": "367e689b2fdc19965be435337b50bc8adf2746c9"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/yaml/zipball/367e689b2fdc19965be435337b50bc8adf2746c9",
+                "reference": "367e689b2fdc19965be435337b50bc8adf2746c9",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.1.3",
+                "symfony/polyfill-ctype": "~1.8"
+            },
+            "conflict": {
+                "symfony/console": "<3.4"
+            },
+            "require-dev": {
+                "symfony/console": "~3.4|~4.0"
+            },
+            "suggest": {
+                "symfony/console": "For validating YAML files using the lint command"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.1-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Yaml\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Yaml Component",
+            "homepage": "https://symfony.com",
+            "time": "2018-10-02T16:36:10+00:00"
+        },
+        {
+            "name": "theseer/tokenizer",
+            "version": "1.1.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/theseer/tokenizer.git",
+                "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b",
+                "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b",
+                "shasum": ""
+            },
+            "require": {
+                "ext-dom": "*",
+                "ext-tokenizer": "*",
+                "ext-xmlwriter": "*",
+                "php": "^7.0"
+            },
+            "type": "library",
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Arne Blankerts",
+                    "email": "arne@blankerts.de",
+                    "role": "Developer"
+                }
+            ],
+            "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
+            "time": "2017-04-07T12:08:54+00:00"
+        },
+        {
+            "name": "victorjonsson/markdowndocs",
+            "version": "1.3.8",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/victorjonsson/PHP-Markdown-Documentation-Generator.git",
+                "reference": "c5eb16ff5bd15ee60223883ddacba0ab8797268d"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/victorjonsson/PHP-Markdown-Documentation-Generator/zipball/c5eb16ff5bd15ee60223883ddacba0ab8797268d",
+                "reference": "c5eb16ff5bd15ee60223883ddacba0ab8797268d",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.5.0",
+                "symfony/console": ">=2.6"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "3.7.23"
+            },
+            "bin": [
+                "bin/phpdoc-md"
+            ],
+            "type": "library",
+            "autoload": {
+                "psr-0": {
+                    "PHPDocsMD": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Victor Jonsson",
+                    "email": "kontakt@victorjonsson.se"
+                }
+            ],
+            "description": "Command line tool for generating markdown-formatted class documentation",
+            "homepage": "https://github.com/victorjonsson/PHP-Markdown-Documentation-Generator",
+            "time": "2017-04-20T09:52:47+00:00"
+        },
+        {
+            "name": "webmozart/assert",
+            "version": "1.3.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/webmozart/assert.git",
+                "reference": "0df1908962e7a3071564e857d86874dad1ef204a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a",
+                "reference": "0df1908962e7a3071564e857d86874dad1ef204a",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.3.3 || ^7.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.6",
+                "sebastian/version": "^1.0.1"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.3-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Webmozart\\Assert\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Bernhard Schussek",
+                    "email": "bschussek@gmail.com"
+                }
+            ],
+            "description": "Assertions to validate method input/output with nice error messages.",
+            "keywords": [
+                "assert",
+                "check",
+                "validate"
+            ],
+            "time": "2018-01-29T19:49:41+00:00"
+        }
+    ],
+    "aliases": [],
+    "minimum-stability": "stable",
+    "stability-flags": [],
+    "prefer-stable": false,
+    "prefer-lowest": false,
+    "platform": {
+        "php": ">=5.4.0"
+    },
+    "platform-dev": [],
+    "platform-overrides": {
+        "php": "7.1.3"
+    }
+}
diff --git a/vendor/consolidation/output-formatters/CHANGELOG.md b/vendor/consolidation/output-formatters/CHANGELOG.md
index 8e245f7a4a..c7dfff53f0 100644
--- a/vendor/consolidation/output-formatters/CHANGELOG.md
+++ b/vendor/consolidation/output-formatters/CHANGELOG.md
@@ -1,5 +1,33 @@
 # Change Log
 
+### 3.5.0 - 30 May 2019
+
+- Add `@default-table-fields` to specify the fields to use with the table formatter and other "human readable" output formats.
+
+### 3.4.1 - 13 March 2019
+
+- Add enclosure and escape character options for CsvFormatter. (#79)
+
+### 3.4.0 - 19 October 2018
+
+- Add an UnstucturedInterface marker interface, and update the 'string' format to not accept data types that implement this interface unless they also implement StringTransformationInterface.
+
+### 3.3.2 - 18 October 2018
+
+- Add a 'null' output formatter that accepts all data types and never produces output
+
+### 3.3.0 & 3.3.1 - 15 October 2018
+
+- Add UnstructuredListData and UnstructuredData to replace deprecated ListDataFromKeys
+- Support --field and --fields in commands that return UnstructuredData / UnstructuredListData
+- Support field remapping, e.g. `--fields=original as remapped`
+- Support field addressing, e.g. `--fields=a.b.c`
+- Automatically convert from RowsOfFields to UnstruturedListData and from PropertyList to UnstructuredData when user utilizes field remapping or field addressing features.
+
+### 3.2.1 - 25 May 2018
+
+- Rename g1a/composer-test-scenarios
+
 ### 3.2.0 - 20 March 2018
 
 - Add RowsOfFieldsWithMetadata: allows commands to return an object with metadata that shows up in yaml/json (& etc.) formats, but is not shown in table/csv (& etc.).
diff --git a/vendor/consolidation/output-formatters/LICENSE b/vendor/consolidation/output-formatters/LICENSE
index 2f6addec07..5f6b7d1744 100644
--- a/vendor/consolidation/output-formatters/LICENSE
+++ b/vendor/consolidation/output-formatters/LICENSE
@@ -9,9 +9,10 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
 
 DEPENDENCY LICENSES:
 
-Name                       Version  License  
-psr/log                    1.0.2    MIT      
-symfony/console            v3.2.3   MIT      
-symfony/debug              v3.4.11  MIT      
-symfony/finder             v3.4.11  MIT      
-symfony/polyfill-mbstring  v1.8.0   MIT      
+Name                       Version  License
+dflydev/dot-access-data    v1.1.0   MIT
+psr/log                    1.1.0    MIT
+symfony/console            v3.4.18  MIT
+symfony/debug              v3.4.18  MIT
+symfony/finder             v3.4.18  MIT
+symfony/polyfill-mbstring  v1.10.0  MIT
\ No newline at end of file
diff --git a/vendor/consolidation/output-formatters/README.md b/vendor/consolidation/output-formatters/README.md
index 6fbe718a06..59bcc7d40b 100644
--- a/vendor/consolidation/output-formatters/README.md
+++ b/vendor/consolidation/output-formatters/README.md
@@ -26,7 +26,7 @@ This is a library intended to be used in some other project.  Require from your
         "consolidation/output-formatters": "~3"
     },
 ```
-If you require the feature that allows a data table to be automatically reduced to a single element when the `string` format is selected, then you should require version "~2" instead. In most other respects, the 1.x and 2.x versions are compatible. See the [CHANGELOG](CHANGELOG.md) for details.
+If you require the feature that allows a data table to be automatically reduced to a single element when the `string` format is selected, then you should require version ^2 instead. In most other respects, the 1.x and 2.x versions are compatible. See the [CHANGELOG](CHANGELOG.md) for details.
 
 ## Example Formatter
 
@@ -47,20 +47,54 @@ Formatters may also implement different interfaces to alter the behavior of the
 
 - `ValidationInterface`: A formatter should implement this interface to test to see if the provided data type can be processed. Any formatter that does **not** implement this interface is presumed to operate exclusively on php arrays. The formatter manager will always convert any provided data into an array before passing it to a formatter that does not implement ValidationInterface. These formatters will not be made available when the returned data type cannot be converted into an array.
 - `OverrideRestructureInterface`: A formatter that implements this interface will be given the option to act on the provided structured data object before it restructures itself. See the section below on structured data for details on data restructuring.
+- `UnstructuredInterface`: A formatter that implements this interface will not be able to be formatted by the `string` formatter by default. Data structures that do not implement this interface will be automatically converted to a string when applicable; if this conversion fails, then no output is produced.
+- `StringTransformationInterface`: Implementing this interface allows a data type to provide a specific implementation for the conversion of the data to a string. Data types that implement both `UnstructuredInterface` and `StringTransformationInterface` may be used with the `string` format.
 
-## Structured Data
+## Configuring Formats for a Command
+
+Commands declare what type of data they return using a `@return` annotation, as usual:
+```php
+    /**
+     * Demonstrate formatters.  Default format is 'table'.
+     *
+     * @field-labels
+     *   first: I
+     *   second: II
+     *   third: III
+     * @default-string-field second
+     * @usage try:formatters --format=yaml
+     * @usage try:formatters --format=csv
+     * @usage try:formatters --fields=first,third
+     * @usage try:formatters --fields=III,II
+     *
+     * @return \Consolidation\OutputFormatters\StructuredData\RowsOfFields
+     */
+    public function tryFormatters($somthing = 'default', $options = ['format' => 'table', 'fields' => ''])
+    {
+        $outputData = [
+            'en' => [ 'first' => 'One',  'second' => 'Two',  'third' => 'Three' ],
+            'de' => [ 'first' => 'Eins', 'second' => 'Zwei', 'third' => 'Drei'  ],
+            'jp' => [ 'first' => 'Ichi', 'second' => 'Ni',   'third' => 'San'   ],
+            'es' => [ 'first' => 'Uno',  'second' => 'Dos',  'third' => 'Tres'  ],
+        ];
+        return new RowsOfFields($outputData);
+    }
+```
+The output-formatters library determines which output formats are applicable to the command by querying all available formats, and selecting any that are able to process the data type that is returned. Thus, if a new format is added to a program, it will automatically be available via any command that it works with. It is not necessary to hand-select the available formats on every command individually.
+
+### Structured Data
 
 Most formatters will operate on any array or ArrayObject data. Some formatters require that specific data types be used. The following data types, all of which are subclasses of ArrayObject, are available for use:
 
 - `RowsOfFields`: Each row contains an associative array of field:value pairs. It is also assumed that the fields of each row are the same for every row. This format is ideal for displaying in a table, with labels in the top row.
-- `RowsOfFieldsWithMetadata`: Equivalent to `RowsOfFields`, but allows the data to be nested inside of an element, with other elements being used as metadata, or, alternately, allows the metadata to be nested inside of an element, with all other elements being used as data.
+- `RowsOfFieldsWithMetadata`: Equivalent to `RowsOfFields`, but allows for metadata to be attached to the result. The metadata is not displayed in table format, but is evident if the data is converted to another format (e.g. `yaml` or `json`). The table data may either be nested inside of a specially-designated element, with other elements being used as metadata, or, alternately, the metadata may be nested inside of an element, with all other elements being used as data.
 - `PropertyList`: Each row contains a field:value pair. Each field is unique. This format is ideal for displaying in a table, with labels in the first column and values in the second common.
-- `ListDataFromKeys`: The result may be structured or unstructured data. When formatted with the --format=list formatter, the result will come from the array keys instead of the array values.
+- `UnstructuredListData`: The result is assumed to be a list of items, with the key of each row being used as the row id. The data elements may contain any sort of array data. The elements on each row do not need to be uniform, and the data may be nested to arbitrary depths.
+- `UnstruturedData`: The result is an unstructured array nested to arbitrary levels.
 - `DOMDocument`: The standard PHP DOM document class may be used by functions that need to be able to presicely specify the exact attributes and children when the XML output format is used.
+- `ListDataFromKeys`: This data structure is deprecated. Use `UnstructuredListData` instead.
 
-Commands that return table structured data with fields can be filtered and/or re-ordered by using the --fields option. These structured data types can also be formatted into a more generic type such as yaml or json, even after being filtered. This capabilities are not available if the data is returned in a bare php array.
-
-The formatter manager will do its best to convert from an array to a DOMDocument, or from a DOMDocument to an array. It is important to note that a DOMDocument does not have a 1-to-1 mapping with a PHP array.  DOM elements contain both attributes and elements; a simple string property 'foo' may be represented either as <element foo="value"/> or <element><foo>value</foo></element>. Also, there may be multiple XML elements with the same name, whereas php associative arrays must always have unique keys. When converting from an array to a DOM document, the XML formatter will default to representing the string properties of an array as attributes of the element. Sets of elements with the same name may be used only if they are wrapped in a containing parent element--e.g. <element><foos><foo>one</foo><foo>two</foo></foos></element>. The XMLSchema class may be used to provide control over whether a property is rendered as an attribute or an element; however, in instances where the schema of the XML output is important, it is best for a function to return its result as a DOMDocument rather than an array.
+Commands that need to produce XML output should return a DOMDocument as its return type. The formatter manager will do its best to convert from an array to a DOMDocument, or from a DOMDocument to an array, as needed. It is important to note that a DOMDocument does not have a 1-to-1 mapping with a PHP array.  DOM elements contain both attributes and elements; a simple string property 'foo' may be represented either as <element foo="value"/> or <element><foo>value</foo></element>. Also, there may be multiple XML elements with the same name, whereas php associative arrays must always have unique keys. When converting from an array to a DOM document, the XML formatter will default to representing the string properties of an array as attributes of the element. Sets of elements with the same name may be used only if they are wrapped in a containing parent element--e.g. <element><foos><foo>one</foo><foo>two</foo></foos></element>. The XMLSchema class may be used to provide control over whether a property is rendered as an attribute or an element; however, in instances where the schema of the XML output is important, it is best for a function to return its result as a DOMDocument rather than an array.
 
 A function may also define its own structured data type to return, usually by extending one of the types mentioned above.  If a custom structured data class implements an appropriate interface, then it can provide its own conversion function to one of the other data types:
 
@@ -72,6 +106,148 @@ A function may also define its own structured data type to return, usually by ex
 
 Additionally, structured data may be simplified to arrays via an array simplification object. To provide an array simplifier, implement `SimplifyToArrayInterface`, and register the simplifier via `FormatterManager::addSimplifier()`.
 
+### Fields
+
+Some commands produce output that contain *fields*. A field may be either the key in a key/value pair, or it may be the label used in tabular output and so on.
+
+#### Declaring Default Fields
+
+If a command declares a very large number of fields, it is possible to display only a subset of the available options by way of the `@default-fields` annotation. The following example comes from Drush:
+```php
+    /**
+     * @command cache:get
+     * @field-labels
+     *   cid: Cache ID
+     *   data: Data
+     *   created: Created
+     *   expire: Expire
+     *   tags: Tags
+     *   checksum: Checksum
+     *   valid: Valid
+     * @default-fields cid,data,created,expire,tags
+     * @return \Consolidation\OutputFormatters\StructuredData\PropertyList
+     */
+    public function get($cid, $bin = 'default', $options = ['format' => 'json'])
+    {
+        $result = ...
+        return new PropertyList($result);
+    }
+```
+All of the available fields will be listed in the `help` output for the command, and may be selected by listing the desired fields explicitly via the `--fields` option.
+
+To include all avalable fields, use `--fields=*`.
+
+Note that using the `@default-fields` annotation will reduce the number of fields included in the output for all formats, including unstructured formats such as json and yaml. To specify a reduced set of fields to display only when using a human-readable output format (e.g. table), use the `@default-table-fields` annotation instead.
+
+#### Reordering Fields
+
+Commands that return table structured data with fields can be filtered and/or re-ordered by using the `--fields` option. These structured data types can also be formatted into a more generic type such as yaml or json, even after being filtered. This capabilities are not available if the data is returned in a bare php array. One of `RowsOfFields`, `PropertyList` or `UnstructuredListData` (or similar) must be used.
+
+When the `--fields` option is provided, the user may stipulate the exact fields to list on each row, and what order they should appear in. For example, if a command usually produces output using the `RowsOfFields` data type, as shown below:
+```
+$ ./app try:formatters
+ ------ ------ ------- 
+  I      II     III    
+ ------ ------ ------- 
+  One    Two    Three  
+  Eins   Zwei   Drei   
+  Ichi   Ni     San    
+  Uno    Dos    Tres   
+ ------ ------ ------- 
+```
+Then the third and first fields may be selected as follows:
+```
+ $ ./app try:formatters --fields=III,I
+ ------- ------ 
+  III     I     
+ ------- ------ 
+  Three   One   
+  Drei    Eins  
+  San     Ichi  
+  Tres    Uno   
+ ------- ------ 
+```
+To select a single column and strip away all formatting, use the `--field` option:
+```
+$ ./app try:formatters --field=II
+Two
+Zwei
+Ni
+Dos
+```
+Commands that produce deeply-nested data structures using the `UnstructuredData` and `UnstructuredListData` data type may also be manipulated using the `--fields` and `--field` options. It is possible to address items deep in the heirarchy using dot notation.
+
+The `UnstructuredData` type represents a single nested array with no requirements for uniform structure. The `UnstructuredListData` type is similar; it represents a list of `UnstructuredData` types. It is not required for the different elements in the list to have all of the same fields or structure, although it is expected that there will be a certain degree of similarity.
+
+In the example below, a command returns a list of stores of different kinds. Each store has common top-level elements such as `name`, `products` and `sale-items`. Each store might have different sorts of products with different attributes:
+```
+$ ./app try:nested
+bills-hardware:
+  name: 'Bill''s Hardware'
+  products:
+    tools:
+      electric-drill:
+        price: '79.98'
+      screwdriver:
+        price: '8.99'
+  sale-items:
+    screwdriver: '4.99'
+alberts-supermarket:
+  name: 'Albert''s Supermarket'
+  products:
+    fruits:
+      strawberries:
+        price: '2'
+        units: lbs
+      watermellons:
+        price: '5'
+        units: each
+  sale-items:
+    watermellons: '4.50'
+```
+Just as is the case with tabular output, it is possible to select only a certain set of fields to display with each output item:
+```
+$ ./app try:nested --fields=sale-items
+bills-hardware:
+  sale-items:
+    screwdriver: '4.99'
+alberts-supermarket:
+  sale-items:
+    watermellons: '4.50'
+```
+With unstructured data, it is also possible to remap the name of the field to something else:
+```
+$ ./robo try:nested --fields='sale-items as items'
+bills-hardware:
+  items:
+    screwdriver: '4.99'
+alberts-supermarket:
+  items:
+    watermellons: '4.50'
+```
+The field name `.` is special, though: it indicates that the named element should be omitted, and its value or children should be applied directly to the result row:
+```
+$ ./app try:nested --fields='sale-items as .'
+bills-hardware:
+  screwdriver: '4.99'
+alberts-supermarket:
+  watermellons: '4.50'
+```
+Finally, it is also possible to reach down into nested data structures and pull out information about an element or elements identified using "dot" notation:
+```
+$ ./app try:nested --fields=products.fruits.strawberries
+bills-hardware: {  }
+alberts-supermarket:
+  strawberries:
+    price: '2'
+    units: lbs
+```
+Commands that use `RowsOfFields` or `PropertyList` return type will be automatically converted to `UnstructuredListData` or `UnstructuredData`, respectively, whenever any field remapping is done. This will only work for data types such as `yaml` or `json` that can render unstructured data types. It is not possible to render unstructured data in a table, even if the resulting data happens to be uniform.
+
+### Filtering Specific Rows
+
+A command may allow the user to filter specific rows of data using simple boolean logic and/or regular expressions. For details, see the external library [consolidation/filter-via-dot-access-data](https://github.com/consolidation/filter-via-dot-access-data) that provides this capability.
+
 ## Rendering Table Cells
 
 By default, both the RowsOfFields and PropertyList data types presume that the contents of each cell is a simple string. To render more complicated cell contents, create a custom structured data class by extending either RowsOfFields or PropertyList, as desired, and implement RenderCellInterface.  The `renderCell()` method of your class will then be called for each cell, and you may act on it as appropriate.
diff --git a/vendor/consolidation/output-formatters/composer.json b/vendor/consolidation/output-formatters/composer.json
index 853cf77312..e8d9a04436 100644
--- a/vendor/consolidation/output-formatters/composer.json
+++ b/vendor/consolidation/output-formatters/composer.json
@@ -20,15 +20,15 @@
     },
     "require": {
         "php": ">=5.4.0",
+        "dflydev/dot-access-data": "^1.1.0",
         "symfony/console": "^2.8|^3|^4",
         "symfony/finder": "^2.5|^3|^4"
     },
     "require-dev": {
-        "g1a/composer-test-scenarios": "^2",
-        "satooshi/php-coveralls": "^2",
+        "g1a/composer-test-scenarios": "^3",
+        "php-coveralls/php-coveralls": "^1",
         "phpunit/phpunit": "^5.7.27",
         "squizlabs/php_codesniffer": "^2.7",
-        "symfony/console": "3.2.3",
         "symfony/var-dumper": "^2.8|^3|^4",
         "victorjonsson/markdowndocs": "^1.3"
     },
@@ -55,16 +55,55 @@
             "@lint",
             "@unit",
             "@cs"
-        ],
-        "scenario": "scenarios/install",
-        "post-update-cmd": [
-            "create-scenario symfony4 'symfony/console:^4.0' 'phpunit/phpunit:^6' --platform-php '7.1.3'",
-            "create-scenario symfony3 'symfony/console:^3.4' 'symfony/finder:^3.4' 'symfony/var-dumper:^3.4' --platform-php '5.6.32'",
-            "create-scenario symfony2 'symfony/console:^2.8' 'phpunit/phpunit:^4.8.36' --remove 'satooshi/php-coveralls' --platform-php '5.4' --no-lockfile",
-            "dependency-licenses"
         ]
     },
     "extra": {
+        "scenarios": {
+            "symfony4": {
+                "require": {
+                    "symfony/console": "^4.0"
+                },
+                "require-dev": {
+                    "phpunit/phpunit": "^6"
+                },
+                "config": {
+                    "platform": {
+                        "php": "7.1.3"
+                    }
+                }
+            },
+            "symfony3": {
+                "require": {
+                    "symfony/console": "^3.4",
+                    "symfony/finder": "^3.4",
+                    "symfony/var-dumper": "^3.4"
+                },
+                "config": {
+                    "platform": {
+                        "php": "5.6.32"
+                    }
+                }
+            },
+            "symfony2": {
+                "require": {
+                    "symfony/console": "^2.8"
+                },
+                "require-dev": {
+                    "phpunit/phpunit": "^4.8.36"
+                },
+                "remove": [
+                    "php-coveralls/php-coveralls"
+                ],
+                "config": {
+                    "platform": {
+                        "php": "5.4.8"
+                    }
+                },
+                "scenario-options": {
+                    "create-lockfile": "false"
+                }
+            }
+        },
         "branch-alias": {
             "dev-master": "3.x-dev"
         }
diff --git a/vendor/consolidation/output-formatters/composer.lock b/vendor/consolidation/output-formatters/composer.lock
index 5b56921533..2dfee91f87 100644
--- a/vendor/consolidation/output-formatters/composer.lock
+++ b/vendor/consolidation/output-formatters/composer.lock
@@ -4,20 +4,79 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "e726e2302b89b56b1cf5c8148a65a648",
+    "content-hash": "ee70f32509f8c43ebd69a87705e29cad",
     "packages": [
+        {
+            "name": "dflydev/dot-access-data",
+            "version": "v1.1.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/dflydev/dflydev-dot-access-data.git",
+                "reference": "3fbd874921ab2c041e899d044585a2ab9795df8a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/3fbd874921ab2c041e899d044585a2ab9795df8a",
+                "reference": "3fbd874921ab2c041e899d044585a2ab9795df8a",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.2"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Dflydev\\DotAccessData": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Dragonfly Development Inc.",
+                    "email": "info@dflydev.com",
+                    "homepage": "http://dflydev.com"
+                },
+                {
+                    "name": "Beau Simensen",
+                    "email": "beau@dflydev.com",
+                    "homepage": "http://beausimensen.com"
+                },
+                {
+                    "name": "Carlos Frutos",
+                    "email": "carlos@kiwing.it",
+                    "homepage": "https://github.com/cfrutos"
+                }
+            ],
+            "description": "Given a deep data structure, access data by dot notation.",
+            "homepage": "https://github.com/dflydev/dflydev-dot-access-data",
+            "keywords": [
+                "access",
+                "data",
+                "dot",
+                "notation"
+            ],
+            "time": "2017-01-20T21:14:22+00:00"
+        },
         {
             "name": "psr/log",
-            "version": "1.0.2",
+            "version": "1.1.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/php-fig/log.git",
-                "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d"
+                "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
-                "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
+                "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
+                "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
                 "shasum": ""
             },
             "require": {
@@ -51,43 +110,49 @@
                 "psr",
                 "psr-3"
             ],
-            "time": "2016-10-10T12:19:37+00:00"
+            "time": "2018-11-20T15:27:04+00:00"
         },
         {
             "name": "symfony/console",
-            "version": "v3.2.3",
+            "version": "v3.4.18",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/console.git",
-                "reference": "7a8405a9fc175f87fed8a3c40856b0d866d61936"
+                "reference": "1d228fb4602047d7b26a0554e0d3efd567da5803"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/console/zipball/7a8405a9fc175f87fed8a3c40856b0d866d61936",
-                "reference": "7a8405a9fc175f87fed8a3c40856b0d866d61936",
+                "url": "https://api.github.com/repos/symfony/console/zipball/1d228fb4602047d7b26a0554e0d3efd567da5803",
+                "reference": "1d228fb4602047d7b26a0554e0d3efd567da5803",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.5.9",
-                "symfony/debug": "~2.8|~3.0",
+                "php": "^5.5.9|>=7.0.8",
+                "symfony/debug": "~2.8|~3.0|~4.0",
                 "symfony/polyfill-mbstring": "~1.0"
             },
+            "conflict": {
+                "symfony/dependency-injection": "<3.4",
+                "symfony/process": "<3.3"
+            },
             "require-dev": {
                 "psr/log": "~1.0",
-                "symfony/event-dispatcher": "~2.8|~3.0",
-                "symfony/filesystem": "~2.8|~3.0",
-                "symfony/process": "~2.8|~3.0"
+                "symfony/config": "~3.3|~4.0",
+                "symfony/dependency-injection": "~3.4|~4.0",
+                "symfony/event-dispatcher": "~2.8|~3.0|~4.0",
+                "symfony/lock": "~3.4|~4.0",
+                "symfony/process": "~3.3|~4.0"
             },
             "suggest": {
-                "psr/log": "For using the console logger",
+                "psr/log-implementation": "For using the console logger",
                 "symfony/event-dispatcher": "",
-                "symfony/filesystem": "",
+                "symfony/lock": "",
                 "symfony/process": ""
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "3.2-dev"
+                    "dev-master": "3.4-dev"
                 }
             },
             "autoload": {
@@ -114,20 +179,20 @@
             ],
             "description": "Symfony Console Component",
             "homepage": "https://symfony.com",
-            "time": "2017-02-06T12:04:21+00:00"
+            "time": "2018-10-30T16:50:50+00:00"
         },
         {
             "name": "symfony/debug",
-            "version": "v3.4.11",
+            "version": "v3.4.18",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/debug.git",
-                "reference": "b28fd73fefbac341f673f5efd707d539d6a19f68"
+                "reference": "fe9793af008b651c5441bdeab21ede8172dab097"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/debug/zipball/b28fd73fefbac341f673f5efd707d539d6a19f68",
-                "reference": "b28fd73fefbac341f673f5efd707d539d6a19f68",
+                "url": "https://api.github.com/repos/symfony/debug/zipball/fe9793af008b651c5441bdeab21ede8172dab097",
+                "reference": "fe9793af008b651c5441bdeab21ede8172dab097",
                 "shasum": ""
             },
             "require": {
@@ -170,20 +235,20 @@
             ],
             "description": "Symfony Debug Component",
             "homepage": "https://symfony.com",
-            "time": "2018-05-16T14:03:39+00:00"
+            "time": "2018-10-31T09:06:03+00:00"
         },
         {
             "name": "symfony/finder",
-            "version": "v3.4.11",
+            "version": "v3.4.18",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/finder.git",
-                "reference": "472a92f3df8b247b49ae364275fb32943b9656c6"
+                "reference": "54ba444dddc5bd5708a34bd095ea67c6eb54644d"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/finder/zipball/472a92f3df8b247b49ae364275fb32943b9656c6",
-                "reference": "472a92f3df8b247b49ae364275fb32943b9656c6",
+                "url": "https://api.github.com/repos/symfony/finder/zipball/54ba444dddc5bd5708a34bd095ea67c6eb54644d",
+                "reference": "54ba444dddc5bd5708a34bd095ea67c6eb54644d",
                 "shasum": ""
             },
             "require": {
@@ -219,20 +284,20 @@
             ],
             "description": "Symfony Finder Component",
             "homepage": "https://symfony.com",
-            "time": "2018-05-16T08:49:21+00:00"
+            "time": "2018-10-03T08:46:40+00:00"
         },
         {
             "name": "symfony/polyfill-mbstring",
-            "version": "v1.8.0",
+            "version": "v1.10.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-mbstring.git",
-                "reference": "3296adf6a6454a050679cde90f95350ad604b171"
+                "reference": "c79c051f5b3a46be09205c73b80b346e4153e494"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/3296adf6a6454a050679cde90f95350ad604b171",
-                "reference": "3296adf6a6454a050679cde90f95350ad604b171",
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494",
+                "reference": "c79c051f5b3a46be09205c73b80b346e4153e494",
                 "shasum": ""
             },
             "require": {
@@ -244,7 +309,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.8-dev"
+                    "dev-master": "1.9-dev"
                 }
             },
             "autoload": {
@@ -278,7 +343,7 @@
                 "portable",
                 "shim"
             ],
-            "time": "2018-04-26T10:06:28+00:00"
+            "time": "2018-09-21T13:07:52+00:00"
         }
     ],
     "packages-dev": [
@@ -338,24 +403,43 @@
         },
         {
             "name": "g1a/composer-test-scenarios",
-            "version": "2.0.1",
+            "version": "3.0.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/g1a/composer-test-scenarios.git",
-                "reference": "d9a7619f6e1c01498fad19c34539bd5b0d2506ef"
+                "reference": "2a7156f1572898888ea50ad1d48a6b4d3f9fbf78"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/g1a/composer-test-scenarios/zipball/d9a7619f6e1c01498fad19c34539bd5b0d2506ef",
-                "reference": "d9a7619f6e1c01498fad19c34539bd5b0d2506ef",
+                "url": "https://api.github.com/repos/g1a/composer-test-scenarios/zipball/2a7156f1572898888ea50ad1d48a6b4d3f9fbf78",
+                "reference": "2a7156f1572898888ea50ad1d48a6b4d3f9fbf78",
                 "shasum": ""
             },
+            "require": {
+                "composer-plugin-api": "^1.0.0",
+                "php": ">=5.4"
+            },
+            "require-dev": {
+                "composer/composer": "^1.7",
+                "php-coveralls/php-coveralls": "^1.0",
+                "phpunit/phpunit": "^4.8.36|^6",
+                "squizlabs/php_codesniffer": "^2.8"
+            },
             "bin": [
-                "scripts/create-scenario",
-                "scripts/dependency-licenses",
-                "scripts/install-scenario"
+                "scripts/dependency-licenses"
             ],
-            "type": "library",
+            "type": "composer-plugin",
+            "extra": {
+                "class": "ComposerTestScenarios\\Plugin",
+                "branch-alias": {
+                    "dev-master": "3.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "ComposerTestScenarios\\": "src/"
+                }
+            },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "MIT"
@@ -367,47 +451,73 @@
                 }
             ],
             "description": "Useful scripts for testing multiple sets of Composer dependencies.",
-            "time": "2018-05-25T16:45:48+00:00"
+            "time": "2018-11-22T05:10:20+00:00"
         },
         {
-            "name": "guzzlehttp/guzzle",
-            "version": "6.3.3",
+            "name": "guzzle/guzzle",
+            "version": "v3.9.3",
             "source": {
                 "type": "git",
-                "url": "https://github.com/guzzle/guzzle.git",
-                "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba"
+                "url": "https://github.com/guzzle/guzzle3.git",
+                "reference": "0645b70d953bc1c067bbc8d5bc53194706b628d9"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba",
-                "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba",
+                "url": "https://api.github.com/repos/guzzle/guzzle3/zipball/0645b70d953bc1c067bbc8d5bc53194706b628d9",
+                "reference": "0645b70d953bc1c067bbc8d5bc53194706b628d9",
                 "shasum": ""
             },
             "require": {
-                "guzzlehttp/promises": "^1.0",
-                "guzzlehttp/psr7": "^1.4",
-                "php": ">=5.5"
+                "ext-curl": "*",
+                "php": ">=5.3.3",
+                "symfony/event-dispatcher": "~2.1"
+            },
+            "replace": {
+                "guzzle/batch": "self.version",
+                "guzzle/cache": "self.version",
+                "guzzle/common": "self.version",
+                "guzzle/http": "self.version",
+                "guzzle/inflection": "self.version",
+                "guzzle/iterator": "self.version",
+                "guzzle/log": "self.version",
+                "guzzle/parser": "self.version",
+                "guzzle/plugin": "self.version",
+                "guzzle/plugin-async": "self.version",
+                "guzzle/plugin-backoff": "self.version",
+                "guzzle/plugin-cache": "self.version",
+                "guzzle/plugin-cookie": "self.version",
+                "guzzle/plugin-curlauth": "self.version",
+                "guzzle/plugin-error-response": "self.version",
+                "guzzle/plugin-history": "self.version",
+                "guzzle/plugin-log": "self.version",
+                "guzzle/plugin-md5": "self.version",
+                "guzzle/plugin-mock": "self.version",
+                "guzzle/plugin-oauth": "self.version",
+                "guzzle/service": "self.version",
+                "guzzle/stream": "self.version"
             },
             "require-dev": {
-                "ext-curl": "*",
-                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
-                "psr/log": "^1.0"
+                "doctrine/cache": "~1.3",
+                "monolog/monolog": "~1.0",
+                "phpunit/phpunit": "3.7.*",
+                "psr/log": "~1.0",
+                "symfony/class-loader": "~2.1",
+                "zendframework/zend-cache": "2.*,<2.3",
+                "zendframework/zend-log": "2.*,<2.3"
             },
             "suggest": {
-                "psr/log": "Required for using the Log middleware"
+                "guzzlehttp/guzzle": "Guzzle 5 has moved to a new package name. The package you have installed, Guzzle 3, is deprecated."
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "6.3-dev"
+                    "dev-master": "3.9-dev"
                 }
             },
             "autoload": {
-                "files": [
-                    "src/functions_include.php"
-                ],
-                "psr-4": {
-                    "GuzzleHttp\\": "src/"
+                "psr-0": {
+                    "Guzzle": "src/",
+                    "Guzzle\\Tests": "tests/"
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -419,9 +529,13 @@
                     "name": "Michael Dowling",
                     "email": "mtdowling@gmail.com",
                     "homepage": "https://github.com/mtdowling"
+                },
+                {
+                    "name": "Guzzle Community",
+                    "homepage": "https://github.com/guzzle/guzzle/contributors"
                 }
             ],
-            "description": "Guzzle is a PHP HTTP client library",
+            "description": "PHP HTTP client. This library is deprecated in favor of https://packagist.org/packages/guzzlehttp/guzzle",
             "homepage": "http://guzzlephp.org/",
             "keywords": [
                 "client",
@@ -432,96 +546,93 @@
                 "rest",
                 "web service"
             ],
-            "time": "2018-04-22T15:46:56+00:00"
+            "abandoned": "guzzlehttp/guzzle",
+            "time": "2015-03-18T18:23:50+00:00"
         },
         {
-            "name": "guzzlehttp/promises",
-            "version": "v1.3.1",
+            "name": "myclabs/deep-copy",
+            "version": "1.7.0",
             "source": {
                 "type": "git",
-                "url": "https://github.com/guzzle/promises.git",
-                "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646"
+                "url": "https://github.com/myclabs/DeepCopy.git",
+                "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646",
-                "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646",
+                "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
+                "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.5.0"
+                "php": "^5.6 || ^7.0"
             },
             "require-dev": {
-                "phpunit/phpunit": "^4.0"
+                "doctrine/collections": "^1.0",
+                "doctrine/common": "^2.6",
+                "phpunit/phpunit": "^4.1"
             },
             "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.4-dev"
-                }
-            },
             "autoload": {
                 "psr-4": {
-                    "GuzzleHttp\\Promise\\": "src/"
+                    "DeepCopy\\": "src/DeepCopy/"
                 },
                 "files": [
-                    "src/functions_include.php"
+                    "src/DeepCopy/deep_copy.php"
                 ]
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "MIT"
             ],
-            "authors": [
-                {
-                    "name": "Michael Dowling",
-                    "email": "mtdowling@gmail.com",
-                    "homepage": "https://github.com/mtdowling"
-                }
-            ],
-            "description": "Guzzle promises library",
+            "description": "Create deep copies (clones) of your objects",
             "keywords": [
-                "promise"
+                "clone",
+                "copy",
+                "duplicate",
+                "object",
+                "object graph"
             ],
-            "time": "2016-12-20T10:07:11+00:00"
+            "time": "2017-10-19T19:58:43+00:00"
         },
         {
-            "name": "guzzlehttp/psr7",
-            "version": "1.4.2",
+            "name": "php-coveralls/php-coveralls",
+            "version": "v1.1.0",
             "source": {
                 "type": "git",
-                "url": "https://github.com/guzzle/psr7.git",
-                "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c"
+                "url": "https://github.com/php-coveralls/php-coveralls.git",
+                "reference": "37f8f83fe22224eb9d9c6d593cdeb33eedd2a9ad"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/guzzle/psr7/zipball/f5b8a8512e2b58b0071a7280e39f14f72e05d87c",
-                "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c",
+                "url": "https://api.github.com/repos/php-coveralls/php-coveralls/zipball/37f8f83fe22224eb9d9c6d593cdeb33eedd2a9ad",
+                "reference": "37f8f83fe22224eb9d9c6d593cdeb33eedd2a9ad",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.4.0",
-                "psr/http-message": "~1.0"
-            },
-            "provide": {
-                "psr/http-message-implementation": "1.0"
+                "ext-json": "*",
+                "ext-simplexml": "*",
+                "guzzle/guzzle": "^2.8 || ^3.0",
+                "php": "^5.3.3 || ^7.0",
+                "psr/log": "^1.0",
+                "symfony/config": "^2.1 || ^3.0 || ^4.0",
+                "symfony/console": "^2.1 || ^3.0 || ^4.0",
+                "symfony/stopwatch": "^2.0 || ^3.0 || ^4.0",
+                "symfony/yaml": "^2.0 || ^3.0 || ^4.0"
             },
             "require-dev": {
-                "phpunit/phpunit": "~4.0"
+                "phpunit/phpunit": "^4.8.35 || ^5.4.3 || ^6.0"
             },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.4-dev"
-                }
+            "suggest": {
+                "symfony/http-kernel": "Allows Symfony integration"
             },
+            "bin": [
+                "bin/coveralls"
+            ],
+            "type": "library",
             "autoload": {
                 "psr-4": {
-                    "GuzzleHttp\\Psr7\\": "src/"
-                },
-                "files": [
-                    "src/functions_include.php"
-                ]
+                    "Satooshi\\": "src/Satooshi/"
+                }
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
@@ -529,71 +640,20 @@
             ],
             "authors": [
                 {
-                    "name": "Michael Dowling",
-                    "email": "mtdowling@gmail.com",
-                    "homepage": "https://github.com/mtdowling"
-                },
-                {
-                    "name": "Tobias Schultze",
-                    "homepage": "https://github.com/Tobion"
+                    "name": "Kitamura Satoshi",
+                    "email": "with.no.parachute@gmail.com",
+                    "homepage": "https://www.facebook.com/satooshi.jp"
                 }
             ],
-            "description": "PSR-7 message implementation that also provides common utility methods",
-            "keywords": [
-                "http",
-                "message",
-                "request",
-                "response",
-                "stream",
-                "uri",
-                "url"
-            ],
-            "time": "2017-03-20T17:10:46+00:00"
-        },
-        {
-            "name": "myclabs/deep-copy",
-            "version": "1.7.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/myclabs/DeepCopy.git",
-                "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
-                "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.6 || ^7.0"
-            },
-            "require-dev": {
-                "doctrine/collections": "^1.0",
-                "doctrine/common": "^2.6",
-                "phpunit/phpunit": "^4.1"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "DeepCopy\\": "src/DeepCopy/"
-                },
-                "files": [
-                    "src/DeepCopy/deep_copy.php"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "Create deep copies (clones) of your objects",
+            "description": "PHP client library for Coveralls API",
+            "homepage": "https://github.com/php-coveralls/php-coveralls",
             "keywords": [
-                "clone",
-                "copy",
-                "duplicate",
-                "object",
-                "object graph"
+                "ci",
+                "coverage",
+                "github",
+                "test"
             ],
-            "time": "2017-10-19T19:58:43+00:00"
+            "time": "2017-12-06T23:17:56+00:00"
         },
         {
             "name": "phpdocumentor/reflection-common",
@@ -743,16 +803,16 @@
         },
         {
             "name": "phpspec/prophecy",
-            "version": "1.7.6",
+            "version": "1.8.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpspec/prophecy.git",
-                "reference": "33a7e3c4fda54e912ff6338c48823bd5c0f0b712"
+                "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/33a7e3c4fda54e912ff6338c48823bd5c0f0b712",
-                "reference": "33a7e3c4fda54e912ff6338c48823bd5c0f0b712",
+                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
+                "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
                 "shasum": ""
             },
             "require": {
@@ -764,12 +824,12 @@
             },
             "require-dev": {
                 "phpspec/phpspec": "^2.5|^3.2",
-                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5"
+                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.7.x-dev"
+                    "dev-master": "1.8.x-dev"
                 }
             },
             "autoload": {
@@ -802,7 +862,7 @@
                 "spy",
                 "stub"
             ],
-            "time": "2018-04-18T13:57:24+00:00"
+            "time": "2018-08-05T17:53:17+00:00"
         },
         {
             "name": "phpunit/php-code-coverage",
@@ -1194,140 +1254,6 @@
             ],
             "time": "2017-06-30T09:13:00+00:00"
         },
-        {
-            "name": "psr/http-message",
-            "version": "1.0.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/php-fig/http-message.git",
-                "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
-                "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Psr\\Http\\Message\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "PHP-FIG",
-                    "homepage": "http://www.php-fig.org/"
-                }
-            ],
-            "description": "Common interface for HTTP messages",
-            "homepage": "https://github.com/php-fig/http-message",
-            "keywords": [
-                "http",
-                "http-message",
-                "psr",
-                "psr-7",
-                "request",
-                "response"
-            ],
-            "time": "2016-08-06T14:39:51+00:00"
-        },
-        {
-            "name": "satooshi/php-coveralls",
-            "version": "v2.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/php-coveralls/php-coveralls.git",
-                "reference": "3eaf7eb689cdf6b86801a3843940d974dc657068"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/php-coveralls/php-coveralls/zipball/3eaf7eb689cdf6b86801a3843940d974dc657068",
-                "reference": "3eaf7eb689cdf6b86801a3843940d974dc657068",
-                "shasum": ""
-            },
-            "require": {
-                "ext-json": "*",
-                "ext-simplexml": "*",
-                "guzzlehttp/guzzle": "^6.0",
-                "php": "^5.5 || ^7.0",
-                "psr/log": "^1.0",
-                "symfony/config": "^2.1 || ^3.0 || ^4.0",
-                "symfony/console": "^2.1 || ^3.0 || ^4.0",
-                "symfony/stopwatch": "^2.0 || ^3.0 || ^4.0",
-                "symfony/yaml": "^2.0 || ^3.0 || ^4.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^4.8.35 || ^5.4.3 || ^6.0"
-            },
-            "suggest": {
-                "symfony/http-kernel": "Allows Symfony integration"
-            },
-            "bin": [
-                "bin/php-coveralls"
-            ],
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.0-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "PhpCoveralls\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Kitamura Satoshi",
-                    "email": "with.no.parachute@gmail.com",
-                    "homepage": "https://www.facebook.com/satooshi.jp",
-                    "role": "Original creator"
-                },
-                {
-                    "name": "Takashi Matsuo",
-                    "email": "tmatsuo@google.com"
-                },
-                {
-                    "name": "Google Inc"
-                },
-                {
-                    "name": "Dariusz Ruminski",
-                    "email": "dariusz.ruminski@gmail.com",
-                    "homepage": "https://github.com/keradus"
-                },
-                {
-                    "name": "Contributors",
-                    "homepage": "https://github.com/php-coveralls/php-coveralls/graphs/contributors"
-                }
-            ],
-            "description": "PHP client library for Coveralls API",
-            "homepage": "https://github.com/php-coveralls/php-coveralls",
-            "keywords": [
-                "ci",
-                "coverage",
-                "github",
-                "test"
-            ],
-            "abandoned": "php-coveralls/php-coveralls",
-            "time": "2017-12-08T14:28:16+00:00"
-        },
         {
             "name": "sebastian/code-unit-reverse-lookup",
             "version": "1.0.1",
@@ -1843,16 +1769,16 @@
         },
         {
             "name": "squizlabs/php_codesniffer",
-            "version": "2.9.1",
+            "version": "2.9.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
-                "reference": "dcbed1074f8244661eecddfc2a675430d8d33f62"
+                "reference": "2acf168de78487db620ab4bc524135a13cfe6745"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/dcbed1074f8244661eecddfc2a675430d8d33f62",
-                "reference": "dcbed1074f8244661eecddfc2a675430d8d33f62",
+                "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/2acf168de78487db620ab4bc524135a13cfe6745",
+                "reference": "2acf168de78487db620ab4bc524135a13cfe6745",
                 "shasum": ""
             },
             "require": {
@@ -1917,20 +1843,20 @@
                 "phpcs",
                 "standards"
             ],
-            "time": "2017-05-22T02:43:20+00:00"
+            "time": "2018-11-07T22:31:41+00:00"
         },
         {
             "name": "symfony/config",
-            "version": "v3.4.11",
+            "version": "v3.4.18",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/config.git",
-                "reference": "73e055cf2e6467715f187724a0347ea32079967c"
+                "reference": "99b2fa8acc244e656cdf324ff419fbe6fd300a4d"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/config/zipball/73e055cf2e6467715f187724a0347ea32079967c",
-                "reference": "73e055cf2e6467715f187724a0347ea32079967c",
+                "url": "https://api.github.com/repos/symfony/config/zipball/99b2fa8acc244e656cdf324ff419fbe6fd300a4d",
+                "reference": "99b2fa8acc244e656cdf324ff419fbe6fd300a4d",
                 "shasum": ""
             },
             "require": {
@@ -1981,20 +1907,80 @@
             ],
             "description": "Symfony Config Component",
             "homepage": "https://symfony.com",
-            "time": "2018-05-14T16:49:53+00:00"
+            "time": "2018-10-31T09:06:03+00:00"
+        },
+        {
+            "name": "symfony/event-dispatcher",
+            "version": "v2.8.47",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/event-dispatcher.git",
+                "reference": "76494bc38ff38d90d01913d23b5271acd4d78dd3"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/76494bc38ff38d90d01913d23b5271acd4d78dd3",
+                "reference": "76494bc38ff38d90d01913d23b5271acd4d78dd3",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.9"
+            },
+            "require-dev": {
+                "psr/log": "~1.0",
+                "symfony/config": "^2.0.5|~3.0.0",
+                "symfony/dependency-injection": "~2.6|~3.0.0",
+                "symfony/expression-language": "~2.6|~3.0.0",
+                "symfony/stopwatch": "~2.3|~3.0.0"
+            },
+            "suggest": {
+                "symfony/dependency-injection": "",
+                "symfony/http-kernel": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.8-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\EventDispatcher\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony EventDispatcher Component",
+            "homepage": "https://symfony.com",
+            "time": "2018-10-20T23:16:31+00:00"
         },
         {
             "name": "symfony/filesystem",
-            "version": "v3.4.11",
+            "version": "v3.4.18",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/filesystem.git",
-                "reference": "8e03ca3fa52a0f56b87506f38cf7bd3f9442b3a0"
+                "reference": "d69930fc337d767607267d57c20a7403d0a822a4"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/filesystem/zipball/8e03ca3fa52a0f56b87506f38cf7bd3f9442b3a0",
-                "reference": "8e03ca3fa52a0f56b87506f38cf7bd3f9442b3a0",
+                "url": "https://api.github.com/repos/symfony/filesystem/zipball/d69930fc337d767607267d57c20a7403d0a822a4",
+                "reference": "d69930fc337d767607267d57c20a7403d0a822a4",
                 "shasum": ""
             },
             "require": {
@@ -2031,29 +2017,32 @@
             ],
             "description": "Symfony Filesystem Component",
             "homepage": "https://symfony.com",
-            "time": "2018-05-16T08:49:21+00:00"
+            "time": "2018-10-02T12:28:39+00:00"
         },
         {
             "name": "symfony/polyfill-ctype",
-            "version": "v1.8.0",
+            "version": "v1.10.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-ctype.git",
-                "reference": "7cc359f1b7b80fc25ed7796be7d96adc9b354bae"
+                "reference": "e3d826245268269cd66f8326bd8bc066687b4a19"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/7cc359f1b7b80fc25ed7796be7d96adc9b354bae",
-                "reference": "7cc359f1b7b80fc25ed7796be7d96adc9b354bae",
+                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19",
+                "reference": "e3d826245268269cd66f8326bd8bc066687b4a19",
                 "shasum": ""
             },
             "require": {
                 "php": ">=5.3.3"
             },
+            "suggest": {
+                "ext-ctype": "For best performance"
+            },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.8-dev"
+                    "dev-master": "1.9-dev"
                 }
             },
             "autoload": {
@@ -2086,20 +2075,20 @@
                 "polyfill",
                 "portable"
             ],
-            "time": "2018-04-30T19:57:29+00:00"
+            "time": "2018-08-06T14:22:27+00:00"
         },
         {
             "name": "symfony/stopwatch",
-            "version": "v3.4.11",
+            "version": "v3.4.18",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/stopwatch.git",
-                "reference": "eb17cfa072cab26537ac37e9c4ece6c0361369af"
+                "reference": "05e52a39de52ba690aebaed462b2bc8a9649f0a4"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/stopwatch/zipball/eb17cfa072cab26537ac37e9c4ece6c0361369af",
-                "reference": "eb17cfa072cab26537ac37e9c4ece6c0361369af",
+                "url": "https://api.github.com/repos/symfony/stopwatch/zipball/05e52a39de52ba690aebaed462b2bc8a9649f0a4",
+                "reference": "05e52a39de52ba690aebaed462b2bc8a9649f0a4",
                 "shasum": ""
             },
             "require": {
@@ -2135,20 +2124,20 @@
             ],
             "description": "Symfony Stopwatch Component",
             "homepage": "https://symfony.com",
-            "time": "2018-02-17T14:55:25+00:00"
+            "time": "2018-10-02T12:28:39+00:00"
         },
         {
             "name": "symfony/var-dumper",
-            "version": "v3.4.11",
+            "version": "v3.4.18",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/var-dumper.git",
-                "reference": "0e6545672d8c9ce70dd472adc2f8b03155a46f73"
+                "reference": "ff8ac19e97e5c7c3979236b584719a1190f84181"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/var-dumper/zipball/0e6545672d8c9ce70dd472adc2f8b03155a46f73",
-                "reference": "0e6545672d8c9ce70dd472adc2f8b03155a46f73",
+                "url": "https://api.github.com/repos/symfony/var-dumper/zipball/ff8ac19e97e5c7c3979236b584719a1190f84181",
+                "reference": "ff8ac19e97e5c7c3979236b584719a1190f84181",
                 "shasum": ""
             },
             "require": {
@@ -2204,27 +2193,31 @@
                 "debug",
                 "dump"
             ],
-            "time": "2018-04-26T12:42:15+00:00"
+            "time": "2018-10-02T16:33:53+00:00"
         },
         {
             "name": "symfony/yaml",
-            "version": "v3.3.17",
+            "version": "v3.4.18",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/yaml.git",
-                "reference": "af615970e265543a26ee712c958404eb9b7ac93d"
+                "reference": "640b6c27fed4066d64b64d5903a86043f4a4de7f"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/yaml/zipball/af615970e265543a26ee712c958404eb9b7ac93d",
-                "reference": "af615970e265543a26ee712c958404eb9b7ac93d",
+                "url": "https://api.github.com/repos/symfony/yaml/zipball/640b6c27fed4066d64b64d5903a86043f4a4de7f",
+                "reference": "640b6c27fed4066d64b64d5903a86043f4a4de7f",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.5.9|>=7.0.8"
+                "php": "^5.5.9|>=7.0.8",
+                "symfony/polyfill-ctype": "~1.8"
+            },
+            "conflict": {
+                "symfony/console": "<3.4"
             },
             "require-dev": {
-                "symfony/console": "~2.8|~3.0"
+                "symfony/console": "~3.4|~4.0"
             },
             "suggest": {
                 "symfony/console": "For validating YAML files using the lint command"
@@ -2232,7 +2225,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "3.3-dev"
+                    "dev-master": "3.4-dev"
                 }
             },
             "autoload": {
@@ -2259,7 +2252,7 @@
             ],
             "description": "Symfony Yaml Component",
             "homepage": "https://symfony.com",
-            "time": "2018-01-20T15:04:53+00:00"
+            "time": "2018-10-02T16:33:53+00:00"
         },
         {
             "name": "victorjonsson/markdowndocs",
diff --git a/vendor/consolidation/output-formatters/phpunit.xml.dist b/vendor/consolidation/output-formatters/phpunit.xml.dist
index 6f1cce7da7..9a90fcecc6 100644
--- a/vendor/consolidation/output-formatters/phpunit.xml.dist
+++ b/vendor/consolidation/output-formatters/phpunit.xml.dist
@@ -1,7 +1,7 @@
 <phpunit bootstrap="vendor/autoload.php" colors="true">
   <testsuites>
     <testsuite name="formatters">
-      <directory prefix="test" suffix=".php">tests</directory>
+      <directory prefix="" suffix="Test.php">tests</directory>
     </testsuite>
   </testsuites>
   <logging>
diff --git a/vendor/consolidation/output-formatters/src/FormatterManager.php b/vendor/consolidation/output-formatters/src/FormatterManager.php
index 02de79fff7..0049ae9293 100644
--- a/vendor/consolidation/output-formatters/src/FormatterManager.php
+++ b/vendor/consolidation/output-formatters/src/FormatterManager.php
@@ -19,6 +19,9 @@
 use Symfony\Component\Console\Input\InputOption;
 use Symfony\Component\Console\Output\OutputInterface;
 use Consolidation\OutputFormatters\StructuredData\OriginalDataInterface;
+use Consolidation\OutputFormatters\StructuredData\ListDataFromKeys;
+use Consolidation\OutputFormatters\StructuredData\ConversionInterface;
+use Consolidation\OutputFormatters\Formatters\HumanReadableFormat;
 
 /**
  * Manage a collection of formatters; return one on request.
@@ -37,6 +40,7 @@ public function __construct()
     public function addDefaultFormatters()
     {
         $defaultFormatters = [
+            'null' => '\Consolidation\OutputFormatters\Formatters\NoOutputFormatter',
             'string' => '\Consolidation\OutputFormatters\Formatters\StringFormatter',
             'yaml' => '\Consolidation\OutputFormatters\Formatters\YamlFormatter',
             'xml' => '\Consolidation\OutputFormatters\Formatters\XmlFormatter',
@@ -121,10 +125,17 @@ public function automaticOptions(FormatterOptions $options, $dataType)
             $automaticOptions[FormatterOptions::FORMAT] = new InputOption(FormatterOptions::FORMAT, '', InputOption::VALUE_REQUIRED, $description, $defaultFormat);
         }
 
+        $dataTypeClass = ($dataType instanceof \ReflectionClass) ? $dataType : new \ReflectionClass($dataType);
+
         if ($availableFields) {
             $defaultFields = $options->get(FormatterOptions::DEFAULT_FIELDS, [], '');
             $description = 'Available fields: ' . implode(', ', $this->availableFieldsList($availableFields));
             $automaticOptions[FormatterOptions::FIELDS] = new InputOption(FormatterOptions::FIELDS, '', InputOption::VALUE_REQUIRED, $description, $defaultFields);
+        } elseif ($dataTypeClass->implementsInterface('Consolidation\OutputFormatters\StructuredData\RestructureInterface')) {
+            $automaticOptions[FormatterOptions::FIELDS] = new InputOption(FormatterOptions::FIELDS, '', InputOption::VALUE_REQUIRED, 'Limit output to only the listed elements. Name top-level elements by key, e.g. "--fields=name,date", or use dot notation to select a nested element, e.g. "--fields=a.b.c as example".', []);
+        }
+
+        if (isset($automaticOptions[FormatterOptions::FIELDS])) {
             $automaticOptions[FormatterOptions::FIELD] = new InputOption(FormatterOptions::FIELD, '', InputOption::VALUE_REQUIRED, "Select just one field, and force format to 'string'.", '');
         }
 
@@ -203,7 +214,17 @@ public function isValidDataType(FormatterInterface $formatter, \ReflectionClass
      */
     public function write(OutputInterface $output, $format, $structuredOutput, FormatterOptions $options)
     {
+        // Convert the data to another format (e.g. converting from RowsOfFields to
+        // UnstructuredListData when the fields indicate an unstructured transformation
+        // is requested).
+        $structuredOutput = $this->convertData($structuredOutput, $options);
+
+        // TODO: If the $format is the default format (not selected by the user), and
+        // if `convertData` switched us to unstructured data, then select a new default
+        // format (e.g. yaml) if the selected format cannot render the converted data.
         $formatter = $this->getFormatter((string)$format);
+
+        // If the data format is not applicable for the selected formatter, throw an error.
         if (!is_string($structuredOutput) && !$this->isValidFormat($formatter, $structuredOutput)) {
             $validFormats = $this->validFormats($structuredOutput);
             throw new InvalidFormatException((string)$format, $structuredOutput, $validFormats);
@@ -355,6 +376,17 @@ protected function canSimplifyToArray(\ReflectionClass $structuredOutput)
         return false;
     }
 
+    /**
+     * Convert from one format to another if necessary prior to restructuring.
+     */
+    public function convertData($structuredOutput, FormatterOptions $options)
+    {
+        if ($structuredOutput instanceof ConversionInterface) {
+            return $structuredOutput->convert($options);
+        }
+        return $structuredOutput;
+    }
+
     /**
      * Restructure the data as necessary (e.g. to select or reorder fields).
      *
@@ -399,6 +431,11 @@ public function overrideRestructure(FormatterInterface $formatter, $structuredOu
      */
     public function overrideOptions(FormatterInterface $formatter, $structuredOutput, FormatterOptions $options)
     {
+        // Set the "Human Readable" option if the formatter has the HumanReadable marker interface
+        if ($formatter instanceof HumanReadableFormat) {
+            $options->setHumanReadable();
+        }
+        // The formatter may also make dynamic adjustment to the options.
         if ($formatter instanceof OverrideOptionsInterface) {
             return $formatter->overrideOptions($structuredOutput, $options);
         }
diff --git a/vendor/consolidation/output-formatters/src/Formatters/CsvFormatter.php b/vendor/consolidation/output-formatters/src/Formatters/CsvFormatter.php
index d39c27b489..df99d88888 100644
--- a/vendor/consolidation/output-formatters/src/Formatters/CsvFormatter.php
+++ b/vendor/consolidation/output-formatters/src/Formatters/CsvFormatter.php
@@ -66,6 +66,8 @@ protected function getDefaultFormatterOptions()
         return [
             FormatterOptions::INCLUDE_FIELD_LABELS => true,
             FormatterOptions::DELIMITER => ',',
+            FormatterOptions::CSV_ENCLOSURE => '"',
+            FormatterOptions::CSV_ESCAPE_CHAR => "\\",
         ];
     }
 
@@ -87,18 +89,40 @@ public function write(OutputInterface $output, $data, FormatterOptions $options)
         }
     }
 
+  /**
+   * Writes a single a single line of formatted CSV data to the output stream.
+   *
+   * @param OutputInterface $output the output stream to write to.
+   * @param array $data an array of field data to convert to a CSV string.
+   * @param FormatterOptions $options the specified options for this formatter.
+   */
     protected function writeOneLine(OutputInterface $output, $data, $options)
     {
         $defaults = $this->getDefaultFormatterOptions();
         $delimiter = $options->get(FormatterOptions::DELIMITER, $defaults);
-
-        $output->write($this->csvEscape($data, $delimiter));
+        $enclosure = $options->get(FormatterOptions::CSV_ENCLOSURE, $defaults);
+        $escapeChar = $options->get(FormatterOptions::CSV_ESCAPE_CHAR, $defaults);
+        $output->write($this->csvEscape($data, $delimiter, $enclosure, $escapeChar));
     }
 
-    protected function csvEscape($data, $delimiter = ',')
+  /**
+   * Generates a CSV-escaped string from an array of field data.
+   *
+   * @param array $data an array of field data to format as a CSV.
+   * @param string $delimiter the delimiter to use between fields.
+   * @param string $enclosure character to use when enclosing complex fields.
+   * @param string $escapeChar character to use when escaping special characters.
+   *
+   * @return string|bool the formatted CSV string, or FALSE if the formatting failed.
+   */
+    protected function csvEscape($data, $delimiter = ',', $enclosure = '"', $escapeChar = "\\")
     {
         $buffer = fopen('php://temp', 'r+');
-        fputcsv($buffer, $data, $delimiter);
+        if (version_compare(PHP_VERSION, '5.5.4', '>=')) {
+            fputcsv($buffer, $data, $delimiter, $enclosure, $escapeChar);
+        } else {
+            fputcsv($buffer, $data, $delimiter, $enclosure);
+        }
         rewind($buffer);
         $csv = fgets($buffer);
         fclose($buffer);
diff --git a/vendor/consolidation/output-formatters/src/Formatters/NoOutputFormatter.php b/vendor/consolidation/output-formatters/src/Formatters/NoOutputFormatter.php
new file mode 100644
index 0000000000..1439475557
--- /dev/null
+++ b/vendor/consolidation/output-formatters/src/Formatters/NoOutputFormatter.php
@@ -0,0 +1,40 @@
+<?php
+namespace Consolidation\OutputFormatters\Formatters;
+
+use Consolidation\OutputFormatters\Validate\ValidationInterface;
+use Consolidation\OutputFormatters\Options\FormatterOptions;
+use Consolidation\OutputFormatters\Validate\ValidDataTypesTrait;
+use Symfony\Component\Console\Output\OutputInterface;
+
+/**
+ * No output formatter
+ *
+ * This formatter never produces any output. It is useful in cases where
+ * a command should not produce any output by default, but may do so if
+ * the user explicitly includes a --format option.
+ */
+class NoOutputFormatter implements FormatterInterface, ValidationInterface
+{
+    /**
+     * All data types are acceptable.
+     */
+    public function isValidDataType(\ReflectionClass $dataType)
+    {
+        return true;
+    }
+
+    /**
+     * @inheritdoc
+     */
+    public function validate($structuredData)
+    {
+        return $structuredData;
+    }
+
+    /**
+     * @inheritdoc
+     */
+    public function write(OutputInterface $output, $data, FormatterOptions $options)
+    {
+    }
+}
diff --git a/vendor/consolidation/output-formatters/src/Formatters/StringFormatter.php b/vendor/consolidation/output-formatters/src/Formatters/StringFormatter.php
index 142bee4c38..1a008d985c 100644
--- a/vendor/consolidation/output-formatters/src/Formatters/StringFormatter.php
+++ b/vendor/consolidation/output-formatters/src/Formatters/StringFormatter.php
@@ -1,12 +1,15 @@
 <?php
 namespace Consolidation\OutputFormatters\Formatters;
 
-use Consolidation\OutputFormatters\Validate\ValidationInterface;
-use Consolidation\OutputFormatters\Options\OverrideOptionsInterface;
 use Consolidation\OutputFormatters\Options\FormatterOptions;
+use Consolidation\OutputFormatters\Options\OverrideOptionsInterface;
+use Consolidation\OutputFormatters\StructuredData\RestructureInterface;
+use Consolidation\OutputFormatters\StructuredData\UnstructuredInterface;
+use Consolidation\OutputFormatters\Transformations\SimplifiedFormatterInterface;
+use Consolidation\OutputFormatters\Transformations\StringTransformationInterface;
+use Consolidation\OutputFormatters\Validate\ValidationInterface;
 use Consolidation\OutputFormatters\Validate\ValidDataTypesTrait;
 use Symfony\Component\Console\Output\OutputInterface;
-use Consolidation\OutputFormatters\StructuredData\RestructureInterface;
 
 /**
  * String formatter
@@ -19,10 +22,16 @@
 class StringFormatter implements FormatterInterface, ValidationInterface, OverrideOptionsInterface
 {
     /**
-     * All data types are acceptable.
+     * By default, we assume that we can convert any data type to `string`,
+     * unless it implements UnstructuredInterface, in which case we won't
+     * allow the `string` format unless the data type also implements
+     * StringTransformationInterface.
      */
     public function isValidDataType(\ReflectionClass $dataType)
     {
+        if ($dataType->implementsInterface('\Consolidation\OutputFormatters\StructuredData\UnstructuredInterface') && !$dataType->implementsInterface('\Consolidation\OutputFormatters\Transformations\StringTransformationInterface')) {
+            return false;
+        }
         return true;
     }
 
@@ -53,7 +62,7 @@ public function overrideOptions($structuredOutput, FormatterOptions $options)
 
     /**
      * If the data provided to a 'string' formatter is a table, then try
-     * to emit it as a TSV value.
+     * to emit it in a simplified form (by default, TSV).
      *
      * @param OutputInterface $output
      * @param mixed $data
@@ -61,6 +70,11 @@ public function overrideOptions($structuredOutput, FormatterOptions $options)
      */
     protected function reduceToSigleFieldAndWrite(OutputInterface $output, $data, FormatterOptions $options)
     {
+        if ($data instanceof StringTransformationInterface) {
+            $simplified = $data->simplifyToString($options);
+            return $output->write($simplified);
+        }
+
         $alternateFormatter = new TsvFormatter();
         try {
             $data = $alternateFormatter->validate($data);
diff --git a/vendor/consolidation/output-formatters/src/Options/FormatterOptions.php b/vendor/consolidation/output-formatters/src/Options/FormatterOptions.php
index 68dd13094c..306cc00474 100644
--- a/vendor/consolidation/output-formatters/src/Options/FormatterOptions.php
+++ b/vendor/consolidation/output-formatters/src/Options/FormatterOptions.php
@@ -44,11 +44,15 @@ class FormatterOptions
     const ROW_LABELS = 'row-labels';
     const FIELD_LABELS = 'field-labels';
     const DEFAULT_FIELDS = 'default-fields';
+    const DEFAULT_TABLE_FIELDS = 'default-table-fields';
     const DEFAULT_STRING_FIELD = 'default-string-field';
     const DELIMITER = 'delimiter';
+    const CSV_ENCLOSURE = 'csv-enclosure';
+    const CSV_ESCAPE_CHAR = 'csv-escape-char';
     const LIST_DELIMITER = 'list-delimiter';
     const TERMINAL_WIDTH = 'width';
     const METADATA_TEMPLATE = 'metadata-template';
+    const HUMAN_READABLE = 'human-readable';
 
     /**
      * Create a new FormatterOptions with the configuration data and the
@@ -90,6 +94,16 @@ public function setDelimiter($delimiter)
         return $this->setConfigurationValue(self::DELIMITER, $delimiter);
     }
 
+    public function setCsvEnclosure($enclosure)
+    {
+        return $this->setConfigurationValue(self::CSV_ENCLOSURE, $enclosure);
+    }
+
+    public function setCsvEscapeChar($escapeChar)
+    {
+        return $this->setConfigurationValue(self::CSV_ESCAPE_CHAR, $escapeChar);
+    }
+
     public function setListDelimiter($listDelimiter)
     {
         return $this->setConfigurationValue(self::LIST_DELIMITER, $listDelimiter);
@@ -132,6 +146,11 @@ public function setWidth($width)
         return $this->setConfigurationValue(self::TERMINAL_WIDTH, $width);
     }
 
+    public function setHumanReadable($isHumanReadable = true)
+    {
+        return $this->setConfigurationValue(self::HUMAN_READABLE, $isHumanReadable);
+    }
+
     /**
      * Get a formatter option
      *
diff --git a/vendor/consolidation/output-formatters/src/StructuredData/AbstractListData.php b/vendor/consolidation/output-formatters/src/StructuredData/AbstractListData.php
new file mode 100644
index 0000000000..81382a4187
--- /dev/null
+++ b/vendor/consolidation/output-formatters/src/StructuredData/AbstractListData.php
@@ -0,0 +1,68 @@
+<?php
+namespace Consolidation\OutputFormatters\StructuredData;
+
+use Consolidation\OutputFormatters\Options\FormatterOptions;
+use Consolidation\OutputFormatters\Transformations\ReorderFields;
+
+/**
+ * Base class for all list data types.
+ */
+class AbstractListData extends \ArrayObject implements ListDataInterface
+{
+    public function __construct($data)
+    {
+        parent::__construct($data);
+    }
+
+    public function getListData(FormatterOptions $options)
+    {
+        return array_keys($this->getArrayCopy());
+    }
+
+    protected function getReorderedFieldLabels($data, $options, $defaults)
+    {
+        $reorderer = new ReorderFields();
+        $fieldLabels = $reorderer->reorder(
+            $this->getFields($options, $defaults),
+            $options->get(FormatterOptions::FIELD_LABELS, $defaults),
+            $data
+        );
+        return $fieldLabels;
+    }
+
+    protected function getFields($options, $defaults)
+    {
+        $fieldShortcut = $options->get(FormatterOptions::FIELD);
+        if (!empty($fieldShortcut)) {
+            return [$fieldShortcut];
+        }
+        $result = $options->get(FormatterOptions::FIELDS);
+        if (!empty($result)) {
+            return $result;
+        }
+        $isHumanReadable = $options->get(FormatterOptions::HUMAN_READABLE);
+        if ($isHumanReadable) {
+            $result = $options->get(FormatterOptions::DEFAULT_TABLE_FIELDS);
+            if (!empty($result)) {
+                return $result;
+            }
+        }
+        return $options->get(FormatterOptions::DEFAULT_FIELDS, $defaults);
+    }
+
+    /**
+     * A structured list may provide its own set of default options. These
+     * will be used in place of the command's default options (from the
+     * annotations) in instances where the user does not provide the options
+     * explicitly (on the commandline) or implicitly (via a configuration file).
+     *
+     * @return array
+     */
+    protected function defaultOptions()
+    {
+        return [
+            FormatterOptions::FIELDS => [],
+            FormatterOptions::FIELD_LABELS => [],
+        ];
+    }
+}
diff --git a/vendor/consolidation/output-formatters/src/StructuredData/AbstractStructuredList.php b/vendor/consolidation/output-formatters/src/StructuredData/AbstractStructuredList.php
index ee09a5a4ac..ee25af686c 100644
--- a/vendor/consolidation/output-formatters/src/StructuredData/AbstractStructuredList.php
+++ b/vendor/consolidation/output-formatters/src/StructuredData/AbstractStructuredList.php
@@ -4,7 +4,6 @@
 use Consolidation\OutputFormatters\StructuredData\RestructureInterface;
 use Consolidation\OutputFormatters\Options\FormatterOptions;
 use Consolidation\OutputFormatters\StructuredData\ListDataInterface;
-use Consolidation\OutputFormatters\Transformations\ReorderFields;
 use Consolidation\OutputFormatters\Transformations\TableTransformation;
 
 /**
@@ -14,7 +13,7 @@
  *
  * It is presumed that every row contains the same keys.
  */
-abstract class AbstractStructuredList extends ListDataFromKeys implements RestructureInterface, RenderCellCollectionInterface
+abstract class AbstractStructuredList extends AbstractListData implements RestructureInterface, RenderCellCollectionInterface
 {
     use RenderCellCollectionTrait;
 
@@ -43,45 +42,11 @@ protected function instantiateTableTransformation($data, $fieldLabels, $rowLabel
         return new TableTransformation($data, $fieldLabels, $rowLabels);
     }
 
-    protected function getReorderedFieldLabels($data, $options, $defaults)
-    {
-        $reorderer = new ReorderFields();
-        $fieldLabels = $reorderer->reorder(
-            $this->getFields($options, $defaults),
-            $options->get(FormatterOptions::FIELD_LABELS, $defaults),
-            $data
-        );
-        return $fieldLabels;
-    }
-
-    protected function getFields($options, $defaults)
-    {
-        $fieldShortcut = $options->get(FormatterOptions::FIELD);
-        if (!empty($fieldShortcut)) {
-            return [$fieldShortcut];
-        }
-        $result = $options->get(FormatterOptions::FIELDS, $defaults);
-        if (!empty($result)) {
-            return $result;
-        }
-        return $options->get(FormatterOptions::DEFAULT_FIELDS, $defaults);
-    }
-
-    /**
-     * A structured list may provide its own set of default options. These
-     * will be used in place of the command's default options (from the
-     * annotations) in instances where the user does not provide the options
-     * explicitly (on the commandline) or implicitly (via a configuration file).
-     *
-     * @return array
-     */
     protected function defaultOptions()
     {
         return [
-            FormatterOptions::FIELDS => [],
-            FormatterOptions::FIELD_LABELS => [],
             FormatterOptions::ROW_LABELS => [],
             FormatterOptions::DEFAULT_FIELDS => [],
-        ];
+        ] + parent::defaultOptions();
     }
 }
diff --git a/vendor/consolidation/output-formatters/src/StructuredData/ConversionInterface.php b/vendor/consolidation/output-formatters/src/StructuredData/ConversionInterface.php
new file mode 100644
index 0000000000..6f6447b337
--- /dev/null
+++ b/vendor/consolidation/output-formatters/src/StructuredData/ConversionInterface.php
@@ -0,0 +1,15 @@
+<?php
+namespace Consolidation\OutputFormatters\StructuredData;
+
+use Consolidation\OutputFormatters\Options\FormatterOptions;
+
+interface ConversionInterface
+{
+    /**
+     * Allow structured data to be converted -- i.e. from
+     * RowsOfFields to UnstructuredListData.
+     *
+     * @param FormatterOptions $options Formatting options
+     */
+    public function convert(FormatterOptions $options);
+}
diff --git a/vendor/consolidation/output-formatters/src/StructuredData/FieldProcessor.php b/vendor/consolidation/output-formatters/src/StructuredData/FieldProcessor.php
new file mode 100644
index 0000000000..e0cfd13689
--- /dev/null
+++ b/vendor/consolidation/output-formatters/src/StructuredData/FieldProcessor.php
@@ -0,0 +1,39 @@
+<?php
+namespace Consolidation\OutputFormatters\StructuredData;
+
+use Consolidation\OutputFormatters\Options\FormatterOptions;
+use Consolidation\OutputFormatters\StructuredData\RestructureInterface;
+use Consolidation\OutputFormatters\Transformations\UnstructuredDataListTransformation;
+
+/**
+ * FieldProcessor will do various alterations on field sets.
+ */
+class FieldProcessor
+{
+    public static function processFieldAliases($fields)
+    {
+        if (!is_array($fields)) {
+            $fields = array_filter(explode(',', $fields));
+        }
+        $transformed_fields = [];
+        foreach ($fields as $field) {
+            list($machine_name,$label) = explode(' as ', $field) + [$field, preg_replace('#.*\.#', '', $field)];
+            $transformed_fields[$machine_name] = $label;
+        }
+        return $transformed_fields;
+    }
+
+    /**
+     * Determine whether the data structure has unstructured field access,
+     * e.g. `a.b.c` or `foo as bar`.
+     * @param type $fields
+     * @return type
+     */
+    public static function hasUnstructuredFieldAccess($fields)
+    {
+        if (is_array($fields)) {
+            $fields = implode(',', $fields);
+        }
+        return (strpos($fields, ' as ') !== false) || (strpos($fields, '.') !== false);
+    }
+}
diff --git a/vendor/consolidation/output-formatters/src/StructuredData/ListDataFromKeys.php b/vendor/consolidation/output-formatters/src/StructuredData/ListDataFromKeys.php
index 299fcfafc6..8cf571465b 100644
--- a/vendor/consolidation/output-formatters/src/StructuredData/ListDataFromKeys.php
+++ b/vendor/consolidation/output-formatters/src/StructuredData/ListDataFromKeys.php
@@ -1,21 +1,9 @@
 <?php
 namespace Consolidation\OutputFormatters\StructuredData;
 
-use Consolidation\OutputFormatters\Options\FormatterOptions;
-
 /**
- * Represents aribtrary array data (structured or unstructured) where the
- * data to display in --list format comes from the array keys.
+ * @deprecated Use UnstructuredListData
  */
-class ListDataFromKeys extends \ArrayObject implements ListDataInterface
+class ListDataFromKeys extends AbstractListData
 {
-    public function __construct($data)
-    {
-        parent::__construct($data);
-    }
-
-    public function getListData(FormatterOptions $options)
-    {
-        return array_keys($this->getArrayCopy());
-    }
 }
diff --git a/vendor/consolidation/output-formatters/src/StructuredData/PropertyList.php b/vendor/consolidation/output-formatters/src/StructuredData/PropertyList.php
index 8a34225027..10b182cb3d 100644
--- a/vendor/consolidation/output-formatters/src/StructuredData/PropertyList.php
+++ b/vendor/consolidation/output-formatters/src/StructuredData/PropertyList.php
@@ -13,8 +13,21 @@
  * key : value pair.  The keys must be unique, as is typically
  * the case for associative arrays.
  */
-class PropertyList extends AbstractStructuredList
+class PropertyList extends AbstractStructuredList implements ConversionInterface
 {
+    /**
+     * @inheritdoc
+     */
+    public function convert(FormatterOptions $options)
+    {
+        $defaults = $this->defaultOptions();
+        $fields = $this->getFields($options, $defaults);
+        if (FieldProcessor::hasUnstructuredFieldAccess($fields)) {
+            return new UnstructuredData($this->getArrayCopy());
+        }
+        return $this;
+    }
+
     /**
      * Restructure this data for output by converting it into a table
      * transformation object.
diff --git a/vendor/consolidation/output-formatters/src/StructuredData/RowsOfFields.php b/vendor/consolidation/output-formatters/src/StructuredData/RowsOfFields.php
index bc88e6d190..9ca1e38602 100644
--- a/vendor/consolidation/output-formatters/src/StructuredData/RowsOfFields.php
+++ b/vendor/consolidation/output-formatters/src/StructuredData/RowsOfFields.php
@@ -10,8 +10,21 @@
  *
  * It is presumed that every row contains the same keys.
  */
-class RowsOfFields extends AbstractStructuredList
+class RowsOfFields extends AbstractStructuredList implements ConversionInterface
 {
+    /**
+     * @inheritdoc
+     */
+    public function convert(FormatterOptions $options)
+    {
+        $defaults = $this->defaultOptions();
+        $fields = $this->getFields($options, $defaults);
+        if (FieldProcessor::hasUnstructuredFieldAccess($fields)) {
+            return new UnstructuredListData($this->getArrayCopy());
+        }
+        return $this;
+    }
+
     /**
      * Restructure this data for output by converting it into a table
      * transformation object.
diff --git a/vendor/consolidation/output-formatters/src/StructuredData/UnstructuredData.php b/vendor/consolidation/output-formatters/src/StructuredData/UnstructuredData.php
new file mode 100644
index 0000000000..6de973e047
--- /dev/null
+++ b/vendor/consolidation/output-formatters/src/StructuredData/UnstructuredData.php
@@ -0,0 +1,30 @@
+<?php
+namespace Consolidation\OutputFormatters\StructuredData;
+
+use Consolidation\OutputFormatters\Options\FormatterOptions;
+use Consolidation\OutputFormatters\StructuredData\RestructureInterface;
+use Consolidation\OutputFormatters\Transformations\UnstructuredDataTransformation;
+
+/**
+ * Represents aribtrary unstructured array data where the
+ * data to display in --list format comes from the array keys.
+ *
+ * Unstructured list data can have variable keys in every rown (unlike
+ * RowsOfFields, which expects uniform rows), and the data elements may
+ * themselves be deep arrays.
+ */
+class UnstructuredData extends AbstractListData implements UnstructuredInterface, RestructureInterface
+{
+    public function __construct($data)
+    {
+        parent::__construct($data);
+    }
+
+    public function restructure(FormatterOptions $options)
+    {
+        $defaults = $this->defaultOptions();
+        $fields = $this->getFields($options, $defaults);
+
+        return new UnstructuredDataTransformation($this->getArrayCopy(), FieldProcessor::processFieldAliases($fields));
+    }
+}
diff --git a/vendor/consolidation/output-formatters/src/StructuredData/UnstructuredInterface.php b/vendor/consolidation/output-formatters/src/StructuredData/UnstructuredInterface.php
new file mode 100644
index 0000000000..e064a66fc3
--- /dev/null
+++ b/vendor/consolidation/output-formatters/src/StructuredData/UnstructuredInterface.php
@@ -0,0 +1,14 @@
+<?php
+namespace Consolidation\OutputFormatters\StructuredData;
+
+use Consolidation\OutputFormatters\Options\FormatterOptions;
+
+/**
+ * UnstructuredInterface is a marker interface that indicates that the
+ * data type is unstructured, and has no default conversion to a string.
+ * Unstructured data supports the `string` format only if it also implements
+ * StringTransformationInterface.
+ */
+interface UnstructuredInterface
+{
+}
diff --git a/vendor/consolidation/output-formatters/src/StructuredData/UnstructuredListData.php b/vendor/consolidation/output-formatters/src/StructuredData/UnstructuredListData.php
new file mode 100644
index 0000000000..8cc9d19572
--- /dev/null
+++ b/vendor/consolidation/output-formatters/src/StructuredData/UnstructuredListData.php
@@ -0,0 +1,30 @@
+<?php
+namespace Consolidation\OutputFormatters\StructuredData;
+
+use Consolidation\OutputFormatters\Options\FormatterOptions;
+use Consolidation\OutputFormatters\StructuredData\RestructureInterface;
+use Consolidation\OutputFormatters\Transformations\UnstructuredDataListTransformation;
+
+/**
+ * Represents aribtrary unstructured array data where the
+ * data to display in --list format comes from the array keys.
+ *
+ * Unstructured list data can have variable keys in every rown (unlike
+ * RowsOfFields, which expects uniform rows), and the data elements may
+ * themselves be deep arrays.
+ */
+class UnstructuredListData extends AbstractListData implements UnstructuredInterface, RestructureInterface
+{
+    public function __construct($data)
+    {
+        parent::__construct($data);
+    }
+
+    public function restructure(FormatterOptions $options)
+    {
+        $defaults = $this->defaultOptions();
+        $fields = $this->getFields($options, $defaults);
+
+        return new UnstructuredDataListTransformation($this->getArrayCopy(), FieldProcessor::processFieldAliases($fields));
+    }
+}
diff --git a/vendor/consolidation/output-formatters/src/Transformations/ReorderFields.php b/vendor/consolidation/output-formatters/src/Transformations/ReorderFields.php
index ca1ee7c31c..40d111d58f 100644
--- a/vendor/consolidation/output-formatters/src/Transformations/ReorderFields.php
+++ b/vendor/consolidation/output-formatters/src/Transformations/ReorderFields.php
@@ -57,6 +57,9 @@ protected function reorderFieldLabels($fields, $fieldLabels, $data)
 
     protected function getSelectedFieldKeys($fields, $fieldLabels)
     {
+        if (empty($fieldLabels)) {
+            return [];
+        }
         if (is_string($fields)) {
             $fields = explode(',', $fields);
         }
diff --git a/vendor/consolidation/output-formatters/src/Transformations/StringTransformationInterface.php b/vendor/consolidation/output-formatters/src/Transformations/StringTransformationInterface.php
new file mode 100644
index 0000000000..e303a12d3f
--- /dev/null
+++ b/vendor/consolidation/output-formatters/src/Transformations/StringTransformationInterface.php
@@ -0,0 +1,13 @@
+<?php
+namespace Consolidation\OutputFormatters\Transformations;
+
+use Consolidation\OutputFormatters\Options\FormatterOptions;
+
+interface StringTransformationInterface
+{
+    /**
+     * simplifyToString is called by the string formatter to convert
+     * structured data to a simple string.
+     */
+    public function simplifyToString(FormatterOptions $options);
+}
diff --git a/vendor/consolidation/output-formatters/src/Transformations/TableTransformation.php b/vendor/consolidation/output-formatters/src/Transformations/TableTransformation.php
index 52e9403b17..0922974513 100644
--- a/vendor/consolidation/output-formatters/src/Transformations/TableTransformation.php
+++ b/vendor/consolidation/output-formatters/src/Transformations/TableTransformation.php
@@ -4,8 +4,11 @@
 use Consolidation\OutputFormatters\StructuredData\TableDataInterface;
 use Consolidation\OutputFormatters\StructuredData\OriginalDataInterface;
 use Consolidation\OutputFormatters\StructuredData\MetadataHolderInterface;
+use Consolidation\OutputFormatters\Options\FormatterOptions;
+use Consolidation\OutputFormatters\Formatters\TsvFormatter;
+use Symfony\Component\Console\Output\BufferedOutput;
 
-class TableTransformation extends \ArrayObject implements TableDataInterface, OriginalDataInterface
+class TableTransformation extends \ArrayObject implements TableDataInterface, StringTransformationInterface, OriginalDataInterface
 {
     protected $headers;
     protected $rowLabels;
@@ -40,6 +43,22 @@ public function isList()
         return $this->layout == self::LIST_LAYOUT;
     }
 
+    /**
+     * @inheritdoc
+     */
+    public function simplifyToString(FormatterOptions $options)
+    {
+        $alternateFormatter = new TsvFormatter();
+        $output = new BufferedOutput();
+
+        try {
+            $data = $alternateFormatter->validate($this->getArrayCopy());
+            $alternateFormatter->write($output, $this->getArrayCopy(), $options);
+        } catch (\Exception $e) {
+        }
+        return $output->fetch();
+    }
+
     protected static function transformRows($data, $fieldLabels)
     {
         $rows = [];
diff --git a/vendor/consolidation/output-formatters/src/Transformations/UnstructuredDataFieldAccessor.php b/vendor/consolidation/output-formatters/src/Transformations/UnstructuredDataFieldAccessor.php
new file mode 100644
index 0000000000..8ef7f12b5b
--- /dev/null
+++ b/vendor/consolidation/output-formatters/src/Transformations/UnstructuredDataFieldAccessor.php
@@ -0,0 +1,36 @@
+<?php
+namespace Consolidation\OutputFormatters\Transformations;
+
+use Dflydev\DotAccessData\Data;
+
+class UnstructuredDataFieldAccessor
+{
+    protected $data;
+
+    public function __construct($data)
+    {
+        $this->data = $data;
+    }
+
+    public function get($fields)
+    {
+        $data = new Data($this->data);
+        $result = new Data();
+        foreach ($fields as $key => $label) {
+            $item = $data->get($key);
+            if (isset($item)) {
+                if ($label == '.') {
+                    if (!is_array($item)) {
+                        return $item;
+                    }
+                    foreach ($item as $key => $value) {
+                        $result->set($key, $value);
+                    }
+                } else {
+                    $result->set($label, $data->get($key));
+                }
+            }
+        }
+        return $result->export();
+    }
+}
diff --git a/vendor/consolidation/output-formatters/src/Transformations/UnstructuredDataListTransformation.php b/vendor/consolidation/output-formatters/src/Transformations/UnstructuredDataListTransformation.php
new file mode 100644
index 0000000000..b84a0ebf52
--- /dev/null
+++ b/vendor/consolidation/output-formatters/src/Transformations/UnstructuredDataListTransformation.php
@@ -0,0 +1,38 @@
+<?php
+namespace Consolidation\OutputFormatters\Transformations;
+
+use Consolidation\OutputFormatters\Options\FormatterOptions;
+
+class UnstructuredDataListTransformation extends \ArrayObject implements StringTransformationInterface
+{
+    public function __construct($data, $fields)
+    {
+        $this->originalData = $data;
+        $rows = static::transformRows($data, $fields);
+        parent::__construct($rows);
+    }
+
+    protected static function transformRows($data, $fields)
+    {
+        $rows = [];
+        foreach ($data as $rowid => $row) {
+            $rows[$rowid] = UnstructuredDataTransformation::transformRow($row, $fields);
+        }
+        return $rows;
+    }
+
+    public function simplifyToString(FormatterOptions $options)
+    {
+        $result = '';
+        $iterator = $this->getIterator();
+        while ($iterator->valid()) {
+            $simplifiedRow = UnstructuredDataTransformation::simplifyRow($iterator->current());
+            if (isset($simplifiedRow)) {
+                $result .= "$simplifiedRow\n";
+            }
+
+            $iterator->next();
+        }
+        return $result;
+    }
+}
diff --git a/vendor/consolidation/output-formatters/src/Transformations/UnstructuredDataTransformation.php b/vendor/consolidation/output-formatters/src/Transformations/UnstructuredDataTransformation.php
new file mode 100644
index 0000000000..c1bfd508e5
--- /dev/null
+++ b/vendor/consolidation/output-formatters/src/Transformations/UnstructuredDataTransformation.php
@@ -0,0 +1,52 @@
+<?php
+namespace Consolidation\OutputFormatters\Transformations;
+
+use Consolidation\OutputFormatters\Options\FormatterOptions;
+
+class UnstructuredDataTransformation extends \ArrayObject implements StringTransformationInterface
+{
+    protected $originalData;
+
+    public function __construct($data, $fields)
+    {
+        $this->originalData = $data;
+        $rows = static::transformRow($data, $fields);
+        parent::__construct($rows);
+    }
+
+    public function simplifyToString(FormatterOptions $options)
+    {
+        return static::simplifyRow($this->getArrayCopy());
+    }
+
+    public static function transformRow($row, $fields)
+    {
+        if (empty($fields)) {
+            return $row;
+        }
+        $fieldAccessor = new UnstructuredDataFieldAccessor($row);
+        return $fieldAccessor->get($fields);
+    }
+
+    public static function simplifyRow($row)
+    {
+        if (is_string($row)) {
+            return $row;
+        }
+        if (static::isSimpleArray($row)) {
+            return implode("\n", $row);
+        }
+        // No good way to simplify - just dump a json fragment
+        return json_encode($row);
+    }
+
+    protected static function isSimpleArray($row)
+    {
+        foreach ($row as $item) {
+            if (!is_string($item)) {
+                return false;
+            }
+        }
+        return true;
+    }
+}
diff --git a/vendor/drush/drush/.circleci/config.yml b/vendor/drush/drush/.circleci/config.yml
new file mode 100644
index 0000000000..d26009f0c1
--- /dev/null
+++ b/vendor/drush/drush/.circleci/config.yml
@@ -0,0 +1,24 @@
+# https://circleci.com/docs/2.0/workflows/#using-workspaces-to-share-data-among-jobs
+defaults: &defaults
+  working_directory: ~/drush
+  environment:
+    TZ: "/usr/share/zoneinfo/America/Los_Angeles"
+    TERM: dumb
+    PHPUNIT_ARGS: ""
+
+version: 2
+jobs:
+  lint:
+    <<: *defaults
+    docker:
+      - image: circleci/php:7.1-apache-node
+    steps:
+      - checkout
+      - run: composer install --prefer-dist --no-interaction
+      - run: composer lint
+
+workflows:
+  version: 2
+  build_test:
+    jobs:
+      - lint
diff --git a/vendor/drush/drush/.travis.yml b/vendor/drush/drush/.travis.yml
index e5b2ca376f..4939c0cef3 100644
--- a/vendor/drush/drush/.travis.yml
+++ b/vendor/drush/drush/.travis.yml
@@ -27,33 +27,21 @@ env:
 
 matrix:
   include:
-    # D8.5.x
-    - php: 7.0
-      env: 'UNISH_DRUPAL_MAJOR_VERSION=8 UNISH_DRUPAL_MINOR_VERSION=5.0-rc1 PHPUNIT_ARGS=--group=base'
-    - php: 7.0
-      env: 'UNISH_DRUPAL_MAJOR_VERSION=8 UNISH_DRUPAL_MINOR_VERSION=5.0-rc1 PHPUNIT_ARGS=--group=commands'
-    - php: 7.0
-      env: 'UNISH_DRUPAL_MAJOR_VERSION=8 UNISH_DRUPAL_MINOR_VERSION=5.0-rc1 PHPUNIT_ARGS=--group=pm'
+    # D8.7.x
     - php: 7.0
-      env: 'UNISH_DRUPAL_MAJOR_VERSION=8 UNISH_DRUPAL_MINOR_VERSION=5.0-rc1 PHPUNIT_ARGS=--group=quick-drupal'
+      env: 'UNISH_DRUPAL_MAJOR_VERSION=8 UNISH_DRUPAL_MINOR_VERSION=7.0-alpha1'
+
+    # D8.6.x
     - php: 7.0
-      env: 'UNISH_DRUPAL_MAJOR_VERSION=8 UNISH_DRUPAL_MINOR_VERSION=5.0-rc1 PHPUNIT_ARGS=--group=make'
+      env: 'UNISH_DRUPAL_MAJOR_VERSION=8 UNISH_DRUPAL_MINOR_VERSION=6.12'
+
+    # D8.5.x
     - php: 7.0
-      env: 'UNISH_DRUPAL_MAJOR_VERSION=8 UNISH_DRUPAL_MINOR_VERSION=5.0-rc1 PHPUNIT_ARGS=--exclude-group=base,make,commands,pm,quick-drupal TEST_CHILDREN="drush-ops/config-extra"'
+      env: 'UNISH_DRUPAL_MAJOR_VERSION=8 UNISH_DRUPAL_MINOR_VERSION=5.13'
 
     # D8.4.x
     - php: 7.0
-      env: 'UNISH_DRUPAL_MAJOR_VERSION=8 UNISH_DRUPAL_MINOR_VERSION=4.5 PHPUNIT_ARGS=--group=base'
-    - php: 7.0
-      env: 'UNISH_DRUPAL_MAJOR_VERSION=8 UNISH_DRUPAL_MINOR_VERSION=4.5 PHPUNIT_ARGS=--group=commands'
-    - php: 7.0
-      env: 'UNISH_DRUPAL_MAJOR_VERSION=8 UNISH_DRUPAL_MINOR_VERSION=4.5 PHPUNIT_ARGS=--group=pm'
-    - php: 7.0
-      env: 'UNISH_DRUPAL_MAJOR_VERSION=8 UNISH_DRUPAL_MINOR_VERSION=4.5 PHPUNIT_ARGS=--group=quick-drupal'
-    - php: 7.0
-      env: 'UNISH_DRUPAL_MAJOR_VERSION=8 UNISH_DRUPAL_MINOR_VERSION=4.5 PHPUNIT_ARGS=--group=make'
-    - php: 7.0
-      env: 'UNISH_DRUPAL_MAJOR_VERSION=8 UNISH_DRUPAL_MINOR_VERSION=4.5 PHPUNIT_ARGS=--exclude-group=base,make,commands,pm,quick-drupal TEST_CHILDREN="drush-ops/config-extra"'
+      env: 'UNISH_DRUPAL_MAJOR_VERSION=8 UNISH_DRUPAL_MINOR_VERSION=4.8 PHPUNIT_ARGS=--group=commands'
 
     # D8.3.x
     - php: 7.0
@@ -65,42 +53,19 @@ matrix:
 
     # D7
     - php: 7.0
-      env: 'UNISH_DRUPAL_MAJOR_VERSION=7 PHPUNIT_ARGS=--group=base'
-    - php: 7.0
-      env: 'UNISH_DRUPAL_MAJOR_VERSION=7 PHPUNIT_ARGS=--group=commands'
-    - php: 7.0
-      env: 'UNISH_DRUPAL_MAJOR_VERSION=7 PHPUNIT_ARGS=--group=pm'
-    - php: 7.0
-      env: 'UNISH_DRUPAL_MAJOR_VERSION=7 PHPUNIT_ARGS=--group=quick-drupal'
-    - php: 7.0
-      env: 'UNISH_DRUPAL_MAJOR_VERSION=7 PHPUNIT_ARGS=--group=make'
-    - php: 7.0
-      env: 'UNISH_DRUPAL_MAJOR_VERSION=7 PHPUNIT_ARGS=--exclude-group=base,make,commands,pm,quick-drupal TEST_CHILDREN="drush-ops/config-extra"'
+      env: 'UNISH_DRUPAL_MAJOR_VERSION=7'
 
     # D7
     - php: 5.6
-      env: 'UNISH_DRUPAL_MAJOR_VERSION=7 PHPUNIT_ARGS=--group=base'
-    - php: 5.6
-      env: 'UNISH_DRUPAL_MAJOR_VERSION=7 PHPUNIT_ARGS=--group=commands'
-    - php: 5.6
-      env: 'UNISH_DRUPAL_MAJOR_VERSION=7 PHPUNIT_ARGS=--group=pm'
-    - php: 5.6
-      env: 'UNISH_DRUPAL_MAJOR_VERSION=7 PHPUNIT_ARGS=--group=quick-drupal'
-    - php: 5.6
-      env: 'UNISH_DRUPAL_MAJOR_VERSION=7 PHPUNIT_ARGS=--group=make'
-    - php: 5.6
-      env: 'UNISH_DRUPAL_MAJOR_VERSION=7 PHPUNIT_ARGS=--exclude-group=base,make,commands,pm,quick-drupal TEST_CHILDREN="drush-ops/config-extra"'
+      env: 'UNISH_DRUPAL_MAJOR_VERSION=7'
+
+    # D6
+    - php: 7.0
+      env: 'UNISH_DRUPAL_MAJOR_VERSION=6'
 
     # D6
-    # Note that Drupal 6 does not work with PHP 7
-    - php: 5.4
-      env: 'UNISH_DRUPAL_MAJOR_VERSION=7 PHPUNIT_ARGS=--group=base'
-    - php: 5.4
-      env: 'UNISH_DRUPAL_MAJOR_VERSION=7 PHPUNIT_ARGS=--group=commands'
-    - php: 5.4
-      env: 'UNISH_DRUPAL_MAJOR_VERSION=7 PHPUNIT_ARGS=--group=pm'
     - php: 5.4
-      env: 'UNISH_DRUPAL_MAJOR_VERSION=7 PHPUNIT_ARGS=--exclude-group=base,make,commands,pm,quick-drupal TEST_CHILDREN="drush-ops/config-extra"'
+      env: 'UNISH_DRUPAL_MAJOR_VERSION=6'
 
 before_install:
   - echo 'mbstring.http_input = pass' >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini
diff --git a/vendor/drush/drush/circle.yml b/vendor/drush/drush/circle.yml
deleted file mode 100644
index 9e057c23a6..0000000000
--- a/vendor/drush/drush/circle.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-machine:
-  timezone:
-    America/Chicago
-  php:
-    version: 7.0.11
-
-dependencies:
-  cache_directories:
-    - ~/.composer/cache
-  override:
-    - composer install --prefer-dist --no-interaction
-
-test:
-  override:
-    - composer lint
diff --git a/vendor/drush/drush/commands/core/archive.drush.inc b/vendor/drush/drush/commands/core/archive.drush.inc
index 313cc36dfe..5361f37ebe 100644
--- a/vendor/drush/drush/commands/core/archive.drush.inc
+++ b/vendor/drush/drush/commands/core/archive.drush.inc
@@ -35,7 +35,7 @@ function archive_drush_command() {
       'drush archive-dump --tar-options="--exclude=%files"' => 'Placeholder %files is replaced with the real path for the current site, and that path is excluded.',
     ),
     'bootstrap' => DRUSH_BOOTSTRAP_DRUPAL_SITE,
-    'aliases' => array('ard', 'archive-backup', 'arb'),
+    'aliases' => array('ard', 'archive-backup', 'arb', 'archive:dump'),
   );
   $items['archive-restore'] = array(
     'description' => 'Expand a site archive into a Drupal web site.',
@@ -63,7 +63,7 @@ function archive_drush_command() {
       'drush archive-restore ./example.tar.gz --db-url=mysql://root:pass@127.0.0.1/dbname' => 'Restore archive to a new database (and customize settings.php to point there.).',
     ),
     'bootstrap' => DRUSH_BOOTSTRAP_NONE,
-    'aliases' => array('arr'),
+    'aliases' => array('arr', 'archive:restore'),
   );
   return $items;
 }
diff --git a/vendor/drush/drush/commands/core/cache.drush.inc b/vendor/drush/drush/commands/core/cache.drush.inc
index 990fc9f1a9..59cd97783b 100644
--- a/vendor/drush/drush/commands/core/cache.drush.inc
+++ b/vendor/drush/drush/commands/core/cache.drush.inc
@@ -42,7 +42,7 @@ function cache_drush_command() {
       'pipe-format' => 'var_export',
       'output-data-type' => TRUE,
     ),
-    'aliases' => array('cg'),
+    'aliases' => array('cg','cache:get'),
   );
   $items['cache-clear'] = array(
     'bootstrap' => DRUSH_BOOTSTRAP_MAX,
@@ -51,7 +51,7 @@ function cache_drush_command() {
       'type' => 'The particular cache to clear. Omit this argument to choose from available caches.',
     ),
     'callback' => 'drush_cache_command_clear',
-    'aliases' => array('cc'),
+    'aliases' => array('cc','cache:clear'),
   );
   $items['cache-set'] = array(
     'description' => 'Cache an object expressed in JSON or var_export() format.',
@@ -69,7 +69,7 @@ function cache_drush_command() {
       'cache-get' => 'If the object is the result a previous fetch from the cache, only store the value in the "data" property of the object in the cache.',
     ),
     'callback' => 'drush_cache_command_set',
-    'aliases' => array('cs'),
+    'aliases' => array('cs','cache:set'),
   );
   $items['cache-rebuild'] = array(
     'description' => 'Rebuild a Drupal 8 site and clear all its caches.',
@@ -79,7 +79,7 @@ function cache_drush_command() {
     // Further bootstrap is done by the rebuild script.
     'bootstrap' => DRUSH_BOOTSTRAP_DRUPAL_SITE,
     'core' => array('8+'),
-    'aliases' => array('cr', 'rebuild'),
+    'aliases' => array('cr', 'rebuild', 'cache:rebuild'),
   );
 
   return $items;
diff --git a/vendor/drush/drush/commands/core/cli.drush.inc b/vendor/drush/drush/commands/core/cli.drush.inc
index 9d9a2d1e3b..3e99ca3a19 100644
--- a/vendor/drush/drush/commands/core/cli.drush.inc
+++ b/vendor/drush/drush/commands/core/cli.drush.inc
@@ -14,11 +14,12 @@ function cli_drush_command() {
   $items['core-cli'] = array(
     'description' => 'Open an interactive shell on a Drupal site.',
     'remote-tty' => TRUE,
-    'aliases' => array('php'),
+    'aliases' => array('php', 'core:cli'),
     'bootstrap' => DRUSH_BOOTSTRAP_MAX,
     'topics' => array('docs-repl'),
     'options' => array(
       'version-history' => 'Use command history based on Drupal version (Default is per site).',
+       'cwd' => 'Changes the working directory of the shell (Default is the project root directory)',
     ),
   );
   $items['docs-repl'] = array(
@@ -28,6 +29,7 @@ function cli_drush_command() {
     'bootstrap' => DRUSH_BOOTSTRAP_NONE,
     'callback' => 'drush_print_file',
     'callback arguments' => array(drush_get_context('DOC_PREFIX', DRUSH_BASE_PATH) . '/docs/repl.md'),
+    'aliases' => array('docs:repl'),
   );
   return $items;
 }
@@ -95,6 +97,12 @@ function drush_cli_core_cli() {
     Database::closeConnection();
   }
 
+  // if the cwd option is passed, lets change the current working directory to wherever
+  // the user wants to go before we lift psysh.
+  if ($cwd = drush_get_option('cwd',FALSE)) {
+    chdir($cwd);
+  }
+
   $shell->run();
 }
 
diff --git a/vendor/drush/drush/commands/core/config.drush.inc b/vendor/drush/drush/commands/core/config.drush.inc
index ee2384afe1..254f5ce4ef 100644
--- a/vendor/drush/drush/commands/core/config.drush.inc
+++ b/vendor/drush/drush/commands/core/config.drush.inc
@@ -58,7 +58,7 @@ function config_drush_command() {
       'default' => 'yaml',
       'pipe-format' => 'var_export',
     ),
-    'aliases' => array('cget'),
+    'aliases' => array('cget', 'config:get'),
     'core' => array('8+'),
   );
 
@@ -84,14 +84,14 @@ function config_drush_command() {
     'examples' => array(
       'drush config-set system.site page.front node' => 'Sets system.site:page.front to "node".',
     ),
-    'aliases' => array('cset'),
+    'aliases' => array('cset', 'config:set'),
     'core' => array('8+'),
   );
 
   $items['config-export'] = array(
     'description' => 'Export configuration to a directory.',
     'core' => array('8+'),
-    'aliases' => array('cex'),
+    'aliases' => array('cex', 'config:export'),
     'arguments' => array(
       'label' => "A config directory label (i.e. a key in \$config_directories array in settings.php). Defaults to 'sync'",
     ),
@@ -136,13 +136,13 @@ function config_drush_command() {
     'examples' => array(
       'drush config-import --partial' => 'Import configuration; do not remove missing configuration.',
     ),
-    'aliases' => array('cim'),
+    'aliases' => array('cim', 'config:import'),
   );
 
   $items['config-list'] = array(
     'description' => 'List config names by prefix.',
     'core' => array('8+'),
-    'aliases' => array('cli'),
+    'aliases' => array('cli', 'config:list'),
     'arguments' => array(
       'prefix' => 'The config prefix. For example, "system". No prefix will return all names in the system.',
     ),
@@ -161,7 +161,7 @@ function config_drush_command() {
   $items['config-edit'] = $deps + array(
     'description' => 'Open a config file in a text editor. Edits are imported into active configuration after closing editor.',
     'core' => array('8+'),
-    'aliases' => array('cedit'),
+    'aliases' => array('cedit', 'config:edit'),
     'arguments' => array(
       'config-name' => 'The config object name, for example "system.site".',
     ),
@@ -178,7 +178,7 @@ function config_drush_command() {
   $items['config-delete'] = array(
     'description' => 'Delete a configuration object.',
     'core' => array('8+'),
-    'aliases' => array('cdel'),
+    'aliases' => array('cdel', 'config:delete'),
     'arguments' => array(
       'config-name' => 'The config object name, for example "system.site".',
       'key' => 'A config key to clear, for example "page.front".',
@@ -191,7 +191,7 @@ function config_drush_command() {
     // 'core' => array('8+'), Operates on remote sites so not possible to declare this locally.
     'drush dependencies' => array('config', 'core'), // core-rsync, core-execute.
     'bootstrap' => DRUSH_BOOTSTRAP_NONE,
-    'aliases' => array('cpull'),
+    'aliases' => array('cpull', 'config:pull'),
     'arguments' => array(
       'source' => 'A site-alias or the name of a subdirectory within /sites whose config you want to copy from.',
       'target' => 'A site-alias or the name of a subdirectory within /sites whose config you want to replace.',
@@ -800,7 +800,7 @@ function drush_config_pull($source, $destination) {
   );
   drush_log(dt('Starting to export configuration on Target.'), LogLevel::OK);
   $return = drush_invoke_process($source, 'config-export', array(), $global_options + $export_options, $backend_options);
-  if ($return['error_status']) {
+  if ($return === FALSE || $return['error_status']) {
     return drush_set_error('DRUSH_CONFIG_PULL_EXPORT_FAILED', dt('Config-export failed.'));
   }
   else {
diff --git a/vendor/drush/drush/commands/core/core.drush.inc b/vendor/drush/drush/commands/core/core.drush.inc
index a715cc34f7..62caf5c5a7 100644
--- a/vendor/drush/drush/commands/core/core.drush.inc
+++ b/vendor/drush/drush/commands/core/core.drush.inc
@@ -32,6 +32,7 @@ function core_drush_help($section) {
       $message .= dt("Hint: This may occur when Drush is trying to:\n");
       $message .= dt(" * bootstrap a site that has not been installed or does not have a configured database. In this case you can select another site with a working database setup by specifying the URI to use with the --uri parameter on the command line. See `drush topic docs-aliases` for details.\n");
       $message .= dt(" * connect the database through a socket. The socket file may be wrong or the php-cli may have no access to it in a jailed shell. See http://drupal.org/node/1428638 for details.\n");
+      $message .= dt(" * connect to the database through a cli command using the --defaults-extra-file parameter to pass credentials through a tmp file. This method can break if other credentials are specified in a ~/.my.cnf file in your home directory. You may have to delete or rename the ~/.my.cnf file in your home directory.\n");
       $message .= dt("\nDrush was attempting to connect to: \n!credentials\n", array('!credentials' => _core_site_credentials(12)));
       return $message;
     case 'error:DRUSH_DRUPAL_BOOTSTRAP_ERROR':
@@ -86,7 +87,7 @@ function core_drush_command() {
   );
   $items['core-cron'] = array(
     'description' => 'Run all cron hooks in all active modules for specified site.',
-    'aliases' => array('cron'),
+    'aliases' => array('cron', 'core:cron'),
     'topics' => array('docs-cron'),
   );
   $items['updatedb'] = array(
@@ -102,13 +103,13 @@ function core_drush_command() {
   );
   $items['entity-updates'] = array(
     'description' => 'Apply pending entity schema updates.',
-    'aliases' => array('entup'),
+    'aliases' => array('entup', 'entity:updates'),
     'bootstrap' => DRUSH_BOOTSTRAP_DRUPAL_FULL,
     'core' => array('8+'),
   );
   $items['twig-compile'] = array(
     'description' => 'Compile all Twig template(s).',
-    'aliases' => array('twigc'),
+    'aliases' => array('twigc', 'twig:compile'),
     'core' => array('8+'),
   );
   $items['updatedb-status'] = array(
@@ -120,7 +121,7 @@ function core_drush_command() {
       'fields-default' => array('module', 'update_id', 'description'),
       'output-data-type' => 'format-table',
     ),
-    'aliases' => array('updbst'),
+    'aliases' => array('updbst', 'updatedb:status'),
   );
   $items['core-config'] = array(
     'description' => 'Edit drushrc, site alias, and Drupal settings.php files.',
@@ -137,12 +138,12 @@ function core_drush_command() {
       'drush core-config sett' => 'Edit settings.php for the current Drupal site.',
       'drush core-config --choice=2' => 'Edit the second file in the choice list.',
     ),
-    'aliases' => array('conf', 'config'),
+    'aliases' => array('conf', 'config', 'core:config'),
   );
   $items['core-status'] = array(
     'description' => 'Provides a birds-eye view of the current Drupal installation, if any.',
     'bootstrap' => DRUSH_BOOTSTRAP_MAX,
-    'aliases' => array('status', 'st'),
+    'aliases' => array('status', 'st', 'core:status'),
     'examples' => array(
       'drush core-status version' => 'Show all status lines that contain version information.',
       'drush core-status --pipe' => 'A list key=value items separated by line breaks.',
@@ -177,7 +178,7 @@ function core_drush_command() {
 
   $items['core-requirements'] = array(
     'description' => 'Provides information about things that may be wrong in your Drupal installation, if any.',
-    'aliases' => array('status-report','rq'),
+    'aliases' => array('status-report','rq', 'core:requirements'),
     'examples' => array(
       'drush core-requirements' => 'Show all status lines from the Status Report admin page.',
       'drush core-requirements --severity=2' => 'Show only the red lines from the Status Report admin page.',
@@ -221,7 +222,7 @@ function core_drush_command() {
     'required-arguments' => TRUE,
     'allow-additional-options' => TRUE,
     'bootstrap' => DRUSH_BOOTSTRAP_MAX,
-    'aliases' => array('eval', 'ev'),
+    'aliases' => array('eval', 'ev', 'php:eval'),
     'outputformat' => array(
       'default' => 'var_export',
     ),
@@ -246,7 +247,7 @@ function core_drush_command() {
     ),
     'allow-additional-options' => TRUE,
     'bootstrap' => DRUSH_BOOTSTRAP_MAX,
-    'aliases' => array('scr'),
+    'aliases' => array('scr', 'php:script'),
     'topics' => array('docs-examplescript', 'docs-scripts'),
   );
   $items['core-execute'] = array(
@@ -265,7 +266,7 @@ function core_drush_command() {
     'examples' => array(
       'drush core-execute git pull origin rebase' => 'Retrieve latest code from git',
     ),
-    'aliases' => array('exec', 'execute'),
+    'aliases' => array('exec', 'execute', 'core:execute'),
     'topics' => array('docs-aliases'),
   );
   $items['core-rsync'] = array(
@@ -295,7 +296,7 @@ function core_drush_command() {
       'drush rsync ./ @stage:%files/img' => 'Rsync all files in the current directory to the \'img\' directory in the file storage folder on the Drush alias stage.',
       'drush -s rsync @dev @stage --exclude=*.sql --delete' => "Simulate Rsync Drupal root from the Drush alias dev to the alias stage (one of which must be local), excluding all files that match the filter '*.sql' and delete all files on the destination that are no longer on the source.",
     ),
-    'aliases' => array('rsync'),
+    'aliases' => array('rsync', 'core:rsync'),
     'topics' => array('docs-aliases'),
   );
   $items['drupal-directory'] = array(
@@ -314,7 +315,7 @@ function core_drush_command() {
       'drush dd @alias:%files' => 'Print the path to the files directory on the site @alias.',
       'edit `drush dd devel`/devel.module' => "Open devel module in your editor (customize 'edit' for your editor)",
     ),
-    'aliases' => array('dd'),
+    'aliases' => array('dd', 'drupal:directory'),
     'bootstrap' => DRUSH_BOOTSTRAP_NONE,
   );
 
@@ -326,6 +327,7 @@ function core_drush_command() {
     ),
     'required-arguments' => TRUE,
     'bootstrap' => DRUSH_BOOTSTRAP_DRUPAL_LOGIN,
+    'aliases' => array('batch:process'),
   );
 
   $items['updatedb-batch-process'] = array(
@@ -338,6 +340,7 @@ function core_drush_command() {
     // Drupal 7 needs DRUSH_BOOTSTRAP_DRUPAL_CONFIGURATION, while Drupal 8 needs _FULL.
     // Therefore we bootstrap to _FULL in commands/core/drupal/update.inc.
     'bootstrap' => DRUSH_BOOTSTRAP_DRUPAL_CONFIGURATION,
+    'aliases' => array('updatedb:batch-process'),
   );
   $items['core-global-options'] = array(
     'description' => 'All global options',
@@ -350,11 +353,12 @@ function core_drush_command() {
       'field-labels' => array('label' => 'Label', 'description' => 'Description'),
       'output-data-type' => 'format-table',
     ),
+    'aliases' => array('core:global-options'),
   );
   $items['core-quick-drupal'] = array(
     'description' => 'Download, install, serve and login to Drupal with minimal configuration and dependencies.',
     'bootstrap' => DRUSH_BOOTSTRAP_NONE,
-    'aliases' => array('qd', 'cutie'),
+    'aliases' => array('qd', 'cutie', 'core:quick:drupal'),
     'arguments' => array(
       'site' => 'Short name for the site to be created - used as a directory name and as sqlite file name. Optional - if omitted timestamped "quick-drupal" directory will be used instead.',
       'projects' => 'A list of projects to download into the new site. If projects contain extensions (modules or themes) with the same name they will be enabled by default. See --enable option to control this behaviour further.',
diff --git a/vendor/drush/drush/commands/core/docs.drush.inc b/vendor/drush/drush/commands/core/docs.drush.inc
index 432f12b6e1..eadeabb0bf 100644
--- a/vendor/drush/drush/commands/core/docs.drush.inc
+++ b/vendor/drush/drush/commands/core/docs.drush.inc
@@ -40,6 +40,7 @@ function docs_drush_command() {
     'bootstrap' => DRUSH_BOOTSTRAP_NONE,
     'callback' => 'drush_print_file',
     'callback arguments' => array($docs_dir . '/README.md'),
+    'aliases' => array('docs:readme'),
   );
   $items['docs-bisect'] = array(
     'description' => 'git bisect and Drush may be used together to find the commit an error was introduced in.',
@@ -48,6 +49,7 @@ function docs_drush_command() {
     'bootstrap' => DRUSH_BOOTSTRAP_NONE,
     'callback' => 'drush_print_file',
     'callback arguments' => array($docs_dir . '/examples/git-bisect.example.sh'),
+    'aliases' => array('docs:bisect'),
   );
   $items['docs-bashrc'] = array(
     'description' => 'Bashrc customization examples for Drush.',
@@ -56,6 +58,7 @@ function docs_drush_command() {
     'bootstrap' => DRUSH_BOOTSTRAP_NONE,
     'callback' => 'drush_print_file',
     'callback arguments' => array($docs_dir . '/examples/example.bashrc'),
+    'aliases' => array('docs:bashrc'),
   );
   $items['docs-configuration'] = array(
     'description' => 'Configuration overview with examples from example.drushrc.php.',
@@ -64,6 +67,7 @@ function docs_drush_command() {
     'bootstrap' => DRUSH_BOOTSTRAP_NONE,
     'callback' => 'drush_print_file',
     'callback arguments' => array($docs_dir . '/examples/example.drushrc.php'),
+    'aliases' => array('docs:configuration'),
   );
   $items['docs-config-exporting'] = array(
     'description' => 'Drupal configuration export instructions, including customizing configuration by environment.',
@@ -72,6 +76,7 @@ function docs_drush_command() {
     'bootstrap' => DRUSH_BOOTSTRAP_NONE,
     'callback' => 'drush_print_file',
     'callback arguments' => array($docs_dir . '/docs/config-exporting.md'),
+    'aliases' => array('docs:config:exporting'),
   );
   $items['docs-aliases'] = array(
     'description' => 'Site aliases overview on creating your own aliases for commonly used Drupal sites with examples from example.aliases.drushrc.php.',
@@ -80,6 +85,7 @@ function docs_drush_command() {
     'bootstrap' => DRUSH_BOOTSTRAP_NONE,
     'callback' => 'drush_print_file',
     'callback arguments' => array($docs_dir . '/examples/example.aliases.drushrc.php'),
+    'aliases' => array('docs:aliases'),
   );
   $items['docs-ini-files'] = array(
     'description' => 'php.ini or drush.ini configuration to set PHP values for use with Drush.',
@@ -88,6 +94,7 @@ function docs_drush_command() {
     'bootstrap' => DRUSH_BOOTSTRAP_NONE,
     'callback' => 'drush_print_file',
     'callback arguments' => array($docs_dir . '/examples/example.drush.ini'),
+    'aliases' => array('docs:ini-files'),
   );
   $items['docs-bastion'] = array(
     'description' => 'Bastion server configuration: remotely operate on a Drupal sites behind a firewall.',
@@ -96,6 +103,7 @@ function docs_drush_command() {
     'bootstrap' => DRUSH_BOOTSTRAP_NONE,
     'callback' => 'drush_print_file',
     'callback arguments' => array($docs_dir . '/docs/bastion.md'),
+    'aliases' => array('docs:bastion'),
   );
   $items['docs-bootstrap'] = array(
     'description' => 'Bootstrap explanation: how Drush starts up and prepares the Drupal environment for use with the command.',
@@ -104,6 +112,7 @@ function docs_drush_command() {
     'bootstrap' => DRUSH_BOOTSTRAP_NONE,
     'callback' => 'drush_print_file',
     'callback arguments' => array($docs_dir . '/docs/bootstrap.md'),
+    'aliases' => array('docs:bootstrap'),
   );
   $items['docs-cron'] = array(
     'description' => 'Crontab instructions for running your Drupal cron tasks via `drush cron`.',
@@ -112,6 +121,7 @@ function docs_drush_command() {
     'bootstrap' => DRUSH_BOOTSTRAP_NONE,
     'callback' => 'drush_print_file',
     'callback arguments' => array($docs_dir . '/docs/cron.md'),
+    'aliases' => array('docs:cron'),
   );
   $items['docs-scripts'] = array(
     'description' => 'Shell script overview on writing simple sequences of Drush statements.',
@@ -120,6 +130,7 @@ function docs_drush_command() {
     'bootstrap' => DRUSH_BOOTSTRAP_NONE,
     'callback' => 'drush_print_file',
     'callback arguments' => array($docs_dir . '/docs/shellscripts.md'),
+    'aliases' => array('docs:scripts'),
   );
   $items['docs-shell-aliases'] = array(
     'description' => 'Shell alias overview on creating your own aliases for commonly used Drush commands.',
@@ -128,6 +139,7 @@ function docs_drush_command() {
     'bootstrap' => DRUSH_BOOTSTRAP_NONE,
     'callback' => 'drush_print_file',
     'callback arguments' => array($docs_dir . '/docs/shellaliases.md'),
+    'aliases' => array('docs:shell-aliases'),
   );
   $items['docs-commands'] = array(
     'description' => 'Drush command instructions on creating your own Drush commands.',
@@ -136,12 +148,14 @@ function docs_drush_command() {
     'bootstrap' => DRUSH_BOOTSTRAP_NONE,
     'callback' => 'drush_print_file',
     'callback arguments' => array($docs_dir . '/docs/commands.md'),
+    'aliases' => array('docs:commands'),
   );
   $items['docs-errorcodes'] = array(
     'description' => 'Error code list containing all identifiers used with drush_set_error.',
     'hidden' => TRUE,
     'topic' => TRUE,
     'bootstrap' => DRUSH_BOOTSTRAP_NONE,
+    'aliases' => array('docs:errorcodes'),
   );
   $items['docs-api'] = array(
     'description' => 'Drush API',
@@ -150,6 +164,7 @@ function docs_drush_command() {
     'bootstrap' => DRUSH_BOOTSTRAP_NONE,
     'callback' => 'drush_print_file',
     'callback arguments' => array($docs_dir . '/drush.api.php'),
+    'aliases' => array('docs:api'),
   );
   $items['docs-context'] = array(
     'description' => 'Contexts overview explaining how Drush manages command line options and configuration file settings.',
@@ -158,6 +173,7 @@ function docs_drush_command() {
     'bootstrap' => DRUSH_BOOTSTRAP_NONE,
     'callback' => 'drush_print_file',
     'callback arguments' => array($docs_dir . '/docs/context.md'),
+    'aliases' => array('docs:context'),
   );
   $items['docs-examplescript'] = array(
     'description' => 'Example Drush script.',
@@ -166,6 +182,7 @@ function docs_drush_command() {
     'bootstrap' => DRUSH_BOOTSTRAP_NONE,
     'callback' => 'drush_print_file',
     'callback arguments' => array($docs_dir . '/examples/helloworld.script'),
+    'aliases' => array('docs:examplescript'),
   );
   $items['docs-examplecommand'] = array(
     'description' => 'Example Drush command file.',
@@ -174,6 +191,7 @@ function docs_drush_command() {
     'bootstrap' => DRUSH_BOOTSTRAP_NONE,
     'callback' => 'drush_print_file',
     'callback arguments' => array($docs_dir . '/examples/sandwich.drush.inc'),
+    'aliases' => array('docs:examplecommand'),
   );
   $items['docs-example-sync-extension'] = array(
     'description' => 'Example Drush commandfile that extends sql-sync to enable development modules in the post-sync hook.',
@@ -182,6 +200,7 @@ function docs_drush_command() {
     'bootstrap' => DRUSH_BOOTSTRAP_NONE,
     'callback' => 'drush_print_file',
     'callback arguments' => array($docs_dir . '/examples/sync_enable.drush.inc'),
+    'aliases' => array('docs:example-sync-extension'),
   );
   $items['docs-example-sync-via-http'] = array(
     'description' => 'Example Drush commandfile that extends sql-sync to allow transfer of the sql dump file via http rather than ssh and rsync.',
@@ -190,6 +209,7 @@ function docs_drush_command() {
     'bootstrap' => DRUSH_BOOTSTRAP_NONE,
     'callback' => 'drush_print_file',
     'callback arguments' => array($docs_dir . '/examples/sync_via_http.drush.inc'),
+    'aliases' => array('docs:example-sync-via-http'),
   );
   $items['docs-policy'] = array(
     'description' => 'Example policy file.',
@@ -198,6 +218,7 @@ function docs_drush_command() {
     'bootstrap' => DRUSH_BOOTSTRAP_NONE,
     'callback' => 'drush_print_file',
     'callback arguments' => array($docs_dir . '/examples/policy.drush.inc'),
+    'aliases' => array('docs:policy'),
   );
   $items['docs-strict-options'] = array(
     'description' => 'Strict option handling, and how commands that use it differ from regular Drush commands.',
@@ -206,6 +227,7 @@ function docs_drush_command() {
     'bootstrap' => DRUSH_BOOTSTRAP_NONE,
     'callback' => 'drush_print_file',
     'callback arguments' => array($docs_dir . '/docs/strict-options.md'),
+    'aliases' => array('docs:strict-options'),
   );
   return $items;
 }
diff --git a/vendor/drush/drush/commands/core/drupal/update.inc b/vendor/drush/drush/commands/core/drupal/update.inc
index c48dfd438e..62cbb578bd 100644
--- a/vendor/drush/drush/commands/core/drupal/update.inc
+++ b/vendor/drush/drush/commands/core/drupal/update.inc
@@ -39,6 +39,11 @@
 function drush_update_do_one($module, $number, $dependency_map,  &$context) {
   $function = $module . '_update_' . $number;
 
+  // Disable config entity overrides.
+  if (!defined('MAINTENANCE_MODE')) {
+    define('MAINTENANCE_MODE', 'update');
+  }
+
   // If this update was aborted in a previous step, or has a dependency that
   // was aborted in a previous step, go no further.
   if (!empty($context['results']['#abort']) && array_intersect($context['results']['#abort'], array_merge($dependency_map, array($function)))) {
diff --git a/vendor/drush/drush/commands/core/drupal/update_7.inc b/vendor/drush/drush/commands/core/drupal/update_7.inc
index d18e046b77..9dd4803c25 100644
--- a/vendor/drush/drush/commands/core/drupal/update_7.inc
+++ b/vendor/drush/drush/commands/core/drupal/update_7.inc
@@ -199,6 +199,11 @@ function update_main_prepare() {
   // @see https://github.com/drush-ops/drush/pull/399
   module_implements('', FALSE, TRUE);
 
+  // Ensure we re-evaluate the stream wrappers on full bootstrap.
+  // update_check_requirements() invokes a writeable check and hence loads the
+  // stream wrappers while not all modules are available.
+  drupal_static_reset('file_get_stream_wrappers');
+  
   // Now proceed with a full bootstrap.
 
   drush_bootstrap(DRUSH_BOOTSTRAP_DRUPAL_FULL);
diff --git a/vendor/drush/drush/commands/core/field.drush.inc b/vendor/drush/drush/commands/core/field.drush.inc
index 9e6e2d4c06..961e22e8eb 100644
--- a/vendor/drush/drush/commands/core/field.drush.inc
+++ b/vendor/drush/drush/commands/core/field.drush.inc
@@ -37,6 +37,7 @@ function field_drush_command() {
       'open `drush field-create article`' => 'Define new article fields and then open field edit form for refinement.',
       'drush field-create article city,text,text_textfield subtitle,text,text_textfield' => 'Create two new fields.'
     ),
+    'aliases' => array('field:create'),
   );
   $items['field-update'] = array(
     'description' => 'Return URL for field editing web page.',
@@ -47,6 +48,7 @@ function field_drush_command() {
     'examples' => array(
       'field-update comment_body' => 'Quickly navigate to a field edit web page.',
     ),
+    'aliases' => array('field:update'),
   );
   $items['field-delete'] = array(
     'description' => 'Delete a field and its instances.',
@@ -62,6 +64,7 @@ function field_drush_command() {
       'field-delete city' => 'Delete the city field and any instances it might have.',
       'field-delete city --bundle=article' => 'Delete the city instance on the article bundle',
     ),
+    'aliases' => array('field:delete'),
   );
   $items['field-clone'] = array(
     'description' => 'Clone a field and all its instances.',
@@ -74,6 +77,7 @@ function field_drush_command() {
       'field-clone tags labels' => 'Copy \'tags\' field into a new field \'labels\' field which has same instances.',
       'open `field-clone tags labels`' => 'Clone field and then open field edit forms for refinement.',
     ),
+    'aliases' => array('field:clone'),
   );
   $items['field-info'] = array(
     'description' => 'View information about fields, field_types, and widgets.',
@@ -99,6 +103,7 @@ function field_drush_command() {
         'process-cell' => '_drush_field_info_process_cell',
       ),
       'output-data-type' => 'format-table',
+      'aliases' => array('field:info'),
     ),
   );
   return $items;
diff --git a/vendor/drush/drush/commands/core/image.drush.inc b/vendor/drush/drush/commands/core/image.drush.inc
index e4bb4f9916..ddfbf04bcd 100644
--- a/vendor/drush/drush/commands/core/image.drush.inc
+++ b/vendor/drush/drush/commands/core/image.drush.inc
@@ -27,7 +27,7 @@ function image_drush_command() {
       'drush image-flush thumbnail' => 'Delete all thumbnail images.',
       'drush image-flush --all' => 'Flush all derived images. They will be regenerated on the fly.',
     ),
-    'aliases' => array('if'),
+    'aliases' => array('if', 'image:flush'),
   );
   $items['image-derive'] = array(
     'description' => 'Create an image derivative.',
@@ -42,7 +42,7 @@ function image_drush_command() {
     'examples' => array(
       'drush image-derive thumbnail themes/bartik/logo.png' => 'Save thumbnail sized derivative of logo image.',
     ),
-    'aliases' => array('id'),
+    'aliases' => array('id', 'image:derive'),
   );
   return $items;
 }
diff --git a/vendor/drush/drush/commands/core/init.drush.inc b/vendor/drush/drush/commands/core/init.drush.inc
index 2ab26a0a7b..d7c5da8d01 100644
--- a/vendor/drush/drush/commands/core/init.drush.inc
+++ b/vendor/drush/drush/commands/core/init.drush.inc
@@ -16,7 +16,7 @@
 function init_drush_command() {
   $items['core-init'] = array(
     'description' => 'Enrich the bash startup file with completion and aliases. Copy .drushrc file to ~/.drush',
-    'aliases' => array('init'),
+    'aliases' => array('init', 'core:init'),
     'bootstrap' => DRUSH_BOOTSTRAP_NONE,
     'package' => 'core',
     'global-options' => array('editor', 'bg'),
diff --git a/vendor/drush/drush/commands/core/locale.d8.drush.inc b/vendor/drush/drush/commands/core/locale.d8.drush.inc
index 7e6a06829f..2016daca63 100644
--- a/vendor/drush/drush/commands/core/locale.d8.drush.inc
+++ b/vendor/drush/drush/commands/core/locale.d8.drush.inc
@@ -31,6 +31,7 @@ function locale_drush_command() {
       'langcodes' => 'A comma-separated list of language codes to update. If omitted, all translations will be updated.'
     ],
     'bootstrap' => DRUSH_BOOTSTRAP_DRUPAL_FULL,
+    'aliases' => array('locale:check'),
   ];
   // @todo Implement proper export and import commands.
   return $items;
diff --git a/vendor/drush/drush/commands/core/queue.drush.inc b/vendor/drush/drush/commands/core/queue.drush.inc
index 7886e225be..3dcae01526 100644
--- a/vendor/drush/drush/commands/core/queue.drush.inc
+++ b/vendor/drush/drush/commands/core/queue.drush.inc
@@ -25,6 +25,7 @@ function queue_drush_command() {
     'options' => array(
       'time-limit' => 'The maximum number of seconds allowed to run the queue',
     ),
+    'aliases' => array('queue:run'),
   );
   $items['queue-list'] = array(
     'description' => 'Returns a list of all defined queues',
@@ -41,6 +42,7 @@ function queue_drush_command() {
         'key-value-item' => 'items',
       ),
       'output-data-type' => 'format-table',
+      'aliases' => array('queue:list'),
     ),
   );
 
diff --git a/vendor/drush/drush/commands/core/role.drush.inc b/vendor/drush/drush/commands/core/role.drush.inc
index fb4f9e9d16..8f6b71c0e1 100644
--- a/vendor/drush/drush/commands/core/role.drush.inc
+++ b/vendor/drush/drush/commands/core/role.drush.inc
@@ -43,7 +43,7 @@ function role_drush_command() {
       'machine name' => 'The symbolic machine name for the role. Required.',
       'human-readable name' => 'A descriptive name for the role. Optional; Drupal 8 only.  Ignored in D6 and D7.',
     ),
-    'aliases' => array('rcrt'),
+    'aliases' => array('rcrt', 'role:create'),
   );
   $items['role-delete'] = array(
     'description' => 'Delete a role.',
@@ -53,7 +53,7 @@ function role_drush_command() {
     'arguments' => array(
       'machine name' => 'The symbolic machine name for the role. Required.  In D6 and D7, this may also be a numeric role ID.',
     ),
-    'aliases' => array('rdel'),
+    'aliases' => array('rdel', 'role:delete'),
   );
   $items['role-add-perm'] = array(
     'description' => 'Grant specified permission(s) to a role.',
@@ -73,7 +73,7 @@ function role_drush_command() {
     'global-options' => array(
       'cache-clear',
     ),
-    'aliases' => array('rap'),
+    'aliases' => array('rap', 'role:add:perm'),
   );
 
   $items['role-remove-perm'] = array(
@@ -92,7 +92,7 @@ function role_drush_command() {
     'global-options' => array(
       'cache-clear',
     ),
-    'aliases' => array('rmp'),
+    'aliases' => array('rmp', 'role:remove:perm'),
   );
 
   $items['role-list'] = array(
@@ -113,7 +113,7 @@ function role_drush_command() {
       'field-labels' => array('rid' => 'ID', 'label' => 'Role Label', 'perm' => "Permission"),
       'output-data-type' => 'format-table',
     ),
-    'aliases' => array('rls'),
+    'aliases' => array('rls', 'role:list'),
   );
 
   return $items;
diff --git a/vendor/drush/drush/commands/core/search.drush.inc b/vendor/drush/drush/commands/core/search.drush.inc
index d0681d388d..d09a0d27bd 100644
--- a/vendor/drush/drush/commands/core/search.drush.inc
+++ b/vendor/drush/drush/commands/core/search.drush.inc
@@ -27,6 +27,7 @@ function search_drush_command() {
         'message-template' => '!remaining/!total',
       ),
       'output-data-type' => 'format-list',
+      'aliases' => array('search:status'),
     ),
   );
   $items['search-index'] = array(
@@ -39,6 +40,7 @@ function search_drush_command() {
     'options' => array(
       'immediate' => 'Rebuild the index immediately, instead of waiting for cron.',
     ),
+    'aliases' => array('search:index'),
   );
   return $items;
 }
diff --git a/vendor/drush/drush/commands/core/shellalias.drush.inc b/vendor/drush/drush/commands/core/shellalias.drush.inc
index df61c1cb03..06c02e9bb8 100644
--- a/vendor/drush/drush/commands/core/shellalias.drush.inc
+++ b/vendor/drush/drush/commands/core/shellalias.drush.inc
@@ -39,7 +39,7 @@ function shellalias_drush_command() {
       'simplify-single' => TRUE,
       'output-data-type' => 'format-list',
     ),
-    'aliases' => array('sha'),
+    'aliases' => array('sha', 'shell:alias'),
     'examples' => array(
       'drush shell-alias' => 'List all alias records known to drush.',
       'drush shell-alias pull' => 'Print the value of the shell alias \'pull\'.',
diff --git a/vendor/drush/drush/commands/core/site_install.drush.inc b/vendor/drush/drush/commands/core/site_install.drush.inc
index 6b9f404d20..8366d7ae8c 100644
--- a/vendor/drush/drush/commands/core/site_install.drush.inc
+++ b/vendor/drush/drush/commands/core/site_install.drush.inc
@@ -67,7 +67,7 @@ function site_install_drush_command() {
       'drush site-install standard install_configure_form.enable_update_status_module=NULL install_configure_form.enable_update_status_emails=NULL' => 'Disable email notification during install and later (D8). If your server has no mail transfer agent, this gets rid of an error during install.',
     ),
     'bootstrap' => DRUSH_BOOTSTRAP_DRUPAL_ROOT,
-    'aliases' => array('si'),
+    'aliases' => array('si', 'site:install'),
   );
   return $items;
 }
@@ -99,6 +99,7 @@ function drush_core_site_install_validate() {
     }
     // Make sure that we will bootstrap to the 'sites-subdir' site.
     drush_set_context('DRUSH_SELECTED_URI', 'http://' . $sites_subdir);
+    drush_sitealias_create_self_alias();
   }
 
   if ($config = drush_get_option('config-dir')) {
@@ -175,24 +176,11 @@ function drush_core_pre_site_install($profile = NULL) {
     if (!drush_op('copy', 'sites/default/default.settings.php', $settingsfile) && !drush_get_context('DRUSH_SIMULATE')) {
       return drush_set_error(dt('Failed to copy sites/default/default.settings.php to @settingsfile', array('@settingsfile' => $settingsfile)));
     }
+  }
 
-    if (drush_drupal_major_version() == 6) {
-      // On D6, we have to write $db_url ourselves. In D7+, the installer does it.
-      file_put_contents($settingsfile, "\n" . '$db_url = \'' . drush_get_option('db-url') . "';\n", FILE_APPEND);
-      // Instead of parsing and performing string replacement on the configuration file,
-      // the options are appended and override the defaults.
-      // Database table prefix
-      if (!empty($db_spec['db_prefix'])) {
-        if (is_array($db_spec['db_prefix'])) {
-          // Write db_prefix configuration as an array
-          $db_prefix_config = '$db_prefix = ' . var_export($db_spec['db_prefix'], TRUE) . ';';
-        }
-        else {
-          // Write db_prefix configuration as a string
-          $db_prefix_config = '$db_prefix = \'' . $db_spec['db_prefix'] . '\';';
-        }
-        file_put_contents($settingsfile, "\n" . $db_prefix_config . "\n", FILE_APPEND);
-      }
+  if (drush_drupal_major_version() == 6) {
+    if (!_drush_core_site_install_add_db_url_to_settings($settingsfile, $db_spec)) {
+      return drush_set_error(dt('Failed to write database settings to @settingsfile', array('@settingsfile' => $settingsfile)));
     }
   }
 
@@ -220,6 +208,34 @@ function drush_core_pre_site_install($profile = NULL) {
   return TRUE;
 }
 
+function _drush_core_site_install_add_db_url_to_settings($settingsfile, $db_spec) {
+  $settingsContents = file_get_contents($settingsfile);
+  if (preg_match('#^.db_url *=#', $settingsContents)) {
+    return true;
+  }
+  // On D6, we have to write $db_url ourselves. In D7+, the installer does it.
+  if (file_put_contents($settingsfile, "\n" . '$db_url = \'' . drush_convert_db_url(drush_get_option('db-url')) . "';\n", FILE_APPEND) === false) {
+    return false;
+  }
+
+  // Instead of parsing and performing string replacement on the configuration file,
+  // the options are appended and override the defaults.
+  // Database table prefix
+  if (!empty($db_spec['db_prefix'])) {
+    if (is_array($db_spec['db_prefix'])) {
+      // Write db_prefix configuration as an array
+      $db_prefix_config = '$db_prefix = ' . var_export($db_spec['db_prefix'], TRUE) . ';';
+    }
+    else {
+      // Write db_prefix configuration as a string
+      $db_prefix_config = '$db_prefix = \'' . $db_spec['db_prefix'] . '\';';
+    }
+    file_put_contents($settingsfile, "\n" . $db_prefix_config . "\n", FILE_APPEND);
+  }
+  return true;
+}
+
+
 /**
  * Command callback.
  */
diff --git a/vendor/drush/drush/commands/core/sitealias.drush.inc b/vendor/drush/drush/commands/core/sitealias.drush.inc
index c550986b56..3ac59a9a01 100644
--- a/vendor/drush/drush/commands/core/sitealias.drush.inc
+++ b/vendor/drush/drush/commands/core/sitealias.drush.inc
@@ -42,7 +42,7 @@ function sitealias_drush_command() {
       'field-mappings' => array('name' => '#name'),
       'output-data-type' => 'format-table',
     ),
-    'aliases' => array('sa'),
+    'aliases' => array('sa', 'site:alias'),
     'examples' => array(
       'drush site-alias' => 'List all alias records known to drush.',
       'drush site-alias @dev' => 'Print an alias record for the alias \'dev\'.',
@@ -57,7 +57,7 @@ function sitealias_drush_command() {
     'arguments' => array(
       'site' => 'Site specification to use, or "-" for previous site. Omit this argument to "unset"',
     ),
-    'aliases' => array('use'),
+    'aliases' => array('use', 'site:set'),
     'examples' => array(
       'drush site-set @dev' => 'Set the current session to use the @dev alias.',
       'drush site-set user@server/path/to/drupal#sitename' => 'Set the current session to use a remote site via site specification.',
diff --git a/vendor/drush/drush/commands/core/ssh.drush.inc b/vendor/drush/drush/commands/core/ssh.drush.inc
index 22b7bc1894..ceb4af87af 100644
--- a/vendor/drush/drush/commands/core/ssh.drush.inc
+++ b/vendor/drush/drush/commands/core/ssh.drush.inc
@@ -22,7 +22,7 @@ function ssh_drush_command() {
       'drush @prod ssh ls /tmp' => 'Run "ls /tmp" on @prod site. If @prod is a site list, then ls will be executed on each site.',
       'drush @prod ssh git pull' => 'Run "git pull" on the Drupal root directory on the @prod site.',
     ),
-    'aliases' => array('ssh'),
+    'aliases' => array('ssh', 'site:ssh'),
     'bootstrap' => DRUSH_BOOTSTRAP_NONE,
     'topics' => array('docs-aliases'),
   );
diff --git a/vendor/drush/drush/commands/core/state.drush.inc b/vendor/drush/drush/commands/core/state.drush.inc
index c4bc045c83..cd78014f56 100644
--- a/vendor/drush/drush/commands/core/state.drush.inc
+++ b/vendor/drush/drush/commands/core/state.drush.inc
@@ -34,7 +34,7 @@ function state_drush_command() {
       'default' => 'json',
       'pipe-format' => 'json',
     ),
-    'aliases' => array('sget'),
+    'aliases' => array('sget', 'state:get'),
     'core' => array('8+'),
   );
 
@@ -66,7 +66,7 @@ function state_drush_command() {
       'drush state-set system.cron_last 1406682882 --format=integer' => 'Sets a timestamp for last cron run.',
       'php -r "print json_encode(array(\'drupal\', \'simpletest\'));"  | drush state-set --format=json foo.name -'=> 'Set a key to a complex value (e.g. array)',
     ),
-    'aliases' => array('sset'),
+    'aliases' => array('sset', 'state:set'),
     'core' => array('8+'),
   );
 
@@ -79,7 +79,7 @@ function state_drush_command() {
     'examples' => array(
       'drush state-del system.cron_last' => 'Delete state entry for system.cron_last.',
     ),
-    'aliases' => array('sdel'),
+    'aliases' => array('sdel', 'state:delete'),
     'core' => array('8+'),
   );
 
diff --git a/vendor/drush/drush/commands/core/topic.drush.inc b/vendor/drush/drush/commands/core/topic.drush.inc
index 4f87f70301..3fa63ecf27 100644
--- a/vendor/drush/drush/commands/core/topic.drush.inc
+++ b/vendor/drush/drush/commands/core/topic.drush.inc
@@ -24,7 +24,7 @@ function topic_drush_command() {
     ),
     'bootstrap' => DRUSH_BOOTSTRAP_NONE,
     'remote-tty' => TRUE,
-    'aliases' => array('topic'),
+    'aliases' => array('topic', 'core:topic'),
     'topics' => array('docs-readme'),
   );
 
diff --git a/vendor/drush/drush/commands/core/usage.drush.inc b/vendor/drush/drush/commands/core/usage.drush.inc
index 32ea6ed092..b39d2be62e 100644
--- a/vendor/drush/drush/commands/core/usage.drush.inc
+++ b/vendor/drush/drush/commands/core/usage.drush.inc
@@ -25,7 +25,7 @@ function usage_drush_command() {
       'drush usage-show' => 'Show cached usage statistics.',
       '$options[\'drush_usage_log\']  = TRUE;' => 'Specify in a .drushrc.php file that usage information should be logged locally in a usage statistics file.',
     ),
-    'aliases' => array('ushow'),
+    'aliases' => array('ushow', 'usage:show'),
   );
   $items['usage-send'] = array(
     'bootstrap' => DRUSH_BOOTSTRAP_NONE,
@@ -36,7 +36,7 @@ function usage_drush_command() {
       '$options[\'drush_usage_send\']  = TRUE;' => 'Specify in a .drushrc.php file that usage information should be sent.',
       '$options[\'drush_usage_size\']  = 10240;' => 'Specify the frequency (file size) that usage information should be sent.',
     ),
-    'aliases' => array('usend'),
+    'aliases' => array('usend', 'usage:send'),
   );
   return $items;
 }
diff --git a/vendor/drush/drush/commands/core/variable.drush.inc b/vendor/drush/drush/commands/core/variable.drush.inc
index d1687e1919..b9a1c4a209 100644
--- a/vendor/drush/drush/commands/core/variable.drush.inc
+++ b/vendor/drush/drush/commands/core/variable.drush.inc
@@ -39,7 +39,7 @@ function variable_drush_command() {
         'format' => 'var_export',
       ),
     ),
-    'aliases' => array('vget'),
+    'aliases' => array('vget', 'variable:get'),
   );
   $items['variable-set'] = array(
     'description' => "Set a variable.",
@@ -64,7 +64,7 @@ function variable_drush_command() {
       'drush vset pr TRUE' => 'Choose from a list of variables beginning with "pr" to set to (bool)true.',
       'php -r "print json_encode(array(\'drupal\', \'simpletest\'));"  | drush vset --format=json project_dependency_excluded_dependencies -'=> 'Set a variable to a complex value (e.g. array)',
     ),
-    'aliases' => array('vset'),
+    'aliases' => array('vset', 'variable:set'),
   );
   $items['variable-delete'] = array(
     'core' => array(6,7),
@@ -82,7 +82,7 @@ function variable_drush_command() {
       'drush vdel u' => 'Choose from a list of variables beginning with "u" to delete.',
       'drush vdel -y --exact maintenance_mode' => 'Bring the site back online, skipping confirmation. Variable is rewritten to site_offline for Drupal 6.',
     ),
-    'aliases' => array('vdel'),
+    'aliases' => array('vdel', 'variable:delete'),
   );
 
   return $items;
diff --git a/vendor/drush/drush/commands/core/views.d8.drush.inc b/vendor/drush/drush/commands/core/views.d8.drush.inc
index 6b95c3d41c..4d8d8142a8 100644
--- a/vendor/drush/drush/commands/core/views.d8.drush.inc
+++ b/vendor/drush/drush/commands/core/views.d8.drush.inc
@@ -36,12 +36,12 @@ function views_drush_command() {
 
   $items['views-dev'] = array(
     'description' => 'Set the Views settings to more developer-oriented values.',
-    'aliases' => array('vd'),
+    'aliases' => array('vd', 'views:dev'),
   ) + $base;
 
   $items['views-list'] = array(
     'description' => 'Get a list of all views in the system.',
-    'aliases' => array('vl'),
+    'aliases' => array('vl', 'views:list'),
     'options' => array(
       'name' => array(
         'description' => 'A string contained in the view\'s name to filter the results with.',
@@ -76,7 +76,7 @@ function views_drush_command() {
 
   $items['views-execute'] = array(
     'description' => 'Execute a view and get the results.',
-    'aliases' => array('vex'),
+    'aliases' => array('vex', 'views:execute'),
     'arguments' => array(
       'view' => 'The name of the view to execute.',
       'display' => 'The display ID to execute. If none specified, the default display will be used.',
@@ -107,7 +107,7 @@ function views_drush_command() {
   $items['views-analyze'] = array(
     'drupal dependencies' => array('views', 'views_ui'),
     'description' => 'Get a list of all Views analyze warnings',
-    'aliases' => array('va'),
+    'aliases' => array('va', 'views:analyze'),
     'options' => array(
       'format' => array(
         'description' => 'Define the output format. Known formats are: json, print_r, and export.',
@@ -121,7 +121,7 @@ function views_drush_command() {
       'views' => 'A space delimited list of view names.',
     ),
     'required-arguments' => 1,
-    'aliases' => array('ven'),
+    'aliases' => array('ven', 'views:enable'),
     'examples' => array(
       'drush ven frontpage taxonomy_term' => 'Enable the frontpage and taxonomy_term views.',
     ),
@@ -133,7 +133,7 @@ function views_drush_command() {
       'views' => 'A space delimited list of view names.',
     ),
     'required-arguments' => 1,
-    'aliases' => array('vdis'),
+    'aliases' => array('vdis', 'views:disable'),
     'examples' => array(
       'drush vdis frontpage taxonomy_term' => 'Disable the frontpage and taxonomy_term views.',
     ),
diff --git a/vendor/drush/drush/commands/core/watchdog.drush.inc b/vendor/drush/drush/commands/core/watchdog.drush.inc
index c9965a2f5d..923b095ac3 100644
--- a/vendor/drush/drush/commands/core/watchdog.drush.inc
+++ b/vendor/drush/drush/commands/core/watchdog.drush.inc
@@ -37,7 +37,7 @@ function watchdog_drush_command() {
       'column-widths' => array('type' => 8, 'severity' => 8),
       'output-data-type' => 'format-table',
     ),
-    'aliases' => array('wd-list'),
+    'aliases' => array('wd-list', 'watchdog:list'),
   );
   $items['watchdog-show'] = array(
     'description' => 'Show watchdog messages.',
@@ -71,7 +71,7 @@ function watchdog_drush_command() {
       'column-widths' => array('type' => 8, 'severity' => 8),
       'output-data-type' => 'format-table',
     ),
-    'aliases' => array('wd-show', 'ws'),
+    'aliases' => array('wd-show', 'ws', 'watchdog:show'),
   );
   $items['watchdog-delete'] = array(
     'description' => 'Delete watchdog messages.',
@@ -87,7 +87,7 @@ function watchdog_drush_command() {
       'drush watchdog-delete --severity=notice' => 'Delete all messages with a severity of notice.',
       'drush watchdog-delete --type=cron' => 'Delete all messages of type cron.',
     ),
-    'aliases' => array('wd-del', 'wd-delete'),
+    'aliases' => array('wd-del', 'wd-delete', 'watchdog:delete'),
   );
   return $items;
 }
diff --git a/vendor/drush/drush/commands/make/make.download.inc b/vendor/drush/drush/commands/make/make.download.inc
index 29bf6b9707..13365d3c62 100644
--- a/vendor/drush/drush/commands/make/make.download.inc
+++ b/vendor/drush/drush/commands/make/make.download.inc
@@ -253,7 +253,7 @@ function make_download_git($name, $type, $download, $download_location) {
   $wc = _get_working_copy_option($download);
   $checkout_after_clone = TRUE;
   // If no download URL specified, assume anonymous clone from git.drupal.org.
-  $download['url'] = isset($download['url']) ? $download['url'] : "http://git.drupal.org/project/$name.git";
+  $download['url'] = isset($download['url']) ? $download['url'] : "https://git.drupal.org/project/$name.git";
   // If no working-copy download URL specified, assume it is the same.
   $download['wc_url'] = isset($download['wc_url']) ? $download['wc_url'] : $download['url'];
 
diff --git a/vendor/drush/drush/commands/pm/package_handler/git_drupalorg.inc b/vendor/drush/drush/commands/pm/package_handler/git_drupalorg.inc
index e418a77ae9..0203db7ff7 100644
--- a/vendor/drush/drush/commands/pm/package_handler/git_drupalorg.inc
+++ b/vendor/drush/drush/commands/pm/package_handler/git_drupalorg.inc
@@ -49,10 +49,10 @@ function package_handler_validate() {
 function package_handler_download_project(&$request, $release) {
   if ($username = drush_get_option('gitusername')) {
     // Uses SSH, which enables pushing changes back to git.drupal.org.
-    $repository = $username . '@git.drupal.org:project/' . $request['name'] . '.git';
+    $repository = 'git@git.drupal.org:project/' . $request['name'] . '.git';
   }
   else {
-    $repository = 'git://git.drupal.org/project/' . $request['name'] . '.git';
+    $repository = 'https://git.drupal.org/project/' . $request['name'] . '.git';
   }
   $request['repository'] = $repository;
   $tag = $release['tag'];
diff --git a/vendor/drush/drush/commands/pm/pm.drush.inc b/vendor/drush/drush/commands/pm/pm.drush.inc
index 56463907b7..abdbf6a215 100644
--- a/vendor/drush/drush/commands/pm/pm.drush.inc
+++ b/vendor/drush/drush/commands/pm/pm.drush.inc
@@ -189,7 +189,7 @@ function pm_drush_command() {
       'resolve-dependencies' => 'Attempt to download any missing dependencies. At the moment, only works when the module name is the same as the project name.',
       'skip' => 'Skip automatic downloading of libraries (c.f. devel).',
     ),
-    'aliases' => array('en'),
+    'aliases' => array('en', 'pm:enable'),
     'engines' => array(
       'release_info' => array(
         'add-options-to-command' => FALSE,
@@ -201,7 +201,7 @@ function pm_drush_command() {
     'arguments' => array(
       'extensions' => 'A list of modules or themes. You can use the * wildcard at the end of extension names to disable multiple matches.',
     ),
-    'aliases' => array('dis'),
+    'aliases' => array('dis', 'pm:disable'),
     'engines' => array(
       'version_control',
       'package_handler',
@@ -215,7 +215,7 @@ function pm_drush_command() {
     'arguments' => array(
       'extensions' => 'A list of modules or themes. You can use the * wildcard at the end of extension names to show info for multiple matches. If no argument is provided it will show info for all available extensions.',
     ),
-    'aliases' => array('pmi'),
+    'aliases' => array('pmi', 'pm:info'),
     'outputformat' => array(
       'default' => 'key-value-list',
       'pipe-format' => 'json',
@@ -280,7 +280,7 @@ function pm_drush_command() {
       'fields-pipe' => array('label'),
       'output-data-type' => 'format-table',
     ),
-    'aliases' => array('pmpi'),
+    'aliases' => array('pmpi', 'pm:projectinfo'),
   );
 
   // Install command is reserved for the download and enable of projects including dependencies.
@@ -293,7 +293,7 @@ function pm_drush_command() {
     'arguments' => array(
       'modules' => 'A list of modules.',
     ),
-    'aliases' => array('pmu'),
+    'aliases' => array('pmu', 'pm:uninstall'),
   );
   $items['pm-list'] = array(
     'description' => 'Show a list of available extensions (modules and themes).',
@@ -317,7 +317,7 @@ function pm_drush_command() {
       'field-labels' => array('package' => 'Package', 'name' => 'Name', 'type' => 'Type', 'status' => 'Status', 'version' => 'Version'),
       'output-data-type' => 'format-table',
     ),
-    'aliases' => array('pml'),
+    'aliases' => array('pml', 'pm:list'),
   );
   $items['pm-refresh'] = array(
     'description' => 'Refresh update status information.',
@@ -326,7 +326,7 @@ function pm_drush_command() {
         'add-options-to-command' => FALSE,
       ),
     ),
-    'aliases' => array('rf'),
+    'aliases' => array('rf', 'pm:refresh'),
   );
   $items['pm-updatestatus'] = array(
     'description' => 'Show a report of available minor updates to Drupal core and contrib projects.',
@@ -348,7 +348,7 @@ function pm_drush_command() {
       'fields-pipe' => array('name', 'existing_version', 'candidate_version', 'status_msg'),
       'output-data-type' => 'format-table',
     ),
-    'aliases' => array('ups'),
+    'aliases' => array('ups', 'pm:updatestatus'),
   );
   $items['pm-updatecode'] = array(
     'description' => 'Update Drupal core and contrib projects to latest recommended releases.',
@@ -365,7 +365,7 @@ function pm_drush_command() {
       'check-updatedb' => 'Check to see if an updatedb is needed after updating the code. Default is on; use --check-updatedb=0 to disable.',
     ) + $update_options,
     'sub-options' => $update_suboptions,
-    'aliases' => array('upc'),
+    'aliases' => array('upc', 'pm:updatecode'),
     'topics' => array('docs-policy'),
     'engines' => array(
       'version_control',
@@ -379,12 +379,13 @@ function pm_drush_command() {
   // Merge all items from above.
   $items['pm-update'] = array(
     'description' => 'Update Drupal core and contrib projects and apply any pending database updates (Same as pm-updatecode + updatedb).',
-    'aliases' => array('up'),
+    'aliases' => array('up', 'pm:update'),
     'allow-additional-options' => array('pm-updatecode', 'updatedb'),
   );
   $items['pm-updatecode-postupdate'] = array(
     'description' => 'Notify of pending db updates.',
     'hidden' => TRUE,
+    'aliases' => array('pm:updatecode:postupdate'),
   );
   $items['pm-releasenotes'] = array(
     'description' => 'Print release notes for given projects.',
@@ -399,7 +400,7 @@ function pm_drush_command() {
       'drush rln token-1.13' => 'View release notes of a specfic version of the Token project for my version of Drupal.',
       'drush rln pathauto zen' => 'View release notes for the recommended version of Pathauto and Zen projects.',
     ),
-    'aliases' => array('rln'),
+    'aliases' => array('rln', 'pm:releasenotes'),
     'bootstrap' => DRUSH_BOOTSTRAP_MAX,
     'engines' => array(
       'release_info',
@@ -416,7 +417,7 @@ function pm_drush_command() {
     'options' => array(
       'default-major' => 'Show releases compatible with the specified major version of Drupal.',
     ),
-    'aliases' => array('rl'),
+    'aliases' => array('rl', 'pm:releases'),
     'bootstrap' => DRUSH_BOOTSTRAP_MAX,
     'outputformat' => array(
       'default' => 'table',
@@ -474,7 +475,7 @@ function pm_drush_command() {
       'pipe' => 'Returns a list of the names of the extensions (modules and themes) contained in the downloaded projects.',
     ),
     'bootstrap' => DRUSH_BOOTSTRAP_MAX,
-    'aliases' => array('dl'),
+    'aliases' => array('dl', 'pm:download'),
     'engines' => array(
       'version_control',
       'package_handler',
diff --git a/vendor/drush/drush/commands/sql/sql.drush.inc b/vendor/drush/drush/commands/sql/sql.drush.inc
index b820ab0d2a..7f59f5d4db 100644
--- a/vendor/drush/drush/commands/sql/sql.drush.inc
+++ b/vendor/drush/drush/commands/sql/sql.drush.inc
@@ -52,6 +52,7 @@ function sql_drush_command() {
       ),
     ) + $options + $db_url,
     'topics' => array('docs-policy'),
+    'aliases' => array('sql:drop'),
   );
   $items['sql-conf'] = array(
     'description' => 'Print database connection details using print_r().',
@@ -66,6 +67,7 @@ function sql_drush_command() {
       'pipe-format' => 'var_export',
       'private-fields' => 'password',
     ),
+    'aliases' => array('sql:conf'),
   );
   $items['sql-connect'] = array(
     'description' => 'A string for connecting to the DB.',
@@ -80,6 +82,7 @@ function sql_drush_command() {
       '`drush sql-connect` < example.sql' => 'Bash: Import SQL statements from a file into the current database.',
       'eval (drush sql-connect) < example.sql' => 'Fish: Import SQL statements from a file into the current database.',
     ),
+    'aliases' => array('sql:connect'),
   );
   $items['sql-create'] = array(
     'description' => 'Create a database.',
@@ -94,6 +97,7 @@ function sql_drush_command() {
       'db-su' => 'Account to use when creating a new database. Optional.',
       'db-su-pw' => 'Password for the "db-su" account. Optional.',
     ) + $options + $db_url,
+    'aliases' => array('sql:create'),
   );
   $items['sql-dump'] = array(
     'description' => 'Exports the Drupal DB as SQL using mysqldump or equivalent.',
@@ -115,6 +119,7 @@ function sql_drush_command() {
       'gzip' => 'Compress the dump using the gzip program which must be in your $PATH.',
       'extra' => 'Add custom options to the dump command.',
     ) + $options + $db_url,
+    'aliases' => array('sql:dump'),
   );
   $items['sql-query'] = array(
     'bootstrap' => DRUSH_BOOTSTRAP_NONE,
@@ -144,14 +149,14 @@ function sql_drush_command() {
         'hidden' => TRUE, // Hide since this is only used with --backend calls.
       )
     ) + $options + $db_url,
-    'aliases' => array('sqlq'),
+    'aliases' => array('sqlq', 'sql:query'),
   );
   $items['sql-cli'] = array(
     'description' => "Open a SQL command-line interface using Drupal's credentials.",
     'bootstrap' => DRUSH_BOOTSTRAP_NONE,
     // 'options' => $options + $db_url,
     'allow-additional-options' => array('sql-connect'),
-    'aliases' => array('sqlc'),
+    'aliases' => array('sqlc', 'sql:cli'),
     'examples' => array(
       'drush sql-cli' => "Open a SQL command-line interface using Drupal's credentials.",
       'drush sql-cli --extra=-A' => "Open a SQL CLI and skip reading table information.",
@@ -240,7 +245,11 @@ function drush_sql_create() {
     }
   }
 
-  return $sql->createdb(TRUE);
+  $result = $sql->createdb(TRUE);
+  if (!$result) {
+    drush_set_error('DRUSH_SQL_CREATE_ERROR', dt('SQL create database error occurred.'));
+  }
+  return $result;
 }
 
 
diff --git a/vendor/drush/drush/commands/user/user.drush.inc b/vendor/drush/drush/commands/user/user.drush.inc
index 7adad5272c..cb6e77a674 100644
--- a/vendor/drush/drush/commands/user/user.drush.inc
+++ b/vendor/drush/drush/commands/user/user.drush.inc
@@ -42,7 +42,7 @@ function user_drush_command() {
 
   $items['user-information'] = array(
     'description' => 'Print information about the specified user(s).',
-    'aliases' => array('uinf'),
+    'aliases' => array('uinf', 'user:information'),
     'examples' => array(
       'drush user-information 2,3,someguy,somegal,billgates@microsoft.com' =>
         'Display information about the listed users.',
@@ -87,7 +87,7 @@ function user_drush_command() {
   );
   $items['user-block'] = array(
     'description' => 'Block the specified user(s).',
-    'aliases' => array('ublk'),
+    'aliases' => array('ublk', 'user:block'),
     'arguments' => array(
       'users' => 'A comma delimited list of uids, user names, or email addresses.',
     ),
@@ -99,7 +99,7 @@ function user_drush_command() {
   );
   $items['user-unblock'] = array(
     'description' => 'Unblock the specified user(s).',
-    'aliases' => array('uublk'),
+    'aliases' => array('uublk', 'user:unblock'),
     'arguments' => array(
       'users' => 'A comma delimited list of uids, user names, or email addresses.',
     ),
@@ -111,7 +111,7 @@ function user_drush_command() {
   );
   $items['user-add-role'] = array(
     'description' => 'Add a role to the specified user accounts.',
-    'aliases' => array('urol'),
+    'aliases' => array('urol', 'user:add:role'),
     'arguments' => array(
       'role' => 'The name of the role to add',
       'users' => '(optional) A comma delimited list of uids, user names, or email addresses.',
@@ -125,7 +125,7 @@ function user_drush_command() {
   );
   $items['user-remove-role'] = array(
     'description' => 'Remove a role from the specified user accounts.',
-    'aliases' => array('urrol'),
+    'aliases' => array('urrol', 'user:remove:role'),
     'arguments' => array(
       'role' => 'The name of the role to remove',
       'users' => '(optional) A comma delimited list of uids, user names, or email addresses.',
@@ -139,7 +139,7 @@ function user_drush_command() {
   );
   $items['user-create'] = array(
     'description' => 'Create a user account with the specified name.',
-    'aliases' => array('ucrt'),
+    'aliases' => array('ucrt', 'user:create'),
     'arguments' => array(
       'name' => 'The name of the account to add'
     ),
@@ -156,7 +156,7 @@ function user_drush_command() {
   );
   $items['user-cancel'] = array(
     'description' => 'Cancel a user account with the specified name.',
-    'aliases' => array('ucan'),
+    'aliases' => array('ucan', 'user:cancel'),
     'arguments' => array(
       'name' => 'The name of the account to cancel',
     ),
@@ -171,7 +171,7 @@ function user_drush_command() {
   );
   $items['user-password'] = array(
     'description' => '(Re)Set the password for the user account with the specified name.',
-    'aliases' => array('upwd'),
+    'aliases' => array('upwd', 'user:password'),
     'arguments' => array(
       'name' => 'The name of the account to modify.'
     ),
@@ -190,7 +190,7 @@ function user_drush_command() {
   );
   $items['user-login'] = array(
     'description' => 'Display a one time login link for the given user account (defaults to uid 1).',
-    'aliases' => array('uli'),
+    'aliases' => array('uli', 'user:login'),
     'bootstrap' => DRUSH_BOOTSTRAP_NONE,
     'handle-remote-commands' => TRUE,
     'arguments' => array(
diff --git a/vendor/drush/drush/composer.json b/vendor/drush/drush/composer.json
index 5bc1952f4f..5f9d0843f6 100644
--- a/vendor/drush/drush/composer.json
+++ b/vendor/drush/drush/composer.json
@@ -36,7 +36,7 @@
     "php": ">=5.4.5",
     "psr/log": "~1.0",
     "psy/psysh": "~0.6",
-    "consolidation/annotated-command": "^2.8.1",
+    "consolidation/annotated-command": "^2.12.0",
     "consolidation/output-formatters": "~3",
     "symfony/yaml": "~2.3|^3",
     "symfony/var-dumper": "~2.7|^3",
@@ -44,6 +44,7 @@
     "symfony/event-dispatcher": "~2.7|^3",
     "symfony/finder": "~2.7|^3",
     "pear/console_table": "~1.3.1",
+    "webflo/drupal-finder": "^1.1.0",
     "webmozart/path-util": "~2"
   },
   "require-dev": {
@@ -63,6 +64,9 @@
     "psr-0": {
       "Drush":        "lib/",
       "Consolidation": "lib/"
+    },
+    "psr-4": {
+      "Drush\\":      "src/"
     }
   },
   "autoload-dev": {
@@ -72,7 +76,8 @@
   },
   "scripts": {
     "lint": [
-      "find includes -name '*.inc' -print0 | xargs -0 -n1 php -l"
+      "find includes -name '*.inc' -print0 | xargs -0 -n1 php -l",
+      "find lib/Drush -name '*.php' -print0 | xargs -0 -n1 php -l"
     ]
   },
   "extra": {
diff --git a/vendor/drush/drush/composer.lock b/vendor/drush/drush/composer.lock
index 486274e966..294e40adc2 100644
--- a/vendor/drush/drush/composer.lock
+++ b/vendor/drush/drush/composer.lock
@@ -1,40 +1,85 @@
 {
     "_readme": [
         "This file locks the dependencies of your project to a known state",
-        "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
+        "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "f964f597be5b57a32e5078444ed7d0f4",
+    "content-hash": "6350957e1c82365d6a7199dd8d1289b1",
     "packages": [
         {
             "name": "consolidation/annotated-command",
-            "version": "2.8.1",
+            "version": "2.12.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/consolidation/annotated-command.git",
-                "reference": "7f94009d732922d61408536f9228aca8f22e9135"
+                "reference": "512a2e54c98f3af377589de76c43b24652bcb789"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/consolidation/annotated-command/zipball/7f94009d732922d61408536f9228aca8f22e9135",
-                "reference": "7f94009d732922d61408536f9228aca8f22e9135",
+                "url": "https://api.github.com/repos/consolidation/annotated-command/zipball/512a2e54c98f3af377589de76c43b24652bcb789",
+                "reference": "512a2e54c98f3af377589de76c43b24652bcb789",
                 "shasum": ""
             },
             "require": {
-                "consolidation/output-formatters": "^3.1.12",
-                "php": ">=5.4.0",
+                "consolidation/output-formatters": "^3.4",
+                "php": ">=5.4.5",
                 "psr/log": "^1",
-                "symfony/console": "^2.8|~3",
-                "symfony/event-dispatcher": "^2.5|^3",
-                "symfony/finder": "^2.5|^3"
+                "symfony/console": "^2.8|^3|^4",
+                "symfony/event-dispatcher": "^2.5|^3|^4",
+                "symfony/finder": "^2.5|^3|^4"
             },
             "require-dev": {
-                "phpunit/phpunit": "^4.8",
-                "satooshi/php-coveralls": "^1.0",
+                "g1a/composer-test-scenarios": "^3",
+                "php-coveralls/php-coveralls": "^1",
+                "phpunit/phpunit": "^6",
                 "squizlabs/php_codesniffer": "^2.7"
             },
             "type": "library",
             "extra": {
+                "scenarios": {
+                    "symfony4": {
+                        "require": {
+                            "symfony/console": "^4.0"
+                        },
+                        "config": {
+                            "platform": {
+                                "php": "7.1.3"
+                            }
+                        }
+                    },
+                    "symfony2": {
+                        "require": {
+                            "symfony/console": "^2.8"
+                        },
+                        "require-dev": {
+                            "phpunit/phpunit": "^4.8.36"
+                        },
+                        "remove": [
+                            "php-coveralls/php-coveralls"
+                        ],
+                        "config": {
+                            "platform": {
+                                "php": "5.4.8"
+                            }
+                        },
+                        "scenario-options": {
+                            "create-lockfile": "false"
+                        }
+                    },
+                    "phpunit4": {
+                        "require-dev": {
+                            "phpunit/phpunit": "^4.8.36"
+                        },
+                        "remove": [
+                            "php-coveralls/php-coveralls"
+                        ],
+                        "config": {
+                            "platform": {
+                                "php": "5.4.8"
+                            }
+                        }
+                    }
+                },
                 "branch-alias": {
                     "dev-master": "2.x-dev"
                 }
@@ -55,33 +100,40 @@
                 }
             ],
             "description": "Initialize Symfony Console commands from annotated command class methods.",
-            "time": "2017-10-17T01:48:51+00:00"
+            "time": "2019-03-08T16:55:03+00:00"
         },
         {
             "name": "consolidation/output-formatters",
-            "version": "3.1.12",
+            "version": "3.4.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/consolidation/output-formatters.git",
-                "reference": "88ef346a1cefb92aab8b57a3214a6d5fc63f5d2a"
+                "reference": "a942680232094c4a5b21c0b7e54c20cce623ae19"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/88ef346a1cefb92aab8b57a3214a6d5fc63f5d2a",
-                "reference": "88ef346a1cefb92aab8b57a3214a6d5fc63f5d2a",
+                "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/a942680232094c4a5b21c0b7e54c20cce623ae19",
+                "reference": "a942680232094c4a5b21c0b7e54c20cce623ae19",
                 "shasum": ""
             },
             "require": {
+                "dflydev/dot-access-data": "^1.1.0",
                 "php": ">=5.4.0",
-                "symfony/console": "^2.8|~3",
-                "symfony/finder": "~2.5|~3.0"
+                "symfony/console": "^2.8|^3|^4",
+                "symfony/finder": "^2.5|^3|^4"
             },
             "require-dev": {
-                "phpunit/phpunit": "^4.8",
-                "satooshi/php-coveralls": "^1.0",
+                "g1a/composer-test-scenarios": "^2",
+                "phpunit/phpunit": "^5.7.27",
+                "satooshi/php-coveralls": "^2",
                 "squizlabs/php_codesniffer": "^2.7",
+                "symfony/console": "3.2.3",
+                "symfony/var-dumper": "^2.8|^3|^4",
                 "victorjonsson/markdowndocs": "^1.3"
             },
+            "suggest": {
+                "symfony/var-dumper": "For using the var_dump formatter"
+            },
             "type": "library",
             "extra": {
                 "branch-alias": {
@@ -104,7 +156,66 @@
                 }
             ],
             "description": "Format text by applying transformations provided by plug-in formatters.",
-            "time": "2017-10-12T19:38:03+00:00"
+            "time": "2018-10-19T22:35:38+00:00"
+        },
+        {
+            "name": "dflydev/dot-access-data",
+            "version": "v1.1.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/dflydev/dflydev-dot-access-data.git",
+                "reference": "3fbd874921ab2c041e899d044585a2ab9795df8a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/3fbd874921ab2c041e899d044585a2ab9795df8a",
+                "reference": "3fbd874921ab2c041e899d044585a2ab9795df8a",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.2"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Dflydev\\DotAccessData": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Dragonfly Development Inc.",
+                    "email": "info@dflydev.com",
+                    "homepage": "http://dflydev.com"
+                },
+                {
+                    "name": "Beau Simensen",
+                    "email": "beau@dflydev.com",
+                    "homepage": "http://beausimensen.com"
+                },
+                {
+                    "name": "Carlos Frutos",
+                    "email": "carlos@kiwing.it",
+                    "homepage": "https://github.com/cfrutos"
+                }
+            ],
+            "description": "Given a deep data structure, access data by dot notation.",
+            "homepage": "https://github.com/dflydev/dflydev-dot-access-data",
+            "keywords": [
+                "access",
+                "data",
+                "dot",
+                "notation"
+            ],
+            "time": "2017-01-20T21:14:22+00:00"
         },
         {
             "name": "dnoegel/php-xdg-base-dir",
@@ -141,32 +252,32 @@
         },
         {
             "name": "jakub-onderka/php-console-color",
-            "version": "0.1",
+            "version": "v0.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/JakubOnderka/PHP-Console-Color.git",
-                "reference": "e0b393dacf7703fc36a4efc3df1435485197e6c1"
+                "reference": "d5deaecff52a0d61ccb613bb3804088da0307191"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Color/zipball/e0b393dacf7703fc36a4efc3df1435485197e6c1",
-                "reference": "e0b393dacf7703fc36a4efc3df1435485197e6c1",
+                "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Color/zipball/d5deaecff52a0d61ccb613bb3804088da0307191",
+                "reference": "d5deaecff52a0d61ccb613bb3804088da0307191",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.2"
+                "php": ">=5.4.0"
             },
             "require-dev": {
                 "jakub-onderka/php-code-style": "1.0",
-                "jakub-onderka/php-parallel-lint": "0.*",
+                "jakub-onderka/php-parallel-lint": "1.0",
                 "jakub-onderka/php-var-dump-check": "0.*",
-                "phpunit/phpunit": "3.7.*",
+                "phpunit/phpunit": "~4.3",
                 "squizlabs/php_codesniffer": "1.*"
             },
             "type": "library",
             "autoload": {
-                "psr-0": {
-                    "JakubOnderka\\PhpConsoleColor": "src/"
+                "psr-4": {
+                    "JakubOnderka\\PhpConsoleColor\\": "src/"
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -176,41 +287,41 @@
             "authors": [
                 {
                     "name": "Jakub Onderka",
-                    "email": "jakub.onderka@gmail.com",
-                    "homepage": "http://www.acci.cz"
+                    "email": "jakub.onderka@gmail.com"
                 }
             ],
-            "time": "2014-04-08T15:00:19+00:00"
+            "time": "2018-09-29T17:23:10+00:00"
         },
         {
             "name": "jakub-onderka/php-console-highlighter",
-            "version": "v0.3.2",
+            "version": "v0.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/JakubOnderka/PHP-Console-Highlighter.git",
-                "reference": "7daa75df45242c8d5b75a22c00a201e7954e4fb5"
+                "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Highlighter/zipball/7daa75df45242c8d5b75a22c00a201e7954e4fb5",
-                "reference": "7daa75df45242c8d5b75a22c00a201e7954e4fb5",
+                "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Highlighter/zipball/9f7a229a69d52506914b4bc61bfdb199d90c5547",
+                "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547",
                 "shasum": ""
             },
             "require": {
-                "jakub-onderka/php-console-color": "~0.1",
-                "php": ">=5.3.0"
+                "ext-tokenizer": "*",
+                "jakub-onderka/php-console-color": "~0.2",
+                "php": ">=5.4.0"
             },
             "require-dev": {
                 "jakub-onderka/php-code-style": "~1.0",
-                "jakub-onderka/php-parallel-lint": "~0.5",
+                "jakub-onderka/php-parallel-lint": "~1.0",
                 "jakub-onderka/php-var-dump-check": "~0.1",
                 "phpunit/phpunit": "~4.0",
                 "squizlabs/php_codesniffer": "~1.5"
             },
             "type": "library",
             "autoload": {
-                "psr-0": {
-                    "JakubOnderka\\PhpConsoleHighlighter": "src/"
+                "psr-4": {
+                    "JakubOnderka\\PhpConsoleHighlighter\\": "src/"
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -224,7 +335,8 @@
                     "homepage": "http://www.acci.cz/"
                 }
             ],
-            "time": "2015-04-20T18:58:01+00:00"
+            "description": "Highlight PHP code in terminal",
+            "time": "2018-09-29T18:48:56+00:00"
         },
         {
             "name": "nikic/php-parser",
@@ -334,16 +446,16 @@
         },
         {
             "name": "psr/log",
-            "version": "1.0.2",
+            "version": "1.1.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/php-fig/log.git",
-                "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d"
+                "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
-                "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
+                "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
+                "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
                 "shasum": ""
             },
             "require": {
@@ -377,35 +489,36 @@
                 "psr",
                 "psr-3"
             ],
-            "time": "2016-10-10T12:19:37+00:00"
+            "time": "2018-11-20T15:27:04+00:00"
         },
         {
             "name": "psy/psysh",
-            "version": "v0.8.14",
+            "version": "v0.9.9",
             "source": {
                 "type": "git",
                 "url": "https://github.com/bobthecow/psysh.git",
-                "reference": "91e53c16560bdb8b9592544bb38429ae00d6baee"
+                "reference": "9aaf29575bb8293206bb0420c1e1c87ff2ffa94e"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/bobthecow/psysh/zipball/91e53c16560bdb8b9592544bb38429ae00d6baee",
-                "reference": "91e53c16560bdb8b9592544bb38429ae00d6baee",
+                "url": "https://api.github.com/repos/bobthecow/psysh/zipball/9aaf29575bb8293206bb0420c1e1c87ff2ffa94e",
+                "reference": "9aaf29575bb8293206bb0420c1e1c87ff2ffa94e",
                 "shasum": ""
             },
             "require": {
                 "dnoegel/php-xdg-base-dir": "0.1",
-                "jakub-onderka/php-console-highlighter": "0.3.*",
-                "nikic/php-parser": "~1.3|~2.0|~3.0",
-                "php": ">=5.3.9",
-                "symfony/console": "~2.3.10|^2.4.2|~3.0",
-                "symfony/var-dumper": "~2.7|~3.0"
+                "ext-json": "*",
+                "ext-tokenizer": "*",
+                "jakub-onderka/php-console-highlighter": "0.3.*|0.4.*",
+                "nikic/php-parser": "~1.3|~2.0|~3.0|~4.0",
+                "php": ">=5.4.0",
+                "symfony/console": "~2.3.10|^2.4.2|~3.0|~4.0",
+                "symfony/var-dumper": "~2.7|~3.0|~4.0"
             },
             "require-dev": {
-                "friendsofphp/php-cs-fixer": "~1.11",
-                "hoa/console": "~3.16|~1.14",
-                "phpunit/phpunit": "~4.4|~5.0",
-                "symfony/finder": "~2.1|~3.0"
+                "bamarni/composer-bin-plugin": "^1.2",
+                "hoa/console": "~2.15|~3.16",
+                "phpunit/phpunit": "~4.8.35|~5.0|~6.0|~7.0"
             },
             "suggest": {
                 "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)",
@@ -420,15 +533,15 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-develop": "0.8.x-dev"
+                    "dev-develop": "0.9.x-dev"
                 }
             },
             "autoload": {
                 "files": [
-                    "src/Psy/functions.php"
+                    "src/functions.php"
                 ],
                 "psr-4": {
-                    "Psy\\": "src/Psy/"
+                    "Psy\\": "src/"
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -450,20 +563,20 @@
                 "interactive",
                 "shell"
             ],
-            "time": "2017-11-04T16:06:49+00:00"
+            "time": "2018-10-13T15:16:03+00:00"
         },
         {
             "name": "symfony/console",
-            "version": "v2.8.28",
+            "version": "v2.8.49",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/console.git",
-                "reference": "f81549d2c5fdee8d711c9ab3c7e7362353ea5853"
+                "reference": "cbcf4b5e233af15cd2bbd50dee1ccc9b7927dc12"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/console/zipball/f81549d2c5fdee8d711c9ab3c7e7362353ea5853",
-                "reference": "f81549d2c5fdee8d711c9ab3c7e7362353ea5853",
+                "url": "https://api.github.com/repos/symfony/console/zipball/cbcf4b5e233af15cd2bbd50dee1ccc9b7927dc12",
+                "reference": "cbcf4b5e233af15cd2bbd50dee1ccc9b7927dc12",
                 "shasum": ""
             },
             "require": {
@@ -477,7 +590,7 @@
                 "symfony/process": "~2.1|~3.0.0"
             },
             "suggest": {
-                "psr/log": "For using the console logger",
+                "psr/log-implementation": "For using the console logger",
                 "symfony/event-dispatcher": "",
                 "symfony/process": ""
             },
@@ -511,20 +624,20 @@
             ],
             "description": "Symfony Console Component",
             "homepage": "https://symfony.com",
-            "time": "2017-10-01T21:00:16+00:00"
+            "time": "2018-11-20T15:55:20+00:00"
         },
         {
             "name": "symfony/debug",
-            "version": "v2.8.28",
+            "version": "v2.8.49",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/debug.git",
-                "reference": "eaaec993ca5e8067e204b2ee653cdd142961f33e"
+                "reference": "74251c8d50dd3be7c4ce0c7b862497cdc641a5d0"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/debug/zipball/eaaec993ca5e8067e204b2ee653cdd142961f33e",
-                "reference": "eaaec993ca5e8067e204b2ee653cdd142961f33e",
+                "url": "https://api.github.com/repos/symfony/debug/zipball/74251c8d50dd3be7c4ce0c7b862497cdc641a5d0",
+                "reference": "74251c8d50dd3be7c4ce0c7b862497cdc641a5d0",
                 "shasum": ""
             },
             "require": {
@@ -568,20 +681,20 @@
             ],
             "description": "Symfony Debug Component",
             "homepage": "https://symfony.com",
-            "time": "2017-10-01T21:00:16+00:00"
+            "time": "2018-11-11T11:18:13+00:00"
         },
         {
             "name": "symfony/event-dispatcher",
-            "version": "v2.8.28",
+            "version": "v2.8.49",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/event-dispatcher.git",
-                "reference": "7fe089232554357efb8d4af65ce209fc6e5a2186"
+                "reference": "a77e974a5fecb4398833b0709210e3d5e334ffb0"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/7fe089232554357efb8d4af65ce209fc6e5a2186",
-                "reference": "7fe089232554357efb8d4af65ce209fc6e5a2186",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/a77e974a5fecb4398833b0709210e3d5e334ffb0",
+                "reference": "a77e974a5fecb4398833b0709210e3d5e334ffb0",
                 "shasum": ""
             },
             "require": {
@@ -628,20 +741,20 @@
             ],
             "description": "Symfony EventDispatcher Component",
             "homepage": "https://symfony.com",
-            "time": "2017-10-01T21:00:16+00:00"
+            "time": "2018-11-21T14:20:20+00:00"
         },
         {
             "name": "symfony/finder",
-            "version": "v2.8.28",
+            "version": "v2.8.49",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/finder.git",
-                "reference": "a945724b201f74d543e356f6059c930bb8d10c92"
+                "reference": "1444eac52273e345d9b95129bf914639305a9ba4"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/finder/zipball/a945724b201f74d543e356f6059c930bb8d10c92",
-                "reference": "a945724b201f74d543e356f6059c930bb8d10c92",
+                "url": "https://api.github.com/repos/symfony/finder/zipball/1444eac52273e345d9b95129bf914639305a9ba4",
+                "reference": "1444eac52273e345d9b95129bf914639305a9ba4",
                 "shasum": ""
             },
             "require": {
@@ -677,20 +790,78 @@
             ],
             "description": "Symfony Finder Component",
             "homepage": "https://symfony.com",
-            "time": "2017-10-01T21:00:16+00:00"
+            "time": "2018-11-11T11:18:13+00:00"
+        },
+        {
+            "name": "symfony/polyfill-ctype",
+            "version": "v1.10.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-ctype.git",
+                "reference": "e3d826245268269cd66f8326bd8bc066687b4a19"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19",
+                "reference": "e3d826245268269cd66f8326bd8bc066687b4a19",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "suggest": {
+                "ext-ctype": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.9-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Polyfill\\Ctype\\": ""
+                },
+                "files": [
+                    "bootstrap.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                },
+                {
+                    "name": "Gert de Pagter",
+                    "email": "backendtea@gmail.com"
+                }
+            ],
+            "description": "Symfony polyfill for ctype functions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "ctype",
+                "polyfill",
+                "portable"
+            ],
+            "time": "2018-08-06T14:22:27+00:00"
         },
         {
             "name": "symfony/polyfill-mbstring",
-            "version": "v1.6.0",
+            "version": "v1.10.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-mbstring.git",
-                "reference": "2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296"
+                "reference": "c79c051f5b3a46be09205c73b80b346e4153e494"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296",
-                "reference": "2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296",
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494",
+                "reference": "c79c051f5b3a46be09205c73b80b346e4153e494",
                 "shasum": ""
             },
             "require": {
@@ -702,7 +873,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.6-dev"
+                    "dev-master": "1.9-dev"
                 }
             },
             "autoload": {
@@ -736,20 +907,20 @@
                 "portable",
                 "shim"
             ],
-            "time": "2017-10-11T12:05:26+00:00"
+            "time": "2018-09-21T13:07:52+00:00"
         },
         {
             "name": "symfony/var-dumper",
-            "version": "v2.8.28",
+            "version": "v2.8.49",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/var-dumper.git",
-                "reference": "3e34c94f44d7bf8db1569b4bcb4b45065ccf388e"
+                "reference": "91abb1e39d14fb7773d25de9c711949ea8502ac1"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/var-dumper/zipball/3e34c94f44d7bf8db1569b4bcb4b45065ccf388e",
-                "reference": "3e34c94f44d7bf8db1569b4bcb4b45065ccf388e",
+                "url": "https://api.github.com/repos/symfony/var-dumper/zipball/91abb1e39d14fb7773d25de9c711949ea8502ac1",
+                "reference": "91abb1e39d14fb7773d25de9c711949ea8502ac1",
                 "shasum": ""
             },
             "require": {
@@ -804,24 +975,25 @@
                 "debug",
                 "dump"
             ],
-            "time": "2017-09-15T16:59:28+00:00"
+            "time": "2018-11-11T11:18:13+00:00"
         },
         {
             "name": "symfony/yaml",
-            "version": "v2.8.28",
+            "version": "v2.8.49",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/yaml.git",
-                "reference": "842fb6df22180244b4c65935ce1a88d324e5ff9e"
+                "reference": "02c1859112aa779d9ab394ae4f3381911d84052b"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/yaml/zipball/842fb6df22180244b4c65935ce1a88d324e5ff9e",
-                "reference": "842fb6df22180244b4c65935ce1a88d324e5ff9e",
+                "url": "https://api.github.com/repos/symfony/yaml/zipball/02c1859112aa779d9ab394ae4f3381911d84052b",
+                "reference": "02c1859112aa779d9ab394ae4f3381911d84052b",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.9"
+                "php": ">=5.3.9",
+                "symfony/polyfill-ctype": "~1.8"
             },
             "type": "library",
             "extra": {
@@ -853,24 +1025,62 @@
             ],
             "description": "Symfony Yaml Component",
             "homepage": "https://symfony.com",
-            "time": "2017-10-05T14:38:30+00:00"
+            "time": "2018-11-11T11:18:13+00:00"
+        },
+        {
+            "name": "webflo/drupal-finder",
+            "version": "1.1.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/webflo/drupal-finder.git",
+                "reference": "8a7886c575d6eaa67a425dceccc84e735c0b9637"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/webflo/drupal-finder/zipball/8a7886c575d6eaa67a425dceccc84e735c0b9637",
+                "reference": "8a7886c575d6eaa67a425dceccc84e735c0b9637",
+                "shasum": ""
+            },
+            "require-dev": {
+                "mikey179/vfsstream": "^1.6",
+                "phpunit/phpunit": "^4.8"
+            },
+            "type": "library",
+            "autoload": {
+                "classmap": [
+                    "src/DrupalFinder.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "GPL-2.0+"
+            ],
+            "authors": [
+                {
+                    "name": "Florian Weber",
+                    "email": "florian@webflo.org"
+                }
+            ],
+            "description": "Helper class to locate a Drupal installation from a given path.",
+            "time": "2017-10-24T08:12:11+00:00"
         },
         {
             "name": "webmozart/assert",
-            "version": "1.2.0",
+            "version": "1.4.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/webmozart/assert.git",
-                "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f"
+                "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/webmozart/assert/zipball/2db61e59ff05fe5126d152bd0655c9ea113e550f",
-                "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f",
+                "url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9",
+                "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.3.3 || ^7.0"
+                "php": "^5.3.3 || ^7.0",
+                "symfony/polyfill-ctype": "^1.8"
             },
             "require-dev": {
                 "phpunit/phpunit": "^4.6",
@@ -903,7 +1113,7 @@
                 "check",
                 "validate"
             ],
-            "time": "2016-11-23T20:04:58+00:00"
+            "time": "2018-12-25T11:19:39+00:00"
         },
         {
             "name": "webmozart/path-util",
@@ -1058,33 +1268,33 @@
         },
         {
             "name": "phpspec/prophecy",
-            "version": "v1.7.2",
+            "version": "1.8.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpspec/prophecy.git",
-                "reference": "c9b8c6088acd19d769d4cc0ffa60a9fe34344bd6"
+                "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/c9b8c6088acd19d769d4cc0ffa60a9fe34344bd6",
-                "reference": "c9b8c6088acd19d769d4cc0ffa60a9fe34344bd6",
+                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
+                "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
                 "shasum": ""
             },
             "require": {
                 "doctrine/instantiator": "^1.0.2",
                 "php": "^5.3|^7.0",
                 "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0",
-                "sebastian/comparator": "^1.1|^2.0",
+                "sebastian/comparator": "^1.1|^2.0|^3.0",
                 "sebastian/recursion-context": "^1.0|^2.0|^3.0"
             },
             "require-dev": {
                 "phpspec/phpspec": "^2.5|^3.2",
-                "phpunit/phpunit": "^4.8 || ^5.6.5"
+                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.7.x-dev"
+                    "dev-master": "1.8.x-dev"
                 }
             },
             "autoload": {
@@ -1117,7 +1327,7 @@
                 "spy",
                 "stub"
             ],
-            "time": "2017-09-04T11:05:03+00:00"
+            "time": "2018-08-05T17:53:17+00:00"
         },
         {
             "name": "phpunit/php-code-coverage",
@@ -1183,16 +1393,16 @@
         },
         {
             "name": "phpunit/php-file-iterator",
-            "version": "1.4.2",
+            "version": "1.4.5",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
-                "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5"
+                "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3cc8f69b3028d0f96a9078e6295d86e9bf019be5",
-                "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4",
+                "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4",
                 "shasum": ""
             },
             "require": {
@@ -1226,7 +1436,7 @@
                 "filesystem",
                 "iterator"
             ],
-            "time": "2016-10-03T07:40:28+00:00"
+            "time": "2017-11-27T13:52:08+00:00"
         },
         {
             "name": "phpunit/php-text-template",
@@ -1320,16 +1530,16 @@
         },
         {
             "name": "phpunit/php-token-stream",
-            "version": "1.4.11",
+            "version": "1.4.12",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/php-token-stream.git",
-                "reference": "e03f8f67534427a787e21a385a67ec3ca6978ea7"
+                "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/e03f8f67534427a787e21a385a67ec3ca6978ea7",
-                "reference": "e03f8f67534427a787e21a385a67ec3ca6978ea7",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/1ce90ba27c42e4e44e6d8458241466380b51fa16",
+                "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16",
                 "shasum": ""
             },
             "require": {
@@ -1365,7 +1575,7 @@
             "keywords": [
                 "tokenizer"
             ],
-            "time": "2017-02-27T10:12:30+00:00"
+            "time": "2017-12-04T08:55:13+00:00"
         },
         {
             "name": "phpunit/phpunit",
@@ -1493,6 +1703,7 @@
                 "mock",
                 "xunit"
             ],
+            "abandoned": true,
             "time": "2015-10-02T06:51:40+00:00"
         },
         {
@@ -1869,16 +2080,16 @@
         },
         {
             "name": "symfony/process",
-            "version": "v2.7.35",
+            "version": "v2.7.50",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/process.git",
-                "reference": "601b7d86103ae1ad374343725e899f905680f919"
+                "reference": "eda637e05670e2afeec3842dcd646dce94262f6b"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/process/zipball/601b7d86103ae1ad374343725e899f905680f919",
-                "reference": "601b7d86103ae1ad374343725e899f905680f919",
+                "url": "https://api.github.com/repos/symfony/process/zipball/eda637e05670e2afeec3842dcd646dce94262f6b",
+                "reference": "eda637e05670e2afeec3842dcd646dce94262f6b",
                 "shasum": ""
             },
             "require": {
@@ -1914,7 +2125,7 @@
             ],
             "description": "Symfony Process Component",
             "homepage": "https://symfony.com",
-            "time": "2017-09-30T14:00:25+00:00"
+            "time": "2018-08-03T11:24:48+00:00"
         }
     ],
     "aliases": [],
diff --git a/vendor/drush/drush/docs/make.md b/vendor/drush/drush/docs/make.md
index 94aebdf3cd..91d0fb9006 100644
--- a/vendor/drush/drush/docs/make.md
+++ b/vendor/drush/drush/docs/make.md
@@ -1,6 +1,8 @@
 
 Drush make
 ----------
+**Drush make is no longer maintained ([#3946](https://github.com/drush-ops/drush/issues/3946#issuecomment-467861007)), use [drupal-composer/drupal-project](https://github.com/drupal-composer/drupal-project) template for Drupal projects!**
+
 Drush make is an extension to drush that can create a ready-to-use drupal site,
 pulling sources from various locations. It does this by parsing a flat text file
 (similar to a drupal `.info` file) and downloading the sources it describes. In
@@ -484,7 +486,7 @@ Properties in the includer takes precedence over the includee.
         type: "module"
         download:
           type: "git"
-          url: "http://git.drupal.org/project/views.git"
+          url: "https://git.drupal.org/project/views.git"
 
 A project or library entry of an included makefile can be removed entirely by
 setting the corresponding key to NULL:
diff --git a/vendor/drush/drush/drush.info b/vendor/drush/drush/drush.info
index 1aa36c4af2..82b325851c 100644
--- a/vendor/drush/drush/drush.info
+++ b/vendor/drush/drush/drush.info
@@ -1 +1 @@
-drush_version=8.1.17
+drush_version=8.2.3
diff --git a/vendor/drush/drush/examples/example.make b/vendor/drush/drush/examples/example.make
index 3736590995..00ad0dc005 100644
--- a/vendor/drush/drush/examples/example.make
+++ b/vendor/drush/drush/examples/example.make
@@ -36,7 +36,7 @@ api = 2
 ; Git clone of Drupal 7.x. Requires the `core` property to be set to 7.x.
 ; projects[drupal][type] = "core"
 ; projects[drupal][download][type] = git
-; projects[drupal][download][url] = http://git.drupal.org/project/drupal.git
+; projects[drupal][download][url] = https://git.drupal.org/project/drupal.git
 
 projects[] = drupal
 
@@ -69,7 +69,7 @@ projects[ctools][version] = 1.3
 
 projects[data][type] = module
 projects[data][download][type] = git
-projects[data][download][url] = http://git.drupal.org/project/views.git
+projects[data][download][url] = https://git.drupal.org/project/views.git
 projects[data][download][revision] = DRUPAL-6--3
 
 ; For projects on drupal.org, some shorthand is available. If any
diff --git a/vendor/drush/drush/examples/example.make.yml b/vendor/drush/drush/examples/example.make.yml
index 4944842476..8bd4d28f80 100644
--- a/vendor/drush/drush/examples/example.make.yml
+++ b/vendor/drush/drush/examples/example.make.yml
@@ -40,7 +40,7 @@ api: 2
 #   drupal:
 #     type: "core"
 #     download:
-#       url: "http://git.drupal.org/project/drupal.git"
+#       url: "https://git.drupal.org/project/drupal.git"
 
 projects:
   drupal:
@@ -80,7 +80,7 @@ projects:
     type: "module"
     download:
       type: "git" # Note, 'git' is the default, no need to specify.
-      url: "http://git.drupal.org/project/views.git"
+      url: "https://git.drupal.org/project/views.git"
       revision: "7.x-3.x"
 
   # For projects on drupal.org, some shorthand is available. If any
diff --git a/vendor/drush/drush/includes/annotationcommand_adapter.inc b/vendor/drush/drush/includes/annotationcommand_adapter.inc
index 17a450c249..07ab489517 100644
--- a/vendor/drush/drush/includes/annotationcommand_adapter.inc
+++ b/vendor/drush/drush/includes/annotationcommand_adapter.inc
@@ -16,6 +16,9 @@
 use Consolidation\AnnotatedCommand\CommandData;
 use Drush\Command\DrushInputAdapter;
 use Drush\Command\DrushOutputAdapter;
+use Drush\Drush;
+use Drush\SiteAlias\AliasManagerAdapterInjector;
+use Drush\SiteAlias\ProcessManagerInjector;
 
 use Symfony\Component\Console\Output\ConsoleOutput;
 
@@ -30,6 +33,10 @@ function annotationcommand_adapter_get_discovery() {
     $discovery = new CommandFileDiscovery();
     $discovery
       ->setIncludeFilesAtBase(false)
+      ->setSearchDepth(3)
+      ->ignoreNamespacePart('contrib', 'Commands')
+      ->ignoreNamespacePart('custom', 'Commands')
+      ->ignoreNamespacePart('src')
       ->setSearchLocations(['Commands'])
       ->setSearchPattern('#.*Commands.php$#');
   }
@@ -99,9 +106,11 @@ function annotationcommand_adapter_commands() {
       unset($annotation_commandfiles[$key]);
     }
   }
-  $commands = annotationcommand_adapter_get_commands($annotation_commandfiles);
+  $site_wide_commands = annotationcommand_adapter_get_commands($annotation_commandfiles);
   $module_service_commands = drush_get_context('DRUSH_MODULE_SERVICE_COMMANDS');
-  return array_merge($commands, $module_service_commands);
+  $commands = array_merge($site_wide_commands, $module_service_commands);
+
+  return $commands;
 }
 
 /**
@@ -231,6 +240,7 @@ function annotationcommand_adapter_process_command() {
 
   $input = new DrushInputAdapter($args, annotationcommand_adapter_get_options($command), $command['command']);
   $output = new DrushOutputAdapter();
+  annotationcommand_adapter_input($input);
   $annotationData = $command['annotations'];
   $commandData = new CommandData(
     $annotationData,
@@ -240,6 +250,15 @@ function annotationcommand_adapter_process_command() {
   $commandData->setIncludeOptionsInArgs($command['add-options-to-arguments']);
   $names = annotationcommand_adapter_command_names($command);
 
+  // For now, the only thing that can be injected is the InputInterface.
+  foreach ($command['injected-classes'] as $injected) {
+    switch ($injected) {
+      case 'Symfony\Component\Console\Input\InputInterface':
+        $commandData->injectInstance($input);
+        break;
+    }
+  }
+
   // n.b.: backend result is set by a post-alter hook.
   $result = $commandprocessor->process(
     $output,
@@ -251,6 +270,14 @@ function annotationcommand_adapter_process_command() {
   return $result;
 }
 
+function annotationcommand_adapter_input($setInput = null) {
+  static $cacheInput = null;
+  if ($setInput != null) {
+    $cacheInput = $setInput;
+  }
+  return $cacheInput;
+}
+
 /**
  * Internal function called by annotationcommand_adapter_commands, which
  * is called by drush_get_commands().
@@ -265,15 +292,21 @@ function annotationcommand_adapter_get_commands($annotation_commandfiles) {
   //   'modules/default_content/src/CliTools/DefaultContentCommands.php' =>
   //   '\\Drupal\\default_content\\CliTools\\DefaultContentCommands',
   foreach ($annotation_commandfiles as $commandfile_path => $commandfile_class) {
-    if (file_exists($commandfile_path)) {
-      $commandhandler = annotationcommand_adapter_create_commandfile_instance($commandfile_path, $commandfile_class);
-      $commands_for_this_commandhandler = annotationcommand_adapter_get_commands_for_commandhandler($commandhandler, $commandfile_path);
-      $commands = array_merge($commands, $commands_for_this_commandhandler);
+    try {
+      if (file_exists($commandfile_path) && ($commandfile_class != '\Drush\Commands\DrushCommands')) {
+        $commandhandler = annotationcommand_adapter_create_commandfile_instance($commandfile_path, $commandfile_class);
+        $commands_for_this_commandhandler = annotationcommand_adapter_get_commands_for_commandhandler($commandhandler, $commandfile_path);
+        $commands = array_merge($commands, $commands_for_this_commandhandler);
+      }
     }
+    catch (\Exception $e) {}
   }
   return $commands;
 }
 
+use Psr\Log\LoggerAwareInterface;
+
+
 /**
  * Create and cache a commandfile instance.
  *
@@ -287,6 +320,22 @@ function annotationcommand_adapter_create_commandfile_instance($commandfile_path
   if (!isset($cache[$commandfile_path])) {
     include_once $commandfile_path;
     $commandhandler = new $commandfile_class;
+
+    // Inject logger if requested
+    if ($commandhandler instanceof LoggerAwareInterface) {
+      $commandhandler->setLogger(Drush::logger());
+    }
+
+    if (class_exists('\Consolidation\SiteAlias\SiteAliasManager')) {
+      $alias_manager_injector = new AliasManagerAdapterInjector();
+      $alias_manager_injector->inflect($commandhandler);
+    }
+
+    if (class_exists('\Consolidation\SiteProcess\ProcessManager')) {
+      $process_manager_injector = new ProcessManagerInjector();
+      $process_manager_injector->inflect($commandhandler);
+    }
+
     $cache[$commandfile_path] = $commandhandler;
   }
   return $cache[$commandfile_path];
@@ -368,6 +417,33 @@ function annotationcommand_adapter_get_command_for_console_command($console_comm
   return $commands;
 }
 
+function annotationcommand_adapter_bootstrap_phase_index($phase)
+{
+  $phaseMap = annotationcommand_adapter_bootstrap_phase_map();
+  if (isset($phaseMap[$phase])) {
+    return $phaseMap[$phase];
+  }
+
+  if ((substr($phase, 0, 16) != 'DRUSH_BOOTSTRAP_') || (!defined($phase))) {
+    return;
+  }
+  return constant($phase);
+}
+
+function annotationcommand_adapter_bootstrap_phase_map()
+{
+  return [
+    'none' => DRUSH_BOOTSTRAP_NONE,
+    'root' => DRUSH_BOOTSTRAP_DRUPAL_ROOT,
+    'site' => DRUSH_BOOTSTRAP_DRUPAL_SITE,
+    'config' => DRUSH_BOOTSTRAP_DRUPAL_CONFIGURATION,
+    'configuration' => DRUSH_BOOTSTRAP_DRUPAL_CONFIGURATION,
+    'db' => DRUSH_BOOTSTRAP_DRUPAL_DATABASE,
+    'database' => DRUSH_BOOTSTRAP_DRUPAL_DATABASE,
+    'full' => DRUSH_BOOTSTRAP_DRUPAL_FULL,
+  ];
+}
+
 /**
  * Convert an annotated command command handler object into a Drush $command record.
  *
@@ -378,6 +454,9 @@ function annotationcommand_adapter_get_command_for_console_command($console_comm
  * @return array Drush $command record
  */
 function annotationcommand_adapter_get_commands_for_commandhandler($commandhandler, $commandfile_path, $includeAllPublicMethods = true) {
+  if (!$commandhandler) {
+    return [];
+  }
   $cache =& drush_get_context('DRUSH_ANNOTATION_COMMANDS_FOR_COMMANDFILE');
   if (isset($cache[$commandfile_path])) {
     return $cache[$commandfile_path];
@@ -401,7 +480,8 @@ function annotationcommand_adapter_get_commands_for_commandhandler($commandhandl
     $handle_remote_commands = $commandinfo->getAnnotation('handle-remote-commands') == 'true';
     // TODO: if there is no 'bootstrap' annotation, maybe we should default to NONE instead of FULL?
     if ($bootstrap = $commandinfo->getAnnotation('bootstrap')) {
-      $bootstrap = constant($bootstrap);
+      // Convert from the bootstrap string to the appropriate bootstrap phase index
+      $bootstrap = annotationcommand_adapter_bootstrap_phase_index($bootstrap);
     }
     $command = [
       'name' => $command_name,
@@ -442,6 +522,7 @@ function annotationcommand_adapter_get_commands_for_commandhandler($commandhandl
       }
     }
     $command['annotations'] = $commandinfo->getAnnotations();
+    $command['injected-classes'] = $commandinfo->getInjectedClasses();
     // If the command has a '@return' annotation, then
     // remember information we will need to use the output formatter.
     $returnType = $commandinfo->getReturnType();
diff --git a/vendor/drush/drush/includes/command.inc b/vendor/drush/drush/includes/command.inc
index e0d57cfa2d..3e1821a91b 100644
--- a/vendor/drush/drush/includes/command.inc
+++ b/vendor/drush/drush/includes/command.inc
@@ -847,6 +847,7 @@ function drush_parse_args() {
   // into options (starting with a '-') and arguments.
   $arguments = $options = array();
 
+  $verbosity = 0;
   for ($i = 1; $i < count($args); $i++) {
     $opt = $args[$i];
     // We set $command_args to NULL until the first argument that is not
@@ -861,7 +862,11 @@ function drush_parse_args() {
       if (strlen($opt) > 2 && $opt{1} != "-") {
         // Each char becomes a key of its own.
         for ($j = 1; $j < strlen($opt); $j++) {
-          $options[substr($opt, $j, 1)] = TRUE;
+          $opt_char = substr($opt, $j, 1);
+          $options[$opt_char] = TRUE;
+          if ($opt_char == 'v') {
+            ++$verbosity;
+          }
         }
       }
       // Do we have a longopt (starting with '--')?
@@ -912,6 +917,9 @@ function drush_parse_args() {
       }
     }
   }
+  if ($verbosity >= 3) {
+    $options['debug'] = TRUE;
+  }
   // If no arguments are specified, then the command will
   // be either 'help' or 'version' (the latter if --version is specified)
   // @todo: it would be handy if one could do `drush @remote st --help` and
diff --git a/vendor/drush/drush/includes/drush.inc b/vendor/drush/drush/includes/drush.inc
index 2478b62d2d..14da678140 100644
--- a/vendor/drush/drush/includes/drush.inc
+++ b/vendor/drush/drush/includes/drush.inc
@@ -328,6 +328,7 @@ function drush_get_global_options($brief = FALSE) {
     $options['redirect-port']       = array('hidden' => TRUE, 'never-propagate' => TRUE, 'description' => 'Used by the user-login command to specify the redirect port on the local machine; it therefore would not do to pass this to the remote machines.');
     $options['cache-clear']         = array('propagate' => TRUE, 'description' => 'If 0, Drush skips normal cache clearing; the caller should then clear if needed.', 'example-value' => '0', );
     $options['local']               = array('propagate' => TRUE, 'description' => 'Don\'t look in global locations for commandfiles, config, and site aliases');
+    $options['no-interaction']               = array('hidden' => TRUE, 'description' => 'Synonym for --yes; provided for light forward-compatibility with future Drush versions.');
     $options['ignored-directories'] = array('propagate' => TRUE, 'description' => "Exclude directories when searching for files in drush_scan_directory().", 'example-value' => 'node_modules,bower_components');
 
     $command = array(
diff --git a/vendor/drush/drush/includes/environment.inc b/vendor/drush/drush/includes/environment.inc
index 0082207828..e6c9933891 100644
--- a/vendor/drush/drush/includes/environment.inc
+++ b/vendor/drush/drush/includes/environment.inc
@@ -10,6 +10,7 @@
  * @see includes/bootstrap.inc
  */
 
+use Drush\Drush;
 use Drush\Log\LogLevel;
 use Webmozart\PathUtil\Path;
 
@@ -17,7 +18,7 @@
  * Log PHP errors to the Drush log. This is in effect until Drupal's error
  * handler takes over.
  */
-function drush_error_handler($errno, $message, $filename, $line, $context) {
+function drush_error_handler($errno, $message, $filename, $line) {
   // E_DEPRECATED was added in PHP 5.3. Drupal 6 will not fix all the
   // deprecated errors, but suppresses them. So we suppress them as well.
   if (defined('E_DEPRECATED')) {
@@ -139,6 +140,10 @@ function drush_cwd() {
   // Save original working dir case some command wants it.
   drush_set_context('DRUSH_OLDCWD', $path);
 
+  // Make a read-only copy of the original cwd at env.cwd
+  // for forwards-compatibility
+  drush_set_option('env.cwd', $path);
+
   return $path;
 }
 
@@ -608,9 +613,7 @@ function _drush_test_os($os, $os_list_to_check) {
  * Read the drush info file.
  */
 function drush_read_drush_info() {
-  $drush_info_file = dirname(__FILE__) . '/../drush.info';
-
-  return parse_ini_file($drush_info_file);
+  return Drush::ReadDrushInfo();
 }
 
 /**
diff --git a/vendor/drush/drush/includes/preflight.inc b/vendor/drush/drush/includes/preflight.inc
index d832365b53..c8e939b686 100644
--- a/vendor/drush/drush/includes/preflight.inc
+++ b/vendor/drush/drush/includes/preflight.inc
@@ -5,6 +5,7 @@
  * Preflight, postflight and shutdown code.
  */
 
+use Drush\Drush;
 use Drush\Log\LogLevel;
 
 /**
@@ -143,6 +144,10 @@ function drush_preflight_prepare() {
   drush_set_context('DRUSH_VENDOR_PATH', dirname($vendor_path));
   drush_set_context('DRUSH_CLASSLOADER', $classloader);
 
+  // Make a read-only copy of the vendor path at drush.vendor-dir
+  // for forwards-compatibility
+  drush_set_option('drush.vendor-dir', dirname($vendor_path));
+
   // Can't log until we have a logger, so we'll create this ASAP.
   _drush_create_default_logger();
 
@@ -165,17 +170,20 @@ function drush_preflight_prepare() {
     return; // An error was logged.
   }
 
-  $drush_info = drush_read_drush_info();
-  define('DRUSH_VERSION', $drush_info['drush_version']);
-  $version_parts = explode('.', DRUSH_VERSION);
-  define('DRUSH_MAJOR_VERSION', $version_parts[0]);
-  define('DRUSH_MINOR_VERSION', $version_parts[1]);
+  // For backwards compatibility. Prefer the static accessors.
+  define('DRUSH_VERSION', Drush::getVersion());
+  define('DRUSH_MAJOR_VERSION', Drush::getMajorVersion());
+  define('DRUSH_MINOR_VERSION', Drush::getMinorVersion());
 
   define('DRUSH_REQUEST_TIME', microtime(TRUE));
 
   drush_set_context('argc', $GLOBALS['argc']);
   drush_set_context('argv', $GLOBALS['argv']);
 
+  // Make a read-only copy of the arguments at runtime.argv
+  // for forwards-compatibility
+  drush_set_option('runtime.argv', $GLOBALS['argv']);
+
   // Set an error handler and a shutdown function
   set_error_handler('drush_error_handler');
   register_shutdown_function('drush_shutdown');
@@ -325,6 +333,13 @@ function drush_preflight_root() {
   if (!isset($root)) {
     $root = drush_locate_root();
   }
+  // If the old ways do not find a Drupal root, use DrupalFinder.
+  if (!$root) {
+    $finder = new \DrupalFinder\DrupalFinder();
+    if ($finder->locateRoot(getcwd())) {
+      $root = $finder->getDrupalRoot();
+    }
+  }
   if ($root) {
     $root = realpath($root);
   }
@@ -382,7 +397,7 @@ function _drush_preflight_global_options() {
 
   // Backend implies affirmative unless negative is explicitly specified
   drush_set_context('DRUSH_NEGATIVE',    drush_get_option('no', FALSE));
-  drush_set_context('DRUSH_AFFIRMATIVE', drush_get_option(array('yes', 'pipe'), FALSE) || (drush_get_context('DRUSH_BACKEND') && !drush_get_context('DRUSH_NEGATIVE')));
+  drush_set_context('DRUSH_AFFIRMATIVE', drush_get_option(array('yes', 'pipe', 'no-interaction'), FALSE) || (drush_get_context('DRUSH_BACKEND') && !drush_get_context('DRUSH_NEGATIVE')));
 
   // Pipe implies quiet.
   drush_set_context('DRUSH_QUIET', drush_get_option(array('quiet', 'pipe')));
@@ -441,10 +456,12 @@ function _drush_preflight_columns() {
   if (!($columns = getenv('COLUMNS') ?: 0)) {
     // Trying to export the columns using stty.
     exec('stty size 2>&1', $columns_output, $columns_status);
-    if (!$columns_status) $columns = preg_replace('/\d+\s(\d+)/', '$1', $columns_output[0], -1, $columns_count);
-
+    $matched = FALSE;
+    if (!$columns_status && $matched = preg_match('/^\d+\s(\d+)$/', $columns_output[0], $matches, 0)) {
+        $columns = $matches[1];
+    }
     // If stty fails and Drush us running on Windows are we trying with mode con.
-    if (($columns_status || !$columns_count) && drush_is_windows()) {
+    if (($columns_status || !$matched) && drush_is_windows()) {
       $columns_output = array();
       exec('mode con', $columns_output, $columns_status);
       if (!$columns_status && is_array($columns_output)) {
@@ -611,7 +628,7 @@ function drush_preflight_command_dispatch() {
     $local_drush = find_wrapper_or_launcher($root);
   }
   $is_local = drush_get_option('local');
-  $must_use_site_local = !empty($root) && !empty($local_drush) && empty($is_local);
+  $must_use_site_local = !empty($root) && !empty($local_drush) && !empty($is_local);
   // If the command sets the 'handle-remote-commands' flag, then we will short-circuit
   // remote command dispatching and site-list command dispatching, and always let
   // the command handler run on the local machine.
diff --git a/vendor/drush/drush/includes/sitealias.inc b/vendor/drush/drush/includes/sitealias.inc
index fce233d811..be109498ca 100644
--- a/vendor/drush/drush/includes/sitealias.inc
+++ b/vendor/drush/drush/includes/sitealias.inc
@@ -1646,7 +1646,7 @@ function drush_convert_db_from_db_url($db_url) {
       );
       $url = (object)array_map('urldecode', $url);
       $db_spec = array(
-        'driver'   => $url->scheme == 'mysqli' ? 'mysql' : $url->scheme,
+        'driver'   => $url->scheme == 'mysqli' && extension_loaded('mysql') ? 'mysql' : $url->scheme,
         'username' => $url->user,
         'password' => $url->pass,
         'host' => $url->host,
@@ -1659,6 +1659,13 @@ function drush_convert_db_from_db_url($db_url) {
   return $db_spec;
 }
 
+function drush_convert_db_url($db_url) {
+  if (extension_loaded('mysql') && !extension_loaded('mysqli')) {
+    return preg_replace('#^mysqli://#', 'mysql://', $db_url);;
+  }
+  return preg_replace('#^mysql://#', 'mysqli://', $db_url);
+}
+
 /**
  * Convert from an old-style database URL to an array of database settings
  *
diff --git a/vendor/drush/drush/lib/Drush/Commands/DrushCommands.php b/vendor/drush/drush/lib/Drush/Commands/DrushCommands.php
new file mode 100644
index 0000000000..346c50dfb9
--- /dev/null
+++ b/vendor/drush/drush/lib/Drush/Commands/DrushCommands.php
@@ -0,0 +1,102 @@
+<?php
+namespace Drush\Commands;
+
+use Drush\Command\DrushInputAdapter;
+use Drush\Command\DrushOutputAdapter;
+use Drush\Drush;
+use Drush\SiteAlias\ProcessManager;
+use Psr\Log\LoggerAwareInterface;
+use Psr\Log\LoggerAwareTrait;
+use Psr\Log\LoggerInterface;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Input\InputOption;
+use Symfony\Component\Console\Input\OutputInterface;
+use Symfony\Component\Console\Style\SymfonyStyle;
+
+/**
+ * DrushCommands provides access to configuration, IO and the logger,
+ * and also provides a "printFile" convenience method for displaying
+ * the contents of a file with a pager.
+ *
+ * Drush extensions that use ONLY the facilities provided by this class,
+ * plus any APIs provided by Drupal core and the module they are bundled
+ * with should work with both Drush 8 and Drush 9.
+ */
+abstract class DrushCommands implements LoggerAwareInterface
+{
+    // This is more readable.
+    const REQ=InputOption::VALUE_REQUIRED;
+    const OPT=InputOption::VALUE_OPTIONAL;
+
+    use LoggerAwareTrait;
+
+    protected $io;
+
+    public function __construct()
+    {
+    }
+
+    /**
+     * Return an object that has the same signature as a Consolidation\Config\ConfigInterface
+     */
+    protected function getConfig()
+    {
+        return Drush::config();
+    }
+
+    /**
+     * @return ProcessManager
+     */
+    public function processManager()
+    {
+        return Drush::processManager();
+    }
+
+    /**
+     * @return SymfonyStyle
+     */
+    protected function io()
+    {
+        if (!$this->io) {
+            $this->io = new SymfonyStyle($this->input(), $this->output());
+        }
+        return $this->io;
+    }
+
+    /**
+     * @return InputInterface
+     */
+    protected function input()
+    {
+        return Drush::input();
+    }
+
+    /**
+     * @return OutputInterface
+     */
+    protected function output()
+    {
+        return Drush::output();
+    }
+
+    /**
+     * Returns a logger object.
+     *
+     * @return LoggerInterface
+     */
+    protected function logger()
+    {
+        return $this->logger;
+    }
+
+    /**
+     * Print the contents of a file.
+     *
+     * @param string $file
+     *   Full path to a file.
+     */
+    protected function printFile($file)
+    {
+        drush_print_file($file);
+    }
+}
diff --git a/vendor/drush/drush/lib/Drush/ConfigAdapter.php b/vendor/drush/drush/lib/Drush/ConfigAdapter.php
new file mode 100644
index 0000000000..3cd4f49694
--- /dev/null
+++ b/vendor/drush/drush/lib/Drush/ConfigAdapter.php
@@ -0,0 +1,110 @@
+<?php
+namespace Drush;
+
+use Consolidation\Config\ConfigInterface;
+
+/**
+ * Note that DrushConfig deliberately does NOT implement the interface
+ * Consolidation\Config\ConfigInterface because consolidation/config
+ * is NOT a requirement of Drush 8. DrushConfig must therefore work in
+ * the absence of consolidation/config.
+ *
+ * Drush 8 uses some components optionally, if they are available
+ * (e.g. the AliasManager and the ProcessManager). Drush never calls
+ * these directly, but makes them available to Drush extensions that
+ * want to use them. In these instances, the needed dependencies should
+ * be required in the composer.json of the extension that uses it.
+ *
+ * This adapter simply converts DrushConfig into an equivalent object
+ * that implements ConfigInterface, so that it may be passed to
+ * objects that typehint their parameters as ConfigInterface.
+ */
+class ConfigAdapter implements ConfigInterface
+{
+    protected $config;
+
+    public function __construct($config)
+    {
+        $this->config = $config;
+    }
+
+    /**
+     * @inheritdoc
+     */
+    public function has($key)
+    {
+        return $this->config->has($key);
+    }
+
+    /**
+     * @inheritdoc
+     */
+    public function get($key, $defaultFallback = null)
+    {
+        return $this->config->get($key, $defaultFallback);
+    }
+
+    /**
+     * @inheritdoc
+     */
+    public function set($key, $value)
+    {
+        $this->config->set($key, $value);
+    }
+
+    /**
+     * @inheritdoc
+     */
+    public function import($data)
+    {
+        return $this->config->import($data);
+    }
+
+    /**
+     * @inheritdoc
+     */
+    public function replace($data)
+    {
+        $this->config->replace($data);
+    }
+
+    /**
+     * @inheritdoc
+     */
+    public function combine($data)
+    {
+        return $this->config->combine($data);
+    }
+
+    /**
+     * @inheritdoc
+     */
+    public function export()
+    {
+        return $this->config->export();
+    }
+
+    /**
+     * @inheritdoc
+     */
+    public function hasDefault($key)
+    {
+        return $this->config->hasDefault($key);
+    }
+
+    /**
+     * @inheritdoc
+     */
+    public function getDefault($key, $defaultFallback = null)
+    {
+        return $this->config->getDefault($key, $defaultFallback);
+    }
+
+    /**
+     * @inheritdoc
+     */
+    public function setDefault($key, $value)
+    {
+        return $this->setDefault($key, $value);
+    }
+}
diff --git a/vendor/drush/drush/lib/Drush/Drush.php b/vendor/drush/drush/lib/Drush/Drush.php
new file mode 100644
index 0000000000..1a311b6f24
--- /dev/null
+++ b/vendor/drush/drush/lib/Drush/Drush.php
@@ -0,0 +1,413 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drush.
+ */
+namespace Drush;
+
+use Consolidation\SiteAlias\SiteAliasInterface;
+use Consolidation\SiteAlias\SiteAliasManager;
+use Consolidation\SiteAlias\SiteAliasManagerAwareInterface;
+use Consolidation\SiteAlias\SiteAliasManagerInterface;
+use Consolidation\SiteProcess\ProcessBase;
+use Consolidation\SiteProcess\SiteProcess;
+use Drush\Command\DrushOutputAdapter;
+use Drush\ConfigAdapter;
+use Drush\DrushConfig;
+use Drush\SiteAlias\ProcessManager;
+use Drush\SiteAlias\AliasManagerAdapter;
+use Psr\Log\LoggerInterface;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+use Symfony\Component\Process\Process;
+
+/**
+ * Static Service provider.
+ *
+ * This is a back-port of the \Drush\Drush class from Drush 9.
+ * Drush 8 does not use a dependency injection container; however,
+ * some objects are injected into command files, and these should
+ * be used preferentially whenever possible.
+ *
+ * @endcode
+ */
+class Drush
+{
+    protected static $config = null;
+    protected static $aliasManager = null;
+    protected static $processManager = null;
+    protected static $input = null;
+    protected static $output = null;
+    protected static $drushVersion = null;
+    protected static $drushMajorVersion = null;
+    protected static $drushMinorVersion = null;
+
+    /**
+     * Number of seconds before timeout for subprocesses. Can be customized via setTimeout() method.
+     *
+     * @var int
+     */
+    const TIMEOUT = 14400;
+
+    /**
+     * @return int
+     */
+    public static function getTimeout()
+    {
+        return self::TIMEOUT;
+    }
+
+    /**
+     * Return the current Drush version.
+     */
+    public static function getVersion()
+    {
+        if (!isset(self::$drushVersion)) {
+            $drush_info = self::ReadDrushInfo();
+            self::$drushVersion = $drush_info['drush_version'];
+        }
+
+        return self::$drushVersion;
+    }
+
+    /**
+     * Return the Drush major version, e.g. 8, 9 or 10
+     */
+    public static function getMajorVersion()
+    {
+        if (!isset(self::$drushMajorVersion)) {
+            $version_parts = explode('.', self::getVersion());
+            self::$drushMajorVersion = $version_parts[0];
+        }
+
+        return self::$drushMajorVersion;
+    }
+
+    /**
+     * Return the Drush minor version, e.g. the minor version of
+     * Drush 9.5.2 is "5".
+     */
+    public static function getMinorVersion()
+    {
+        if (!isset(self::$drushMinorVersion)) {
+            $version_parts = explode('.', self::getVersion());
+            self::$drushMinorVersion = $version_parts[1];
+        }
+
+        return self::$drushMinorVersion;
+    }
+
+    /**
+     * Read the drush info file.
+     */
+    public static function ReadDrushInfo()
+    {
+        $drush_info_file = dirname(dirname(__DIR__)) . '/drush.info';
+
+        return parse_ini_file($drush_info_file);
+    }
+
+    // public static function setContainer(ContainerInterface $container)
+
+    // public static function unsetContainer()
+
+    // public static function getContainer()
+
+    public static function hasContainer()
+    {
+        return false;
+    }
+
+    // public static function getApplication()
+
+    // public static function runner()
+
+    // public static function service($id)
+
+    public static function hasService($id)
+    {
+        return false;
+    }
+
+    // public static function commandFactory()
+
+    /**
+     * Return the Drush logger object.
+     *
+     * @return LoggerInterface
+     *
+     * @deprecated Use injected logger if possible
+     */
+    public static function logger()
+    {
+        return drush_get_context('DRUSH_LOGGER');;
+    }
+
+    /**
+     * Return the configuration object
+     *
+     * @return \Drush\DrushConfig
+     *
+     * @deprecated Use injected config if possible
+     */
+    public static function config()
+    {
+        if (!static::$config) {
+            static::$config = new DrushConfig();
+        }
+
+        return static::$config;
+    }
+
+    /**
+     * @return SiteAliasManager
+     *
+     * @deprecated Use injected alias manager if possible
+     */
+    public static function aliasManager()
+    {
+        if (!static::$aliasManager) {
+            static::$aliasManager = new AliasManagerAdapter();
+        }
+
+        return static::$aliasManager;
+    }
+
+    /**
+     * @return ProcessManager
+     *
+     * @deprecated Use injected process manager instead. @see Drush::drush()
+     */
+    public static function processManager()
+    {
+        if (!static::$processManager) {
+            static::$processManager = new ProcessManager();
+            ProcessManager::addTransports(static::$processManager);
+            static::$processManager->setConfig(new ConfigAdapter(new DrushConfig()));
+            // TODO: static::$processManager->setConfigRuntime()
+        }
+
+        return static::$processManager;
+    }
+
+    /**
+     * Return the input object
+     *
+     * @return InputInterface
+     */
+    public static function input()
+    {
+        if (!static::$input) {
+            static::$input = annotationcommand_adapter_input();
+        }
+
+        return static::$input;
+    }
+
+    /**
+     * Return the output object
+     *
+     * @return OutputInterface
+     */
+    public static function output()
+    {
+        if (!static::$output) {
+            static::$output = new DrushOutputAdapter();
+        }
+
+        return static::$output;
+    }
+
+    /**
+     * Run a Drush command on a site alias (or @self).
+     *
+     * Tip: Use injected process manager instead of this method. See below.
+     *
+     * A class should use ProcessManagerAwareInterface / ProcessManagerAwareTrait
+     * in order to have the Process Manager injected by Drush's DI container.
+     * For example:
+     *
+     *     use Consolidation\SiteProcess\ProcessManagerAwareTrait;
+     *     use Consolidation\SiteProcess\ProcessManagerAwareInterface;
+     *
+     *     abstract class DrushCommands implements ProcessManagerAwareInterface ...
+     *     {
+     *         use ProcessManagerAwareTrait;
+     *     }
+     *
+     * Since DrushCommands already uses ProcessManagerAwareTrait, all Drush
+     * commands may use the process manager to call other Drush commands.
+     * Other classes will need to ensure that the process manager is injected
+     * as shown above.
+     *
+     * Note, however, that an alias record is required to use the `drush` method.
+     * The alias manager will provide an alias record, but the alias manager is
+     * not injected by default into Drush commands. In order to use it, it is
+     * necessary to use SiteAliasManagerAwareTrait:
+     *
+     *     use Consolidation\SiteAlias\SiteAliasManagerAwareInterface;
+     *     use Consolidation\SiteAlias\SiteAliasManagerAwareTrait;
+     *
+     *     class SiteInstallCommands extends DrushCommands implements SiteAliasManagerAwareInterface
+     *     {
+     *         use SiteAliasManagerAwareTrait;
+     *
+     *         public function install(array $profile, ...)
+     *         {
+     *             $selfRecord = $this->siteAliasManager()->getSelf();
+     *             $args = ['system.site', ...];
+     *             $options = ['yes' => true];
+     *             $process = $this->processManager()->drush(selfRecord, 'config-set', $args, $options);
+     *             $process->mustRun();
+     *         }
+     *     }
+     *
+     * Objects that are fetched from the DI container, or any Drush command will
+     * automatically be given a reference to the alias manager if SiteAliasManagerAwareTrait
+     * is used. Other objects will need to be manually provided with a reference
+     * to the alias manager once it is created (call $obj->setAliasManager($aliasManager);).
+     *
+     * Clients that are using Drush::drush(), and need a reference to the alias
+     * manager may use Drush::aliasManager().
+     *
+     * @param SiteAliasInterface $siteAlias
+     * @param string $command
+     * @param array $args
+     * @param array $options
+     * @param array $options_double_dash
+     * @return SiteProcess
+     */
+    public static function drush(SiteAliasInterface $siteAlias, $command, $args = [], $options = [], $options_double_dash = [])
+    {
+        return static::processManager()->drush($siteAlias, $command, $args, $options, $options_double_dash);
+    }
+
+    /**
+     * Run a bash fragment on a site alias. U
+     *
+     * Use Drush::drush() instead of this method when calling Drush.
+     * Tip: Consider using injected process manager instead of this method. @see \Drush\Drush::drush().
+     *
+     * @param SiteAliasInterface $siteAlias
+     * @param array $args
+     * @param array $options
+     * @param array $options_double_dash
+     * @return ProcessBase
+     */
+    public static function siteProcess(SiteAliasInterface $siteAlias, $args = [], $options = [], $options_double_dash = [])
+    {
+        return static::processManager()->siteProcess($siteAlias, $args, $options, $options_double_dash);
+    }
+
+    /**
+     * Run a bash fragment locally.
+     *
+     * The timeout parameter on this method doesn't work. It exists for compatibility with parent.
+     * Call this method to get a Process and then call setters as needed.
+     *
+     * Tip: Consider using injected process manager instead of this method. @see \Drush\Drush::drush().
+     *
+     * @param string|array   $commandline The command line to run
+     * @param string|null    $cwd         The working directory or null to use the working dir of the current PHP process
+     * @param array|null     $env         The environment variables or null to use the same environment as the current PHP process
+     * @param mixed|null     $input       The input as stream resource, scalar or \Traversable, or null for no input
+     * @param int|float|null $timeout     The timeout in seconds or null to disable
+     * @param array          $options     An array of options for proc_open
+     *
+     * @return ProcessBase
+     *   A wrapper around Symfony Process.
+     */
+    public static function process($commandline, $cwd = null, array $env = null, $input = null, $timeout = 60)
+    {
+        return static::processManager()->process($commandline, $cwd, $env, $input, $timeout);
+    }
+
+    /**
+     * Create a Process instance from a commandline string.
+     *
+     * Tip: Consider using injected process manager instead of this method. @see \Drush\Drush::drush().
+     *
+     * @param string $command The commandline string to run
+     * @param string|null $cwd     The working directory or null to use the working dir of the current PHP process
+     * @param array|null $env     The environment variables or null to use the same environment as the current PHP process
+     * @param mixed|null $input   The input as stream resource, scalar or \Traversable, or null for no input
+     * @param int|float|null $timeout The timeout in seconds or null to disable
+     * @return Process
+     */
+    public static function shell($command, $cwd = null, array $env = null, $input = null, $timeout = 60)
+    {
+        return static::processManager()->shell($command, $cwd, $env, $input, $timeout);
+    }
+
+    /**
+     * Return the path to this Drush.
+     *
+     * @deprecated Inject configuration and use $this->getConfig()->drushScript().
+     */
+    public static function drushScript()
+    {
+        return \Drush\Drush::config()->drushScript();
+    }
+
+    /**
+     * Return 'true' if we are in simulated mode
+     *
+     * @deprecated Inject configuration and use $this->getConfig()->simulate().
+     */
+    public static function simulate()
+    {
+        return \Drush\Drush::config()->simulate();
+    }
+
+    /**
+     * Return 'true' if we are in backend mode
+     *
+     * @deprecated Inject configuration and use $this->getConfig()->backend().
+     */
+    public static function backend()
+    {
+        return \Drush\Drush::config()->backend();
+    }
+
+    /**
+     * Return 'true' if we are in affirmative mode
+     */
+    public static function affirmative()
+    {
+        return drush_get_context('DRUSH_AFFIRMATIVE');
+    }
+
+    /**
+     * Return 'true' if we are in negative mode
+     */
+    public static function negative()
+    {
+        return drush_get_context('DRUSH_NEGATIVE');
+    }
+
+    /**
+     * Return 'true' if we are in verbose mode
+     */
+    public static function verbose()
+    {
+        return drush_get_context('DRUSH_VERBOSE');
+    }
+
+    /**
+     * Return 'true' if we are in debug mode
+     */
+    public static function debug()
+    {
+        return drush_get_context('DRUSH_DEBUG');
+    }
+
+    // public static function bootstrapManager()
+
+    // public static function bootstrap()
+
+    public static function redispatchOptions()
+    {
+        return drush_redispatch_get_options();
+    }
+}
diff --git a/vendor/drush/drush/lib/Drush/DrushConfig.php b/vendor/drush/drush/lib/Drush/DrushConfig.php
new file mode 100644
index 0000000000..2f9235034a
--- /dev/null
+++ b/vendor/drush/drush/lib/Drush/DrushConfig.php
@@ -0,0 +1,138 @@
+<?php
+namespace Drush;
+
+use Dflydev\DotAccessData\Data;
+
+/**
+ * Provides minimal access to Drush configuration in a way that is
+ * forward-compatible with the Consolidation\Config classes used
+ * in Drush 9.
+ */
+class DrushConfig
+{
+    /**
+     * Determine if a non-default config value exists in a non-default context.
+     */
+    public function has($key)
+    {
+        $contexts = drush_context_names();
+        $contexts = array_filter($contexts, function ($item) { return $item != 'default'; });
+
+        foreach ($contexts as $context) {
+            $value = _drush_get_option($option, drush_get_context($context));
+
+            if ($value !== NULL) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Fetch a configuration value
+     *
+     * @param string $key Which config item to look up
+     * @param string|null $default Value to use when $key does not exist
+     *
+     * @return mixed
+     */
+    public function get($key, $default = null)
+    {
+        return drush_get_option($key, $default);
+    }
+
+    /**
+     * Set a config value
+     *
+     * @param string $key
+     * @param mixed $value
+     *
+     * @return $this
+     */
+    public function set($key, $value)
+    {
+        drush_set_option($key, $value);
+    }
+
+    /**
+     * export returns a collection of all of the
+     * configuration available in the config object, although
+     * in truth this list is pared down to include only
+     * those values that are common to Drush 8 and Drush 9.
+     */
+    public function export()
+    {
+        $data = new Data;
+        $contextData = drush_get_merged_options();
+        $cliData = drush_get_context('cli');
+        foreach ($cliData as $key => $value) {
+            $data->set("options.$key", $value);
+            unset($contextData[$key]);
+        }
+        foreach ($contextData as $key => $value) {
+            $data->set($key, $value);
+        }
+        return $data->export();
+    }
+
+    /**
+     * Return the default value for a given configuration item.
+     *
+     * @param string $key
+     *
+     * @return mixed
+     */
+    public function hasDefault($key)
+    {
+        $value = $this->getDefault($key);
+        return $value != null;
+    }
+
+    /**
+     * Return the default value for a given configuration item.
+     *
+     * @param string $key
+     * @param mixed $default
+     *
+     * @return mixed
+     */
+    public function getDefault($key, $default = null)
+    {
+        return drush_get_option($key, $default, 'default');
+    }
+
+    /**
+     * Set the default value for a configuration setting. This allows us to
+     * set defaults either before or after more specific configuration values
+     * are loaded. Keeping defaults separate from current settings also
+     * allows us to determine when a setting has been overridden.
+     *
+     * @param string $key
+     * @param string $value
+     */
+    public function setDefault($key, $value)
+    {
+        drush_set_default($key, $value);
+    }
+
+    /**
+     * Determine whether we are in 'backend' mode
+     */
+    public function backend()
+    {
+        return drush_get_context('DRUSH_BACKEND');
+    }
+
+    /**
+     * Determine whether we are in 'simulate' mode
+     */
+    public function simulate()
+    {
+        return drush_get_context('DRUSH_SIMULATE');
+    }
+
+    public function drushScript()
+    {
+        return DRUSH_COMMAND;
+    }
+}
diff --git a/vendor/drush/drush/lib/Drush/Exceptions/UserAbortException.php b/vendor/drush/drush/lib/Drush/Exceptions/UserAbortException.php
new file mode 100644
index 0000000000..f05ee0cb4c
--- /dev/null
+++ b/vendor/drush/drush/lib/Drush/Exceptions/UserAbortException.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Drush\Exceptions;
+
+/**
+ * Throw an exception indicating that the user cancelled the operation.
+ */
+class UserAbortException extends \Exception
+{
+    public function __construct($message = "Cancelled.", $code = 0, \Exception $previous = null)
+    {
+        parent::__construct($message, $code, $previous);
+    }
+}
diff --git a/vendor/drush/drush/lib/Drush/Log/Logger.php b/vendor/drush/drush/lib/Drush/Log/Logger.php
index 81075898ce..f2d6b5b758 100644
--- a/vendor/drush/drush/lib/Drush/Log/Logger.php
+++ b/vendor/drush/drush/lib/Drush/Log/Logger.php
@@ -38,6 +38,9 @@ public function log($level, $message, array $context = array()) {
       if (!isset($entry['memory'])) {
         $entry['memory'] = memory_get_usage();
       }
+      if (!isset($entry['timestamp'])) {
+        $entry['timestamp'] = microtime(TRUE);
+      }
 
       // Drush\Log\Logger should take over all of the responsibilities
       // of drush_log, including caching the log messages and sending
diff --git a/vendor/drush/drush/lib/Drush/SiteAlias/AliasManagerAdapter.php b/vendor/drush/drush/lib/Drush/SiteAlias/AliasManagerAdapter.php
new file mode 100644
index 0000000000..63704c26da
--- /dev/null
+++ b/vendor/drush/drush/lib/Drush/SiteAlias/AliasManagerAdapter.php
@@ -0,0 +1,64 @@
+<?php
+namespace Drush\SiteAlias;
+
+use Consolidation\SiteAlias\SiteAliasManagerAwareInterface;
+use Consolidation\SiteAlias\SiteAliasManagerInterface;
+use Consolidation\SiteAlias\SiteAlias;
+
+class AliasManagerAdapter implements SiteAliasManagerInterface
+{
+    /**
+     * @inheritdoc
+     */
+    public function searchLocations()
+    {
+        // not supported
+        return [];
+    }
+
+    /**
+     * @inheritdoc
+     */
+    public function get($name)
+    {
+        return $this->getAlias($name);
+    }
+
+    /**
+     * @inheritdoc
+     */
+    public function getSelf()
+    {
+        return $this->getAlias('@self');
+    }
+
+    /**
+     * @inheritdoc
+     */
+    public function getAlias($aliasName)
+    {
+        $record = drush_sitealias_get_record($aliasName);
+
+        // TODO: Convert $record to new site alias layout
+
+        return new SiteAlias($record, $aliasName);
+    }
+
+    /**
+     * @inheritdoc
+     */
+    public function getMultiple($name = '')
+    {
+        // Not supported
+        return false;
+    }
+
+    /**
+     * @inheritdoc
+     */
+    public function listAllFilePaths($location = '')
+    {
+        // Not supported
+        return [];
+    }
+}
diff --git a/vendor/drush/drush/lib/Drush/SiteAlias/AliasManagerAdapterInjector.php b/vendor/drush/drush/lib/Drush/SiteAlias/AliasManagerAdapterInjector.php
new file mode 100644
index 0000000000..864626ad38
--- /dev/null
+++ b/vendor/drush/drush/lib/Drush/SiteAlias/AliasManagerAdapterInjector.php
@@ -0,0 +1,18 @@
+<?php
+namespace Drush\SiteAlias;
+
+use Consolidation\SiteAlias\SiteAliasManagerAwareInterface;
+use Consolidation\SiteAlias\SiteAliasManagerInterface;
+use Drush\Drush;
+
+class AliasManagerAdapterInjector
+{
+    protected static $aliasManager = null;
+
+    public function inflect($command)
+    {
+        if ($command instanceof SiteAliasManagerAwareInterface) {
+            $command->setSiteAliasManager(Drush::aliasManager());
+        }
+    }
+}
diff --git a/vendor/drush/drush/lib/Drush/SiteAlias/ProcessManager.php b/vendor/drush/drush/lib/Drush/SiteAlias/ProcessManager.php
new file mode 100644
index 0000000000..0060946cc3
--- /dev/null
+++ b/vendor/drush/drush/lib/Drush/SiteAlias/ProcessManager.php
@@ -0,0 +1,159 @@
+<?php
+namespace Drush\SiteAlias;
+
+use Consolidation\SiteProcess\ProcessManager as ConsolidationProcessManager;
+
+use Consolidation\SiteAlias\SiteAliasInterface;
+use Consolidation\SiteProcess\Factory\TransportFactoryInterface;
+use Consolidation\SiteProcess\ProcessBase;
+use Consolidation\SiteProcess\SiteProcess;
+use Consolidation\SiteProcess\Util\Escape;
+use Drush\Drush;
+use Psr\Log\LoggerInterface;
+use Symfony\Component\Console\Style\SymfonyStyle;
+use Symfony\Component\Process\Process;
+use Webmozart\PathUtil\Path;
+
+/**
+ * The Drush ProcessManager adds a few Drush-specific service methods.
+ */
+class ProcessManager extends ConsolidationProcessManager
+{
+    /**
+     * Run a Drush command on a site alias (or @self).
+     *
+     * @param SiteAliasInterface $siteAlias
+     * @param string $command
+     * @param array $args
+     * @param array $options
+     * @param array $options_double_dash
+     * @return SiteProcess
+     */
+    public function drush(SiteAliasInterface $siteAlias, $command, $args = [], $options = [], $options_double_dash = [])
+    {
+        array_unshift($args, $command);
+        return $this->drushSiteProcess($siteAlias, $args, $options, $options_double_dash);
+    }
+
+    /**
+     * drushSiteProcess should be avoided in favor of the drush method above.
+     * drushSiteProcess exists specifically for use by the RedispatchHook,
+     * which does not have specific knowledge about which argument is the command.
+     *
+     * @param SiteAliasInterface $siteAlias
+     * @param array $args
+     * @param array $options
+     * @param array $options_double_dash
+     * @return ProcessBase
+     */
+    public function drushSiteProcess(SiteAliasInterface $siteAlias, $args = [], $options = [], $options_double_dash = [])
+    {
+        // Fill in the root and URI from the site alias, if the caller
+        // did not already provide them in $options.
+        if ($siteAlias->has('uri')) {
+            $options += [ 'uri' => $siteAlias->uri(), ];
+        }
+        if ($siteAlias->hasRoot()) {
+            $options += [ 'root' => $siteAlias->root(), ];
+        }
+
+        // The executable is always 'drush' (at some path or another)
+        array_unshift($args, $this->drushScript($siteAlias));
+
+        return $this->siteProcess($siteAlias, $args, $options, $options_double_dash);
+    }
+
+    /**
+     * Determine the path to Drush to use
+     */
+    public function drushScript(SiteAliasInterface $siteAlias)
+    {
+        $defaultDrushScript = 'drush';
+
+        // If the site alias has 'paths.drush-script', always use that.
+        if ($siteAlias->has('paths.drush-script')) {
+            return $siteAlias->get('paths.drush-script');
+        }
+
+        // If the provided site alias is for a remote site / container et. al.,
+        // then use the 'drush' in the $PATH.
+        if ($this->hasTransport($siteAlias)) {
+            return $defaultDrushScript;
+        }
+
+        // If the target is a local Drupal site that has a vendor/bin/drush,
+        // then use that.
+        if ($siteAlias->hasRoot()) {
+            $localDrushScript = Path::join($siteAlias->root(), 'vendor/bin/drush');
+            if (file_exists($localDrushScript)) {
+                return $localDrushScript;
+            }
+        }
+
+        // Otherwise, use the path to the version of Drush that is running
+        // right now (if available).
+        return $this->getConfig()->get('runtime.drush-script', $defaultDrushScript);
+    }
+
+    /**
+     * @inheritdoc
+     *
+     * Use Drush::drush() or ProcessManager::drush() instead of this method
+     * when calling Drush.
+     */
+    public function siteProcess(SiteAliasInterface $siteAlias, $args = [], $options = [], $optionsPassedAsArgs = [])
+    {
+        $process = parent::siteProcess($siteAlias, $args, $options, $optionsPassedAsArgs);
+        return $this->configureProcess($process);
+    }
+
+    /**
+     * Run a bash fragment locally.
+     *
+     * The timeout parameter on this method doesn't work. It exists for compatibility with parent.
+     * Call this method to get a Process and then call setters as needed.
+     *
+     * @param array          $commandline The command line to run with arguments as separate items in an array
+     * @param string|null    $cwd         The working directory or null to use the working dir of the current PHP process
+     * @param array|null     $env         The environment variables or null to use the same environment as the current PHP process
+     * @param mixed|null     $input       The input as stream resource, scalar or \Traversable, or null for no input
+     * @param int|float|null $timeout     The timeout in seconds or null to disable
+     *
+     * @return ProcessBase
+     *   A wrapper around Symfony Process.
+     */
+    public function process($commandline, $cwd = null, array $env = null, $input = null, $timeout = 60)
+    {
+        $process = parent::process($commandline, $cwd, $env, $input, $timeout);
+        return $this->configureProcess($process);
+    }
+
+    /**
+     * Create a Process instance from a commandline string.
+     * @param string $command The commandline string to run
+     * @param string|null $cwd     The working directory or null to use the working dir of the current PHP process
+     * @param array|null $env     The environment variables or null to use the same environment as the current PHP process
+     * @param mixed|null $input   The input as stream resource, scalar or \Traversable, or null for no input
+     * @param int|float|null $timeout The timeout in seconds or null to disable
+     * @return Process
+     */
+    public function shell($command, $cwd = null, array $env = null, $input = null, $timeout = 60)
+    {
+        $process = parent::shell($command, $cwd, $env, $input, $timeout);
+        return $this->configureProcess($process);
+    }
+
+    /**
+     * configureProcess sets up a process object so that it is ready to use.
+     */
+    protected static function configureProcess(ProcessBase $process)
+    {
+        $process->setSimulated(Drush::simulate());
+        $process->setVerbose(Drush::verbose());
+        $process->inheritEnvironmentVariables();
+        $process->setLogger(Drush::logger());
+        $process->setRealtimeOutput(new SymfonyStyle(Drush::input(), Drush::output()));
+        $process->setTimeout(Drush::getTimeout());
+        return $process;
+    }
+}
diff --git a/vendor/drush/drush/lib/Drush/SiteAlias/ProcessManagerInjector.php b/vendor/drush/drush/lib/Drush/SiteAlias/ProcessManagerInjector.php
new file mode 100644
index 0000000000..455fe965c3
--- /dev/null
+++ b/vendor/drush/drush/lib/Drush/SiteAlias/ProcessManagerInjector.php
@@ -0,0 +1,19 @@
+<?php
+
+namespace Drush\SiteAlias;
+
+use Consolidation\SiteProcess\ProcessManagerAwareInterface;
+use Drush\SiteAlias\ProcessManager;
+use Drush\Drush;
+
+class ProcessManagerInjector
+{
+    protected static $processManager = null;
+
+    public function inflect($command)
+    {
+        if ($command instanceof ProcessManagerAwareInterface) {
+            $command->setProcessManager(Drush::processManager());
+        }
+    }
+}
diff --git a/vendor/drush/drush/lib/Drush/Sql/SqlBase.php b/vendor/drush/drush/lib/Drush/Sql/SqlBase.php
index 0d8871ce64..8ac60bc23c 100644
--- a/vendor/drush/drush/lib/Drush/Sql/SqlBase.php
+++ b/vendor/drush/drush/lib/Drush/Sql/SqlBase.php
@@ -2,7 +2,6 @@
 
 namespace Drush\Sql;
 
-use Drupal\Core\Database\Database;
 use Drush\Log\LogLevel;
 use Webmozart\PathUtil\Path;
 
@@ -201,8 +200,12 @@ public function query_prefix($query) {
     if (drush_has_boostrapped(DRUSH_BOOTSTRAP_DRUPAL_DATABASE)) {
       // Enable prefix processing which can be dangerous so off by default. See http://drupal.org/node/1219850.
       if (drush_get_option('db-prefix')) {
-        if (drush_drupal_major_version() >= 7) {
-          $query = Database::getConnection()->prefixTables($query);
+        $drupal_major_version = drush_drupal_major_version();
+        if ($drupal_major_version >= 8) {
+          $query = \Drupal\Core\Database\Database::getConnection()->prefixTables($query);
+        }
+        elseif ($drupal_major_version == 7) {
+          $query = \Database::getConnection()->prefixTables($query);
         }
         else {
           $query = db_prefix_tables($query);
diff --git a/vendor/drush/drush/lib/Drush/Sql/Sqlmysqli.php b/vendor/drush/drush/lib/Drush/Sql/Sqlmysqli.php
new file mode 100644
index 0000000000..52d5fabae8
--- /dev/null
+++ b/vendor/drush/drush/lib/Drush/Sql/Sqlmysqli.php
@@ -0,0 +1,7 @@
+<?php
+
+namespace Drush\Sql;
+
+class Sqlmysqli extends Sqlmysql {
+
+}
\ No newline at end of file
diff --git a/vendor/drush/drush/lib/Drush/Sql/Sqlpgsql.php b/vendor/drush/drush/lib/Drush/Sql/Sqlpgsql.php
index e8945c735b..e0fc46cef6 100644
--- a/vendor/drush/drush/lib/Drush/Sql/Sqlpgsql.php
+++ b/vendor/drush/drush/lib/Drush/Sql/Sqlpgsql.php
@@ -121,7 +121,7 @@ public function dumpCmd($table_selection) {
     if (isset($data_only)) {
       $extra .= ' --data-only';
     }
-    if ($option = drush_get_option('extra', $this->query_extra)) {
+    if ($option = drush_get_option('extra')) {
       $extra .= " $option";
     }
     $exec .= $extra;
diff --git a/vendor/drush/drush/src/TestTraits/CliTestTrait.php b/vendor/drush/drush/src/TestTraits/CliTestTrait.php
new file mode 100644
index 0000000000..da89f76bf2
--- /dev/null
+++ b/vendor/drush/drush/src/TestTraits/CliTestTrait.php
@@ -0,0 +1,222 @@
+<?php
+namespace Drush\TestTraits;
+
+use Symfony\Component\Process\Process;
+use Symfony\Component\Process\Exception\ProcessTimedOutException;
+
+/**
+ * CliTestTrait provides an `execute()` method that is useful
+ * for launching executable programs in functional tests.
+ */
+trait CliTestTrait
+{
+    use OutputUtilsTrait;
+
+    /**
+     * Default timeout for commands. By default, there is no timeout.
+     *
+     * @var int
+     */
+    private $defaultTimeout = 0;
+
+    /**
+     * Timeout for command.
+     *
+     * Reset to $defaultTimeout after executing a command.
+     *
+     * @var int
+     */
+    protected $timeout = 0;
+
+    /**
+     * Default idle timeout for commands.
+     *
+     * @var int
+     */
+    private $defaultIdleTimeout = 0;
+
+    /**
+     * Idle timeouts for commands.
+     *
+     * Reset to $defaultIdleTimeout after executing a command.
+     *
+     * @var int
+     */
+    protected $idleTimeout = 0;
+
+    /**
+     * @var Process
+     */
+    protected $process = null;
+
+    /**
+     * Accessor for the last output, non-trimmed.
+     *
+     * @return string
+     *   Raw output as text.
+     *
+     * @access public
+     */
+    public function getOutputRaw()
+    {
+        return $this->process ? $this->process->getOutput() : '';
+    }
+
+    /**
+     * Accessor for the last stderr output, non-trimmed.
+     *
+     * @return string
+     *   Raw stderr as text.
+     *
+     * @access public
+     */
+    public function getErrorOutputRaw()
+    {
+        return $this->process ? $this->process->getErrorOutput() : '';
+    }
+
+    /**
+     * Actually runs the command.
+     *
+     * @param string $command
+     *   The actual command line to run.
+     * @param integer $expected_return
+     *   The return code to expect
+     * @param sting cd
+     *   The directory to run the command in.
+     * @param array $env
+     *  Extra environment variables.
+     * @param string $input
+     *   A string representing the STDIN that is piped to the command.
+     */
+    public function execute($command, $expected_return = 0, $cd = null, $env = null, $input = null)
+    {
+        try {
+            // Process uses a default timeout of 60 seconds, set it to 0 (none).
+            $this->process = new Process($command, $cd, $env, $input, 0);
+            $this->process->inheritEnvironmentVariables(true);
+            if ($this->timeout) {
+                $this->process->setTimeout($this->timeout)
+                ->setIdleTimeout($this->idleTimeout);
+            }
+            $return = $this->process->run();
+            if ($expected_return !== $return) {
+                $message = 'Unexpected exit code ' . $return . ' (expected ' . $expected_return . ") for command:\n" .  $command;
+                throw new \Exception($message . $this->buildProcessMessage());
+            }
+            // Reset timeouts to default.
+            $this->timeout = $this->defaultTimeout;
+            $this->idleTimeout = $this->defaultIdleTimeout;
+        } catch (ProcessTimedOutException $e) {
+            if ($e->isGeneralTimeout()) {
+                $message = 'Command runtime exceeded ' . $this->timeout . " seconds:\n" .  $command;
+            } else {
+                $message = 'Command had no output for ' . $this->idleTimeout . " seconds:\n" .  $command;
+            }
+            throw new \Exception($message . $this->buildProcessMessage());
+        }
+    }
+
+    public static function escapeshellarg($arg)
+    {
+        // Short-circuit escaping for simple params (keep stuff readable)
+        if (preg_match('|^[a-zA-Z0-9.:/_-]*$|', $arg)) {
+            return $arg;
+        } elseif (self::isWindows()) {
+            return self::_escapeshellargWindows($arg);
+        } else {
+            return escapeshellarg($arg);
+        }
+    }
+
+    public static function isWindows()
+    {
+        return strtoupper(substr(PHP_OS, 0, 3)) === 'WIN';
+    }
+
+    public static function _escapeshellargWindows($arg)
+    {
+        // Double up existing backslashes
+        $arg = preg_replace('/\\\/', '\\\\\\\\', $arg);
+
+        // Double up double quotes
+        $arg = preg_replace('/"/', '""', $arg);
+
+        // Double up percents.
+        $arg = preg_replace('/%/', '%%', $arg);
+
+        // Add surrounding quotes.
+        $arg = '"' . $arg . '"';
+
+        return $arg;
+    }
+
+    /**
+     * Borrowed from \Symfony\Component\Process\Exception\ProcessTimedOutException
+     *
+     * @return string
+     */
+    public function buildProcessMessage()
+    {
+        $error = sprintf(
+            "%s\n\nExit Code: %s(%s)\n\nWorking directory: %s",
+            $this->process->getCommandLine(),
+            $this->process->getExitCode(),
+            $this->process->getExitCodeText(),
+            $this->process->getWorkingDirectory()
+        );
+
+        if (!$this->process->isOutputDisabled()) {
+            $error .= sprintf(
+                "\n\nOutput:\n================\n%s\n\nError Output:\n================\n%s",
+                $this->process->getOutput(),
+                $this->process->getErrorOutput()
+            );
+        }
+
+        return $error;
+    }
+
+    /**
+     * Checks that the output matches the expected output.
+     *
+     * This matches against a simplified version of the actual output that has
+     * absolute paths and duplicate whitespace removed, to avoid false negatives
+     * on minor differences.
+     *
+     * @param string $expected
+     *   The expected output.
+     * @param string $filter
+     *   Optional regular expression that should be ignored in the error output.
+     */
+
+    protected function assertOutputEquals($expected, $filter = '')
+    {
+        $output = $this->getSimplifiedOutput();
+        if (!empty($filter)) {
+            $output = preg_replace($filter, '', $output);
+        }
+        $this->assertEquals($expected, $output);
+    }
+
+    /**
+     * Checks that the error output matches the expected output.
+     *
+     * This matches against a simplified version of the actual output that has
+     * absolute paths and duplicate whitespace removed, to avoid false negatives
+     * on minor differences.
+     *
+     * @param string $expected
+     *   The expected output.
+     * @param string $filter
+     *   Optional regular expression that should be ignored in the error output.
+     */
+    protected function assertErrorOutputEquals($expected, $filter = '')
+    {
+        $output = $this->getSimplifiedErrorOutput();
+        if (!empty($filter)) {
+            $output = preg_replace($filter, '', $output);
+        }
+        $this->assertEquals($expected, $output);
+    }
+}
diff --git a/vendor/drush/drush/src/TestTraits/DrushTestTrait.php b/vendor/drush/drush/src/TestTraits/DrushTestTrait.php
new file mode 100644
index 0000000000..722b840089
--- /dev/null
+++ b/vendor/drush/drush/src/TestTraits/DrushTestTrait.php
@@ -0,0 +1,116 @@
+<?php
+namespace Drush\TestTraits;
+
+/**
+ * DrushTestTrait provides a `drush()` method that may be
+ * used to write functional tests for Drush extensions.
+ *
+ * More information is available at https://github.com/drush-ops/drush/tree/master/tests#drush-test-traits.
+ */
+trait DrushTestTrait
+{
+    use CliTestTrait;
+
+    /**
+     * @return string
+     */
+    public function getPathToDrush()
+    {
+        return dirname(dirname(__DIR__)) . '/drush';
+    }
+
+    /**
+     * Invoke drush in via execute().
+     *
+     * @param command
+     *   A defined drush command such as 'cron', 'status' or any of the available ones such as 'drush pm'.
+     * @param args
+     *   Command arguments.
+     * @param $options
+     *   An associative array containing options.
+     * @param $site_specification
+     *   A site alias or site specification. Include the '@' at start of a site alias.
+     * @param $cd
+     *   A directory to change into before executing.
+     * @param $expected_return
+     *   The expected exit code, e.g. 0 or 1 or some other expected value.
+     * @param $suffix
+     *   Any code to append to the command. For example, redirection like 2>&1.
+     * @param array $env
+     *   Environment variables to pass along to the subprocess.
+     */
+    public function drush($command, array $args = [], array $options = [], $site_specification = null, $cd = null, $expected_return = 0, $suffix = null, $env = [])
+    {
+        // Set UA for SimpleTests which typically extend BrowserTestCase (i.e. contrib modules).
+        if (isset($this->databasePrefix) && function_exists('drupal_generate_test_ua') && !isset($env['HTTP_USER_AGENT'])) {
+            $env['HTTP_USER_AGENT'] = drupal_generate_test_ua($this->databasePrefix);
+        }
+
+        $global_option_list = ['simulate', 'root', 'uri', 'include', 'config', 'alias-path', 'ssh-options'];
+        $cmd[] = self::getPathToDrush();
+
+        // Insert global options.
+        foreach ($options as $key => $value) {
+            if (in_array($key, $global_option_list)) {
+                unset($options[$key]);
+                $cmd[] = $this->convertKeyValueToFlag($key, $value);
+            }
+        }
+
+        $cmd[] = "--no-interaction";
+
+        // Insert site specification and drush command.
+        if (!empty($site_specification)) {
+            $cmd[] = self::escapeshellarg($site_specification);
+        }
+        $cmd[] = $command;
+
+        // Insert drush command arguments.
+        foreach ($args as $arg) {
+            $cmd[] = self::escapeshellarg($arg);
+        }
+        // insert drush command options
+        foreach ($options as $key => $value) {
+            $cmd[] = $this->convertKeyValueToFlag($key, $value);
+        }
+
+        $cmd[] = $suffix;
+        $exec = array_filter($cmd, 'strlen'); // Remove NULLs
+
+        $cmd = implode(' ', $exec);
+        $this->execute($cmd, $expected_return, $cd, $env);
+    }
+
+    /**
+     * Given an option key / value pair, convert to a
+     * "--key=value" string.
+     *
+     * @param string $key The option name
+     * @param string $value The option value (or empty)
+     * @return string
+     */
+    protected function convertKeyValueToFlag($key, $value)
+    {
+        if (!isset($value)) {
+            return "--$key";
+        }
+        return "--$key=" . self::escapeshellarg($value);
+    }
+
+    /**
+     * Return the major version of Drush
+     *
+     * @return string e.g. "8" or "9"
+     */
+    public function drushMajorVersion()
+    {
+        static $major;
+
+        if (!isset($major)) {
+            $this->drush('version', [], ['field' => 'drush-version']);
+            $version = trim($this->getOutput());
+            list($major) = explode('.', $version);
+        }
+        return (int)$major;
+    }
+}
diff --git a/vendor/drush/drush/src/TestTraits/OutputUtilsTrait.php b/vendor/drush/drush/src/TestTraits/OutputUtilsTrait.php
new file mode 100644
index 0000000000..a8467cd6ba
--- /dev/null
+++ b/vendor/drush/drush/src/TestTraits/OutputUtilsTrait.php
@@ -0,0 +1,165 @@
+<?php
+namespace Drush\TestTraits;
+
+/**
+ * OutputUtilsTrait provides some useful utility methods for test classes
+ * that define `getOutputRaw()` and `getErrorOutputRaw()` methods.
+ *
+ * This trait is used by CliTestTrait and DrushTestTrait.
+ */
+trait OutputUtilsTrait
+{
+    /**
+     * Accessor for the last output, non-trimmed.
+     *
+     * @return string
+     *   Raw output as text.
+     *
+     * @access public
+     */
+    public abstract function getOutputRaw();
+
+    /**
+     * Accessor for the last stderr output, non-trimmed.
+     *
+     * @return string
+     *   Raw stderr as text.
+     *
+     * @access public
+     */
+    public abstract function getErrorOutputRaw();
+
+    /**
+     * Get command output and simplify away things like full paths and extra
+     * whitespace.
+     */
+    protected function getSimplifiedOutput()
+    {
+        return $this->simplifyOutput($this->getOutput());
+    }
+
+    /**
+     * Returns a simplified version of the error output to facilitate testing.
+     *
+     * @return string
+     *   A simplified version of the error output that has things like full
+     *   paths and superfluous whitespace removed from it.
+     */
+    protected function getSimplifiedErrorOutput()
+    {
+        return $this->simplifyOutput($this->getErrorOutput());
+    }
+
+    /**
+     * Remove things like full paths and extra whitespace from the given string.
+     *
+     * @param string $output
+     *   The output string to simplify.
+     *
+     * @return string
+     *   The simplified output.
+     */
+    protected function simplifyOutput($output)
+    {
+        // We do not care if Drush inserts a -t or not in the string. Depends on whether there is a tty.
+        $output = preg_replace('# -t #', ' ', $output);
+        // Remove multiple blank lines
+        $output = preg_replace("#\n\n\n*#m", "\n\n", $output);
+        // Remove double spaces from output to help protect test from false negatives if spacing changes subtly
+        $output = preg_replace('#  *#', ' ', $output);
+        // Remove leading and trailing spaces.
+        $output = preg_replace('#^[ \t]*#m', '', $output);
+        $output = preg_replace('#[ \t]*$#m', '', $output);
+        // Remove verbose info for rsync.
+        $output = preg_replace('# -akzv --stats --progress #', ' -akz ', $output);
+        // Debug flags may be added to command strings if we are in debug mode. Take those out so that tests in phpunit --debug mode work
+        $output = preg_replace('# --debug #', ' ', $output);
+        $output = preg_replace('# --verbose #', ' ', $output);
+        $output = preg_replace('# -vvv #', ' ', $output);
+
+        foreach ($this->pathsToSimplify() as $path => $simplification) {
+            $output = str_replace($path, $simplification, $output);
+        }
+
+        return $output;
+    }
+
+    public function pathsToSimplify()
+    {
+        return [];
+    }
+
+    /**
+     * Accessor for the last output, trimmed.
+     *
+     * @return string
+     *   Trimmed output as text.
+     *
+     * @access public
+     */
+    public function getOutput()
+    {
+        return trim($this->getOutputRaw());
+    }
+
+    /**
+     * Accessor for the last stderr output, trimmed.
+     *
+     * @return string
+     *   Trimmed stderr as text.
+     *
+     * @access public
+     */
+    public function getErrorOutput()
+    {
+        return trim($this->getErrorOutputRaw());
+    }
+
+    /**
+     * Accessor for the last output, rtrimmed and split on newlines.
+     *
+     * @return array
+     *   Output as array of lines.
+     *
+     * @access public
+     */
+    public function getOutputAsList()
+    {
+        return array_map('rtrim', explode("\n", $this->getOutput()));
+    }
+
+    /**
+     * Accessor for the last stderr output, rtrimmed and split on newlines.
+     *
+     * @return array
+     *   Stderr as array of lines.
+     *
+     * @access public
+     */
+    public function getErrorOutputAsList()
+    {
+        return array_map('rtrim', explode("\n", $this->getErrorOutput()));
+    }
+
+    /**
+     * Accessor for the last output, decoded from json.
+     *
+     * @param string $key
+     *   Optionally return only a top level element from the json object.
+     *
+     * @return object
+     *   Decoded object.
+     */
+    public function getOutputFromJSON($key = null)
+    {
+        $output = $this->getOutput();
+        $json = json_decode($output, true);
+        if (!$json) {
+            throw new \Exception("No json output received.\n\nOutput:\n\n$output\n\nStderr:\n\n" . $this->getErrorOutput());
+        }
+        if (isset($key)) {
+            $json = $json[$key];
+        }
+        return $json;
+    }
+}
diff --git a/vendor/drush/drush/tests/Unish/UnishTestCase.php b/vendor/drush/drush/tests/Unish/UnishTestCase.php
index fba36435e8..c0b3144092 100644
--- a/vendor/drush/drush/tests/Unish/UnishTestCase.php
+++ b/vendor/drush/drush/tests/Unish/UnishTestCase.php
@@ -347,6 +347,11 @@ function fetchInstallDrupal($env = 'dev', $install = FALSE, $version_string = NU
     }
 
     // Download Drupal if not already present.
+    if (!file_exists($root) && (substr($version_string, 0, 1) == 6)) {
+      if (!$this->downloadDrupal6($version_string, $root)) {
+        $this->markTestSkipped("Could not download d6lts.");
+      }
+    }
     if (!file_exists($root)) {
       $options += array(
         'destination' => dirname($root),
@@ -372,6 +377,7 @@ function fetchInstallDrupal($env = 'dev', $install = FALSE, $version_string = NU
       $this->drush('site-install', array($profile), $options);
       // Give us our write perms back.
       chmod($site, 0777);
+      chmod("$site/settings.php", 0777);
     }
     else {
       @mkdir($site);
@@ -379,6 +385,48 @@ function fetchInstallDrupal($env = 'dev', $install = FALSE, $version_string = NU
     }
   }
 
+  // pm-download cannot download from d6lts, so we will rough in our own download function
+  function downloadDrupal6($drupal_6_test_version, $root) {
+    if (($drupal_6_test_version == '6') || ($drupal_6_test_version == '6.x')) {
+      $drupal_6_test_version = '6.46';
+    }
+    return $this->downloadFromGitHub('d6lts/drupal', $drupal_6_test_version, $root, "drupal-$drupal_6_test_version");
+  }
+
+  function downloadFromGitHub($project, $version, $target, $rootDirToRemove = '') {
+    $url = "https://github.com/{$project}/archive/{$version}.zip";
+    $tarPath = dirname($target) . '/' . basename($url);
+    if (!$this->cachedDownload($url, $tarPath)) {
+      return false;
+    }
+    $zipDir = $target;
+    if (!empty($rootDirToRemove)) {
+      $zipDir = dirname($zipDir);
+    }
+    passthru("unzip -od $zipDir $tarPath >/dev/null 2>&1", $status);
+    if ($status != 0) {
+      return false;
+    }
+    if (!empty($rootDirToRemove)) {
+      rename("$zipDir/$rootDirToRemove", $zipDir . '/' . basename($target));
+    }
+    return file_exists($target);
+  }
+
+  function cachedDownload($url, $target) {
+    $dlCacheDir = $this->directory_cache('dl');
+    @mkdir($dlCacheDir);
+    $cacheFile = $dlCacheDir . '/' . basename($target);
+    if (!file_exists($cacheFile)) {
+        passthru("curl -L --output $cacheFile $url >/dev/null 2>&1", $status);
+        if ($status != 0) {
+          return false;
+        }
+    }
+    copy($cacheFile, $target);
+    return file_exists($target);
+  }
+
   function writeSiteAlias($name, $root, $uri) {
     $alias_definition = array($name => array('root' => $root,  'uri' => $uri));
     file_put_contents(UNISH_SANDBOX . '/etc/drush/' . $name . '.alias.drushrc.php', $this->unish_file_aliases($alias_definition));
diff --git a/vendor/drush/drush/tests/bootstrap.inc b/vendor/drush/drush/tests/bootstrap.inc
index ab7f8cc193..e0294d5731 100644
--- a/vendor/drush/drush/tests/bootstrap.inc
+++ b/vendor/drush/drush/tests/bootstrap.inc
@@ -50,6 +50,9 @@ function unish_init() {
   elseif (isset($GLOBALS['UNISH_DB_URL'])) {
     $unish_db_url = $GLOBALS['UNISH_DB_URL'];
   }
+  if (UNISH_DRUPAL_MAJOR_VERSION == '6') {
+    $unish_db_url = preg_replace('#^mysql://#', 'mysqli://', $unish_db_url);
+  }
   define('UNISH_DB_URL', $unish_db_url);
 
   // UNISH_DRUSH value can come from phpunit.xml.
diff --git a/vendor/drush/drush/tests/generateMakeTest.php b/vendor/drush/drush/tests/generateMakeTest.php
index 3b82d9bad4..027651b14d 100644
--- a/vendor/drush/drush/tests/generateMakeTest.php
+++ b/vendor/drush/drush/tests/generateMakeTest.php
@@ -27,6 +27,9 @@ function testGenerateMakeOmega() {
   }
 
   function _testGenerateMake($module, $theme) {
+    if (UNISH_DRUPAL_MAJOR_VERSION != '7') {
+      $this->markTestSkipped("Drush generate make tests depend on projects not available on older and newer versions of Drupal. Tests need updating, but Drush make is deprecated; Composer is recommended.");
+    }
     $sites = $this->setUpDrupal(1, TRUE);
     $major_version = UNISH_DRUPAL_MAJOR_VERSION . '.x';
 
diff --git a/vendor/drush/drush/tests/makeTest.php b/vendor/drush/drush/tests/makeTest.php
index cccc70fa65..96569cccf0 100644
--- a/vendor/drush/drush/tests/makeTest.php
+++ b/vendor/drush/drush/tests/makeTest.php
@@ -319,7 +319,7 @@ function testInfoFileWritingGit() {
 
     // Verify that a reference cache was created.
     $cache_dir = UNISH_CACHE . DIRECTORY_SEPARATOR . 'cache';
-    $this->assertFileExists($cache_dir . '/git/cck_signup-' . md5('http://git.drupal.org/project/cck_signup.git'));
+    $this->assertFileExists($cache_dir . '/git/cck_signup-' . md5('https://git.drupal.org/project/cck_signup.git'));
 
     // Test context_admin.info file.
     $this->assertFileExists(UNISH_SANDBOX . '/test-build/sites/all/modules/context_admin/context_admin.info');
@@ -329,7 +329,7 @@ function testInfoFileWritingGit() {
     $this->assertContains('project = "context_admin"', $contents);
 
     // Verify git reference cache exists.
-    $this->assertFileExists($cache_dir . '/git/context_admin-' . md5('http://git.drupal.org/project/context_admin.git'));
+    $this->assertFileExists($cache_dir . '/git/context_admin-' . md5('https://git.drupal.org/project/context_admin.git'));
 
     // Text caption_filter .info rewrite.
     $this->assertFileExists(UNISH_SANDBOX . '/test-build/sites/all/modules/contrib/caption_filter/caption_filter.info');
diff --git a/vendor/drush/drush/tests/makefiles/git.make b/vendor/drush/drush/tests/makefiles/git.make
index 09a587d8e9..266f8fb4ad 100644
--- a/vendor/drush/drush/tests/makefiles/git.make
+++ b/vendor/drush/drush/tests/makefiles/git.make
@@ -27,5 +27,5 @@ projects[os_lightbox][download][revision] = "8d60090f2"
 ; Test a refspec fetch.
 projects[storypal][type] = module
 projects[storypal][download][type] = git
-projects[storypal][download][url] = http://git.drupal.org/project/storypal.git
+projects[storypal][download][url] = https://git.drupal.org/project/storypal.git
 projects[storypal][download][refspec] = refs/tags/7.x-1.0
diff --git a/vendor/drush/drush/tests/pmDownloadTest.php b/vendor/drush/drush/tests/pmDownloadTest.php
index 0354bb2a59..431ed51b60 100644
--- a/vendor/drush/drush/tests/pmDownloadTest.php
+++ b/vendor/drush/drush/tests/pmDownloadTest.php
@@ -68,7 +68,7 @@ public function testDestination() {
     ) + $devel_options;
     $this->drush('pm-download', array('devel'), $options);
     $this->assertFileExists(UNISH_SANDBOX . '/' . $destination . '/devel/README.txt');
-}
+  }
 
   public function testSelect() {
     $options = array(
diff --git a/vendor/drush/drush/tests/pmEnDisUnListInfoTest.php b/vendor/drush/drush/tests/pmEnDisUnListInfoTest.php
index 6cf81b42f5..e0278245e6 100644
--- a/vendor/drush/drush/tests/pmEnDisUnListInfoTest.php
+++ b/vendor/drush/drush/tests/pmEnDisUnListInfoTest.php
@@ -112,6 +112,9 @@ public function testEnDisUnList() {
     }
 
     if (UNISH_DRUPAL_MAJOR_VERSION !=6) {
+      if (substr(UNISH_DRUPAL_MINOR_VERSION, 0, 2) == '.4') {
+        $this->markTestSkipped("panels module broken with Drupal 8.4.x");
+      }
       // Test that pm-enable downloads missing projects and dependencies.
       $this->drush('pm-enable', array('panels'), $options + array('resolve-dependencies' => TRUE));
       $this->drush('pm-list', array(), $options + array('status' => 'enabled'));
diff --git a/vendor/drush/drush/tests/pmUpdateCodeTest.php b/vendor/drush/drush/tests/pmUpdateCodeTest.php
index e4b9668871..84a141efca 100644
--- a/vendor/drush/drush/tests/pmUpdateCodeTest.php
+++ b/vendor/drush/drush/tests/pmUpdateCodeTest.php
@@ -49,9 +49,7 @@ public function setUp() {
       $this->modules = array('menu', 'devel', 'webform');
     }
     else {
-      $core = '6.28';
-      $modules_str = 'devel-6.x-1.26,webform-6.x-3.18';
-      $this->modules = array('menu', 'devel', 'webform');
+      $this->markTestSkipped("pm-update* no longer supported with Drupal 6; drupal.org does not allow stable releases for Drupal 6 contrib modules.");
     }
 
     $sites = $this->setUpDrupal(1, TRUE, $core);
diff --git a/vendor/drush/drush/tests/pmUpdateStatusTest.php b/vendor/drush/drush/tests/pmUpdateStatusTest.php
index ae55e77cc5..bb536629ab 100644
--- a/vendor/drush/drush/tests/pmUpdateStatusTest.php
+++ b/vendor/drush/drush/tests/pmUpdateStatusTest.php
@@ -28,6 +28,10 @@ class pmUpdateStatus extends CommandUnishTestCase {
    *  - Drupal 8 still has not enough variety to cover the tests
    */
   function setUp() {
+    if (UNISH_DRUPAL_MAJOR_VERSION == '6') {
+      $this->markTestSkipped("pm-update* no longer supported with Drupal 6; drupal.org does not allow stable releases for Drupal 6 contrib modules.");
+    }
+
     $sites = $this->setUpDrupal(1, TRUE, "7.30");
     $options = array(
       'root' => $this->webroot(),
diff --git a/vendor/drush/drush/tests/testChildren.sh b/vendor/drush/drush/tests/testChildren.sh
deleted file mode 100755
index 372ce72e37..0000000000
--- a/vendor/drush/drush/tests/testChildren.sh
+++ /dev/null
@@ -1,16 +0,0 @@
-# See https://github.com/drush-ops/drush/pull/1426 for background information.
-#
-# $AUTH_TOKEN is provided via a secure Travis environment variable.
-# Secure environment variables are not set for pull requests that
-# originated from another repository, so skip child tests if $AUTH_TOKEN
-# is empty.
-if [ -n "$AUTH_TOKEN" ]
-then
-  # After a travis build succeeds, run tests from any child repository defined in $TEST_CHILDREN
-  for CHILD in $TEST_CHILDREN
-  do
-    BUILD_NUM=$(curl -s "https://api.travis-ci.org/repos/$CHILD/builds" | grep -o '^\[{"id":[0-9]*,' | grep -o '[0-9]' | tr -d '\n')
-    echo "Restarting build $BUILD_NUM for $CHILD"
-    curl -X POST https://api.travis-ci.org/builds/$BUILD_NUM/restart --header "Authorization: token "$AUTH_TOKEN
-  done
-fi
diff --git a/vendor/jakub-onderka/php-console-color/.travis.yml b/vendor/jakub-onderka/php-console-color/.travis.yml
index 4671dca598..49175a9969 100644
--- a/vendor/jakub-onderka/php-console-color/.travis.yml
+++ b/vendor/jakub-onderka/php-console-color/.travis.yml
@@ -1,15 +1,24 @@
 language: php
 
 php:
-  - 5.3.3
   - 5.4
   - 5.5
+  - 5.6
+  - 7.0
+  - 7.1
+  - 7.2
+
+sudo: false
+
+cache:
+  directories:
+    - vendor
+    - $HOME/.composer/cache
 
 before_script:
-  - composer self-update
-  - composer install --no-interaction --prefer-source --dev
+  - composer install --no-interaction --prefer-source
 
 script:
   - ant phplint
   - ant phpcs
-  - ant phpunit
\ No newline at end of file
+  - ant phpunit
diff --git a/vendor/jakub-onderka/php-console-color/LICENSE b/vendor/jakub-onderka/php-console-color/LICENSE
new file mode 100644
index 0000000000..0954fc941f
--- /dev/null
+++ b/vendor/jakub-onderka/php-console-color/LICENSE
@@ -0,0 +1,27 @@
+Copyright (c) 2014-2018, Jakub Onderka
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+  * Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+
+  * Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in
+    the documentation and/or other materials provided with the
+    distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/jakub-onderka/php-console-color/README.md b/vendor/jakub-onderka/php-console-color/README.md
new file mode 100644
index 0000000000..39e55d9255
--- /dev/null
+++ b/vendor/jakub-onderka/php-console-color/README.md
@@ -0,0 +1,10 @@
+PHP Console Color
+=================
+
+[![Build Status](https://travis-ci.org/JakubOnderka/PHP-Console-Color.svg?branch=master)](https://travis-ci.org/JakubOnderka/PHP-Console-Color)
+
+Simple library for creating colored console ouput.
+
+See `example.php` how to use this library.
+
+![Example from Windows 10](https://user-images.githubusercontent.com/89590/40762008-687f909a-646c-11e8-88d6-e268a064be4c.png)
\ No newline at end of file
diff --git a/vendor/jakub-onderka/php-console-color/composer.json b/vendor/jakub-onderka/php-console-color/composer.json
index 0721abca18..6481cb51d0 100644
--- a/vendor/jakub-onderka/php-console-color/composer.json
+++ b/vendor/jakub-onderka/php-console-color/composer.json
@@ -1,7 +1,6 @@
 {
     "name": "jakub-onderka/php-console-color",
     "license": "BSD-2-Clause",
-    "version": "0.1",
     "authors": [
         {
             "name": "Jakub Onderka",
@@ -9,16 +8,16 @@
         }
     ],
     "autoload": {
-        "psr-0": {"JakubOnderka\\PhpConsoleColor": "src/"}
+        "psr-4": {"JakubOnderka\\PhpConsoleColor\\": "src/"}
     },
     "require": {
-        "php": ">=5.3.2"
+        "php": ">=5.4.0"
     },
     "require-dev": {
-        "phpunit/phpunit": "3.7.*",
-        "jakub-onderka/php-parallel-lint": "0.*",
+        "phpunit/phpunit": "~4.3",
+        "jakub-onderka/php-parallel-lint": "1.0",
         "jakub-onderka/php-var-dump-check": "0.*",
         "squizlabs/php_codesniffer": "1.*",
         "jakub-onderka/php-code-style": "1.0"
     }
-}
\ No newline at end of file
+}
diff --git a/vendor/jakub-onderka/php-console-color/phpunit.xml b/vendor/jakub-onderka/php-console-color/phpunit.xml
index 74011d9dfe..f1105cc4e2 100644
--- a/vendor/jakub-onderka/php-console-color/phpunit.xml
+++ b/vendor/jakub-onderka/php-console-color/phpunit.xml
@@ -1,8 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<phpunit bootstrap="tests/bootstrap.php">
+<phpunit
+    bootstrap="./vendor/autoload.php">
     <testsuites>
         <testsuite>
-            <directory>tests/*</directory>
+            <directory suffix="Test.php">tests</directory>
         </testsuite>
     </testsuites>
 
@@ -12,4 +13,4 @@
             <directory>vendor</directory>
         </blacklist>
     </filter>
-</phpunit>
\ No newline at end of file
+</phpunit>
diff --git a/vendor/jakub-onderka/php-console-color/src/JakubOnderka/PhpConsoleColor/ConsoleColor.php b/vendor/jakub-onderka/php-console-color/src/ConsoleColor.php
similarity index 90%
rename from vendor/jakub-onderka/php-console-color/src/JakubOnderka/PhpConsoleColor/ConsoleColor.php
rename to vendor/jakub-onderka/php-console-color/src/ConsoleColor.php
index c367a7655c..90fd125286 100644
--- a/vendor/jakub-onderka/php-console-color/src/JakubOnderka/PhpConsoleColor/ConsoleColor.php
+++ b/vendor/jakub-onderka/php-console-color/src/ConsoleColor.php
@@ -201,10 +201,15 @@ public function removeTheme($name)
     public function isSupported()
     {
         if (DIRECTORY_SEPARATOR === '\\') {
-            return getenv('ANSICON') !== false || getenv('ConEmuANSI') === 'ON';
+            if (function_exists('sapi_windows_vt100_support') && @sapi_windows_vt100_support(STDOUT)) {
+                return true;
+            } elseif (getenv('ANSICON') !== false || getenv('ConEmuANSI') === 'ON') {
+                return true;
+            }
+            return false;
+        } else {
+            return function_exists('posix_isatty') && @posix_isatty(STDOUT);
         }
-
-        return function_exists('posix_isatty') && @posix_isatty(STDOUT);
     }
 
     /**
@@ -212,7 +217,11 @@ public function isSupported()
      */
     public function are256ColorsSupported()
     {
-        return DIRECTORY_SEPARATOR === '/' && strpos(getenv('TERM'), '256color') !== false;
+        if (DIRECTORY_SEPARATOR === '\\') {
+            return function_exists('sapi_windows_vt100_support') && @sapi_windows_vt100_support(STDOUT);
+        } else {
+            return strpos(getenv('TERM'), '256color') !== false;
+        }
     }
 
     /**
@@ -225,8 +234,7 @@ public function getPossibleStyles()
 
     /**
      * @param string $name
-     * @return string
-     * @throws InvalidStyleException
+     * @return string[]
      */
     private function themeSequence($name)
     {
@@ -240,7 +248,6 @@ private function themeSequence($name)
     /**
      * @param string $style
      * @return string
-     * @throws InvalidStyleException
      */
     private function styleSequence($style)
     {
@@ -277,4 +284,4 @@ private function escSequence($value)
     {
         return "\033[{$value}m";
     }
-}
\ No newline at end of file
+}
diff --git a/vendor/jakub-onderka/php-console-color/src/JakubOnderka/PhpConsoleColor/InvalidStyleException.php b/vendor/jakub-onderka/php-console-color/src/InvalidStyleException.php
similarity index 100%
rename from vendor/jakub-onderka/php-console-color/src/JakubOnderka/PhpConsoleColor/InvalidStyleException.php
rename to vendor/jakub-onderka/php-console-color/src/InvalidStyleException.php
diff --git a/vendor/jakub-onderka/php-console-color/tests/JakubOnderka/PhpConsoleColor/ConsoleColorTest.php b/vendor/jakub-onderka/php-console-color/tests/ConsoleColorTest.php
similarity index 100%
rename from vendor/jakub-onderka/php-console-color/tests/JakubOnderka/PhpConsoleColor/ConsoleColorTest.php
rename to vendor/jakub-onderka/php-console-color/tests/ConsoleColorTest.php
diff --git a/vendor/jakub-onderka/php-console-color/tests/bootstrap.php b/vendor/jakub-onderka/php-console-color/tests/bootstrap.php
deleted file mode 100644
index 7500417eda..0000000000
--- a/vendor/jakub-onderka/php-console-color/tests/bootstrap.php
+++ /dev/null
@@ -1,2 +0,0 @@
-<?php
-$loader = require_once __DIR__ . '/../vendor/autoload.php';
\ No newline at end of file
diff --git a/vendor/jakub-onderka/php-console-highlighter/.travis.yml b/vendor/jakub-onderka/php-console-highlighter/.travis.yml
index 2f7e8c89b0..c88c4ec9d4 100644
--- a/vendor/jakub-onderka/php-console-highlighter/.travis.yml
+++ b/vendor/jakub-onderka/php-console-highlighter/.travis.yml
@@ -1,21 +1,22 @@
 language: php
 
 php:
-  - 5.3.3
   - 5.4
   - 5.5
   - 5.6
   - 7.0
-  - hhvm
-  - hhvm-nightly
+  - 7.1
+  - 7.2
+  
+sudo: false
 
-matrix:
-  allowed_failures:
-    - php: 7.0
-    - php: hhvm-nightly
+cache:
+  directories:
+    - vendor
+    - $HOME/.composer/cache
 
 before_script:
   - composer install --no-interaction --prefer-source
 
 script:
-  - ant
\ No newline at end of file
+  - ant
diff --git a/vendor/jakub-onderka/php-console-highlighter/README.md b/vendor/jakub-onderka/php-console-highlighter/README.md
index 432ea0a789..1ef3d1340d 100644
--- a/vendor/jakub-onderka/php-console-highlighter/README.md
+++ b/vendor/jakub-onderka/php-console-highlighter/README.md
@@ -37,4 +37,6 @@ echo $highlighter->getWholeFile($fileContent);
 
 ------
 
+[![Downloads this Month](https://img.shields.io/packagist/dm/jakub-onderka/php-console-highlighter.svg)](https://packagist.org/packages/jakub-onderka/php-console-highlighter)
 [![Build Status](https://travis-ci.org/JakubOnderka/PHP-Console-Highlighter.svg?branch=master)](https://travis-ci.org/JakubOnderka/PHP-Console-Highlighter)
+[![License](https://poser.pugx.org/jakub-onderka/php-console-highlighter/license.svg)](https://packagist.org/packages/jakub-onderka/php-console-highlighter)
diff --git a/vendor/jakub-onderka/php-console-highlighter/composer.json b/vendor/jakub-onderka/php-console-highlighter/composer.json
index bd2f47a28b..21c29f710a 100644
--- a/vendor/jakub-onderka/php-console-highlighter/composer.json
+++ b/vendor/jakub-onderka/php-console-highlighter/composer.json
@@ -1,5 +1,6 @@
 {
     "name": "jakub-onderka/php-console-highlighter",
+    "description": "Highlight PHP code in terminal",
     "type": "library",
     "license": "MIT",
     "authors": [
@@ -10,15 +11,16 @@
         }
     ],
     "autoload": {
-        "psr-0": {"JakubOnderka\\PhpConsoleHighlighter": "src/"}
+        "psr-4": {"JakubOnderka\\PhpConsoleHighlighter\\": "src/"}
     },
     "require": {
-        "php": ">=5.3.0",
-        "jakub-onderka/php-console-color": "~0.1"
+        "php": ">=5.4.0",
+        "ext-tokenizer": "*",
+        "jakub-onderka/php-console-color": "~0.2"
     },
     "require-dev": {
         "phpunit/phpunit": "~4.0",
-        "jakub-onderka/php-parallel-lint": "~0.5",
+        "jakub-onderka/php-parallel-lint": "~1.0",
         "jakub-onderka/php-var-dump-check": "~0.1",
         "squizlabs/php_codesniffer": "~1.5",
         "jakub-onderka/php-code-style": "~1.0"
diff --git a/vendor/jakub-onderka/php-console-highlighter/phpunit.xml b/vendor/jakub-onderka/php-console-highlighter/phpunit.xml
index 74011d9dfe..9c653a680a 100644
--- a/vendor/jakub-onderka/php-console-highlighter/phpunit.xml
+++ b/vendor/jakub-onderka/php-console-highlighter/phpunit.xml
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<phpunit bootstrap="tests/bootstrap.php">
+<phpunit bootstrap="./vendor/autoload.php">
     <testsuites>
         <testsuite>
-            <directory>tests/*</directory>
+            <directory suffix="Test.php">tests</directory>
         </testsuite>
     </testsuites>
 
@@ -12,4 +12,4 @@
             <directory>vendor</directory>
         </blacklist>
     </filter>
-</phpunit>
\ No newline at end of file
+</phpunit>
diff --git a/vendor/jakub-onderka/php-console-highlighter/src/JakubOnderka/PhpConsoleHighlighter/Highlighter.php b/vendor/jakub-onderka/php-console-highlighter/src/Highlighter.php
similarity index 94%
rename from vendor/jakub-onderka/php-console-highlighter/src/JakubOnderka/PhpConsoleHighlighter/Highlighter.php
rename to vendor/jakub-onderka/php-console-highlighter/src/Highlighter.php
index b908e93189..47ce30d2c0 100644
--- a/vendor/jakub-onderka/php-console-highlighter/src/JakubOnderka/PhpConsoleHighlighter/Highlighter.php
+++ b/vendor/jakub-onderka/php-console-highlighter/src/Highlighter.php
@@ -31,6 +31,7 @@ class Highlighter
 
     /**
      * @param ConsoleColor $color
+     * @throws \JakubOnderka\PhpConsoleColor\InvalidStyleException
      */
     public function __construct(ConsoleColor $color)
     {
@@ -118,20 +119,6 @@ private function tokenize($source)
         foreach ($tokens as $token) {
             if (is_array($token)) {
                 switch ($token[0]) {
-                    case T_INLINE_HTML:
-                        $newType = self::TOKEN_HTML;
-                        break;
-
-                    case T_COMMENT:
-                    case T_DOC_COMMENT:
-                        $newType = self::TOKEN_COMMENT;
-                        break;
-
-                    case T_ENCAPSED_AND_WHITESPACE:
-                    case T_CONSTANT_ENCAPSED_STRING:
-                        $newType = self::TOKEN_STRING;
-                        break;
-
                     case T_WHITESPACE:
                         break;
 
@@ -151,17 +138,26 @@ private function tokenize($source)
                     case T_LINE:
                     case T_CLASS_C:
                     case T_FUNC_C:
-                    //case T_TRAIT_C:
+                    case T_TRAIT_C:
                         $newType = self::TOKEN_DEFAULT;
                         break;
 
+                    case T_COMMENT:
+                    case T_DOC_COMMENT:
+                        $newType = self::TOKEN_COMMENT;
+                        break;
+
+                    case T_ENCAPSED_AND_WHITESPACE:
+                    case T_CONSTANT_ENCAPSED_STRING:
+                        $newType = self::TOKEN_STRING;
+                        break;
+
+                    case T_INLINE_HTML:
+                        $newType = self::TOKEN_HTML;
+                        break;
+
                     default:
-                        // Compatibility with PHP 5.3
-                        if (defined('T_TRAIT_C') && $token[0] === T_TRAIT_C) {
-                            $newType = self::TOKEN_DEFAULT;
-                        } else {
-                            $newType = self::TOKEN_KEYWORD;
-                        }
+                        $newType = self::TOKEN_KEYWORD;
                 }
             } else {
                 $newType = $token === '"' ? self::TOKEN_STRING : self::TOKEN_KEYWORD;
@@ -171,7 +167,7 @@ private function tokenize($source)
                 $currentType = $newType;
             }
 
-            if ($currentType != $newType) {
+            if ($currentType !== $newType) {
                 $output[] = array($currentType, $buffer);
                 $buffer = '';
                 $currentType = $newType;
diff --git a/vendor/jakub-onderka/php-console-highlighter/tests/JakubOnderka/PhpConsoleHighligter/HigligterTest.php b/vendor/jakub-onderka/php-console-highlighter/tests/HigligterTest.php
similarity index 93%
rename from vendor/jakub-onderka/php-console-highlighter/tests/JakubOnderka/PhpConsoleHighligter/HigligterTest.php
rename to vendor/jakub-onderka/php-console-highlighter/tests/HigligterTest.php
index 269d03da56..187beb67bb 100644
--- a/vendor/jakub-onderka/php-console-highlighter/tests/JakubOnderka/PhpConsoleHighligter/HigligterTest.php
+++ b/vendor/jakub-onderka/php-console-highlighter/tests/HigligterTest.php
@@ -8,7 +8,9 @@ class HighlighterTest extends \PHPUnit_Framework_TestCase
 
     protected function getConsoleColorMock()
     {
-        $mock = $this->getMock('\JakubOnderka\PhpConsoleColor\ConsoleColor');
+        $mock = method_exists($this, 'createMock')
+            ? $this->createMock('\JakubOnderka\PhpConsoleColor\ConsoleColor')
+            : $this->getMock('\JakubOnderka\PhpConsoleColor\ConsoleColor');
 
         $mock->expects($this->any())
             ->method('apply')
@@ -260,4 +262,13 @@ public function testEmpty()
             ''
         );
     }
-}
\ No newline at end of file
+
+    public function testWhitespace()
+    {
+        $this->compare(
+            ' '
+            ,
+            '<token_html> </token_html>'
+        );
+    }
+}
diff --git a/vendor/jakub-onderka/php-console-highlighter/tests/bootstrap.php b/vendor/jakub-onderka/php-console-highlighter/tests/bootstrap.php
deleted file mode 100644
index 7500417eda..0000000000
--- a/vendor/jakub-onderka/php-console-highlighter/tests/bootstrap.php
+++ /dev/null
@@ -1,2 +0,0 @@
-<?php
-$loader = require_once __DIR__ . '/../vendor/autoload.php';
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/.travis.yml b/vendor/nikic/php-parser/.travis.yml
index 989d7a049f..d33d7a8b50 100644
--- a/vendor/nikic/php-parser/.travis.yml
+++ b/vendor/nikic/php-parser/.travis.yml
@@ -1,5 +1,5 @@
 language: php
-dist: trusty
+dist: xenial
 sudo: false
 
 cache:
@@ -10,11 +10,13 @@ php:
   - 7.0
   - 7.1
   - 7.2
+  - 7.3
+  - 7.4snapshot
   - nightly
 
 install:
   - if [ $TRAVIS_PHP_VERSION = '7.0' ]; then composer require satooshi/php-coveralls '~1.0'; fi
-  - composer install --prefer-dist
+  - composer install --prefer-dist --ignore-platform-reqs
 
 matrix:
   allow_failures:
@@ -23,7 +25,7 @@ matrix:
 
 script:
   - if [ $TRAVIS_PHP_VERSION = '7.0' ]; then vendor/bin/phpunit --coverage-clover build/logs/clover.xml; else vendor/bin/phpunit; fi
-  - if [ $TRAVIS_PHP_VERSION = '7.1' ]; then test_old/run-php-src.sh; fi
+  - if [ $TRAVIS_PHP_VERSION = '7.2' ]; then test_old/run-php-src.sh; fi
 
 after_success:
   - if [ $TRAVIS_PHP_VERSION = '7.0' ]; then php vendor/bin/coveralls; fi
diff --git a/vendor/nikic/php-parser/CHANGELOG.md b/vendor/nikic/php-parser/CHANGELOG.md
index facd571925..c3045d91c1 100644
--- a/vendor/nikic/php-parser/CHANGELOG.md
+++ b/vendor/nikic/php-parser/CHANGELOG.md
@@ -1,8 +1,94 @@
-Version 4.0.4-dev
+Version 4.2.3-dev
 -----------------
 
 Nothing yet.
 
+Version 4.2.2 (2019-05-25)
+--------------------------
+
+### Added
+
+* [PHP 7.4] Add support for arrow functions using a new `Expr\ArrowFunction` node. (#602)
+* [PHP 7.4] Add support for array spreads, using a new `unpack` subnode on `ArrayItem`. (#609)
+* Added support for inserting into empty list nodes in the formatting preserving pretty printer.
+
+### Changed
+
+* `php-parse` will now print messages to stderr, so that stdout only contains the actual result of
+  the operation (such as a JSON dump). (#605)
+
+### Fixed
+
+* Fixed attribute assignment for zero-length nop statements, and a related assertion failure in
+  the formatting-preserving pretty printer. (#589)
+
+Version 4.2.1 (2019-02-16)
+--------------------------
+
+### Added
+
+* [PHP 7.4] Add support for `??=` operator through a new `AssignOp\Coalesce` node. (#575)
+
+Version 4.2.0 (2019-01-12)
+--------------------------
+
+### Added
+
+* [PHP 7.4] Add support for typed properties through a new `type` subnode of `Stmt\Property`.
+  Additionally `Builder\Property` now has a `setType()` method. (#567)
+* Add `kind` attribute to `Cast\Double_`, which allows to distinguish between `(float)`,
+  `(double)` and `(real)`. The form of the cast will be preserved by the pretty printer. (#565)
+
+### Fixed
+
+* Remove assertion when pretty printing anonymous class with a name (#554).
+
+Version 4.1.1 (2018-12-26)
+--------------------------
+
+### Fixed
+
+* Fix "undefined offset" notice when parsing specific malformed code (#551).
+
+### Added
+
+* Support error recovery for missing return type (`function foo() : {}`) (#544).
+
+Version 4.1.0 (2018-10-10)
+--------------------------
+
+### Added
+
+* Added support for PHP 7.3 flexible heredoc/nowdoc strings, completing support for PHP 7.3. There
+  are two caveats for this feature:
+   * In some rare, pathological cases flexible heredoc/nowdoc strings change the interpretation of
+     existing doc strings. PHP-Parser will now use the new interpretation.
+   * Flexible heredoc/nowdoc strings require special support from the lexer. Because this is not
+     available on PHP versions before 7.3, support has to be emulated. This emulation is not perfect
+     and some cases which we do not expect to occur in practice (such as flexible doc strings being
+     nested within each other through abuse of variable-variable interpolation syntax) may not be
+     recognized correctly.
+* Added `DONT_TRAVERSE_CURRENT_AND_CHILDREN` to `NodeTraverser` to skip both traversal of child
+  nodes, and prevent subsequent visitors from visiting the current node.
+
+Version 4.0.4 (2018-09-18)
+--------------------------
+
+### Added
+
+* The following methods have been added to `BuilderFactory`:
+  * `useTrait()` (fluent builder)
+  * `traitUseAdaptation()` (fluent builder)
+  * `useFunction()` (fluent builder)
+  * `useConst()` (fluent builder)
+  * `var()`
+  * `propertyFetch()`
+  
+### Deprecated
+
+* `Builder\Param::setTypeHint()` has been deprecated in favor of the newly introduced
+  `Builder\Param::setType()`.
+
 Version 4.0.3 (2018-07-15)
 --------------------------
 
diff --git a/vendor/nikic/php-parser/README.md b/vendor/nikic/php-parser/README.md
index 7b1fedabb2..e62748eb1c 100644
--- a/vendor/nikic/php-parser/README.md
+++ b/vendor/nikic/php-parser/README.md
@@ -3,12 +3,12 @@ PHP Parser
 
 [![Build Status](https://travis-ci.org/nikic/PHP-Parser.svg?branch=master)](https://travis-ci.org/nikic/PHP-Parser) [![Coverage Status](https://coveralls.io/repos/github/nikic/PHP-Parser/badge.svg?branch=master)](https://coveralls.io/github/nikic/PHP-Parser?branch=master)
 
-This is a PHP 5.2 to PHP 7.2 parser written in PHP. Its purpose is to simplify static code analysis and
+This is a PHP 5.2 to PHP 7.3 parser written in PHP. Its purpose is to simplify static code analysis and
 manipulation.
 
-[**Documentation for version 4.x**][doc_master] (stable; for running on PHP >= 7.0; for parsing PHP 5.2 to PHP 7.2).
+[**Documentation for version 4.x**][doc_master] (stable; for running on PHP >= 7.0; for parsing PHP 5.2 to PHP 7.3).
 
-[Documentation for version 3.x][doc_3_x] (stable; for running on PHP >= 5.5; for parsing PHP 5.2 to PHP 7.2).
+[Documentation for version 3.x][doc_3_x] (unsupported; for running on PHP >= 5.5; for parsing PHP 5.2 to PHP 7.2).
 
 Features
 --------
diff --git a/vendor/nikic/php-parser/bin/php-parse b/vendor/nikic/php-parser/bin/php-parse
index 5dd01ba179..a002f85271 100755
--- a/vendor/nikic/php-parser/bin/php-parse
+++ b/vendor/nikic/php-parser/bin/php-parse
@@ -45,14 +45,15 @@ $traverser->addVisitor(new PhpParser\NodeVisitor\NameResolver);
 foreach ($files as $file) {
     if (strpos($file, '<?php') === 0) {
         $code = $file;
-        echo "====> Code $code\n";
+        fwrite(STDERR, "====> Code $code\n");
     } else {
         if (!file_exists($file)) {
-            die("File $file does not exist.\n");
+            fwrite(STDERR, "File $file does not exist.\n");
+            exit(1);
         }
 
         $code = file_get_contents($file);
-        echo "====> File $file:\n";
+        fwrite(STDERR, "====> File $file:\n");
     }
 
     if ($attributes['with-recovery']) {
@@ -60,7 +61,7 @@ foreach ($files as $file) {
         $stmts = $parser->parse($code, $errorHandler);
         foreach ($errorHandler->getErrors() as $error) {
             $message = formatErrorMessage($error, $code, $attributes['with-column-info']);
-            echo $message . "\n";
+            fwrite(STDERR, $message . "\n");
         }
         if (null === $stmts) {
             continue;
@@ -70,25 +71,26 @@ foreach ($files as $file) {
             $stmts = $parser->parse($code);
         } catch (PhpParser\Error $error) {
             $message = formatErrorMessage($error, $code, $attributes['with-column-info']);
-            die($message . "\n");
+            fwrite(STDERR, $message . "\n");
+            exit(1);
         }
     }
 
     foreach ($operations as $operation) {
         if ('dump' === $operation) {
-            echo "==> Node dump:\n";
+            fwrite(STDERR, "==> Node dump:\n");
             echo $dumper->dump($stmts, $code), "\n";
         } elseif ('pretty-print' === $operation) {
-            echo "==> Pretty print:\n";
+            fwrite(STDERR, "==> Pretty print:\n");
             echo $prettyPrinter->prettyPrintFile($stmts), "\n";
         } elseif ('json-dump' === $operation) {
-            echo "==> JSON dump:\n";
+            fwrite(STDERR, "==> JSON dump:\n");
             echo json_encode($stmts, JSON_PRETTY_PRINT), "\n";
         } elseif ('var-dump' === $operation) {
-            echo "==> var_dump():\n";
+            fwrite(STDERR, "==> var_dump():\n");
             var_dump($stmts);
         } elseif ('resolve-names' === $operation) {
-            echo "==> Resolved names.\n";
+            fwrite(STDERR, "==> Resolved names.\n");
             $stmts = $traverser->traverse($stmts);
         }
     }
@@ -104,9 +106,9 @@ function formatErrorMessage(PhpParser\Error $e, $code, $withColumnInfo) {
 
 function showHelp($error = '') {
     if ($error) {
-        echo $error . "\n\n";
+        fwrite(STDERR, $error . "\n\n");
     }
-    die(<<<OUTPUT
+    fwrite($error ? STDERR : STDOUT, <<<OUTPUT
 Usage: php-parse [operations] file1.php [file2.php ...]
    or: php-parse [operations] "<?php code"
 Turn PHP source code into an abstract syntax tree.
@@ -131,6 +133,7 @@ Example:
 
 OUTPUT
     );
+    exit($error ? 1 : 0);
 }
 
 function parseArgs($args) {
diff --git a/vendor/nikic/php-parser/composer.json b/vendor/nikic/php-parser/composer.json
index 7ae425ff76..9742853927 100644
--- a/vendor/nikic/php-parser/composer.json
+++ b/vendor/nikic/php-parser/composer.json
@@ -1,8 +1,11 @@
 {
     "name": "nikic/php-parser",
-    "description": "A PHP parser written in PHP",
-    "keywords": ["php", "parser"],
     "type": "library",
+    "description": "A PHP parser written in PHP",
+    "keywords": [
+        "php",
+        "parser"
+    ],
     "license": "BSD-3-Clause",
     "authors": [
         {
@@ -16,15 +19,22 @@
     "require-dev": {
         "phpunit/phpunit": "^6.5 || ^7.0"
     },
+    "extra": {
+        "branch-alias": {
+            "dev-master": "4.2-dev"
+        }
+    },
     "autoload": {
         "psr-4": {
             "PhpParser\\": "lib/PhpParser"
         }
     },
-    "bin": ["bin/php-parse"],
-    "extra": {
-        "branch-alias": {
-            "dev-master": "4.0-dev"
+    "autoload-dev": {
+        "psr-4": {
+            "PhpParser\\": "test/PhpParser/"
         }
-    }
+    },
+    "bin": [
+        "bin/php-parse"
+    ]
 }
diff --git a/vendor/nikic/php-parser/doc/0_Introduction.markdown b/vendor/nikic/php-parser/doc/0_Introduction.markdown
index 240f7fdea1..abc40f2bb8 100644
--- a/vendor/nikic/php-parser/doc/0_Introduction.markdown
+++ b/vendor/nikic/php-parser/doc/0_Introduction.markdown
@@ -1,7 +1,7 @@
 Introduction
 ============
 
-This project is a PHP 5.2 to PHP 7.2 parser **written in PHP itself**.
+This project is a PHP 5.2 to PHP 7.3 parser **written in PHP itself**.
 
 What is this for?
 -----------------
@@ -26,11 +26,11 @@ programmatic PHP code analysis are incidentally PHP developers, not C developers
 What can it parse?
 ------------------
 
-The parser supports parsing PHP 5.2-7.2.
+The parser supports parsing PHP 5.2-7.3.
 
 As the parser is based on the tokens returned by `token_get_all` (which is only able to lex the PHP
 version it runs on), additionally a wrapper for emulating tokens from newer versions is provided.
-This allows to parse PHP 7.2 source code running on PHP 5.5, for example. This emulation is somewhat
+This allows to parse PHP 7.3 source code running on PHP 7.0, for example. This emulation is somewhat
 hacky and not perfect, but it should work well on any sane code.
 
 What output does it produce?
diff --git a/vendor/nikic/php-parser/doc/2_Usage_of_basic_components.markdown b/vendor/nikic/php-parser/doc/2_Usage_of_basic_components.markdown
index 462b56374e..9a809ec8e6 100644
--- a/vendor/nikic/php-parser/doc/2_Usage_of_basic_components.markdown
+++ b/vendor/nikic/php-parser/doc/2_Usage_of_basic_components.markdown
@@ -339,7 +339,8 @@ All four methods can either return the changed node or not return at all (i.e. `
 case the current node is not changed.
 
 The `enterNode()` method can additionally return the value `NodeTraverser::DONT_TRAVERSE_CHILDREN`,
-which instructs the traverser to skip all children of the current node.
+which instructs the traverser to skip all children of the current node. To furthermore prevent subsequent
+visitors from visiting the current node, `NodeTraverser::DONT_TRAVERSE_CURRENT_AND_CHILDREN` can be used instead.
 
 The `leaveNode()` method can additionally return the value `NodeTraverser::REMOVE_NODE`, in which
 case the current node will be removed from the parent array. Furthermore it is possible to return
diff --git a/vendor/nikic/php-parser/doc/component/AST_builders.markdown b/vendor/nikic/php-parser/doc/component/AST_builders.markdown
index 5597e2a419..60ae0192df 100644
--- a/vendor/nikic/php-parser/doc/component/AST_builders.markdown
+++ b/vendor/nikic/php-parser/doc/component/AST_builders.markdown
@@ -28,17 +28,27 @@ use PhpParser\Node;
 
 $factory = new BuilderFactory;
 $node = $factory->namespace('Name\Space')
-    ->addStmt($factory->use('Some\Other\Thingy')->as('SomeOtherClass'))
+    ->addStmt($factory->use('Some\Other\Thingy')->as('SomeClass'))
+    ->addStmt($factory->useFunction('strlen'))
+    ->addStmt($factory->useConst('PHP_VERSION'))
     ->addStmt($factory->class('SomeOtherClass')
         ->extend('SomeClass')
         ->implement('A\Few', '\Interfaces')
         ->makeAbstract() // ->makeFinal()
 
+        ->addStmt($factory->useTrait('FirstTrait'))
+
+        ->addStmt($factory->useTrait('SecondTrait', 'ThirdTrait')
+            ->and('AnotherTrait')
+            ->with($factory->traitUseAdaptation('foo')->as('bar'))
+            ->with($factory->traitUseAdaptation('AnotherTrait', 'baz')->as('test'))
+            ->with($factory->traitUseAdaptation('AnotherTrait', 'func')->insteadof('SecondTrait')))
+
         ->addStmt($factory->method('someMethod')
             ->makePublic()
             ->makeAbstract() // ->makeFinal()
-            ->setReturnType('bool')
-            ->addParam($factory->param('someParam')->setTypeHint('SomeClass'))
+            ->setReturnType('bool') // ->makeReturnByRef()
+            ->addParam($factory->param('someParam')->setType('SomeClass'))
             ->setDocComment('/**
                               * This method does something.
                               *
@@ -74,8 +84,16 @@ This will produce the following output with the standard pretty printer:
 namespace Name\Space;
 
 use Some\Other\Thingy as SomeClass;
+use function strlen;
+use const PHP_VERSION;
 abstract class SomeOtherClass extends SomeClass implements A\Few, \Interfaces
 {
+    use FirstTrait;
+    use SecondTrait, ThirdTrait, AnotherTrait {
+        foo as bar;
+        AnotherTrait::baz as test;
+        AnotherTrait::func insteadof SecondTrait;
+    }
     protected $someProperty;
     private $anotherProperty = array(1, 2, 3);
     /**
@@ -98,6 +116,7 @@ The `BuilderFactory` also provides a number of additional helper methods, which
 nodes. The following methods are currently available:
 
  * `val($value)`: Creates an AST node for a literal value like `42` or `[1, 2, 3]`.
+ * `var($name)`: Creates variable node.
  * `args(array $args)`: Creates an array of function/method arguments, including the required `Arg`
    wrappers. Also converts literals to AST nodes.
  * `funcCall($name, array $args = [])`: Create a function call node. Converts `$name` to a `Name`
@@ -111,7 +130,9 @@ nodes. The following methods are currently available:
  * `constFetch($name)`: Create a constant fetch node. Converts `$name` to a `Name` node.
  * `classConstFetch($class, $name)`: Create a class constant fetch node. Converts `$class` to a
    `Name` node and `$name` to an `Identifier` node.
+ * `propertyFetch($var, $name)`: Creates a property fetch node. Converts `$name` to an `Identifier`
+   node.
  * `concat(...$exprs)`: Create a tree of `BinaryOp\Concat` nodes for the given expressions.
 
 These methods may be expanded on an as-needed basis. Please open an issue or PR if a common
-operation is missing.
\ No newline at end of file
+operation is missing.
diff --git a/vendor/nikic/php-parser/doc/component/JSON_representation.markdown b/vendor/nikic/php-parser/doc/component/JSON_representation.markdown
index a4d3933564..47c3429c07 100644
--- a/vendor/nikic/php-parser/doc/component/JSON_representation.markdown
+++ b/vendor/nikic/php-parser/doc/component/JSON_representation.markdown
@@ -116,8 +116,8 @@ The JSON representation may be converted back into an AST using the `JsonDecoder
 ```php
 <?php
 
-$nodeDecoder = new PhpParser\NodeDecoder();
-$ast = $nodeDecoder->decode($json);
+$jsonDecoder = new PhpParser\JsonDecoder();
+$ast = $jsonDecoder->decode($json);
 ```
 
 Note that not all ASTs can be represented using JSON. In particular:
@@ -128,4 +128,4 @@ Note that not all ASTs can be represented using JSON. In particular:
 
 If the node tree is not representable in JSON, the initial `json_encode()` call will fail.
 
-From the command line, a JSON dump can be obtained using `vendor/bin/php-parse -j file.php`.
\ No newline at end of file
+From the command line, a JSON dump can be obtained using `vendor/bin/php-parse -j file.php`.
diff --git a/vendor/nikic/php-parser/doc/component/Walking_the_AST.markdown b/vendor/nikic/php-parser/doc/component/Walking_the_AST.markdown
index fd979d5a76..69af1e832f 100644
--- a/vendor/nikic/php-parser/doc/component/Walking_the_AST.markdown
+++ b/vendor/nikic/php-parser/doc/component/Walking_the_AST.markdown
@@ -215,7 +215,7 @@ once you found it:
 private $class = null;
 public function enterNode(Node $node) {
     if ($node instanceof Node\Stmt\Class_ &&
-        $node->namespaceName->toString() === 'Foo\Bar\Baz'
+        $node->namespacedName->toString() === 'Foo\Bar\Baz'
     ) {
         $this->class = $node;
         return NodeTraverser::STOP_TRAVERSAL;
@@ -235,7 +235,7 @@ A single traverser can be used with multiple visitors:
 $traverser = new NodeTraverser;
 $traverser->addVisitor($visitorA);
 $traverser->addVisitor($visitorB);
-$stmts = $traverser->traverser($stmts);
+$stmts = $traverser->traverse($stmts);
 ```
 
 It is important to understand that if a traverser is run with multiple visitors, the visitors will
@@ -281,6 +281,8 @@ special enterNode/leaveNode return values:
 
  * If *any* visitor returns `DONT_TRAVERSE_CHILDREN`, the children will be skipped for *all*
    visitors.
+ * If *any* visitor returns `DONT_TRAVERSE_CURRENT_AND_CHILDREN`, the children will be skipped for *all*
+   visitors, and all *subsequent* visitors will not visit the current node.
  * If *any* visitor returns `STOP_TRAVERSAL`, traversal is stopped for *all* visitors.
  * If a visitor returns a replacement node, subsequent visitors will be passed the replacement node,
    not the original one.
@@ -305,7 +307,7 @@ $nodeFinder = new NodeFinder;
 $classes = $nodeFinder->findInstanceOf($stmts, Node\Stmt\Class_::class);
 
 // Find all classes that extend another class
-$extendingClasses = $nodeFinder->findInstanceOf($stmts, function(Node $node) {
+$extendingClasses = $nodeFinder->find($stmts, function(Node $node) {
     return $node instanceof Node\Stmt\Class_
         && $node->extends !== null;
 });
@@ -332,4 +334,4 @@ reverse direction: When working on a node, you might want to check if the parent
 certain property.
 
 PHP-Parser does not add parent (or sibling) references to nodes by itself, but you can easily
-emulate this with a visitor. See the [FAQ](FAQ.markdown) for more information.
\ No newline at end of file
+emulate this with a visitor. See the [FAQ](FAQ.markdown) for more information.
diff --git a/vendor/nikic/php-parser/grammar/php5.y b/vendor/nikic/php-parser/grammar/php5.y
index 486d836c85..e775f2cab7 100644
--- a/vendor/nikic/php-parser/grammar/php5.y
+++ b/vendor/nikic/php-parser/grammar/php5.y
@@ -16,7 +16,7 @@ top_statement_list_ex:
 
 top_statement_list:
       top_statement_list_ex
-          { makeNop($nop, $this->lookaheadStartAttributes, $this->endAttributes);
+          { makeZeroLengthNop($nop, $this->lookaheadStartAttributes);
             if ($nop !== null) { $1[] = $nop; } $$ = $1; }
 ;
 
@@ -27,7 +27,7 @@ reserved_non_modifiers:
     | T_FINALLY | T_THROW | T_USE | T_INSTEADOF | T_GLOBAL | T_VAR | T_UNSET | T_ISSET | T_EMPTY | T_CONTINUE | T_GOTO
     | T_FUNCTION | T_CONST | T_RETURN | T_PRINT | T_YIELD | T_LIST | T_SWITCH | T_ENDSWITCH | T_CASE | T_DEFAULT
     | T_BREAK | T_ARRAY | T_CALLABLE | T_EXTENDS | T_IMPLEMENTS | T_NAMESPACE | T_TRAIT | T_INTERFACE | T_CLASS
-    | T_CLASS_C | T_TRAIT_C | T_FUNC_C | T_METHOD_C | T_LINE | T_FILE | T_DIR | T_NS_C | T_HALT_COMPILER
+    | T_CLASS_C | T_TRAIT_C | T_FUNC_C | T_METHOD_C | T_LINE | T_FILE | T_DIR | T_NS_C | T_HALT_COMPILER | T_FN
 ;
 
 semi_reserved:
@@ -160,7 +160,7 @@ inner_statement_list_ex:
 
 inner_statement_list:
       inner_statement_list_ex
-          { makeNop($nop, $this->lookaheadStartAttributes, $this->endAttributes);
+          { makeZeroLengthNop($nop, $this->lookaheadStartAttributes);
             if ($nop !== null) { $1[] = $nop; } $$ = $1; }
 ;
 
@@ -461,7 +461,7 @@ class_statement_list_ex:
 
 class_statement_list:
       class_statement_list_ex
-          { makeNop($nop, $this->lookaheadStartAttributes, $this->endAttributes);
+          { makeZeroLengthNop($nop, $this->lookaheadStartAttributes);
             if ($nop !== null) { $1[] = $nop; } $$ = $1; }
 ;
 
@@ -579,6 +579,7 @@ expr:
     | variable T_SL_EQUAL expr                              { $$ = Expr\AssignOp\ShiftLeft [$1, $3]; }
     | variable T_SR_EQUAL expr                              { $$ = Expr\AssignOp\ShiftRight[$1, $3]; }
     | variable T_POW_EQUAL expr                             { $$ = Expr\AssignOp\Pow       [$1, $3]; }
+    | variable T_COALESCE_EQUAL expr                        { $$ = Expr\AssignOp\Coalesce  [$1, $3]; }
     | variable T_INC                                        { $$ = Expr\PostInc[$1]; }
     | T_INC variable                                        { $$ = Expr\PreInc [$2]; }
     | variable T_DEC                                        { $$ = Expr\PostDec[$1]; }
@@ -628,7 +629,10 @@ expr:
     | T_REQUIRE expr                                        { $$ = Expr\Include_[$2, Expr\Include_::TYPE_REQUIRE]; }
     | T_REQUIRE_ONCE expr                                   { $$ = Expr\Include_[$2, Expr\Include_::TYPE_REQUIRE_ONCE]; }
     | T_INT_CAST expr                                       { $$ = Expr\Cast\Int_    [$2]; }
-    | T_DOUBLE_CAST expr                                    { $$ = Expr\Cast\Double  [$2]; }
+    | T_DOUBLE_CAST expr
+          { $attrs = attributes();
+            $attrs['kind'] = $this->getFloatCastKind($1);
+            $$ = new Expr\Cast\Double($2, $attrs); }
     | T_STRING_CAST expr                                    { $$ = Expr\Cast\String_ [$2]; }
     | T_ARRAY_CAST expr                                     { $$ = Expr\Cast\Array_  [$2]; }
     | T_OBJECT_CAST expr                                    { $$ = Expr\Cast\Object_ [$2]; }
@@ -791,11 +795,9 @@ common_scalar:
     | T_FUNC_C                                              { $$ = Scalar\MagicConst\Function_[]; }
     | T_NS_C                                                { $$ = Scalar\MagicConst\Namespace_[]; }
     | T_START_HEREDOC T_ENCAPSED_AND_WHITESPACE T_END_HEREDOC
-          { $attrs = attributes(); setDocStringAttrs($attrs, $1);
-            $$ = new Scalar\String_(Scalar\String_::parseDocString($1, $2, false), $attrs); }
+          { $$ = $this->parseDocString($1, $2, $3, attributes(), stackAttributes(#3), false); }
     | T_START_HEREDOC T_END_HEREDOC
-          { $attrs = attributes(); setDocStringAttrs($attrs, $1);
-            $$ = new Scalar\String_('', $attrs); }
+          { $$ = $this->parseDocString($1, '', $2, attributes(), stackAttributes(#2), false); }
 ;
 
 static_scalar:
@@ -856,8 +858,7 @@ scalar:
           { $attrs = attributes(); $attrs['kind'] = Scalar\String_::KIND_DOUBLE_QUOTED;
             parseEncapsed($2, '"', true); $$ = new Scalar\Encapsed($2, $attrs); }
     | T_START_HEREDOC encaps_list T_END_HEREDOC
-          { $attrs = attributes(); setDocStringAttrs($attrs, $1);
-            parseEncapsedDoc($2, true); $$ = new Scalar\Encapsed($2, $attrs); }
+          { $$ = $this->parseDocString($1, $2, $3, attributes(), stackAttributes(#3), true); }
 ;
 
 static_array_pair_list:
@@ -987,6 +988,7 @@ array_pair:
     | expr                                                  { $$ = Expr\ArrayItem[$1, null, false]; }
     | expr T_DOUBLE_ARROW '&' variable                      { $$ = Expr\ArrayItem[$4, $1,   true]; }
     | '&' variable                                          { $$ = Expr\ArrayItem[$2, null, true]; }
+    | T_ELLIPSIS expr                                       { $$ = Expr\ArrayItem[$2, null, false, attributes(), true]; }
 ;
 
 encaps_list:
diff --git a/vendor/nikic/php-parser/grammar/php7.y b/vendor/nikic/php-parser/grammar/php7.y
index ba203284bb..23b193bbba 100644
--- a/vendor/nikic/php-parser/grammar/php7.y
+++ b/vendor/nikic/php-parser/grammar/php7.y
@@ -16,7 +16,7 @@ top_statement_list_ex:
 
 top_statement_list:
       top_statement_list_ex
-          { makeNop($nop, $this->lookaheadStartAttributes, $this->endAttributes);
+          { makeZeroLengthNop($nop, $this->lookaheadStartAttributes);
             if ($nop !== null) { $1[] = $nop; } $$ = $1; }
 ;
 
@@ -27,7 +27,7 @@ reserved_non_modifiers:
     | T_FINALLY | T_THROW | T_USE | T_INSTEADOF | T_GLOBAL | T_VAR | T_UNSET | T_ISSET | T_EMPTY | T_CONTINUE | T_GOTO
     | T_FUNCTION | T_CONST | T_RETURN | T_PRINT | T_YIELD | T_LIST | T_SWITCH | T_ENDSWITCH | T_CASE | T_DEFAULT
     | T_BREAK | T_ARRAY | T_CALLABLE | T_EXTENDS | T_IMPLEMENTS | T_NAMESPACE | T_TRAIT | T_INTERFACE | T_CLASS
-    | T_CLASS_C | T_TRAIT_C | T_FUNC_C | T_METHOD_C | T_LINE | T_FILE | T_DIR | T_NS_C | T_HALT_COMPILER
+    | T_CLASS_C | T_TRAIT_C | T_FUNC_C | T_METHOD_C | T_LINE | T_FILE | T_DIR | T_NS_C | T_HALT_COMPILER | T_FN
 ;
 
 semi_reserved:
@@ -196,7 +196,7 @@ inner_statement_list_ex:
 
 inner_statement_list:
       inner_statement_list_ex
-          { makeNop($nop, $this->lookaheadStartAttributes, $this->endAttributes);
+          { makeZeroLengthNop($nop, $this->lookaheadStartAttributes);
             if ($nop !== null) { $1[] = $nop; } $$ = $1; }
 ;
 
@@ -450,11 +450,11 @@ non_empty_parameter_list:
 ;
 
 parameter:
-      optional_param_type optional_ref optional_ellipsis plain_variable
+      optional_type optional_ref optional_ellipsis plain_variable
           { $$ = Node\Param[$4, null, $1, $2, $3]; $this->checkParam($$); }
-    | optional_param_type optional_ref optional_ellipsis plain_variable '=' expr
+    | optional_type optional_ref optional_ellipsis plain_variable '=' expr
           { $$ = Node\Param[$4, $6, $1, $2, $3]; $this->checkParam($$); }
-    | optional_param_type optional_ref optional_ellipsis error
+    | optional_type optional_ref optional_ellipsis error
           { $$ = Node\Param[Expr\Error[], null, $1, $2, $3]; }
 ;
 
@@ -469,7 +469,7 @@ type:
     | T_CALLABLE                                            { $$ = Node\Identifier['callable']; }
 ;
 
-optional_param_type:
+optional_type:
       /* empty */                                           { $$ = null; }
     | type_expr                                             { $$ = $1; }
 ;
@@ -477,6 +477,7 @@ optional_param_type:
 optional_return_type:
       /* empty */                                           { $$ = null; }
     | ':' type_expr                                         { $$ = $2; }
+    | ':' error                                             { $$ = null; }
 ;
 
 argument_list:
@@ -529,13 +530,14 @@ class_statement_list_ex:
 
 class_statement_list:
       class_statement_list_ex
-          { makeNop($nop, $this->lookaheadStartAttributes, $this->endAttributes);
+          { makeZeroLengthNop($nop, $this->lookaheadStartAttributes);
             if ($nop !== null) { $1[] = $nop; } $$ = $1; }
 ;
 
 class_statement:
-      variable_modifiers property_declaration_list ';'
-          { $$ = Stmt\Property[$1, $2]; $this->checkProperty($$, #1); }
+      variable_modifiers optional_type property_declaration_list ';'
+          { $attrs = attributes();
+            $$ = new Stmt\Property($1, $3, $attrs, $2); $this->checkProperty($$, #1); }
     | method_modifiers T_CONST class_const_list ';'
           { $$ = Stmt\ClassConst[$3, $1]; $this->checkClassConst($$, #1); }
     | method_modifiers T_FUNCTION optional_ref identifier_ex '(' parameter_list ')' optional_return_type method_body
@@ -658,6 +660,7 @@ expr:
     | variable T_SL_EQUAL expr                              { $$ = Expr\AssignOp\ShiftLeft [$1, $3]; }
     | variable T_SR_EQUAL expr                              { $$ = Expr\AssignOp\ShiftRight[$1, $3]; }
     | variable T_POW_EQUAL expr                             { $$ = Expr\AssignOp\Pow       [$1, $3]; }
+    | variable T_COALESCE_EQUAL expr                        { $$ = Expr\AssignOp\Coalesce  [$1, $3]; }
     | variable T_INC                                        { $$ = Expr\PostInc[$1]; }
     | T_INC variable                                        { $$ = Expr\PreInc [$2]; }
     | variable T_DEC                                        { $$ = Expr\PostDec[$1]; }
@@ -705,7 +708,10 @@ expr:
     | T_REQUIRE expr                                        { $$ = Expr\Include_[$2, Expr\Include_::TYPE_REQUIRE]; }
     | T_REQUIRE_ONCE expr                                   { $$ = Expr\Include_[$2, Expr\Include_::TYPE_REQUIRE_ONCE]; }
     | T_INT_CAST expr                                       { $$ = Expr\Cast\Int_    [$2]; }
-    | T_DOUBLE_CAST expr                                    { $$ = Expr\Cast\Double  [$2]; }
+    | T_DOUBLE_CAST expr
+          { $attrs = attributes();
+            $attrs['kind'] = $this->getFloatCastKind($1);
+            $$ = new Expr\Cast\Double($2, $attrs); }
     | T_STRING_CAST expr                                    { $$ = Expr\Cast\String_ [$2]; }
     | T_ARRAY_CAST expr                                     { $$ = Expr\Cast\Array_  [$2]; }
     | T_OBJECT_CAST expr                                    { $$ = Expr\Cast\Object_ [$2]; }
@@ -723,6 +729,12 @@ expr:
     | T_YIELD expr                                          { $$ = Expr\Yield_[$2, null]; }
     | T_YIELD expr T_DOUBLE_ARROW expr                      { $$ = Expr\Yield_[$4, $2]; }
     | T_YIELD_FROM expr                                     { $$ = Expr\YieldFrom[$2]; }
+
+    | T_FN optional_ref '(' parameter_list ')' optional_return_type T_DOUBLE_ARROW expr
+          { $$ = Expr\ArrowFunction[['static' => false, 'byRef' => $2, 'params' => $4, 'returnType' => $6, 'expr' => $8]]; }
+    | T_STATIC T_FN optional_ref '(' parameter_list ')' optional_return_type T_DOUBLE_ARROW expr
+          { $$ = Expr\ArrowFunction[['static' => true, 'byRef' => $3, 'params' => $5, 'returnType' => $7, 'expr' => $9]]; }
+
     | T_FUNCTION optional_ref '(' parameter_list ')' lexical_vars optional_return_type
       block_or_error
           { $$ = Expr\Closure[['static' => false, 'byRef' => $2, 'params' => $4, 'uses' => $6, 'returnType' => $7, 'stmts' => $8]]; }
@@ -847,17 +859,14 @@ scalar:
     | dereferencable_scalar                                 { $$ = $1; }
     | constant                                              { $$ = $1; }
     | T_START_HEREDOC T_ENCAPSED_AND_WHITESPACE T_END_HEREDOC
-          { $attrs = attributes(); setDocStringAttrs($attrs, $1);
-            $$ = new Scalar\String_(Scalar\String_::parseDocString($1, $2), $attrs); }
+          { $$ = $this->parseDocString($1, $2, $3, attributes(), stackAttributes(#3), true); }
     | T_START_HEREDOC T_END_HEREDOC
-          { $attrs = attributes(); setDocStringAttrs($attrs, $1);
-            $$ = new Scalar\String_('', $attrs); }
+          { $$ = $this->parseDocString($1, '', $2, attributes(), stackAttributes(#2), true); }
     | '"' encaps_list '"'
           { $attrs = attributes(); $attrs['kind'] = Scalar\String_::KIND_DOUBLE_QUOTED;
             parseEncapsed($2, '"', true); $$ = new Scalar\Encapsed($2, $attrs); }
     | T_START_HEREDOC encaps_list T_END_HEREDOC
-          { $attrs = attributes(); setDocStringAttrs($attrs, $1);
-            parseEncapsedDoc($2, true); $$ = new Scalar\Encapsed($2, $attrs); }
+          { $$ = $this->parseDocString($1, $2, $3, attributes(), stackAttributes(#3), true); }
 ;
 
 optional_expr:
@@ -961,6 +970,7 @@ array_pair_list:
 comma_or_error:
       ','
     | error
+          { /* do nothing -- prevent default action of $$=$1. See #551. */ }
 ;
 
 inner_array_pair_list:
@@ -973,6 +983,7 @@ array_pair:
     | expr                                                  { $$ = Expr\ArrayItem[$1, null, false]; }
     | expr T_DOUBLE_ARROW '&' variable                      { $$ = Expr\ArrayItem[$4, $1,   true]; }
     | '&' variable                                          { $$ = Expr\ArrayItem[$2, null, true]; }
+    | T_ELLIPSIS expr                                       { $$ = Expr\ArrayItem[$2, null, false, attributes(), true]; }
     | /* empty */                                           { $$ = null; }
 ;
 
diff --git a/vendor/nikic/php-parser/grammar/rebuildParsers.php b/vendor/nikic/php-parser/grammar/rebuildParsers.php
index 3be5edb64d..b913cdacaf 100644
--- a/vendor/nikic/php-parser/grammar/rebuildParsers.php
+++ b/vendor/nikic/php-parser/grammar/rebuildParsers.php
@@ -13,9 +13,12 @@
 $resultDir = __DIR__ . '/../lib/PhpParser/Parser';
 $tokensResultsFile = $resultDir . '/Tokens.php';
 
-// check for kmyacc.exe binary in this directory, otherwise fall back to global name
-$kmyacc = __DIR__ . '/kmyacc.exe';
-if (!file_exists($kmyacc)) {
+// check for kmyacc binary in this directory, otherwise fall back to global name
+if (file_exists(__DIR__ . '/kmyacc.exe')) {
+    $kmyacc = __DIR__ . '/kmyacc.exe';
+} else if (file_exists(__DIR__ . '/kmyacc')) {
+    $kmyacc = __DIR__ . '/kmyacc';
+} else {
     $kmyacc = 'kmyacc';
 }
 
@@ -166,15 +169,6 @@ function($matches) {
                      . ' $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, ' . $args[1] . ', ' . $args[2] . '); } }';
             }
 
-            if ('parseEncapsedDoc' == $name) {
-                assertArgs(2, $args, $name);
-
-                return 'foreach (' . $args[0] . ' as $s) { if ($s instanceof Node\Scalar\EncapsedStringPart) {'
-                     . ' $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, null, ' . $args[1] . '); } }'
-                     . ' $s->value = preg_replace(\'~(\r\n|\n|\r)\z~\', \'\', $s->value);'
-                     . ' if (\'\' === $s->value) array_pop(' . $args[0] . ');';
-            }
-
             if ('makeNop' == $name) {
                 assertArgs(3, $args, $name);
 
@@ -184,6 +178,15 @@ function($matches) {
                 . ' else { ' . $args[0] . ' = null; }';
             }
 
+            if ('makeZeroLengthNop' == $name) {
+                assertArgs(2, $args, $name);
+
+                return '$startAttributes = ' . $args[1] . ';'
+                    . ' if (isset($startAttributes[\'comments\']))'
+                    . ' { ' . $args[0] . ' = new Stmt\Nop($this->createZeroLengthAttributes($startAttributes)); }'
+                    . ' else { ' . $args[0] . ' = null; }';
+            }
+
             if ('strKind' == $name) {
                 assertArgs(1, $args, $name);
 
@@ -192,15 +195,6 @@ function($matches) {
                      . '? Scalar\String_::KIND_SINGLE_QUOTED : Scalar\String_::KIND_DOUBLE_QUOTED)';
             }
 
-            if ('setDocStringAttrs' == $name) {
-                assertArgs(2, $args, $name);
-
-                return $args[0] . '[\'kind\'] = strpos(' . $args[1] . ', "\'") === false '
-                     . '? Scalar\String_::KIND_HEREDOC : Scalar\String_::KIND_NOWDOC; '
-                     . 'preg_match(\'/\A[bB]?<<<[ \t]*[\\\'"]?([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)[\\\'"]?(?:\r\n|\n|\r)\z/\', ' . $args[1] . ', $matches); '
-                     . $args[0] . '[\'docLabel\'] = $matches[1];';
-            }
-
             if ('prependLeadingComments' == $name) {
                 assertArgs(1, $args, $name);
 
diff --git a/vendor/nikic/php-parser/grammar/tokens.y b/vendor/nikic/php-parser/grammar/tokens.y
index 2b54f80b47..dd83a6f83d 100644
--- a/vendor/nikic/php-parser/grammar/tokens.y
+++ b/vendor/nikic/php-parser/grammar/tokens.y
@@ -10,7 +10,7 @@
 %right T_YIELD
 %right T_DOUBLE_ARROW
 %right T_YIELD_FROM
-%left '=' T_PLUS_EQUAL T_MINUS_EQUAL T_MUL_EQUAL T_DIV_EQUAL T_CONCAT_EQUAL T_MOD_EQUAL T_AND_EQUAL T_OR_EQUAL T_XOR_EQUAL T_SL_EQUAL T_SR_EQUAL T_POW_EQUAL
+%left '=' T_PLUS_EQUAL T_MINUS_EQUAL T_MUL_EQUAL T_DIV_EQUAL T_CONCAT_EQUAL T_MOD_EQUAL T_AND_EQUAL T_OR_EQUAL T_XOR_EQUAL T_SL_EQUAL T_SR_EQUAL T_POW_EQUAL T_COALESCE_EQUAL
 %left '?' ':'
 %right T_COALESCE
 %left T_BOOLEAN_OR
@@ -64,6 +64,7 @@
 %token T_CONTINUE
 %token T_GOTO
 %token T_FUNCTION
+%token T_FN
 %token T_CONST
 %token T_RETURN
 %token T_TRY
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Builder/Param.php b/vendor/nikic/php-parser/lib/PhpParser/Builder/Param.php
index eff76cb45c..184813a657 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Builder/Param.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Builder/Param.php
@@ -42,13 +42,13 @@ public function setDefault($value) {
     }
 
     /**
-     * Sets type hint for the parameter.
+     * Sets type for the parameter.
      *
-     * @param string|Node\Name|Node\NullableType $type Type hint to use
+     * @param string|Node\Name|Node\NullableType $type Parameter type
      *
      * @return $this The builder instance (for fluid interface)
      */
-    public function setTypeHint($type) {
+    public function setType($type) {
         $this->type = BuilderHelpers::normalizeType($type);
         if ($this->type == 'void') {
             throw new \LogicException('Parameter type cannot be void');
@@ -57,6 +57,19 @@ public function setTypeHint($type) {
         return $this;
     }
 
+    /**
+     * Sets type for the parameter.
+     *
+     * @param string|Node\Name|Node\NullableType $type Parameter type
+     *
+     * @return $this The builder instance (for fluid interface)
+     *
+     * @deprecated Use setType() instead
+     */
+    public function setTypeHint($type) {
+        return $this->setType($type);
+    }
+
     /**
      * Make the parameter accept the value by reference.
      *
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Builder/Property.php b/vendor/nikic/php-parser/lib/PhpParser/Builder/Property.php
index 439bd09c6d..1f3bdb2723 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Builder/Property.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Builder/Property.php
@@ -4,6 +4,9 @@
 
 use PhpParser;
 use PhpParser\BuilderHelpers;
+use PhpParser\Node\Identifier;
+use PhpParser\Node\Name;
+use PhpParser\Node\NullableType;
 use PhpParser\Node\Stmt;
 
 class Property implements PhpParser\Builder
@@ -14,6 +17,9 @@ class Property implements PhpParser\Builder
     protected $default = null;
     protected $attributes = [];
 
+    /** @var null|Identifier|Name|NullableType */
+    protected $type;
+
     /**
      * Creates a property builder.
      *
@@ -95,6 +101,19 @@ public function setDocComment($docComment) {
         return $this;
     }
 
+    /**
+     * Sets the property type for PHP 7.4+.
+     *
+     * @param string|Name|NullableType|Identifier $type
+     *
+     * @return $this
+     */
+    public function setType($type) {
+        $this->type = BuilderHelpers::normalizeType($type);
+
+        return $this;
+    }
+
     /**
      * Returns the built class node.
      *
@@ -106,7 +125,8 @@ public function getNode() : PhpParser\Node {
             [
                 new Stmt\PropertyProperty($this->name, $this->default)
             ],
-            $this->attributes
+            $this->attributes,
+            $this->type
         );
     }
 }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php b/vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php
new file mode 100644
index 0000000000..311e8cd7b6
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php
@@ -0,0 +1,64 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Builder;
+
+use PhpParser\Builder;
+use PhpParser\BuilderHelpers;
+use PhpParser\Node;
+use PhpParser\Node\Stmt;
+
+class TraitUse implements Builder
+{
+    protected $traits = [];
+    protected $adaptations = [];
+
+    /**
+     * Creates a trait use builder.
+     *
+     * @param Node\Name|string ...$traits Names of used traits
+     */
+    public function __construct(...$traits) {
+        foreach ($traits as $trait) {
+            $this->and($trait);
+        }
+    }
+
+    /**
+     * Adds used trait.
+     *
+     * @param Node\Name|string $trait Trait name
+     *
+     * @return $this The builder instance (for fluid interface)
+     */
+    public function and($trait) {
+        $this->traits[] = BuilderHelpers::normalizeName($trait);
+        return $this;
+    }
+
+    /**
+     * Adds trait adaptation.
+     *
+     * @param Stmt\TraitUseAdaptation|Builder\TraitUseAdaptation $adaptation Trait adaptation
+     *
+     * @return $this The builder instance (for fluid interface)
+     */
+    public function with($adaptation) {
+        $adaptation = BuilderHelpers::normalizeNode($adaptation);
+
+        if (!$adaptation instanceof Stmt\TraitUseAdaptation) {
+            throw new \LogicException('Adaptation must have type TraitUseAdaptation');
+        }
+
+        $this->adaptations[] = $adaptation;
+        return $this;
+    }
+
+    /**
+     * Returns the built node.
+     *
+     * @return Node The built node
+     */
+    public function getNode() : Node {
+        return new Stmt\TraitUse($this->traits, $this->adaptations);
+    }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php b/vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php
new file mode 100644
index 0000000000..eb6c0b622d
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php
@@ -0,0 +1,148 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Builder;
+
+use PhpParser\Builder;
+use PhpParser\BuilderHelpers;
+use PhpParser\Node;
+use PhpParser\Node\Stmt;
+
+class TraitUseAdaptation implements Builder
+{
+    const TYPE_UNDEFINED  = 0;
+    const TYPE_ALIAS      = 1;
+    const TYPE_PRECEDENCE = 2;
+
+    /** @var int Type of building adaptation */
+    protected $type;
+
+    protected $trait;
+    protected $method;
+
+    protected $modifier = null;
+    protected $alias = null;
+
+    protected $insteadof = [];
+
+    /**
+     * Creates a trait use adaptation builder.
+     *
+     * @param Node\Name|string|null  $trait  Name of adaptated trait
+     * @param Node\Identifier|string $method Name of adaptated method
+     */
+    public function __construct($trait, $method) {
+        $this->type = self::TYPE_UNDEFINED;
+
+        $this->trait = is_null($trait)? null: BuilderHelpers::normalizeName($trait);
+        $this->method = BuilderHelpers::normalizeIdentifier($method);
+    }
+
+    /**
+     * Sets alias of method.
+     *
+     * @param Node\Identifier|string $alias Alias for adaptated method
+     *
+     * @return $this The builder instance (for fluid interface)
+     */
+    public function as($alias) {
+        if ($this->type === self::TYPE_UNDEFINED) {
+            $this->type = self::TYPE_ALIAS;
+        }
+
+        if ($this->type !== self::TYPE_ALIAS) {
+            throw new \LogicException('Cannot set alias for not alias adaptation buider');
+        }
+
+        $this->alias = $alias;
+        return $this;
+    }
+
+    /**
+     * Sets adaptated method public.
+     *
+     * @return $this The builder instance (for fluid interface)
+     */
+    public function makePublic() {
+        $this->setModifier(Stmt\Class_::MODIFIER_PUBLIC);
+        return $this;
+    }
+
+    /**
+     * Sets adaptated method protected.
+     *
+     * @return $this The builder instance (for fluid interface)
+     */
+    public function makeProtected() {
+        $this->setModifier(Stmt\Class_::MODIFIER_PROTECTED);
+        return $this;
+    }
+
+    /**
+     * Sets adaptated method private.
+     *
+     * @return $this The builder instance (for fluid interface)
+     */
+    public function makePrivate() {
+        $this->setModifier(Stmt\Class_::MODIFIER_PRIVATE);
+        return $this;
+    }
+
+    /**
+     * Adds overwritten traits.
+     *
+     * @param Node\Name|string ...$traits Traits for overwrite
+     *
+     * @return $this The builder instance (for fluid interface)
+     */
+    public function insteadof(...$traits) {
+        if ($this->type === self::TYPE_UNDEFINED) {
+            if (is_null($this->trait)) {
+                throw new \LogicException('Precedence adaptation must have trait');
+            }
+
+            $this->type = self::TYPE_PRECEDENCE;
+        }
+
+        if ($this->type !== self::TYPE_PRECEDENCE) {
+            throw new \LogicException('Cannot add overwritten traits for not precedence adaptation buider');
+        }
+
+        foreach ($traits as $trait) {
+            $this->insteadof[] = BuilderHelpers::normalizeName($trait);
+        }
+
+        return $this;
+    }
+
+    protected function setModifier(int $modifier) {
+        if ($this->type === self::TYPE_UNDEFINED) {
+            $this->type = self::TYPE_ALIAS;
+        }
+
+        if ($this->type !== self::TYPE_ALIAS) {
+            throw new \LogicException('Cannot set access modifier for not alias adaptation buider');
+        }
+
+        if (is_null($this->modifier)) {
+            $this->modifier = $modifier;
+        } else {
+            throw new \LogicException('Multiple access type modifiers are not allowed');
+        }
+    }
+
+    /**
+     * Returns the built node.
+     *
+     * @return Node The built node
+     */
+    public function getNode() : Node {
+        switch ($this->type) {
+            case self::TYPE_ALIAS:
+                return new Stmt\TraitUseAdaptation\Alias($this->trait, $this->method, $this->modifier, $this->alias);
+            case self::TYPE_PRECEDENCE:
+                return new Stmt\TraitUseAdaptation\Precedence($this->trait, $this->method, $this->insteadof);
+            default:
+                throw new \LogicException('Type of adaptation is not defined');
+        }
+    }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/BuilderFactory.php b/vendor/nikic/php-parser/lib/PhpParser/BuilderFactory.php
index ee85558999..18bd1cd5c2 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/BuilderFactory.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/BuilderFactory.php
@@ -8,7 +8,6 @@
 use PhpParser\Node\Identifier;
 use PhpParser\Node\Name;
 use PhpParser\Node\Scalar\String_;
-use PhpParser\Node\Stmt;
 use PhpParser\Node\Stmt\Use_;
 
 class BuilderFactory
@@ -57,6 +56,34 @@ public function trait(string $name) : Builder\Trait_ {
         return new Builder\Trait_($name);
     }
 
+    /**
+     * Creates a trait use builder.
+     *
+     * @param Node\Name|string ...$traits Trait names
+     *
+     * @return Builder\TraitUse The create trait use builder
+     */
+    public function useTrait(...$traits) : Builder\TraitUse {
+        return new Builder\TraitUse(...$traits);
+    }
+
+    /**
+     * Creates a trait use adaptation builder.
+     *
+     * @param Node\Name|string|null  $trait  Trait name
+     * @param Node\Identifier|string $method Method name
+     *
+     * @return Builder\TraitUseAdaptation The create trait use adaptation builder
+     */
+    public function traitUseAdaptation($trait, $method = null) : Builder\TraitUseAdaptation {
+        if ($method === null) {
+            $method = $trait;
+            $trait = null;
+        }
+
+        return new Builder\TraitUseAdaptation($trait, $method);
+    }
+
     /**
      * Creates a method builder.
      *
@@ -104,14 +131,36 @@ public function function(string $name) : Builder\Function_ {
     /**
      * Creates a namespace/class use builder.
      *
-     * @param string|Node\Name $name Name to alias
+     * @param Node\Name|string $name Name of the entity (namespace or class) to alias
      *
-     * @return Builder\Use_ The create use builder
+     * @return Builder\Use_ The created use builder
      */
     public function use($name) : Builder\Use_ {
         return new Builder\Use_($name, Use_::TYPE_NORMAL);
     }
 
+    /**
+     * Creates a function use builder.
+     *
+     * @param Node\Name|string $name Name of the function to alias
+     *
+     * @return Builder\Use_ The created use function builder
+     */
+    public function useFunction($name) : Builder\Use_ {
+        return new Builder\Use_($name, Use_::TYPE_FUNCTION);
+    }
+
+    /**
+     * Creates a constant use builder.
+     *
+     * @param Node\Name|string $name Name of the const to alias
+     *
+     * @return Builder\Use_ The created use const builder
+     */
+    public function useConst($name) : Builder\Use_ {
+        return new Builder\Use_($name, Use_::TYPE_CONSTANT);
+    }
+
     /**
      * Creates node a for a literal value.
      *
@@ -123,6 +172,21 @@ public function val($value) : Expr {
         return BuilderHelpers::normalizeValue($value);
     }
 
+    /**
+     * Creates variable node.
+     *
+     * @param string|Expr $name Name
+     *
+     * @return Expr\Variable
+     */
+    public function var($name) : Expr\Variable {
+        if (!\is_string($name) && !$name instanceof Expr) {
+            throw new \LogicException('Variable name must be string or Expr');
+        }
+
+        return new Expr\Variable($name);
+    }
+
     /**
      * Normalizes an argument list.
      *
@@ -218,6 +282,18 @@ public function new($class, array $args = []) : Expr\New_ {
     public function constFetch($name) : Expr\ConstFetch {
         return new Expr\ConstFetch(BuilderHelpers::normalizeName($name));
     }
+    
+    /**
+     * Creates a property fetch node.
+     *
+     * @param Expr                   $var  Variable holding object
+     * @param string|Identifier|Expr $name Property name
+     *
+     * @return Expr\PropertyFetch
+     */
+    public function propertyFetch(Expr $var, $name) : Expr\PropertyFetch {
+        return new Expr\PropertyFetch($var, BuilderHelpers::normalizeIdentifierOrExpr($name));
+    }
 
     /**
      * Creates a class constant fetch node.
diff --git a/vendor/nikic/php-parser/lib/PhpParser/BuilderHelpers.php b/vendor/nikic/php-parser/lib/PhpParser/BuilderHelpers.php
index d5ae1792d8..790e8877eb 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/BuilderHelpers.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/BuilderHelpers.php
@@ -71,7 +71,7 @@ public static function normalizeIdentifier($name) : Identifier {
             return new Identifier($name);
         }
 
-        throw new \LogicException('Expected string or instance of Node\Identifier or Node\Expr');
+        throw new \LogicException('Expected string or instance of Node\Identifier');
     }
 
     /**
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php b/vendor/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php
index dcacbfb625..7b019db812 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php
@@ -39,7 +39,8 @@ public function __construct(
     public static function fromNewNode(Expr\New_ $newNode) {
         $class = $newNode->class;
         assert($class instanceof Node\Stmt\Class_);
-        assert($class->name === null);
+        // We don't assert that $class->name is null here, to allow consumers to assign unique names
+        // to anonymous classes for their own purposes. We simplify ignore the name here.
         return new self(
             $newNode->args, $class->extends, $class->implements,
             $class->stmts, $newNode->getAttributes()
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Lexer.php b/vendor/nikic/php-parser/lib/PhpParser/Lexer.php
index 125c3b806e..dc5e5332c2 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Lexer.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Lexer.php
@@ -16,7 +16,13 @@ class Lexer
     protected $tokenMap;
     protected $dropTokens;
 
-    protected $usedAttributes;
+    private $attributeStartLineUsed;
+    private $attributeEndLineUsed;
+    private $attributeStartTokenPosUsed;
+    private $attributeEndTokenPosUsed;
+    private $attributeStartFilePosUsed;
+    private $attributeEndFilePosUsed;
+    private $attributeCommentsUsed;
 
     /**
      * Creates a Lexer.
@@ -37,12 +43,17 @@ public function __construct(array $options = []) {
             [\T_WHITESPACE, \T_OPEN_TAG, \T_COMMENT, \T_DOC_COMMENT], 1
         );
 
-        // the usedAttributes member is a map of the used attribute names to a dummy
-        // value (here "true")
-        $options += [
-            'usedAttributes' => ['comments', 'startLine', 'endLine'],
-        ];
-        $this->usedAttributes = array_fill_keys($options['usedAttributes'], true);
+        $defaultAttributes = ['comments', 'startLine', 'endLine'];
+        $usedAttributes = array_fill_keys($options['usedAttributes'] ?? $defaultAttributes, true);
+
+        // Create individual boolean properties to make these checks faster.
+        $this->attributeStartLineUsed = isset($usedAttributes['startLine']);
+        $this->attributeEndLineUsed = isset($usedAttributes['endLine']);
+        $this->attributeStartTokenPosUsed = isset($usedAttributes['startTokenPos']);
+        $this->attributeEndTokenPosUsed = isset($usedAttributes['endTokenPos']);
+        $this->attributeStartFilePosUsed = isset($usedAttributes['startFilePos']);
+        $this->attributeEndFilePosUsed = isset($usedAttributes['endFilePos']);
+        $this->attributeCommentsUsed = isset($usedAttributes['comments']);
     }
 
     /**
@@ -230,13 +241,13 @@ public function getNextToken(&$value = null, &$startAttributes = null, &$endAttr
                 $token = "\0";
             }
 
-            if (isset($this->usedAttributes['startLine'])) {
+            if ($this->attributeStartLineUsed) {
                 $startAttributes['startLine'] = $this->line;
             }
-            if (isset($this->usedAttributes['startTokenPos'])) {
+            if ($this->attributeStartTokenPosUsed) {
                 $startAttributes['startTokenPos'] = $this->pos;
             }
-            if (isset($this->usedAttributes['startFilePos'])) {
+            if ($this->attributeStartFilePosUsed) {
                 $startAttributes['startFilePos'] = $this->filePos;
             }
 
@@ -263,7 +274,7 @@ public function getNextToken(&$value = null, &$startAttributes = null, &$endAttr
                 $this->filePos += \strlen($value);
             } else {
                 if (\T_COMMENT === $token[0] || \T_DOC_COMMENT === $token[0]) {
-                    if (isset($this->usedAttributes['comments'])) {
+                    if ($this->attributeCommentsUsed) {
                         $comment = \T_DOC_COMMENT === $token[0]
                             ? new Comment\Doc($token[1], $this->line, $this->filePos, $this->pos)
                             : new Comment($token[1], $this->line, $this->filePos, $this->pos);
@@ -276,13 +287,13 @@ public function getNextToken(&$value = null, &$startAttributes = null, &$endAttr
                 continue;
             }
 
-            if (isset($this->usedAttributes['endLine'])) {
+            if ($this->attributeEndLineUsed) {
                 $endAttributes['endLine'] = $this->line;
             }
-            if (isset($this->usedAttributes['endTokenPos'])) {
+            if ($this->attributeEndTokenPosUsed) {
                 $endAttributes['endTokenPos'] = $this->pos;
             }
-            if (isset($this->usedAttributes['endFilePos'])) {
+            if ($this->attributeEndFilePosUsed) {
                 $endAttributes['endFilePos'] = $this->filePos - 1;
             }
 
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php b/vendor/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php
index 647aaa34ca..5d10b9af64 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php
@@ -2,7 +2,247 @@
 
 namespace PhpParser\Lexer;
 
-class Emulative extends \PhpParser\Lexer
+use PhpParser\Error;
+use PhpParser\ErrorHandler;
+use PhpParser\Lexer;
+use PhpParser\Lexer\TokenEmulator\CoaleseEqualTokenEmulator;
+use PhpParser\Lexer\TokenEmulator\FnTokenEmulator;
+use PhpParser\Lexer\TokenEmulator\TokenEmulatorInterface;
+
+class Emulative extends Lexer
 {
-    /* No features requiring emulation have been added in PHP > 7.0 */
+    const PHP_7_3 = '7.3.0dev';
+    const PHP_7_4 = '7.4.0dev';
+
+    const FLEXIBLE_DOC_STRING_REGEX = <<<'REGEX'
+/<<<[ \t]*(['"]?)([a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*)\1\r?\n
+(?:.*\r?\n)*?
+(?<indentation>\h*)\2(?![a-zA-Z_\x80-\xff])(?<separator>(?:;?[\r\n])?)/x
+REGEX;
+
+    /** @var mixed[] Patches used to reverse changes introduced in the code */
+    private $patches = [];
+
+    /** @var TokenEmulatorInterface[] */
+    private $tokenEmulators = [];
+
+    /**
+     * @param mixed[] $options
+     */
+    public function __construct(array $options = [])
+    {
+        parent::__construct($options);
+
+        // prepare token emulators
+        $this->tokenEmulators[] = new FnTokenEmulator();
+        $this->tokenEmulators[] = new CoaleseEqualTokenEmulator();
+
+        // add emulated tokens here
+        foreach ($this->tokenEmulators as $emulativeToken) {
+            $this->tokenMap[$emulativeToken->getTokenId()] = $emulativeToken->getParserTokenId();
+        }
+    }
+
+    public function startLexing(string $code, ErrorHandler $errorHandler = null) {
+        $this->patches = [];
+
+        if ($this->isEmulationNeeded($code) === false) {
+            // Nothing to emulate, yay
+            parent::startLexing($code, $errorHandler);
+            return;
+        }
+
+        $collector = new ErrorHandler\Collecting();
+
+        // 1. emulation of heredoc and nowdoc new syntax
+        $preparedCode = $this->processHeredocNowdoc($code);
+        parent::startLexing($preparedCode, $collector);
+
+        // add token emulation
+        foreach ($this->tokenEmulators as $emulativeToken) {
+            if ($emulativeToken->isEmulationNeeded($code)) {
+                $this->tokens = $emulativeToken->emulate($code, $this->tokens);
+            }
+        }
+
+        $this->fixupTokens();
+
+        $errors = $collector->getErrors();
+        if (!empty($errors)) {
+            $this->fixupErrors($errors);
+            foreach ($errors as $error) {
+                $errorHandler->handleError($error);
+            }
+        }
+    }
+
+    private function isHeredocNowdocEmulationNeeded(string $code): bool
+    {
+        // skip version where this works without emulation
+        if (version_compare(\PHP_VERSION, self::PHP_7_3, '>=')) {
+            return false;
+        }
+
+        return strpos($code, '<<<') !== false;
+    }
+
+    private function processHeredocNowdoc(string $code): string
+    {
+        if ($this->isHeredocNowdocEmulationNeeded($code) === false) {
+            return $code;
+        }
+
+        if (!preg_match_all(self::FLEXIBLE_DOC_STRING_REGEX, $code, $matches, PREG_SET_ORDER|PREG_OFFSET_CAPTURE)) {
+            // No heredoc/nowdoc found
+            return $code;
+        }
+
+        // Keep track of how much we need to adjust string offsets due to the modifications we
+        // already made
+        $posDelta = 0;
+        foreach ($matches as $match) {
+            $indentation = $match['indentation'][0];
+            $indentationStart = $match['indentation'][1];
+
+            $separator = $match['separator'][0];
+            $separatorStart = $match['separator'][1];
+
+            if ($indentation === '' && $separator !== '') {
+                // Ordinary heredoc/nowdoc
+                continue;
+            }
+
+            if ($indentation !== '') {
+                // Remove indentation
+                $indentationLen = strlen($indentation);
+                $code = substr_replace($code, '', $indentationStart + $posDelta, $indentationLen);
+                $this->patches[] = [$indentationStart + $posDelta, 'add', $indentation];
+                $posDelta -= $indentationLen;
+            }
+
+            if ($separator === '') {
+                // Insert newline as separator
+                $code = substr_replace($code, "\n", $separatorStart + $posDelta, 0);
+                $this->patches[] = [$separatorStart + $posDelta, 'remove', "\n"];
+                $posDelta += 1;
+            }
+        }
+
+        return $code;
+    }
+
+    private function isEmulationNeeded(string $code): bool
+    {
+        foreach ($this->tokenEmulators as $emulativeToken) {
+            if ($emulativeToken->isEmulationNeeded($code)) {
+                return true;
+            }
+        }
+
+        return $this->isHeredocNowdocEmulationNeeded($code);
+    }
+
+    private function fixupTokens()
+    {
+        if (\count($this->patches) === 0) {
+            return;
+        }
+
+        // Load first patch
+        $patchIdx = 0;
+
+        list($patchPos, $patchType, $patchText) = $this->patches[$patchIdx];
+
+        // We use a manual loop over the tokens, because we modify the array on the fly
+        $pos = 0;
+        for ($i = 0, $c = \count($this->tokens); $i < $c; $i++) {
+            $token = $this->tokens[$i];
+            if (\is_string($token)) {
+                // We assume that patches don't apply to string tokens
+                $pos += \strlen($token);
+                continue;
+            }
+
+            $len = \strlen($token[1]);
+            $posDelta = 0;
+            while ($patchPos >= $pos && $patchPos < $pos + $len) {
+                $patchTextLen = \strlen($patchText);
+                if ($patchType === 'remove') {
+                    if ($patchPos === $pos && $patchTextLen === $len) {
+                        // Remove token entirely
+                        array_splice($this->tokens, $i, 1, []);
+                        $i--;
+                        $c--;
+                    } else {
+                        // Remove from token string
+                        $this->tokens[$i][1] = substr_replace(
+                            $token[1], '', $patchPos - $pos + $posDelta, $patchTextLen
+                        );
+                        $posDelta -= $patchTextLen;
+                    }
+                } elseif ($patchType === 'add') {
+                    // Insert into the token string
+                    $this->tokens[$i][1] = substr_replace(
+                        $token[1], $patchText, $patchPos - $pos + $posDelta, 0
+                    );
+                    $posDelta += $patchTextLen;
+                } else {
+                    assert(false);
+                }
+
+                // Fetch the next patch
+                $patchIdx++;
+                if ($patchIdx >= \count($this->patches)) {
+                    // No more patches, we're done
+                    return;
+                }
+
+                list($patchPos, $patchType, $patchText) = $this->patches[$patchIdx];
+
+                // Multiple patches may apply to the same token. Reload the current one to check
+                // If the new patch applies
+                $token = $this->tokens[$i];
+            }
+
+            $pos += $len;
+        }
+
+        // A patch did not apply
+        assert(false);
+    }
+
+    /**
+     * Fixup line and position information in errors.
+     *
+     * @param Error[] $errors
+     */
+    private function fixupErrors(array $errors) {
+        foreach ($errors as $error) {
+            $attrs = $error->getAttributes();
+
+            $posDelta = 0;
+            $lineDelta = 0;
+            foreach ($this->patches as $patch) {
+                list($patchPos, $patchType, $patchText) = $patch;
+                if ($patchPos >= $attrs['startFilePos']) {
+                    // No longer relevant
+                    break;
+                }
+
+                if ($patchType === 'add') {
+                    $posDelta += strlen($patchText);
+                    $lineDelta += substr_count($patchText, "\n");
+                } else {
+                    $posDelta -= strlen($patchText);
+                    $lineDelta -= substr_count($patchText, "\n");
+                }
+            }
+
+            $attrs['startFilePos'] += $posDelta;
+            $attrs['endFilePos'] += $posDelta;
+            $attrs['startLine'] += $lineDelta;
+            $attrs['endLine'] += $lineDelta;
+            $error->setAttributes($attrs);
+        }
+    }
 }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/CoaleseEqualTokenEmulator.php b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/CoaleseEqualTokenEmulator.php
new file mode 100644
index 0000000000..ca6cf13400
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/CoaleseEqualTokenEmulator.php
@@ -0,0 +1,54 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Lexer\TokenEmulator;
+
+use PhpParser\Lexer\Emulative;
+use PhpParser\Parser\Tokens;
+
+final class CoaleseEqualTokenEmulator implements TokenEmulatorInterface
+{
+    const T_COALESCE_EQUAL = 1007;
+
+    public function getTokenId(): int
+    {
+        return self::T_COALESCE_EQUAL;
+    }
+
+    public function getParserTokenId(): int
+    {
+        return Tokens::T_COALESCE_EQUAL;
+    }
+
+    public function isEmulationNeeded(string $code) : bool
+    {
+        // skip version where this is supported
+        if (version_compare(\PHP_VERSION, Emulative::PHP_7_4, '>=')) {
+            return false;
+        }
+
+        return strpos($code, '??=') !== false;
+    }
+
+    public function emulate(string $code, array $tokens): array
+    {
+        // We need to manually iterate and manage a count because we'll change
+        // the tokens array on the way
+        $line = 1;
+        for ($i = 0, $c = count($tokens); $i < $c; ++$i) {
+            if (isset($tokens[$i + 1])) {
+                if ($tokens[$i][0] === T_COALESCE && $tokens[$i + 1] === '=') {
+                    array_splice($tokens, $i, 2, [
+                        [self::T_COALESCE_EQUAL, '??=', $line]
+                    ]);
+                    $c--;
+                    continue;
+                }
+            }
+            if (\is_array($tokens[$i])) {
+                $line += substr_count($tokens[$i][1], "\n");
+            }
+        }
+
+        return $tokens;
+    }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FnTokenEmulator.php b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FnTokenEmulator.php
new file mode 100644
index 0000000000..2059693ae1
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FnTokenEmulator.php
@@ -0,0 +1,66 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Lexer\TokenEmulator;
+
+use PhpParser\Lexer\Emulative;
+use PhpParser\Parser\Tokens;
+
+final class FnTokenEmulator implements TokenEmulatorInterface
+{
+    const T_FN = 1008;
+
+    public function getTokenId(): int
+    {
+        return self::T_FN;
+    }
+
+    public function getParserTokenId(): int
+    {
+        return Tokens::T_FN;
+    }
+
+    public function isEmulationNeeded(string $code) : bool
+    {
+        // skip version where this is supported
+        if (version_compare(\PHP_VERSION, Emulative::PHP_7_4, '>=')) {
+            return false;
+        }
+
+        return strpos($code, 'fn') !== false;
+    }
+
+    public function emulate(string $code, array $tokens): array
+    {
+        // We need to manually iterate and manage a count because we'll change
+        // the tokens array on the way
+        foreach ($tokens as $i => $token) {
+            if ($token[0] === T_STRING && $token[1] === 'fn') {
+                $previousNonSpaceToken = $this->getPreviousNonSpaceToken($tokens, $i);
+                if ($previousNonSpaceToken !== null && $previousNonSpaceToken[0] === T_OBJECT_OPERATOR) {
+                    continue;
+                }
+
+                $tokens[$i][0] = self::T_FN;
+            }
+        }
+
+        return $tokens;
+    }
+
+    /**
+     * @param mixed[] $tokens
+     * @return mixed[]|null
+     */
+    private function getPreviousNonSpaceToken(array $tokens, int $start)
+    {
+        for ($i = $start - 1; $i >= 0; --$i) {
+            if ($tokens[$i][0] === T_WHITESPACE) {
+                continue;
+            }
+
+            return $tokens[$i];
+        }
+
+        return null;
+    }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulatorInterface.php b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulatorInterface.php
new file mode 100644
index 0000000000..6ef5b9d068
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulatorInterface.php
@@ -0,0 +1,17 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Lexer\TokenEmulator;
+
+interface TokenEmulatorInterface
+{
+    public function getTokenId(): int;
+
+    public function getParserTokenId(): int;
+
+    public function isEmulationNeeded(string $code): bool;
+
+    /**
+     * @return array Modified Tokens
+     */
+    public function emulate(string $code, array $tokens): array;
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Arg.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Arg.php
index f89bf86de1..a585ddc3be 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Arg.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Arg.php
@@ -22,7 +22,7 @@ class Arg extends NodeAbstract
      * @param array $attributes Additional attributes
      */
     public function __construct(Expr $value, bool $byRef = false, bool $unpack = false, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->value = $value;
         $this->byRef = $byRef;
         $this->unpack = $unpack;
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Const_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Const_.php
index 76a220f4de..4094a653dc 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Const_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Const_.php
@@ -22,7 +22,7 @@ class Const_ extends NodeAbstract
      * @param array             $attributes Additional attributes
      */
     public function __construct($name, Expr $value, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->name = \is_string($name) ? new Identifier($name) : $name;
         $this->value = $value;
     }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php
index 7c7dcecfc9..71694478e9 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php
@@ -19,7 +19,7 @@ class ArrayDimFetch extends Expr
      * @param array     $attributes Additional attributes
      */
     public function __construct(Expr $var, Expr $dim = null, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->var = $var;
         $this->dim = $dim;
     }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php
index bf9c7fdef4..1b078f8218 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php
@@ -12,6 +12,8 @@ class ArrayItem extends Expr
     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.
@@ -21,17 +23,18 @@ class ArrayItem extends Expr
      * @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 = []) {
-        parent::__construct($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'];
+        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
index 061c52e383..fbe207ee30 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php
@@ -20,7 +20,7 @@ class Array_ extends Expr
      * @param array       $attributes Additional attributes
      */
     public function __construct(array $items = [], array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->items = $items;
     }
 
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 0000000000..b4b816f622
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php
@@ -0,0 +1,71 @@
+<?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\NullableType */
+    public $returnType;
+
+    /** @var Expr */
+    public $expr;
+
+    /**
+     * @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
+     * @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'] ?? null;
+    }
+
+    public function getSubNodeNames() : array {
+        return ['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;
+    }
+
+    /**
+     * @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
index 1306c88f20..cf9e6e82b4 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php
@@ -19,7 +19,7 @@ class Assign extends Expr
      * @param array $attributes Additional attributes
      */
     public function __construct(Expr $var, Expr $expr, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->var = $var;
         $this->expr = $expr;
     }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php
index e5bdbf58f4..bce8604f14 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php
@@ -19,7 +19,7 @@ abstract class AssignOp extends Expr
      * @param array $attributes Additional attributes
      */
     public function __construct(Expr $var, Expr $expr, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->var = $var;
         $this->expr = $expr;
     }
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 0000000000..c0e9b316cf
--- /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/AssignRef.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignRef.php
index acedb0b8e6..de3c644c3c 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignRef.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignRef.php
@@ -19,7 +19,7 @@ class AssignRef extends Expr
      * @param array $attributes Additional attributes
      */
     public function __construct(Expr $var, Expr $expr, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->var = $var;
         $this->expr = $expr;
     }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php
index 466b01a22f..d9c582b0d2 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php
@@ -19,7 +19,7 @@ abstract class BinaryOp extends Expr
      * @param array $attributes Additional attributes
      */
     public function __construct(Expr $left, Expr $right, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->left = $left;
         $this->right = $right;
     }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php
index f96fdddc79..ed44984bea 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php
@@ -16,7 +16,7 @@ class BitwiseNot extends Expr
      * @param array $attributes Additional attributes
      */
     public function __construct(Expr $expr, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->expr = $expr;
     }
 
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php
index 1ae74b165e..bf27e9f657 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php
@@ -16,7 +16,7 @@ class BooleanNot extends Expr
      * @param array               $attributes Additional attributes
      */
     public function __construct(Expr $expr, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->expr = $expr;
     }
 
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php
index 8fd0285e55..36769d4fc6 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php
@@ -16,7 +16,7 @@ abstract class Cast extends Expr
      * @param array $attributes Additional attributes
      */
     public function __construct(Expr $expr, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->expr = $expr;
     }
 
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
index 0cee554396..891ba5f870 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Double.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Double.php
@@ -6,6 +6,11 @@
 
 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/ClassConstFetch.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php
index 9aaea3c9da..faf832f938 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php
@@ -21,7 +21,7 @@ class ClassConstFetch extends Expr
      * @param array                   $attributes Additional attributes
      */
     public function __construct($class, $name, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->class = $class;
         $this->name = \is_string($name) ? new Identifier($name) : $name;
     }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php
index 9f6931a698..db216b8f84 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php
@@ -16,7 +16,7 @@ class Clone_ extends Expr
      * @param array $attributes Additional attributes
      */
     public function __construct(Expr $expr, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->expr = $expr;
     }
 
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php
index 261b4440b9..dfda88a7a9 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php
@@ -34,7 +34,7 @@ class Closure extends Expr implements FunctionLike
      * @param array $attributes Additional attributes
      */
     public function __construct(array $subNodes = [], array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->static = $subNodes['static'] ?? false;
         $this->byRef = $subNodes['byRef'] ?? false;
         $this->params = $subNodes['params'] ?? [];
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php
index 4c55168469..2b8a096666 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php
@@ -19,7 +19,7 @@ class ClosureUse extends Expr
      * @param array         $attributes Additional attributes
      */
     public function __construct(Expr\Variable $var, bool $byRef = false, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->var = $var;
         $this->byRef = $byRef;
     }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php
index 875ddf3c39..14ebd16bd8 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php
@@ -17,7 +17,7 @@ class ConstFetch extends Expr
      * @param array $attributes Additional attributes
      */
     public function __construct(Name $name, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->name = $name;
     }
 
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php
index 2e0c43b0e7..4042ec93ca 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php
@@ -16,7 +16,7 @@ class Empty_ extends Expr
      * @param array $attributes Additional attributes
      */
     public function __construct(Expr $expr, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->expr = $expr;
     }
 
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php
index 90f6cbbcd1..1637f3aeae 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php
@@ -18,7 +18,7 @@ class Error extends Expr
      * @param array $attributes Additional attributes
      */
     public function __construct(array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
     }
 
     public function getSubNodeNames() : array {
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php
index 345c8d4604..c44ff6f931 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php
@@ -16,7 +16,7 @@ class ErrorSuppress extends Expr
      * @param array $attributes Additional attributes
      */
     public function __construct(Expr $expr, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->expr = $expr;
     }
 
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php
index d421595a9f..8568547438 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php
@@ -16,7 +16,7 @@ class Eval_ extends Expr
      * @param array $attributes Additional attributes
      */
     public function __construct(Expr $expr, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->expr = $expr;
     }
 
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php
index 58134811eb..b88a8f7e6f 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php
@@ -20,7 +20,7 @@ class Exit_ extends Expr
      * @param array                    $attributes Additional attributes
      */
     public function __construct(Expr $expr = null, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->expr = $expr;
     }
 
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php
index 79457670c9..1e8afa5596 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php
@@ -20,7 +20,7 @@ class FuncCall extends Expr
      * @param array          $attributes Additional attributes
      */
     public function __construct($name, array $args = [], array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->name = $name;
         $this->args = $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
index aa6e55d182..07ce5968e4 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php
@@ -24,7 +24,7 @@ class Include_ extends Expr
      * @param array $attributes Additional attributes
      */
     public function __construct(Expr $expr, int $type, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->expr = $expr;
         $this->type = $type;
     }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php
index 5b73d027f1..9000d47bb1 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php
@@ -20,7 +20,7 @@ class Instanceof_ extends Expr
      * @param array     $attributes Additional attributes
      */
     public function __construct(Expr $expr, $class, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->expr = $expr;
         $this->class = $class;
     }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php
index 5e192cfea1..76b7387587 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php
@@ -16,7 +16,7 @@ class Isset_ extends Expr
      * @param array  $attributes Additional attributes
      */
     public function __construct(array $vars, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->vars = $vars;
     }
 
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php
index cc156e3a64..c27a27b957 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php
@@ -16,7 +16,7 @@ class List_ extends Expr
      * @param array              $attributes Additional attributes
      */
     public function __construct(array $items, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->items = $items;
     }
 
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php
index e0fe327101..bd81bb43f6 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php
@@ -24,7 +24,7 @@ class MethodCall extends Expr
      * @param array                  $attributes Additional attributes
      */
     public function __construct(Expr $var, $name, array $args = [], array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->var = $var;
         $this->name = \is_string($name) ? new Identifier($name) : $name;
         $this->args = $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
index f438008278..c86f0c6015 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php
@@ -20,7 +20,7 @@ class New_ extends Expr
      * @param array                           $attributes Additional attributes
      */
     public function __construct($class, array $args = [], array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->class = $class;
         $this->args = $args;
     }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php
index c3f21a2c3d..94d6c296d8 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php
@@ -16,7 +16,7 @@ class PostDec extends Expr
      * @param array $attributes Additional attributes
      */
     public function __construct(Expr $var, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->var = $var;
     }
 
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php
index e8b07d8066..005c443a2d 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php
@@ -16,7 +16,7 @@ class PostInc extends Expr
      * @param array $attributes Additional attributes
      */
     public function __construct(Expr $var, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->var = $var;
     }
 
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php
index d31b2580ec..a5ca685a8a 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php
@@ -16,7 +16,7 @@ class PreDec extends Expr
      * @param array $attributes Additional attributes
      */
     public function __construct(Expr $var, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->var = $var;
     }
 
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php
index 68be695b86..0986c44748 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php
@@ -16,7 +16,7 @@ class PreInc extends Expr
      * @param array $attributes Additional attributes
      */
     public function __construct(Expr $var, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->var = $var;
     }
 
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php
index 9d514e6501..2d43c2ac82 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php
@@ -16,7 +16,7 @@ class Print_ extends Expr
      * @param array $attributes Additional attributes
      */
     public function __construct(Expr $expr, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->expr = $expr;
     }
 
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php
index 90efef3d8c..4281f31ccf 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php
@@ -20,7 +20,7 @@ class PropertyFetch extends Expr
      * @param array                  $attributes Additional attributes
      */
     public function __construct(Expr $var, $name, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->var = $var;
         $this->name = \is_string($name) ? new Identifier($name) : $name;
     }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php
index 59708d66a4..537a7cc809 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php
@@ -16,7 +16,7 @@ class ShellExec extends Expr
      * @param array $attributes Additional attributes
      */
     public function __construct(array $parts, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->parts = $parts;
     }
 
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php
index 5dc2d31617..9883f5af51 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php
@@ -10,7 +10,7 @@ class StaticCall extends Expr
 {
     /** @var Node\Name|Expr Class name */
     public $class;
-    /** @var string|Identifier|Expr Method name */
+    /** @var Identifier|Expr Method name */
     public $name;
     /** @var Node\Arg[] Arguments */
     public $args;
@@ -24,7 +24,7 @@ class StaticCall extends Expr
      * @param array                  $attributes Additional attributes
      */
     public function __construct($class, $name, array $args = [], array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->class = $class;
         $this->name = \is_string($name) ? new Identifier($name) : $name;
         $this->args = $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
index 809b666203..1ee1a25e50 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php
@@ -21,7 +21,7 @@ class StaticPropertyFetch extends Expr
      * @param array                         $attributes Additional attributes
      */
     public function __construct($class, $name, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->class = $class;
         $this->name = \is_string($name) ? new VarLikeIdentifier($name) : $name;
     }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php
index cb36145e2a..9316f47d4d 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php
@@ -22,7 +22,7 @@ class Ternary extends Expr
      * @param array                    $attributes Additional attributes
      */
     public function __construct(Expr $cond, $if, Expr $else, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->cond = $cond;
         $this->if = $if;
         $this->else = $else;
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php
index 90be0e05e1..ce8808bc64 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php
@@ -16,7 +16,7 @@ class UnaryMinus extends Expr
      * @param array $attributes Additional attributes
      */
     public function __construct(Expr $expr, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->expr = $expr;
     }
 
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php
index 1a5bc63241..d23047e54e 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php
@@ -16,7 +16,7 @@ class UnaryPlus extends Expr
      * @param array               $attributes Additional attributes
      */
     public function __construct(Expr $expr, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->expr = $expr;
     }
 
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php
index b100f2140f..1f2b2314a3 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php
@@ -16,7 +16,7 @@ class Variable extends Expr
      * @param array                      $attributes Additional attributes
      */
     public function __construct($name, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->name = $name;
     }
 
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php
index ab3a275423..a3efce618c 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php
@@ -16,7 +16,7 @@ class YieldFrom extends Expr
      * @param array $attributes Additional attributes
      */
     public function __construct(Expr $expr, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->expr = $expr;
     }
 
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php
index a28a701a5e..aef8fc333d 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php
@@ -19,7 +19,7 @@ class Yield_ extends Expr
      * @param array     $attributes Additional attributes
      */
     public function __construct(Expr $value = null, Expr $key = null, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->key = $key;
         $this->value = $value;
     }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Identifier.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Identifier.php
index 485b5b9d72..2f262db0aa 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Identifier.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Identifier.php
@@ -25,7 +25,7 @@ class Identifier extends NodeAbstract
      * @param array  $attributes Additional attributes
      */
     public function __construct(string $name, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->name = $name;
     }
 
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Name.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Name.php
index 5d923d02a8..7ebdd579cf 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Name.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Name.php
@@ -6,9 +6,7 @@
 
 class Name extends NodeAbstract
 {
-    /**
-     * @var string[] Parts of the name
-     */
+    /** @var string[] Parts of the name */
     public $parts;
 
     private static $specialClassNames = [
@@ -24,7 +22,7 @@ class Name extends NodeAbstract
      * @param array                $attributes Additional attributes
      */
     public function __construct($name, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->parts = self::prepareName($name);
     }
 
@@ -237,7 +235,7 @@ private static function prepareName($name) : array {
             'Expected string, array of parts or Name instance'
         );
     }
-    
+
     public function getType() : string {
         return 'Name';
     }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/NullableType.php b/vendor/nikic/php-parser/lib/PhpParser/Node/NullableType.php
index 3679269e90..36463657e9 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/NullableType.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/NullableType.php
@@ -16,7 +16,7 @@ class NullableType extends NodeAbstract
      * @param array                  $attributes Additional attributes
      */
     public function __construct($type, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->type = \is_string($type) ? new Identifier($type) : $type;
     }
 
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Param.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Param.php
index 0b53f67cc7..5bc8a1cb88 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Param.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Param.php
@@ -6,7 +6,7 @@
 
 class Param extends NodeAbstract
 {
-    /** @var null|Identifier|Name|NullableType Typehint */
+    /** @var null|Identifier|Name|NullableType Type declaration */
     public $type;
     /** @var bool Whether parameter is passed by reference */
     public $byRef;
@@ -20,18 +20,18 @@ class Param extends NodeAbstract
     /**
      * Constructs a parameter node.
      *
-     * @param Expr\Variable|Expr\Error      $var        Parameter variable
-     * @param null|Expr                     $default    Default value
-     * @param null|string|Name|NullableType $type       Typehint
-     * @param bool                          $byRef      Whether is passed by reference
-     * @param bool                          $variadic   Whether this is a variadic argument
-     * @param array                         $attributes Additional attributes
+     * @param Expr\Variable|Expr\Error                 $var        Parameter variable
+     * @param null|Expr                                $default    Default value
+     * @param null|string|Identifier|Name|NullableType $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
      */
     public function __construct(
         $var, Expr $default = null, $type = null,
         bool $byRef = false, bool $variadic = false, array $attributes = []
     ) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->type = \is_string($type) ? new Identifier($type) : $type;
         $this->byRef = $byRef;
         $this->variadic = $variadic;
@@ -42,7 +42,7 @@ public function __construct(
     public function getSubNodeNames() : array {
         return ['type', 'byRef', 'variadic', 'var', 'default'];
     }
-    
+
     public function getType() : string {
         return 'Param';
     }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php
index d6934d3313..7b7ae378d7 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php
@@ -16,7 +16,7 @@ class DNumber extends Scalar
      * @param array $attributes Additional attributes
      */
     public function __construct(float $value, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->value = $value;
     }
 
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php
index 0541a31e26..fa5d2e2681 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php
@@ -17,7 +17,7 @@ class Encapsed extends Scalar
      * @param array  $attributes Additional attributes
      */
     public function __construct(array $parts, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->parts = $parts;
     }
 
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php
index 89048e2158..bb3194c1d7 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php
@@ -16,7 +16,7 @@ class EncapsedStringPart extends Scalar
      * @param array  $attributes Additional attributes
      */
     public function __construct(string $value, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->value = $value;
     }
 
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php
index 7b9ec5e959..5c5aca3f79 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php
@@ -23,7 +23,7 @@ class LNumber extends Scalar
      * @param array $attributes Additional attributes
      */
     public function __construct(int $value, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->value = $value;
     }
 
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php
index 841f4f8be9..941f0c7620 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php
@@ -12,7 +12,7 @@ abstract class MagicConst extends Scalar
      * @param array $attributes Additional attributes
      */
     public function __construct(array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
     }
 
     public function getSubNodeNames() : array {
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php
index 93a8633deb..de6318d053 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php
@@ -34,7 +34,7 @@ class String_ extends Scalar
      * @param array  $attributes Additional attributes
      */
     public function __construct(string $value, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->value = $value;
     }
 
@@ -134,29 +134,6 @@ private static function codePointToUtf8(int $num) : string {
         }
         throw new Error('Invalid UTF-8 codepoint escape sequence: Codepoint too large');
     }
-
-    /**
-     * @internal
-     *
-     * Parses a constant doc string.
-     *
-     * @param string $startToken Doc string start token content (<<<SMTHG)
-     * @param string $str        String token content
-     * @param bool $parseUnicodeEscape Whether to parse PHP 7 \u escapes
-     *
-     * @return string Parsed string
-     */
-    public static function parseDocString(string $startToken, string $str, bool $parseUnicodeEscape = true) : string {
-        // strip last newline (thanks tokenizer for sticking it into the string!)
-        $str = preg_replace('~(\r\n|\n|\r)\z~', '', $str);
-
-        // nowdoc string
-        if (false !== strpos($startToken, '\'')) {
-            return $str;
-        }
-
-        return self::parseEscapeSequences($str, null, $parseUnicodeEscape);
-    }
     
     public function getType() : string {
         return 'Scalar_String';
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php
index 57df3eae12..6adc5a6c6f 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php
@@ -16,7 +16,7 @@ class Break_ extends Node\Stmt
      * @param array          $attributes Additional attributes
      */
     public function __construct(Node\Expr $num = null, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->num = $num;
     }
 
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php
index 30528509b4..2bf044c900 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php
@@ -6,7 +6,7 @@
 
 class Case_ extends Node\Stmt
 {
-    /** @var null|Node\Expr $cond Condition (null for default) */
+    /** @var null|Node\Expr Condition (null for default) */
     public $cond;
     /** @var Node\Stmt[] Statements */
     public $stmts;
@@ -19,7 +19,7 @@ class Case_ extends Node\Stmt
      * @param array          $attributes Additional attributes
      */
     public function __construct($cond, array $stmts = [], array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->cond = $cond;
         $this->stmts = $stmts;
     }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php
index 49cecf39d9..7d4a7034be 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php
@@ -25,7 +25,7 @@ class Catch_ extends Node\Stmt
     public function __construct(
         array $types, Expr\Variable $var, array $stmts = [], array $attributes = []
     ) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->types = $types;
         $this->var = $var;
         $this->stmts = $stmts;
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php
index ff2f40d2ce..73a5010309 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php
@@ -19,7 +19,7 @@ class ClassConst extends Node\Stmt
      * @param array         $attributes Additional attributes
      */
     public function __construct(array $consts, int $flags = 0, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->flags = $flags;
         $this->consts = $consts;
     }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php
index 550b54ba2d..881dcd7ff5 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php
@@ -51,7 +51,7 @@ class ClassMethod extends Node\Stmt implements FunctionLike
      * @param array $attributes Additional attributes
      */
     public function __construct($name, array $subNodes = [], array $attributes = []) {
-        parent::__construct($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;
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php
index 78bd195705..a97c3f4ae8 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php
@@ -35,7 +35,7 @@ class Class_ extends ClassLike
      * @param array       $attributes Additional attributes
      */
     public function __construct($name, array $subNodes = [], array $attributes = []) {
-        parent::__construct($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;
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php
index c1786bedd8..e6316345ee 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php
@@ -16,7 +16,7 @@ class Const_ extends Node\Stmt
      * @param array         $attributes Additional attributes
      */
     public function __construct(array $consts, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->consts = $consts;
     }
 
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php
index 7e143ac965..24882683b3 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php
@@ -16,7 +16,7 @@ class Continue_ extends Node\Stmt
      * @param array          $attributes Additional attributes
      */
     public function __construct(Node\Expr $num = null, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->num = $num;
     }
 
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php
index 40bec3030c..ac07f30c78 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php
@@ -19,7 +19,7 @@ class DeclareDeclare extends Node\Stmt
      * @param array                  $attributes Additional attributes
      */
     public function __construct($key, Node\Expr $value, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->key = \is_string($key) ? new Node\Identifier($key) : $key;
         $this->value = $value;
     }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php
index 305e07d5a1..f46ff0bafd 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php
@@ -19,7 +19,7 @@ class Declare_ extends Node\Stmt
      * @param array            $attributes Additional attributes
      */
     public function __construct(array $declares, array $stmts = null, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->declares = $declares;
         $this->stmts = $stmts;
     }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php
index 778c73983b..78e90da03a 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php
@@ -19,7 +19,7 @@ class Do_ extends Node\Stmt
      * @param array       $attributes Additional attributes
      */
     public function __construct(Node\Expr $cond, array $stmts = [], array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->cond = $cond;
         $this->stmts = $stmts;
     }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php
index 9c35c61657..7cc50d5d6e 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php
@@ -16,7 +16,7 @@ class Echo_ extends Node\Stmt
      * @param array       $attributes Additional attributes
      */
     public function __construct(array $exprs, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->exprs = $exprs;
     }
 
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php
index f518d512ee..eef1ece324 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php
@@ -19,7 +19,7 @@ class ElseIf_ extends Node\Stmt
      * @param array       $attributes Additional attributes
      */
     public function __construct(Node\Expr $cond, array $stmts = [], array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->cond = $cond;
         $this->stmts = $stmts;
     }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php
index c7015c69dc..0e61778e26 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php
@@ -16,7 +16,7 @@ class Else_ extends Node\Stmt
      * @param array       $attributes Additional attributes
      */
     public function __construct(array $stmts = [], array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->stmts = $stmts;
     }
 
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php
index 1e2aa394d2..99d1687ded 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php
@@ -19,7 +19,7 @@ class Expression extends Node\Stmt
      * @param array     $attributes Additional attributes
      */
     public function __construct(Node\Expr $expr, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->expr = $expr;
     }
 
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php
index 0498f5bf84..d55b8b6872 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php
@@ -16,7 +16,7 @@ class Finally_ extends Node\Stmt
      * @param array       $attributes Additional attributes
      */
     public function __construct(array $stmts = [], array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->stmts = $stmts;
     }
 
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php
index 3e208914d7..1323d37cf3 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php
@@ -26,7 +26,7 @@ class For_ extends Node\Stmt
      * @param array $attributes Additional attributes
      */
     public function __construct(array $subNodes = [], array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->init = $subNodes['init'] ?? [];
         $this->cond = $subNodes['cond'] ?? [];
         $this->loop = $subNodes['loop'] ?? [];
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php
index 9c8e88f8f4..0556a7ce5f 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php
@@ -29,7 +29,7 @@ class Foreach_ extends Node\Stmt
      * @param array     $attributes Additional attributes
      */
     public function __construct(Node\Expr $expr, Node\Expr $valueVar, array $subNodes = [], array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->expr = $expr;
         $this->keyVar = $subNodes['keyVar'] ?? null;
         $this->byRef = $subNodes['byRef'] ?? false;
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php
index a0bd2570c5..d11a4df9d3 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php
@@ -33,7 +33,7 @@ class Function_ extends Node\Stmt implements FunctionLike
      * @param array  $attributes Additional attributes
      */
     public function __construct($name, array $subNodes = [], array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->byRef = $subNodes['byRef'] ?? false;
         $this->name = \is_string($name) ? new Node\Identifier($name) : $name;
         $this->params = $subNodes['params'] ?? [];
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php
index 8e6164879e..a0022ad932 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php
@@ -16,7 +16,7 @@ class Global_ extends Node\Stmt
      * @param array       $attributes Additional attributes
      */
     public function __construct(array $vars, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->vars = $vars;
     }
 
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php
index 35052b8a62..24a57f7807 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php
@@ -17,7 +17,7 @@ class Goto_ extends Stmt
      * @param array             $attributes Additional attributes
      */
     public function __construct($name, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->name = \is_string($name) ? new Identifier($name) : $name;
     }
 
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php
index e0d7e604c7..24520d2233 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php
@@ -23,7 +23,7 @@ class GroupUse extends Stmt
      * @param array    $attributes Additional attributes
      */
     public function __construct(Name $prefix, array $uses, int $type = Use_::TYPE_NORMAL, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->type = $type;
         $this->prefix = $prefix;
         $this->uses = $uses;
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php
index c86d71e148..8e624e0f1f 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php
@@ -16,7 +16,7 @@ class HaltCompiler extends Stmt
      * @param array  $attributes Additional attributes
      */
     public function __construct(string $remaining, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->remaining = $remaining;
     }
 
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php
index 87cd313b49..a1bae4bf89 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php
@@ -26,7 +26,7 @@ class If_ extends Node\Stmt
      * @param array     $attributes Additional attributes
      */
     public function __construct(Node\Expr $cond, array $subNodes = [], array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->cond = $cond;
         $this->stmts = $subNodes['stmts'] ?? [];
         $this->elseifs = $subNodes['elseifs'] ?? [];
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php
index 1dec989fd2..0711d2842c 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php
@@ -16,7 +16,7 @@ class InlineHTML extends Stmt
      * @param array  $attributes Additional attributes
      */
     public function __construct(string $value, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->value = $value;
     }
 
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php
index 39049aae7a..052558113d 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php
@@ -19,7 +19,7 @@ class Interface_ extends ClassLike
      * @param array  $attributes Additional attributes
      */
     public function __construct($name, array $subNodes = [], array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->name = \is_string($name) ? new Node\Identifier($name) : $name;
         $this->extends = $subNodes['extends'] ?? [];
         $this->stmts = $subNodes['stmts'] ?? [];
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php
index 332043ba5c..3edcb3be7e 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php
@@ -17,7 +17,7 @@ class Label extends Stmt
      * @param array             $attributes Additional attributes
      */
     public function __construct($name, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->name = \is_string($name) ? new Identifier($name) : $name;
     }
 
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php
index f113998d62..c63204577c 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php
@@ -23,7 +23,7 @@ class Namespace_ extends Node\Stmt
      * @param array            $attributes Additional attributes
      */
     public function __construct(Node\Name $name = null, $stmts = [], array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->name = $name;
         $this->stmts = $stmts;
     }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php
index 91291aa126..849b8b44e9 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php
@@ -3,6 +3,9 @@
 namespace PhpParser\Node\Stmt;
 
 use PhpParser\Node;
+use PhpParser\Node\Identifier;
+use PhpParser\Node\Name;
+use PhpParser\Node\NullableType;
 
 class Property extends Node\Stmt
 {
@@ -10,22 +13,26 @@ class Property extends Node\Stmt
     public $flags;
     /** @var PropertyProperty[] Properties */
     public $props;
+    /** @var null|Identifier|Name|NullableType Type declaration */
+    public $type;
 
     /**
      * Constructs a class property list node.
      *
-     * @param int                $flags      Modifiers
-     * @param PropertyProperty[] $props      Properties
-     * @param array              $attributes Additional attributes
+     * @param int                                      $flags      Modifiers
+     * @param PropertyProperty[]                       $props      Properties
+     * @param array                                    $attributes Additional attributes
+     * @param null|string|Identifier|Name|NullableType $type       Type declaration
      */
-    public function __construct(int $flags, array $props, array $attributes = []) {
-        parent::__construct($attributes);
+    public function __construct(int $flags, array $props, array $attributes = [], $type = null) {
+        $this->attributes = $attributes;
         $this->flags = $flags;
         $this->props = $props;
+        $this->type = \is_string($type) ? new Identifier($type) : $type;
     }
 
     public function getSubNodeNames() : array {
-        return ['flags', 'props'];
+        return ['flags', 'type', 'props'];
     }
 
     /**
@@ -64,7 +71,7 @@ public function isPrivate() : bool {
     public function isStatic() : bool {
         return (bool) ($this->flags & Class_::MODIFIER_STATIC);
     }
-    
+
     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
index 45e26faafd..205731e20e 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php
@@ -19,7 +19,7 @@ class PropertyProperty extends Node\Stmt
      * @param array                         $attributes Additional attributes
      */
     public function __construct($name, Node\Expr $default = null, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->name = \is_string($name) ? new Node\VarLikeIdentifier($name) : $name;
         $this->default = $default;
     }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php
index 346f9bd88c..efc578c58f 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php
@@ -16,7 +16,7 @@ class Return_ extends Node\Stmt
      * @param array          $attributes Additional attributes
      */
     public function __construct(Node\Expr $expr = null, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->expr = $expr;
     }
 
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php
index 7fbb7de15c..29584560d3 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php
@@ -22,7 +22,7 @@ class StaticVar extends Node\Stmt
     public function __construct(
         Expr\Variable $var, Node\Expr $default = null, array $attributes = []
     ) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->var = $var;
         $this->default = $default;
     }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php
index e408f51f37..464898ffa6 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php
@@ -16,7 +16,7 @@ class Static_ extends Stmt
      * @param array       $attributes Additional attributes
      */
     public function __construct(array $vars, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->vars = $vars;
     }
 
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php
index ff2ba0d96e..2c8dae0221 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php
@@ -19,7 +19,7 @@ class Switch_ extends Node\Stmt
      * @param array     $attributes Additional attributes
      */
     public function __construct(Node\Expr $cond, array $cases, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->cond = $cond;
         $this->cases = $cases;
     }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Throw_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Throw_.php
index 21709bf75a..f97f56718a 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Throw_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Throw_.php
@@ -16,7 +16,7 @@ class Throw_ extends Node\Stmt
      * @param array     $attributes Additional attributes
      */
     public function __construct(Node\Expr $expr, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->expr = $expr;
     }
 
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php
index 43c66b8d76..9e97053b40 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php
@@ -19,7 +19,7 @@ class TraitUse extends Node\Stmt
      * @param array                $attributes  Additional attributes
      */
     public function __construct(array $traits, array $adaptations = [], array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->traits = $traits;
         $this->adaptations = $adaptations;
     }
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
index 189cc85898..a3bccbd10c 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.php
@@ -21,7 +21,7 @@ class Alias extends Node\Stmt\TraitUseAdaptation
      * @param array                       $attributes  Additional attributes
      */
     public function __construct($trait, $method, $newModifier, $newName, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->trait = $trait;
         $this->method = \is_string($method) ? new Node\Identifier($method) : $method;
         $this->newModifier = $newModifier;
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
index 2ec6bff2a3..80385f64e3 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php
@@ -18,7 +18,7 @@ class Precedence extends Node\Stmt\TraitUseAdaptation
      * @param array                  $attributes  Additional attributes
      */
     public function __construct(Node\Name $trait, $method, array $insteadof, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->trait = $trait;
         $this->method = \is_string($method) ? new Node\Identifier($method) : $method;
         $this->insteadof = $insteadof;
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php
index 83980a7628..1ffa664e7e 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php
@@ -15,7 +15,7 @@ class Trait_ extends ClassLike
      * @param array  $attributes Additional attributes
      */
     public function __construct($name, array $subNodes = [], array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->name = \is_string($name) ? new Node\Identifier($name) : $name;
         $this->stmts = $subNodes['stmts'] ?? [];
     }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php
index 7661ecb7ad..47b9aae74d 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php
@@ -22,7 +22,7 @@ class TryCatch extends Node\Stmt
      * @param array         $attributes Additional attributes
      */
     public function __construct(array $stmts, array $catches, Finally_ $finally = null, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->stmts = $stmts;
         $this->catches = $catches;
         $this->finally = $finally;
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php
index 8bd2d7d68b..310e427aa2 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php
@@ -16,7 +16,7 @@ class Unset_ extends Node\Stmt
      * @param array       $attributes Additional attributes
      */
     public function __construct(array $vars, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->vars = $vars;
     }
 
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php
index fe588d2c9d..32bd7847da 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php
@@ -23,7 +23,7 @@ class UseUse extends Node\Stmt
      * @param array                  $attributes Additional attributes
      */
     public function __construct(Node\Name $name, $alias = null, int $type = Use_::TYPE_UNKNOWN, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->type = $type;
         $this->name = $name;
         $this->alias = \is_string($alias) ? new Identifier($alias) : $alias;
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php
index dafc1090f4..8753da313d 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php
@@ -32,7 +32,7 @@ class Use_ extends Stmt
      * @param array    $attributes Additional attributes
      */
     public function __construct(array $uses, int $type = self::TYPE_NORMAL, array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->type = $type;
         $this->uses = $uses;
     }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php
index 671207b8fa..f41034f8c2 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php
@@ -19,7 +19,7 @@ class While_ extends Node\Stmt
      * @param array       $attributes Additional attributes
      */
     public function __construct(Node\Expr $cond, array $stmts = [], array $attributes = []) {
-        parent::__construct($attributes);
+        $this->attributes = $attributes;
         $this->cond = $cond;
         $this->stmts = $stmts;
     }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/NodeAbstract.php b/vendor/nikic/php-parser/lib/PhpParser/NodeAbstract.php
index 29d42b4fdc..fda595994d 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/NodeAbstract.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/NodeAbstract.php
@@ -2,8 +2,6 @@
 
 namespace PhpParser;
 
-use PhpParser\Node;
-
 abstract class NodeAbstract implements Node, \JsonSerializable
 {
     protected $attributes;
@@ -159,11 +157,11 @@ public function hasAttribute(string $key) : bool {
     }
 
     public function getAttribute(string $key, $default = null) {
-        if (!array_key_exists($key, $this->attributes)) {
-            return $default;
-        } else {
+        if (array_key_exists($key, $this->attributes)) {
             return $this->attributes[$key];
         }
+
+        return $default;
     }
 
     public function getAttributes() : array {
diff --git a/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php b/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php
index fe3045aebc..97d45bdaaa 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php
@@ -30,17 +30,23 @@ class NodeTraverser implements NodeTraverserInterface
      */
     const REMOVE_NODE = 3;
 
+    /**
+     * If NodeVisitor::enterNode() returns DONT_TRAVERSE_CURRENT_AND_CHILDREN, child nodes
+     * of the current node will not be traversed for any visitors.
+     *
+     * For subsequent visitors enterNode() will not be called as well.
+     * leaveNode() will be invoked for visitors that has enterNode() method invoked.
+     */
+    const DONT_TRAVERSE_CURRENT_AND_CHILDREN = 4;
+
     /** @var NodeVisitor[] Visitors */
-    protected $visitors;
+    protected $visitors = [];
 
     /** @var bool Whether traversal should be stopped */
     protected $stopTraversal;
 
-    /**
-     * Constructs a node traverser.
-     */
     public function __construct() {
-        $this->visitors = [];
+        // for BC
     }
 
     /**
@@ -111,7 +117,9 @@ protected function traverseNode(Node $node) : Node {
                 }
             } elseif ($subNode instanceof Node) {
                 $traverseChildren = true;
-                foreach ($this->visitors as $visitor) {
+                $breakVisitorIndex = null;
+
+                foreach ($this->visitors as $visitorIndex => $visitor) {
                     $return = $visitor->enterNode($subNode);
                     if (null !== $return) {
                         if ($return instanceof Node) {
@@ -119,6 +127,10 @@ protected function traverseNode(Node $node) : Node {
                             $subNode = $return;
                         } elseif (self::DONT_TRAVERSE_CHILDREN === $return) {
                             $traverseChildren = false;
+                        } elseif (self::DONT_TRAVERSE_CURRENT_AND_CHILDREN === $return) {
+                            $traverseChildren = false;
+                            $breakVisitorIndex = $visitorIndex;
+                            break;
                         } elseif (self::STOP_TRAVERSAL === $return) {
                             $this->stopTraversal = true;
                             break 2;
@@ -137,8 +149,9 @@ protected function traverseNode(Node $node) : Node {
                     }
                 }
 
-                foreach ($this->visitors as $visitor) {
+                foreach ($this->visitors as $visitorIndex => $visitor) {
                     $return = $visitor->leaveNode($subNode);
+
                     if (null !== $return) {
                         if ($return instanceof Node) {
                             $this->ensureReplacementReasonable($subNode, $return);
@@ -157,6 +170,10 @@ protected function traverseNode(Node $node) : Node {
                             );
                         }
                     }
+
+                    if ($breakVisitorIndex === $visitorIndex) {
+                        break;
+                    }
                 }
             }
         }
@@ -177,7 +194,9 @@ protected function traverseArray(array $nodes) : array {
         foreach ($nodes as $i => &$node) {
             if ($node instanceof Node) {
                 $traverseChildren = true;
-                foreach ($this->visitors as $visitor) {
+                $breakVisitorIndex = null;
+
+                foreach ($this->visitors as $visitorIndex => $visitor) {
                     $return = $visitor->enterNode($node);
                     if (null !== $return) {
                         if ($return instanceof Node) {
@@ -185,6 +204,10 @@ protected function traverseArray(array $nodes) : array {
                             $node = $return;
                         } elseif (self::DONT_TRAVERSE_CHILDREN === $return) {
                             $traverseChildren = false;
+                        } elseif (self::DONT_TRAVERSE_CURRENT_AND_CHILDREN === $return) {
+                            $traverseChildren = false;
+                            $breakVisitorIndex = $visitorIndex;
+                            break;
                         } elseif (self::STOP_TRAVERSAL === $return) {
                             $this->stopTraversal = true;
                             break 2;
@@ -203,8 +226,9 @@ protected function traverseArray(array $nodes) : array {
                     }
                 }
 
-                foreach ($this->visitors as $visitor) {
+                foreach ($this->visitors as $visitorIndex => $visitor) {
                     $return = $visitor->leaveNode($node);
+
                     if (null !== $return) {
                         if ($return instanceof Node) {
                             $this->ensureReplacementReasonable($node, $return);
@@ -229,6 +253,10 @@ protected function traverseArray(array $nodes) : array {
                             );
                         }
                     }
+
+                    if ($breakVisitorIndex === $visitorIndex) {
+                        break;
+                    }
                 }
             } elseif (\is_array($node)) {
                 throw new \LogicException('Invalid node structure: Contains nested arrays');
diff --git a/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php b/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php
index 44d01e1070..cfe8ce7643 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php
@@ -2,7 +2,6 @@
 
 namespace PhpParser\NodeVisitor;
 
-use PhpParser\Error;
 use PhpParser\ErrorHandler;
 use PhpParser\NameContext;
 use PhpParser\Node;
@@ -94,6 +93,10 @@ public function enterNode(Node $node) {
                   || $node instanceof Expr\Closure
         ) {
             $this->resolveSignature($node);
+        } elseif ($node instanceof Stmt\Property) {
+            if (null !== $node->type) {
+                $node->type = $this->resolveType($node->type);
+            }
         } elseif ($node instanceof Stmt\Const_) {
             foreach ($node->consts as $const) {
                 $this->addNamespacedName($const);
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Parser/Php5.php b/vendor/nikic/php-parser/lib/PhpParser/Parser/Php5.php
index b5ebb32733..a558d28b78 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Parser/Php5.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Parser/Php5.php
@@ -17,17 +17,17 @@
  */
 class Php5 extends \PhpParser\ParserAbstract
 {
-    protected $tokenToSymbolMapSize = 392;
-    protected $actionTableSize = 1072;
-    protected $gotoTableSize = 644;
+    protected $tokenToSymbolMapSize = 394;
+    protected $actionTableSize = 1079;
+    protected $gotoTableSize = 650;
 
-    protected $invalidSymbol = 157;
+    protected $invalidSymbol = 159;
     protected $errorSymbol = 1;
     protected $defaultAction = -32766;
     protected $unexpectedTokenRule = 32767;
 
-    protected $YY2TBLSTATE = 403;
-    protected $numNonLeafStates = 672;
+    protected $YY2TBLSTATE = 407;
+    protected $numNonLeafStates = 676;
 
     protected $symbolToName = array(
         "EOF",
@@ -58,6 +58,7 @@ class Php5 extends \PhpParser\ParserAbstract
         "T_SL_EQUAL",
         "T_SR_EQUAL",
         "T_POW_EQUAL",
+        "T_COALESCE_EQUAL",
         "'?'",
         "':'",
         "T_COALESCE",
@@ -133,6 +134,7 @@ class Php5 extends \PhpParser\ParserAbstract
         "T_CONTINUE",
         "T_GOTO",
         "T_FUNCTION",
+        "T_FN",
         "T_CONST",
         "T_RETURN",
         "T_TRY",
@@ -190,388 +192,389 @@ class Php5 extends \PhpParser\ParserAbstract
     );
 
     protected $tokenToSymbol = array(
-            0,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,   53,  156,  157,  153,   52,   35,  157,
-          151,  152,   50,   47,    7,   48,   49,   51,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,   29,  148,
-           41,   15,   43,   28,   65,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,   67,  157,  155,   34,  157,  154,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  149,   33,  150,   55,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,    1,    2,    3,    4,
+            0,  159,  159,  159,  159,  159,  159,  159,  159,  159,
+          159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
+          159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
+          159,  159,  159,   54,  158,  159,  155,   53,   36,  159,
+          153,  154,   51,   48,    7,   49,   50,   52,  159,  159,
+          159,  159,  159,  159,  159,  159,  159,  159,   30,  150,
+           42,   15,   44,   29,   66,  159,  159,  159,  159,  159,
+          159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
+          159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
+          159,   68,  159,  157,   35,  159,  156,  159,  159,  159,
+          159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
+          159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
+          159,  159,  159,  151,   34,  152,   56,  159,  159,  159,
+          159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
+          159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
+          159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
+          159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
+          159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
+          159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
+          159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
+          159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
+          159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
+          159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
+          159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
+          159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
+          159,  159,  159,  159,  159,  159,    1,    2,    3,    4,
             5,    6,    8,    9,   10,   11,   12,   13,   14,   16,
            17,   18,   19,   20,   21,   22,   23,   24,   25,   26,
-           27,   30,   31,   32,   36,   37,   38,   39,   40,   42,
-           44,   45,   46,   54,   56,   57,   58,   59,   60,   61,
-           62,   63,   64,   66,   68,   69,   70,   71,   72,   73,
-           74,   75,   76,   77,   78,   79,   80,   81,  157,  157,
-           82,   83,   84,   85,   86,   87,   88,   89,   90,   91,
+           27,   28,   31,   32,   33,   37,   38,   39,   40,   41,
+           43,   45,   46,   47,   55,   57,   58,   59,   60,   61,
+           62,   63,   64,   65,   67,   69,   70,   71,   72,   73,
+           74,   75,   76,   77,   78,   79,   80,   81,   82,  159,
+          159,   83,   84,   85,   86,   87,   88,   89,   90,   91,
            92,   93,   94,   95,   96,   97,   98,   99,  100,  101,
           102,  103,  104,  105,  106,  107,  108,  109,  110,  111,
           112,  113,  114,  115,  116,  117,  118,  119,  120,  121,
           122,  123,  124,  125,  126,  127,  128,  129,  130,  131,
-          132,  133,  134,  135,  136,  137,  157,  157,  157,  157,
-          157,  157,  138,  139,  140,  141,  142,  143,  144,  145,
-          146,  147
+          132,  133,  134,  135,  136,  137,  138,  139,  159,  159,
+          159,  159,  159,  159,  140,  141,  142,  143,  144,  145,
+          146,  147,  148,  149
     );
 
     protected $action = array(
-          677,  678,  679,  680,  681,  279,  682,  683,  684,  720,
-          721,  218,  219,  220,  221,  222,  223,  224,  225,  226,
-            0,  227,  228,  229,  230,  231,  232,  233,  234,  235,
-          236,  237,  238,-32766,-32766,-32766,-32766,-32766,-32766,-32766,
-        -32766,-32767,-32767,-32767,-32767,  206,  239,  240,-32766,-32766,
-        -32766,-32766,  685,-32766,  123,-32766,-32766,-32766,-32766,-32766,
-        -32766,-32767,-32767,-32767,-32767,-32767,  686,  687,  688,  689,
-          690,  691,  692,  350,   30,  752,  954,  955,  956,  953,
-          952,  951,  693,  694,  695,  696,  697,  698,  699,  700,
-          701,  702,  703,  723,  724,  725,  726,  727,  715,  716,
-          717,  718,  719,  704,  705,  706,  707,  708,  709,  710,
-          746,  747,  748,  749,  750,  751,  711,  712,  713,  714,
-          744,  735,  733,  734,  730,  731, 1046,  722,  728,  729,
-          736,  737,  739,  738,  740,  741,   54,   55,  422,   56,
-           57,  732,  743,  742, -219,   58,   59,  413,   60,-32766,
-        -32766,-32766,-32766,-32766,-32766,-32766,-32766,-32766, 1046,-32767,
-        -32767,-32767,-32767,-32767,-32767,-32767,-32767,   96,   97,   98,
-           99,  100,-32766,-32766,-32766,-32766,-32766, 1224,   52,  829,
-         1225,   61,   62,-32766,-32766,-32766,  294,   63,  590,   64,
-          290,  291,   65,   66,   67,   68,   69,   70,   71,   72,
-         1046,   26,  298,   73,  414,-32766,-32766,-32766,  877, 1097,
-         1098,  756,  754,  759,  815,  771,  772,  471,-32766,-32766,
-        -32766,  830,  421,  294,  548,-32766, 1182,-32766,-32766,-32766,
-        -32766,-32766,-32766,  215,  216,  217,  434,  420,-32766,  306,
-        -32766,-32766,-32766,-32766,-32766, 1109,  495,  954,  955,  956,
-          953,  952,  951,  202,  479,  480,  215,  216,  217,  407,
-          122,  241,  813,  481,  482, 1046, 1103, 1104, 1105, 1106,
-         1100, 1101,  309,  901,  902,  328,  202,  496, 1107, 1102,
-          430,-32766,  215,  216,  217,   41,  496,  332,  320,  430,
-          321,  423, -125, -125, -125,   -4,  830,  470,  126,  417,
-          336,  818,  202,  907,   40,   21,  424, -125,  472, -125,
-          473, -125,  474, -125,-32766,  425,  215,  216,  217,   31,
-           32,  426,  427,   10,   33,  475,  820,  878,   74,  216,
-          217,  348,  349,  476,  477,  126,  202,  243,  418,  478,
-         1046,  444,  801,  848,  428,  429,  281,  756,  202,  759,
-           35,  105,  106,  107,  108,  109,  110,  111,  112,  113,
-          114,  115,  116,-32766,-32766,-32766,  423, 1064,  832,  643,
-         -125,  830,  470,  215,  216,  217,  818, 1148,  927,   40,
-           21,  424, 1074,  472,  628,  473,-32766,  474,-32766,  419,
-          425,  985,  987,  202,   31,   32,  426,  427,  405,   33,
-          475,  811, 1046,   74,  319, 1046,  348,  349,  476,  477,
-        -32766,-32766,-32766,  496,  478,   25,  430,  763,  848,  428,
-          429,  435,   48,  332,  415,  295,  901,  902,  282, 1147,
-        -32766,  297,-32766,-32766,-32766,-32766, 1182,  347,  333,  496,
-          770,  423,  430,  832,  643,   -4,  830,  470, -223,  331,
-          629,  818,-32766,  430,   40,   21,  424,  932,  472,  308,
-          473,  445,  474, -502,  928,  425, -203, -203, -203,   31,
-           32,  426,  427,  296,   33,  475,  809,  759,   74,  816,
-         1215,  348,  349,  476,  477,-32766,-32766,-32766, 1046,  478,
-          335, 1197,  801,  848,  428,  429,  236,  237,  238,  217,
-           49,-32766,-32766,-32766,  118,-32766,  127,-32766,-32766,-32766,
-          336,  292,  239,  240, 1046, 1196,  423,  202,  832,  643,
-         -203,-32766,  470,-32766,-32766,  481,  818,  208,  131,   40,
-           21,  424,  581,  472,   20,  473,   36,  474,   29,  293,
-          425, -204, -204, -204,   31,   32,  426,  427,   51,   33,
-          475,  447,  121,   74,  202,  830,  348,  349,  476,  477,
-          908,-32766,-32766,-32766,  478,  244,  522,  801,  848,  428,
-          429,  101,  102,  103,    9,  300,   78,   79,   80,  246,
-          324,-32766,  119,  646,  233,  234,  235,  104,   77,  946,
-          130,  754,  332,  832,  643, -204,   34,  245,   81,   82,
-           83,   84,   85,   86,   87,   88,   89,   90,   91,   92,
-           93,   94,   95,   96,   97,   98,   99,  100,  101,  102,
-          103, -254,  300, 1109,  830,  423,   98,   99,  100,  496,
-          120,  470,  430, 1046,  104,  818,-32766,-32766,   40,   21,
-          424,  117,  472,  828,  473,  440,  474,  207,  645,  425,
-          125,  209,  647,   31,   32,  426,  830,  841,   33,  475,
-        -32766,-32766,   74,  128,  657,  348,  349,  332,  239,  240,
-          459,  597,  654,  478,  312,  454,   22,  132,  358,  771,
-          772,  604,  605,  -82,  660,  300,  943,  663,  931,  671,
-          764,  649,-32766,  104,  423,  756,  757,   53,  612,  959,
-          470,   43,  832,  643,  818,   44,   45,   40,   21,  424,
-          298,  472, -273,  473,   46,  474,   50,   47,  425,  129,
-          759,  754,   31,   32,  426,  830,  423,   33,  475,  637,
-          528,   74,  470,-32766,  348,  349,  818,  624,  850,   40,
-           21,  424,  478,  472,  443,  473,  584,  474,  849,  616,
-          425,  -80, 1108,  655,   31,   32,  426,  830,   11,   33,
-          475,  446,  278,   74,  438,  601,  348,  349,  587,  602,
-          283,  832,  643,  464,  478,  325, 1154,    0,    0,  327,
-            0,    0,    0,    0,    0,  651,    0,    0,    0,  322,
-            0,    0,    0,  323,    0,  423,    0,    0,  307,    0,
-            0,  470,  305,  832,  643,  818, -503, -502,   40,   21,
-          424,  481,  472,    0,  473, -403,  474,   14,    5,  425,
-            0,    0,    6,   31,   32,  426,  830,  423,   33,  475,
-          357, -411,   74,  470,   12,  348,  349,  818, -412,  440,
-           40,   21,  424,  478,  472,  382,  473,  409,  474,  408,
-          383,  425,  391,  371,  530,   31,   32,  426,  843,  329,
-           33,  475,  666,  810,   74,   39,   38,  348,  349,  880,
-          821,  769,  832,  643,  819,  478,  937,  806,  667,  768,
-          827,  936,  939,  812,  767,  814,  826,  872,  804,  938,
-          865,  862,  817,  860,  935,  871,  423,   77,  644,  648,
-          650,  652,  470,  653,  864,  643,  818,  656,  658,   40,
-           21,  424,  659,  472,  661,  473,  242,  474,  662,  330,
-          425,  403,  404,  124,   31,   32,  426,  845,  773,   33,
-          475,  776,  775,   74,  210,  211,  348,  349,  870,  668,
-          212,  802,  213, 1221,  478,  458, 1220, 1190, 1188, 1173,
-         1186, 1088,  919, 1194,  204, 1184,  869,  944,  835,  210,
-          211, 1049, 1097, 1098,  844,  212,-32766,  213, 1048,  837,
-         1099, 1060,  774,  832,  643,   42, 1222,  846,  765,  204,
-          847,  766, 1223, 1044,   37,   28,  412, 1097, 1098,  406,
-          337,-32766,   75,   76,  304, 1099,  303,  302,  301,   27,
-           24,  289,  288,  280,-32766,  205,    0, 1025,  573, 1026,
-         1050, -220, 1090, -219,   16, 1113,  909,  569, 1054, 1103,
-         1104, 1105, 1106, 1100, 1101,  381, 1051,  634,  563,  468,
-          463, 1107, 1102,  462,  455,  376,   18,   17,  214,    0,
-        -32766,  608,  569, -421, 1103, 1104, 1105, 1106, 1100, 1101,
-          381, 1168, 1167, 1114, 1218, 1087, 1107, 1102, 1185, 1057,
-         1172, 1187, 1073,  214, 1058,-32766, 1059,    0, 1056, 1055,
-            0, 1153
+          681,  682,  683,  684,  685,  283,  686,  687,  688,  724,
+          725,  222,  223,  224,  225,  226,  227,  228,  229,  230,
+            0,  231,  232,  233,  234,  235,  236,  237,  238,  239,
+          240,  241,  242,-32766,-32766,-32766,-32766,-32766,-32766,-32766,
+        -32766,-32767,-32767,-32767,-32767, 1052,  243,  244,-32766,-32766,
+        -32766,-32766,-32766,  689,-32766,-32766,-32766,-32766,-32766,-32766,
+        -32766,-32766,-32767,-32767,-32767,-32767,-32767,  690,  691,  692,
+          693,  694,  695,  696,  834,   27,  757,  959,  960,  961,
+          958,  957,  956,  697,  698,  699,  700,  701,  702,  703,
+          704,  705,  706,  707,  727,  728,  729,  730,  731,  719,
+          720,  721,  749,  722,  723,  708,  709,  710,  711,  712,
+          713,  714,  751,  752,  753,  754,  755,  756,  715,  716,
+          717,  718,  748,  739,  737,  738,  734,  735, 1188,  726,
+          732,  733,  740,  741,  743,  742,  744,  745,   54,   55,
+          426,   56,   57,  736,  747,  746, -220,   58,   59,  419,
+           60,-32766,-32766,-32766,-32766,-32766,-32766,-32766,-32766,-32766,
+           28,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,   97,
+           98,   99,  100,  101,    9,  906,  907,-32766, 1202,  761,
+          328,  764, 1188,  814,   61,   62,   52,  285,  500,  951,
+           63,  434,   64,  294,  295,   65,   66,   67,   68,   69,
+           70,   71,   72,  340,   25,  302,   73,  418,-32766,-32766,
+        -32766,  882, 1103, 1104,  761, 1080,  764,-32766,-32766,-32766,
+          475, -255,  298,  825,  835,  759,  219,  220,  221,-32766,
+           36,-32766,-32766,-32766,-32766,-32766,-32766,  125,-32766,  438,
+        -32766,-32766,-32766,-32766,-32766, 1052,  500,  206,  310,  434,
+          499,  423, 1052,  129,  439,  759,  336,  340,  483,  484,
+           10,  959,  960,  961,  958,  957,  956,  485,  486,  124,
+         1109, 1110, 1111, 1112, 1106, 1107,  313,-32766,-32766,-32766,
+        -32766,  500, 1113, 1108,  434,  219,  220,  221,  425,   41,
+          764,  336,  324, 1222,  325,  427, -126, -126, -126,   -4,
+          835,  474,-32766,-32766,-32766,  823,  206,  913,   40,   21,
+          428, -126,  476, -126,  477, -126,  478, -126,  123,  429,
+          219,  220,  221,   31,   32,  430,  431,  354,  130,   33,
+          479,  883,  336,   74, 1203,  128,  352,  353,  480,  481,
+          912,  206,  247,  301,  482,  210, 1052,  806,  853,  432,
+          433,  312,   30,  297,   35,  106,  107,  108,  109,  110,
+          111,  112,  113,  114,  115,  116,  117,  118,  421, 1052,
+          296,  427, 1154,  837,  647, -126,  835,  474,  102,  103,
+          104,  823,  304,  816,   40,   21,  428,  332,  476,  632,
+          477,  422,  478,  298,  105,  429,  991,  993,   20,   31,
+           32,  430,  431,  933,  409,   33,  479,  220,  221,   74,
+          323,-32766,  352,  353,  480,  481,-32766,-32766,-32766,  424,
+          482, 1052,  448,  768,  853,  432,  433,  206,-32766,-32766,
+        -32766,   48,  906,  907, 1153, 1070,  339,-32766,  485,-32766,
+        -32766,-32766,-32766, 1231,  337,  500, 1232,  427,  434,  837,
+          647,   -4,  835,  474, -224, 1052,  633,  823,   49,  434,
+           40,   21,  428,  937,  476,  776,  477,  777,  478, -504,
+          820,  429, -205, -205, -205,   31,   32,  430,  431,-32766,
+        -32766,   33,  479,   75,-32766,   74,-32766,  594,  352,  353,
+          480,  481,-32766,-32766,-32766,  119,  482,  526,  451,  806,
+          853,  432,  433,  240,  241,  242,  128,-32766,-32766,-32766,
+          411,  775,   51,-32766,  120,-32766,-32766,-32766,  500,  243,
+          244,  434,  552,  427,  417,  837,  647, -205,-32766,  474,
+        -32766,-32766, 1052,  823,  821,  351,   40,   21,  428, 1052,
+          476,  121,  477,  449,  478, 1115,  211,  429, -204, -204,
+         -204,   31,   32,  430,  431, 1115,  286,   33,  479,  818,
+          835,   74,  932,  299,  352,  353,  480,  481,  212,  219,
+          220,  221,  482,  335,  245,  806,  853,  432,  433,-32766,
+        -32766,-32766,  213,   79,   80,   81,   99,  100,  101,  650,
+          206,  237,  238,  239,  444,  122,  776,  649,  777,  300,
+        -32766,  837,  647, -204,   34,  248,   82,   83,   84,   85,
+           86,   87,   88,   89,   90,   91,   92,   93,   94,   95,
+           96,   97,   98,   99,  100,  101,  102,  103,  104, 1052,
+          304,  427,  221,  249,  835,  250,   78,  474,  206,  133,
+          336,  823,  105,  585,   40,   21,  428,  127,  476,  -83,
+          477,  206,  478,-32766,-32766,  429,  219,  220,  221,   31,
+           32,  430,  316,  651,  658,   33,  479,  835,  661,   74,
+          243,  244,  352,  353,  458,   22,  833,  206,  463,  601,
+          482,  134,  362,  132,  608,  609,  769,  653,-32766,  948,
+          667,  936,  675,  846,  304,  105,  655,   43,   44,   45,
+          616,  761,  759,   46,   47,  427,  302, -274,   50,  837,
+          647,  474,   53,  131,  588,  823,  442,  468,   40,   21,
+          428,  762,  476,  606,  477,-32766,  478,  764,  447,  429,
+          964,  854,  532,   31,   32,  430,  855,  327,  427,   33,
+          479,  835,  641,   74,  474,  620,  352,  353,  823,  -81,
+          628,   40,   21,  428,  482,  476,   11,  477,  450,  478,
+          282,  591,  429,  375,  605,  848,   31,   32,  430,    0,
+          659,  329,   33,  479,  835,    0,   74,    0,    0,  352,
+          353,    0,    0,  837,  647, -504,    0,  482,  326,    0,
+          331,    0,    0,    0,    0,    0,    0,    0,  309,  311,
+         -505,    0,  485,  664,    0,    0,    0,    0,    0,    0,
+            0,    0,  427, 1114, 1160,    0,  869,  647,  474, -413,
+         -405,  835,  823,    5,    6,   40,   21,  428,   12,  476,
+           14,  477,  361,  478, -414,  386,  429,  387,   24,  395,
+           31,   32,  430,  444,  534,  427,   33,  479,  412,  413,
+           74,  474,   38,  352,  353,  823,   39,  670,   40,   21,
+          428,  482,  476,  671,  477,  774,  478,  824,  832,  429,
+          811,  826,  885,   31,   32,  430,  876,  877,  809,   33,
+          479,  870,  867,   74,  865,  943,  352,  353,  944,  941,
+          837,  647,  427,  815,  482,  817,  819,  831,  474,  822,
+          940,  772,  823,  773,  942,   40,   21,  428,   78,  476,
+          648,  477,  652,  478,  654,  656,  429,  657,  246,  660,
+           31,   32,  430,  837,  647,  662,   33,  479,  663,  665,
+           74,  666,  126,  352,  353,  333,  214,  215,  334,  407,
+          408,  482,  216,  672,  217,  807, 1228, 1230,  771,  852,
+          770,  851, 1229,  850, 1066,  842,  208, 1054,  849, 1055,
+          840,  214,  215,  949, 1103, 1104,  874,  216,-32766,  217,
+          837,  647, 1105,  875,  462, 1227, 1196, 1194, 1179, 1192,
+         1094,  208,  924, 1200, 1190,  780,  781,  778,  779, 1103,
+         1104,   26,   29,-32766,   37,   42,   76, 1105,   77,  209,
+          284,  292,  293,  305,  306,  307,  308,  341,  410,  416,
+        -32766,    0, -221, -220,   16,   17,   18,  380,  459,  466,
+          573,  467, 1109, 1110, 1111, 1112, 1106, 1107,  385,  472,
+          567,  638, 1057, 1060, 1113, 1108,  914, 1119, 1056, 1032,
+          577,  218,  287,-32766, 1031,  573, 1096, 1109, 1110, 1111,
+         1112, 1106, 1107,  385, -423, 1050,    0, 1061, 1063, 1113,
+         1108, 1062, 1065, 1064, 1079, 1193,  218, 1178,-32766, 1174,
+            0, 1191, 1093, 1225, 1120, 1173,  612,    0, 1159
     );
 
     protected $actionCheck = array(
             2,    3,    4,    5,    6,   13,    8,    9,   10,   11,
-           12,   31,   32,   33,   34,   35,   36,   37,   38,   39,
-            0,   41,   42,   43,   44,   45,   46,   47,   48,   49,
-           50,   51,   52,    8,    9,   10,   31,   32,   33,   34,
-           35,   36,   37,   38,   39,    7,   66,   67,   31,   32,
-           33,   34,   54,   28,    7,   30,   31,   32,   33,   34,
-           35,   36,   37,   38,   39,   40,   68,   69,   70,   71,
-           72,   73,   74,    7,    7,   77,  112,  113,  114,  115,
-          116,  117,   84,   85,   86,   87,   88,   89,   90,   91,
+           12,   32,   33,   34,   35,   36,   37,   38,   39,   40,
+            0,   42,   43,   44,   45,   46,   47,   48,   49,   50,
+           51,   52,   53,    8,    9,   10,   32,   33,   34,   35,
+           36,   37,   38,   39,   40,   12,   67,   68,   32,   33,
+           34,   35,   36,   55,   29,    8,   31,   32,   33,   34,
+           35,   36,   37,   38,   39,   40,   41,   69,   70,   71,
+           72,   73,   74,   75,    1,    7,   78,  114,  115,  116,
+          117,  118,  119,   85,   86,   87,   88,   89,   90,   91,
            92,   93,   94,   95,   96,   97,   98,   99,  100,  101,
           102,  103,  104,  105,  106,  107,  108,  109,  110,  111,
           112,  113,  114,  115,  116,  117,  118,  119,  120,  121,
-          122,  123,  124,  125,  126,  127,   12,  129,  130,  131,
-          132,  133,  134,  135,  136,  137,    2,    3,    4,    5,
-            6,  143,  144,  145,  152,   11,   12,    7,   14,   31,
-           32,   33,   34,   35,   36,   37,   38,   39,   12,   41,
-           42,   43,   44,   41,   42,   43,   44,   45,   46,   47,
-           48,   49,   31,   32,   33,   34,   35,   77,   67,    1,
-           80,   47,   48,    8,    9,   10,   35,   53,   82,   55,
-           56,   57,   58,   59,   60,   61,   62,   63,   64,   65,
-           12,   67,   68,   69,   70,    8,    9,   10,   29,   75,
-           76,   77,   77,   79,  148,  102,  103,   83,    8,    9,
-           10,    1,    7,   35,   78,   28,   79,   30,   31,   32,
-           33,   34,   35,    8,    9,   10,  102,    7,   28,  128,
-           30,   31,   32,   33,   34,  139,  112,  112,  113,  114,
-          115,  116,  117,   28,  120,  121,    8,    9,   10,  146,
-          149,   13,  148,  129,  130,   12,  132,  133,  134,  135,
-          136,  137,  138,  130,  131,    7,   28,  143,  144,  145,
-          146,    8,    8,    9,   10,  151,  143,  153,  154,  146,
-          156,   71,   72,   73,   74,    0,    1,   77,  147,    7,
-          153,   81,   28,  152,   84,   85,   86,   87,   88,   89,
-           90,   91,   92,   93,   79,   95,    8,    9,   10,   99,
-          100,  101,  102,    7,  104,  105,  148,  148,  108,    9,
-           10,  111,  112,  113,  114,  147,   28,   29,    7,  119,
-           12,   29,  122,  123,  124,  125,    7,   77,   28,   79,
-           15,   16,   17,   18,   19,   20,   21,   22,   23,   24,
-           25,   26,   27,   31,   32,   33,   71,  152,  148,  149,
-          150,    1,   77,    8,    9,   10,   81,  152,  148,   84,
-           85,   86,  112,   88,   77,   90,  151,   92,  153,    7,
-           95,   56,   57,   28,   99,  100,  101,  102,  103,  104,
-          105,  148,   12,  108,  109,   12,  111,  112,  113,  114,
-            8,    9,   10,  143,  119,    7,  146,  122,  123,  124,
-          125,  151,   67,  153,  123,   35,  130,  131,   35,  155,
-           28,   35,   30,   31,   32,   33,   79,    7,  143,  143,
-          148,   71,  146,  148,  149,  150,    1,   77,  152,    7,
-          143,   81,  151,  146,   84,   85,   86,  150,   88,    7,
-           90,  149,   92,  128,  148,   95,   96,   97,   98,   99,
-          100,  101,  102,    7,  104,  105,  148,   79,  108,  148,
-           82,  111,  112,  113,  114,    8,    9,   10,   12,  119,
-           67,  152,  122,  123,  124,  125,   50,   51,   52,   10,
-           67,    8,    9,   10,  149,   28,  149,   30,   31,   32,
-          153,   35,   66,   67,   12,    1,   71,   28,  148,  149,
-          150,   28,   77,   30,   31,  129,   81,   15,  149,   84,
-           85,   86,  153,   88,  152,   90,   13,   92,  140,  141,
-           95,   96,   97,   98,   99,  100,  101,  102,   67,  104,
-          105,  128,   13,  108,   28,    1,  111,  112,  113,  114,
-          152,    8,    9,   10,  119,   15,   82,  122,  123,  124,
-          125,   50,   51,   52,  103,   54,    8,    9,   10,   15,
-          109,   28,  149,   29,   47,   48,   49,   66,  149,  118,
-           29,   77,  153,  148,  149,  150,   28,   15,   30,   31,
-           32,   33,   34,   35,   36,   37,   38,   39,   40,   41,
-           42,   43,   44,   45,   46,   47,   48,   49,   50,   51,
-           52,  150,   54,  139,    1,   71,   47,   48,   49,  143,
-          149,   77,  146,   12,   66,   81,    8,    9,   84,   85,
-           86,   15,   88,   29,   90,  146,   92,   15,  149,   95,
-           29,   15,   29,   99,  100,  101,    1,   35,  104,  105,
-           31,   32,  108,  149,   29,  111,  112,  153,   66,   67,
-           72,   73,   29,  119,   29,   72,   73,   97,   98,  102,
-          103,  106,  107,   29,   29,   54,  148,  149,  148,  149,
-          148,  149,   31,   66,   71,   77,   77,   67,   74,   79,
-           77,   67,  148,  149,   81,   67,   67,   84,   85,   86,
-           68,   88,   79,   90,   67,   92,   67,   67,   95,   67,
-           79,   77,   99,  100,  101,    1,   71,  104,  105,   89,
-           82,  108,   77,   82,  111,  112,   81,   91,  123,   84,
-           85,   86,  119,   88,   86,   90,   87,   92,  123,   93,
-           95,   94,  139,   29,   99,  100,  101,    1,   94,  104,
-          105,   94,   94,  108,  102,   96,  111,  112,   96,  109,
-          153,  148,  149,  102,  119,  110,  139,   -1,   -1,  126,
-           -1,   -1,   -1,   -1,   -1,   29,   -1,   -1,   -1,  126,
-           -1,   -1,   -1,  127,   -1,   71,   -1,   -1,  128,   -1,
-           -1,   77,  128,  148,  149,   81,  128,  128,   84,   85,
-           86,  129,   88,   -1,   90,  142,   92,  142,  142,   95,
-           -1,   -1,  142,   99,  100,  101,    1,   71,  104,  105,
-          142,  142,  108,   77,  142,  111,  112,   81,  142,  146,
-           84,   85,   86,  119,   88,  146,   90,  146,   92,  146,
-          146,   95,  146,  146,  146,   99,  100,  101,  147,  149,
-          104,  105,  148,  148,  108,  148,  148,  111,  112,  148,
-          148,  148,  148,  149,  148,  119,  148,  148,  148,  148,
-          148,  148,  148,  148,  148,  148,  148,  148,  148,  148,
-          148,  148,  148,  148,  148,  148,   71,  149,  149,  149,
-          149,  149,   77,  149,  148,  149,   81,  149,  149,   84,
-           85,   86,  149,   88,  149,   90,   29,   92,  149,  149,
-           95,  149,  149,  149,   99,  100,  101,  150,  150,  104,
-          105,  150,  150,  108,   47,   48,  111,  112,  150,  150,
-           53,  150,   55,  150,  119,  150,  150,  150,  150,  150,
-          150,  150,  150,  150,   67,  150,  150,  150,  150,   47,
-           48,  150,   75,   76,  150,   53,   79,   55,  150,  150,
-           83,  150,  150,  148,  149,  151,  150,  150,  150,   67,
-          150,  150,  150,  154,  151,  151,  151,   75,   76,  151,
-          151,   79,  151,  151,  151,   83,  151,  151,  151,  151,
-          151,  151,  151,  151,  151,  151,   -1,  152,  152,  152,
-          152,  152,  152,  152,  152,  152,  152,  130,  152,  132,
-          133,  134,  135,  136,  137,  138,  152,  152,  152,  152,
-          152,  144,  145,  152,  152,  152,  152,  152,  151,   -1,
-          153,  155,  130,  154,  132,  133,  134,  135,  136,  137,
-          138,  155,  155,  155,  155,  155,  144,  145,  155,  155,
-          155,  155,  155,  151,  155,  153,  155,   -1,  155,  155,
-           -1,  156
+          122,  123,  124,  125,  126,  127,  128,  129,   80,  131,
+          132,  133,  134,  135,  136,  137,  138,  139,    2,    3,
+            4,    5,    6,  145,  146,  147,  154,   11,   12,  125,
+           14,   32,   33,   34,   35,   36,   37,   38,   39,   40,
+            7,   42,   43,   44,   45,   42,   43,   44,   45,   46,
+           47,   48,   49,   50,  105,  132,  133,  153,    1,   78,
+          111,   80,   80,  150,   48,   49,   68,    7,  145,  120,
+           54,  148,   56,   57,   58,   59,   60,   61,   62,   63,
+           64,   65,   66,  155,   68,   69,   70,   71,    8,    9,
+           10,   30,   76,   77,   78,  114,   80,    8,    9,   10,
+           84,  152,   36,  150,    1,   78,    8,    9,   10,   29,
+           13,   31,   32,   33,   34,   35,   36,    7,   29,  103,
+           31,   32,   33,   34,   35,   12,  145,   29,  130,  148,
+          114,    7,   12,  151,  153,   78,  155,  155,  122,  123,
+            7,  114,  115,  116,  117,  118,  119,  131,  132,  151,
+          134,  135,  136,  137,  138,  139,  140,   32,   33,   34,
+           35,  145,  146,  147,  148,    8,    9,   10,    7,  153,
+           80,  155,  156,   83,  158,   72,   73,   74,   75,    0,
+            1,   78,    8,    9,   10,   82,   29,  154,   85,   86,
+           87,   88,   89,   90,   91,   92,   93,   94,   13,   96,
+            8,    9,   10,  100,  101,  102,  103,    7,  151,  106,
+          107,  150,  155,  110,  154,  149,  113,  114,  115,  116,
+          154,   29,   30,   36,  121,    7,   12,  124,  125,  126,
+          127,    7,  142,  143,   15,   16,   17,   18,   19,   20,
+           21,   22,   23,   24,   25,   26,   27,   28,    7,   12,
+           36,   72,  154,  150,  151,  152,    1,   78,   51,   52,
+           53,   82,   55,  150,   85,   86,   87,    7,   89,   78,
+           91,    7,   93,   36,   67,   96,   57,   58,  154,  100,
+          101,  102,  103,  150,  105,  106,  107,    9,   10,  110,
+          111,   80,  113,  114,  115,  116,    8,    9,   10,    7,
+          121,   12,   30,  124,  125,  126,  127,   29,   32,   33,
+           34,   68,  132,  133,  157,  154,   68,   29,  131,   31,
+           32,   33,   34,   78,  145,  145,   81,   72,  148,  150,
+          151,  152,    1,   78,  154,   12,  145,   82,   68,  148,
+           85,   86,   87,  152,   89,  103,   91,  105,   93,  130,
+          150,   96,   97,   98,   99,  100,  101,  102,  103,    8,
+            9,  106,  107,  149,  153,  110,  155,   83,  113,  114,
+          115,  116,    8,    9,   10,   15,  121,   83,  130,  124,
+          125,  126,  127,   51,   52,   53,  149,    8,    9,   10,
+          148,  150,   68,   29,  151,   31,   32,   33,  145,   67,
+           68,  148,   79,   72,    7,  150,  151,  152,   29,   78,
+           31,   32,   12,   82,  150,    7,   85,   86,   87,   12,
+           89,  151,   91,  151,   93,  141,   15,   96,   97,   98,
+           99,  100,  101,  102,  103,  141,   36,  106,  107,  150,
+            1,  110,  150,   36,  113,  114,  115,  116,   15,    8,
+            9,   10,  121,    7,   13,  124,  125,  126,  127,    8,
+            9,   10,   15,    8,    9,   10,   48,   49,   50,   30,
+           29,   48,   49,   50,  148,  151,  103,  151,  105,    7,
+           29,  150,  151,  152,   29,   15,   31,   32,   33,   34,
+           35,   36,   37,   38,   39,   40,   41,   42,   43,   44,
+           45,   46,   47,   48,   49,   50,   51,   52,   53,   12,
+           55,   72,   10,   15,    1,   15,  151,   78,   29,  151,
+          155,   82,   67,  155,   85,   86,   87,   30,   89,   30,
+           91,   29,   93,   32,   33,   96,    8,    9,   10,  100,
+          101,  102,   30,   30,   30,  106,  107,    1,   30,  110,
+           67,   68,  113,  114,   73,   74,   30,   29,   73,   74,
+          121,   98,   99,   30,  108,  109,  150,  151,   32,  150,
+          151,  150,  151,   36,   55,   67,   30,   68,   68,   68,
+           75,   78,   78,   68,   68,   72,   69,   80,   68,  150,
+          151,   78,   68,   68,   88,   82,  103,  103,   85,   86,
+           87,   78,   89,  111,   91,   83,   93,   80,   87,   96,
+           80,  125,   83,  100,  101,  102,  125,  129,   72,  106,
+          107,    1,   90,  110,   78,   94,  113,  114,   82,   95,
+           92,   85,   86,   87,  121,   89,   95,   91,   95,   93,
+           95,   97,   96,  148,   97,  149,  100,  101,  102,   -1,
+           30,  112,  106,  107,    1,   -1,  110,   -1,   -1,  113,
+          114,   -1,   -1,  150,  151,  130,   -1,  121,  128,   -1,
+          128,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  130,  130,
+          130,   -1,  131,   30,   -1,   -1,   -1,   -1,   -1,   -1,
+           -1,   -1,   72,  141,  141,   -1,  150,  151,   78,  144,
+          144,    1,   82,  144,  144,   85,   86,   87,  144,   89,
+          144,   91,  144,   93,  144,  148,   96,  148,  153,  148,
+          100,  101,  102,  148,  148,   72,  106,  107,  148,  148,
+          110,   78,  150,  113,  114,   82,  150,  150,   85,   86,
+           87,  121,   89,  150,   91,  150,   93,  150,  150,   96,
+          150,  150,  150,  100,  101,  102,  150,  150,  150,  106,
+          107,  150,  150,  110,  150,  150,  113,  114,  150,  150,
+          150,  151,   72,  150,  121,  150,  150,  150,   78,  150,
+          150,  150,   82,  150,  150,   85,   86,   87,  151,   89,
+          151,   91,  151,   93,  151,  151,   96,  151,   30,  151,
+          100,  101,  102,  150,  151,  151,  106,  107,  151,  151,
+          110,  151,  151,  113,  114,  151,   48,   49,  151,  151,
+          151,  121,   54,  152,   56,  152,  152,  152,  152,  152,
+          152,  152,  152,  152,  152,  152,   68,  152,  152,  152,
+          152,   48,   49,  152,   76,   77,  152,   54,   80,   56,
+          150,  151,   84,  152,  152,  152,  152,  152,  152,  152,
+          152,   68,  152,  152,  152,  152,  152,  152,  152,   76,
+           77,  153,  153,   80,  153,  153,  153,   84,  153,  153,
+          153,  153,  153,  153,  153,  153,  153,  153,  153,  153,
+          153,   -1,  154,  154,  154,  154,  154,  154,  154,  154,
+          132,  154,  134,  135,  136,  137,  138,  139,  140,  154,
+          154,  154,  154,  154,  146,  147,  154,  154,  154,  154,
+          154,  153,  155,  155,  154,  132,  154,  134,  135,  136,
+          137,  138,  139,  140,  156,  156,   -1,  157,  157,  146,
+          147,  157,  157,  157,  157,  157,  153,  157,  155,  157,
+           -1,  157,  157,  157,  157,  157,  157,   -1,  158
     );
 
     protected $actionBase = array(
-            0,  220,  295,  445,  370,  357,  357,  307,  728,   -2,
-           -2,  135,   -2,   -2,   -2,  623,  724,  655,  724,  554,
-          756,  825,  825,  825,  151,  188,  476,  476,  860,  146,
-          476,  328,  253,  114,  621,  393,  390,  502,  502,  502,
-          502,  134,  134,  502,  502,  502,  502,  502,  502,  502,
-          502,  502,  502,  502,  502,  502,  502,  502,  502,  502,
-          502,  502,  502,  502,  502,  502,  502,  502,  502,  502,
-          502,  502,  502,  502,  502,  502,  502,  502,  502,  502,
-          502,  502,  502,  502,  502,  502,  502,  502,  502,  502,
-          502,  502,  502,  502,  502,  502,  502,  502,  502,  502,
-          502,  502,  502,  502,  502,  502,  502,  502,  502,  502,
-          502,  502,  502,  502,  502,  502,  502,  502,  502,  502,
-          502,  502,  502,  502,  502,  502,  502,  502,  502,  502,
-          502,  502,  502,  179,  178,  539,  523,  715,  735,  737,
-          738,  858,  668,  857,  796,  797,  561,  798,  799,  800,
-          801,  802,  795,  803,  886,  805,  568,  568,  568,  568,
-          568,  568,  568,  568,  568,  568,  568,  273,  248,  225,
-          308,  274,  628,  365,  365,  365,  365,  365,  365,  365,
-          175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
-          175,  175,  175,  175,  175,  175,  175,  320,  553,  553,
-          553,  489,  887,  526,  912,  912,  912,  912,  912,  912,
-          912,  912,  912,  912,  912,  912,  912,  912,  912,  912,
-          912,  912,  912,  912,  912,  912,  912,  912,  912,  912,
-          912,  912,  912,  912,  912,  912,  912,  912,  912,  912,
-          912,  912,  912,  912,  912,  912,  912,  493,  -20,  -20,
-          477,  661,  402,  629,  210,  332,  197,   25,   25,   25,
-           25,   25,   17,  141,    5,    5,    5,    5,  335,  122,
-          122,  122,  122,  118,  118,  118,  118,  471,  396,  396,
-          682,  682,  642,  774,  579,  579,  537,  537,  270,  270,
-          270,  270,  270,  270,  270,  270,  270,  270,  301,  633,
-          853,  296,  296,  296,  296,  514,  514,  514,  143,  484,
-          637,  915,  143,  521,  521,  521,  446,  446,  446,  113,
-          648,  398,  235,  235,  235,  235,  398,  235,  235,  577,
-          577,  577,  439,  499,  651,  100,  379,  486,  433,  672,
-          806,  669,  788,  540,  696,  111,  703,  701,  617,  662,
-          617,  603,  598,  575,  673,  312,  847,  147,  179,  538,
-          481,  631,  744,  292,  736,   66,  331,  423,  542,  355,
-          382,  710,  731,  856,  855,  339,  678,  631,  631,  631,
-          408,  106,  770,  772,  355,   -8,  602,  602,  602,  602,
-          782,  773,  602,  602,  602,  602,  781,  778,  316,  230,
-          822,  215,  746,  618,  618,  644,  644,  618,  618,  618,
-          618,  620,  622,  618,  834,  849,  849,  644,  641,  644,
-          620,  622,  824,  824,  824,  824,  644,  622,  644,  644,
-          618,  644,  849,  849,  622,  642,  849,   67,  622,  663,
-          618,  653,  653,  824,  714,  730,  644,  644,  666,  849,
-          849,  849,  666,  622,  824,  660,  711,   38,  849,  824,
-          645,  641,  645,  660,  622,  645,  641,  641,  645,   20,
-          654,  634,  833,  841,  838,  749,  625,  615,  851,  850,
-          842,  852,  848,  614,  708,  723,  726,  626,  638,  639,
-          647,  650,  676,  649,  674,  662,  693,  627,  627,  627,
-          679,  680,  679,  627,  627,  627,  627,  627,  627,  627,
-          627,  914,  689,  688,  670,  658,  732,  632,  707,  667,
-          512,  750,  613,  708,  708,  791,  874,  883,  889,  829,
-          619,  847,  876,  679,  904,  718,   47,  636,  846,  789,
-          699,  704,  679,  845,  679,  751,  679,  866,  793,  652,
-          832,  708,  831,  627,  864,  913,  911,  909,  907,  906,
-          905,  896,  903,  630,  900,  729,  659,  882,  452,  854,
-          673,  692,  706,  722,  830,  268,  899,  828,  679,  679,
-          752,  748,  679,  754,  721,  717,  862,  747,  881,  898,
-          613,  878,  679,  671,  827,  897,  268,  643,  624,  859,
-          656,  739,  835,  863,  839,  758,  550,  582,  826,  777,
-          821,  635,  740,  885,  884,  861,  742,  759,  564,  763,
-          646,  819,  765,  843,  743,  818,  814,  875,  657,  693,
-          675,  665,  664,  640,  769,  811,  877,  745,  741,  734,
-          808,  733,  807,    0,    0,    0,    0,    0,    0,    0,
+            0,  223,  299,  375,  451,  102,  102,  311,  754,   -2,
+           -2,  147,   -2,   -2,   -2,  633,  740,  773,  740,  559,
+          666,  820,  820,  820,  186,  334,  334,  334,  357,  892,
+          443,   33,  233,  409,  617,  520,  527,  240,  240,  240,
+          240,  136,  136,  240,  240,  240,  240,  240,  240,  240,
+          240,  240,  240,  240,  240,  240,  240,  240,  240,  240,
+          240,  240,  240,  240,  240,  240,  240,  240,  240,  240,
+          240,  240,  240,  240,  240,  240,  240,  240,  240,  240,
+          240,  240,  240,  240,  240,  240,  240,  240,  240,  240,
+          240,  240,  240,  240,  240,  240,  240,  240,  240,  240,
+          240,  240,  240,  240,  240,  240,  240,  240,  240,  240,
+          240,  240,  240,  240,  240,  240,  240,  240,  240,  240,
+          240,  240,  240,  240,  240,  240,  240,  240,  240,  240,
+          240,  240,  240,  240,  240,  181,   73,  305,  217,  743,
+          745,  746,  747,  884,  665,  885,  823,  824,  653,  825,
+          826,  827,  828,  830,  822,  831,  919,  832,  575,  575,
+          575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+           47,  561,  218,  312,  277,  471,  648,  648,  648,  648,
+          648,  648,  648,  294,  294,  294,  294,  294,  294,  294,
+          294,  294,  294,  294,  294,  294,  294,  294,  294,  294,
+          294,  398,  571,  571,  571,  622,  888,  609,  913,  913,
+          913,  913,  913,  913,  913,  913,  913,  913,  913,  913,
+          913,  913,  913,  913,  913,  913,  913,  913,  913,  913,
+          913,  913,  913,  913,  913,  913,  913,  913,  913,  913,
+          913,  913,  913,  913,  913,  913,  913,  913,  913,  913,
+          913,  499,  -21,  -21,  484,  656,  408,  621,  209,  396,
+          200,   25,   25,   25,   25,   25,  245,   16,    4,    4,
+            4,    4,  339,  123,  123,  123,  123,  119,  119,  119,
+          119,   69,  307,  307,  671,  671,  637,  781,  538,  538,
+          543,  543,  101,  101,  101,  101,  101,  101,  101,  101,
+          101,  101,   24,  627,  857,  300,  300,  300,  300,  177,
+          177,  177,   43,  414,  673,  920,   43,  327,  327,  327,
+          452,  452,  452,  362,  649,  210,  331,  331,  331,  331,
+          210,  331,  331,  493,  493,  493,  485,  446,  642,  365,
+          488,  373,  390,  664,  814,  667,  821,  541,  690,  118,
+          700,  701,  887,  613,  887,  601,  605,  576,  676,  392,
+          850,   48,  181,  539,  444,  639,  749,  361,  751,  320,
+          384,  368,  536,  363,  244,  784,  753,  886,  890,  180,
+          670,  639,  639,  639,  153,  404,  787,  788,  363,   -8,
+          603,  603,  603,  603,  833,  789,  603,  603,  603,  603,
+          834,  835,  253,  412,  836,  281,  750,  623,  623,  624,
+          624,  623,  623,  623,  623,  650,  657,  623,  839,  685,
+          685,  624,  647,  624,  650,  657,  842,  842,  842,  842,
+          624,  657,  624,  624,  623,  624,  685,  685,  657,  637,
+          685,   68,  657,  660,  623,  662,  662,  842,  707,  713,
+          624,  624,  608,  685,  685,  685,  608,  657,  842,  612,
+          616,  338,  685,  842,  632,  647,  632,  612,  657,  632,
+          647,  647,  632,   20,  619,  629,  841,  843,  855,  759,
+          606,  611,  848,  849,  845,  847,  838,  646,  696,  715,
+          717,  480,  630,  631,  635,  636,  679,  640,  668,  613,
+          695,  628,  628,  628,  655,  680,  655,  628,  628,  628,
+          628,  628,  628,  628,  628,  900,  675,  688,  669,  641,
+          718,  531,  615,  663,  553,  761,  672,  696,  696,  793,
+          878,  863,  898,  899,  643,  850,  876,  655,  901,  702,
+          230,  567,  851,  791,  687,  689,  655,  852,  655,  763,
+          655,  879,  794,  645,  795,  696,  796,  628,  882,  904,
+          905,  906,  907,  908,  910,  912,  914,  644,  915,  720,
+          626,  864,  344,  846,  676,  684,  691,  721,  797,  380,
+          916,  798,  655,  655,  764,  757,  655,  766,  722,  706,
+          860,  726,  865,  917,  672,  867,  655,  614,  799,  918,
+          380,  634,  625,  858,  651,  727,  856,  883,  854,  768,
+          590,  618,  800,  801,  802,  638,  728,  861,  862,  859,
+          731,  774,  620,  777,  658,  803,  778,  853,  732,  805,
+          806,  877,  654,  695,  686,  659,  661,  652,  780,  807,
+          875,  734,  735,  738,  808,  739,  811,    0,    0,    0,
             0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
             0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-            0,    0,    0,  134,  134,  134,  134,   -2,   -2,   -2,
-           -2,    0,    0,   -2,    0,    0,    0,  134,  134,  134,
-          134,  134,  134,  134,  134,  134,  134,  134,  134,  134,
-          134,  134,  134,  134,  134,  134,  134,  134,  134,  134,
-          134,  134,  134,    0,    0,  134,  134,  134,  134,  134,
-          134,  134,  134,  134,  134,  134,  134,  134,  134,  134,
-          134,  134,  134,  134,  134,  134,  134,  134,  134,  134,
-          134,  134,  134,  134,  134,  134,  134,  134,  134,  134,
-          134,  134,  134,  134,  134,  134,  134,  134,  134,  134,
-          134,  134,  134,  134,  134,  134,  134,  134,  134,  134,
-          134,  134,  134,  134,  134,  134,  134,  134,  134,  134,
-          134,  134,  134,  134,  134,  134,  134,  134,  134,  134,
-          134,  134,  134,  134,  134,  134,  134,  134,  134,  134,
-          134,  134,  134,  134,  134,  568,  568,  568,  568,  568,
-          568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
-          568,  568,  568,  568,  568,  568,  568,  568,    0,    0,
-            0,    0,    0,    0,    0,    0,    0,    0,    0,  568,
-          -20,  -20,  -20,  -20,  568,  -20,  -20,  -20,  -20,  -20,
-          -20,  -20,  568,  568,  568,  568,  568,  568,  568,  568,
-          568,  568,  568,  568,  568,  568,  568,  568,  568,  -20,
-          568,  568,  568,  -20,  270,  -20,  270,  270,  270,  270,
-          270,  270,  270,  270,  270,  270,  270,  270,  270,  270,
-          270,  270,  270,  270,  270,  270,  270,  270,  270,  270,
-          270,  270,  270,  270,  270,  270,  270,  270,  270,  270,
-          270,  270,  270,  270,  270,  270,  270,  270,  270,  568,
-            0,    0,  568,  -20,  568,  -20,  568,  -20,  568,  568,
-          568,  568,  568,  568,  -20,  -20,  -20,  -20,  -20,  -20,
-            0,  521,  521,  521,  521,  -20,  -20,  -20,  -20,  -36,
-          270,  270,  270,  270,  270,  270,  521,  521,  446,  446,
-            0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-          270,  -36,  270,  618,  618,  618,  618,  641,  641,  641,
-          618,  398,  398,  398,  618,    0,    0,    0,    0,    0,
-            0,  618,  398,    0,  270,  270,  270,  270,    0,  270,
-          270,  618,  618,  618,  641,  618,  398,  641,  641,  618,
-          849,  580,  580,  580,  580,  268,  355,    0,  618,  618,
-          641,  641,  641,    0,    0,    0,  849,    0,  644,    0,
-            0,    0,    0,  627,   47,    0,  430,    0,    0,    0,
-            0,    0,    0,  619,  430,  466,  466,    0,  630,  627,
-          627,  627,    0,    0,  619,  619,    0,    0,    0,    0,
-            0,    0,  442,  619,    0,    0,    0,    0,  442,  140,
-            0,    0,  140,    0,  268
+            0,    0,    0,    0,    0,    0,    0,  136,  136,  136,
+          136,   -2,   -2,   -2,   -2,    0,    0,   -2,    0,    0,
+            0,  136,  136,  136,  136,  136,  136,  136,  136,  136,
+          136,  136,  136,  136,  136,  136,  136,  136,  136,  136,
+          136,  136,  136,  136,  136,  136,  136,    0,    0,  136,
+          136,  136,  136,  136,  136,  136,  136,  136,  136,  136,
+          136,  136,  136,  136,  136,  136,  136,  136,  136,  136,
+          136,  136,  136,  136,  136,  136,  136,  136,  136,  136,
+          136,  136,  136,  136,  136,  136,  136,  136,  136,  136,
+          136,  136,  136,  136,  136,  136,  136,  136,  136,  136,
+          136,  136,  136,  136,  136,  136,  136,  136,  136,  136,
+          136,  136,  136,  136,  136,  136,  136,  136,  136,  136,
+          136,  136,  136,  136,  136,  136,  136,  136,  136,  136,
+          136,  136,  136,  136,  136,  136,  136,  136,  136,  136,
+          136,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+          575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+          575,  575,  575,  575,    0,    0,    0,    0,    0,    0,
+            0,    0,    0,    0,    0,    0,  575,  -21,  -21,  -21,
+          -21,  575,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  575,
+          575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+          575,  575,  575,  575,  575,  575,  575,  -21,  575,  575,
+          575,  -21,  101,  -21,  101,  101,  101,  101,  101,  101,
+          101,  101,  101,  101,  101,  101,  101,  101,  101,  101,
+          101,  101,  101,  101,  101,  101,  101,  101,  101,  101,
+          101,  101,  101,  101,  101,  101,  101,  101,  101,  101,
+          101,  101,  101,  101,  101,  101,  101,  575,    0,    0,
+          575,  -21,  575,  -21,  575,  -21,  575,  575,  575,  575,
+          575,  575,  -21,  -21,  -21,  -21,  -21,  -21,    0,  327,
+          327,  327,  327,  -21,  -21,  -21,  -21,  -37,  101,  101,
+          101,  101,  101,  101,  327,  327,  452,  452,    0,    0,
+            0,    0,    0,    0,    0,    0,    0,    0,  101,  -37,
+          101,  623,  623,  623,  623,  647,  647,  647,  623,  210,
+          210,  210,  623,    0,    0,    0,    0,    0,    0,  623,
+          210,    0,  101,  101,  101,  101,    0,  101,  101,  623,
+          623,  623,  647,  623,  210,  647,  647,  623,  685,  583,
+          583,  583,  583,  380,  363,    0,  623,  623,  647,  647,
+          647,    0,    0,    0,  685,    0,  624,    0,    0,    0,
+            0,  628,  230,    0,  528,    0,    0,    0,    0,    0,
+            0,  643,  528,  592,  592,    0,  644,  628,  628,  628,
+            0,    0,  643,  643,    0,    0,    0,    0,    0,    0,
+          566,  643,    0,    0,    0,    0,  566,  517,    0,    0,
+          517,    0,  380
     );
 
     protected $actionDefault = array(
             3,32767,32767,32767,32767,32767,32767,32767,32767,32767,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
-        32767,32767,32767,32767,32767,32767,  531,  531,32767,32767,
-          486,32767,32767,32767,32767,32767,32767,  292,  292,  292,
-        32767,32767,32767,  519,  519,  519,  519,  519,  519,  519,
-          519,  519,  519,  519,32767,32767,32767,32767,32767,  374,
+        32767,32767,32767,32767,32767,  533,  533,  488,32767,32767,
+        32767,32767,32767,32767,32767,32767,32767,  293,  293,  293,
+        32767,32767,32767,  521,  521,  521,  521,  521,  521,  521,
+          521,  521,  521,  521,32767,32767,32767,32767,32767,  376,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
@@ -579,129 +582,129 @@ class Php5 extends \PhpParser\ParserAbstract
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
-        32767,32767,32767,32767,32767,  380,  536,32767,32767,32767,
+        32767,32767,32767,32767,32767,32767,32767,  382,  538,32767,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
-        32767,32767,32767,32767,32767,32767,  355,  356,  358,  359,
-          291,  520,  240,  381,  535,  290,  242,  319,  490,32767,
-        32767,32767,  321,  119,  251,  196,  489,  122,  289,  227,
-          373,  375,  320,  296,  301,  302,  303,  304,  305,  306,
-          307,  308,  309,  310,  311,  312,  295,  446,  352,  351,
-          350,  448,32767,  447,  483,  483,  486,32767,32767,32767,
+        32767,32767,32767,32767,32767,32767,32767,32767,  357,  358,
+          360,  361,  292,  541,  522,  241,  383,  537,  291,  243,
+          321,  492,32767,32767,32767,  323,  120,  252,  197,  491,
+          123,  290,  228,  375,  377,  322,  297,  302,  303,  304,
+          305,  306,  307,  308,  309,  310,  311,  312,  313,  314,
+          296,  448,  354,  353,  352,  450,32767,  449,  485,  485,
+          488,32767,32767,32767,32767,32767,32767,32767,32767,32767,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
-        32767,32767,32767,32767,32767,32767,32767,  317,  474,  473,
-          318,  444,  322,  445,  324,  449,  323,  340,  341,  338,
-          339,  342,  451,  450,  467,  468,  465,  466,  294,  343,
-          344,  345,  346,  469,  470,  471,  472,  275,32767,32767,
-          530,  530,32767,32767,  331,  332,  458,  459,32767,32767,
-        32767,32767,32767,32767,32767,32767,32767,32767,32767,  276,
-        32767,  231,  231,  231,  231,32767,32767,32767,  231,32767,
-        32767,32767,32767,  326,  327,  325,  453,  454,  452,32767,
-          420,32767,32767,32767,32767,32767,  422,32767,32767,32767,
-        32767,32767,32767,32767,32767,32767,32767,32767,  491,32767,
-        32767,32767,32767,32767,  504,  409,32767,32767,32767,  402,
-        32767,  215,  217,  164,  477,32767,32767,32767,32767,32767,
-          509,  336,32767,32767,32767,32767,32767,  545,32767,  504,
-        32767,32767,32767,32767,32767,32767,  349,  328,  329,  330,
-        32767,32767,32767,32767,  508,  502,  461,  462,  463,  464,
-        32767,32767,  455,  456,  457,  460,32767,32767,32767,32767,
+        32767,  319,  476,  475,  320,  446,  324,  447,  326,  451,
+          325,  342,  343,  340,  341,  344,  453,  452,  469,  470,
+          467,  468,  295,  345,  346,  347,  348,  471,  472,  473,
+          474,  276,32767,32767,  532,  532,32767,32767,  333,  334,
+          460,  461,32767,32767,32767,32767,32767,32767,32767,32767,
+        32767,32767,32767,  277,32767,  232,  232,  232,  232,32767,
+        32767,32767,  232,32767,32767,32767,32767,  328,  329,  327,
+          455,  456,  454,32767,  422,32767,32767,32767,32767,32767,
+          424,32767,32767,32767,32767,32767,32767,32767,32767,32767,
+        32767,32767,  493,32767,32767,32767,32767,32767,  506,  411,
+        32767,32767,32767,  404,32767,  216,  218,  165,  479,32767,
+        32767,32767,32767,32767,  511,  338,32767,32767,32767,32767,
+        32767,  548,32767,  506,32767,32767,32767,32767,32767,32767,
+          351,  330,  331,  332,32767,32767,32767,32767,  510,  504,
+          463,  464,  465,  466,32767,32767,  457,  458,  459,  462,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
-        32767,32767,  168,32767,  417,  423,  423,32767,32767,32767,
-        32767,  168,32767,32767,32767,32767,32767,  168,32767,32767,
-        32767,32767,  507,  506,  168,32767,  403,  485,  168,  181,
-        32767,  179,  179,32767,  201,  201,32767,32767,  183,  478,
-          497,32767,  183,  168,32767,  391,  170,  485,32767,32767,
-          233,32767,  233,  391,  168,  233,32767,32767,  233,32767,
-           84,  427,32767,32767,32767,32767,32767,32767,32767,32767,
-        32767,32767,32767,32767,  404,32767,32767,32767,  370,  371,
-          480,  493,32767,  494,32767,  402,32767,  334,  335,  337,
-          314,32767,  316,  360,  361,  362,  363,  364,  365,  366,
-          368,32767,  407,32767,  410,32767,32767,32767,   86,  111,
-          250,32767,  543,   86,  405,32767,32767,  299,  543,32767,
-        32767,32767,32767,  538,32767,32767,  293,32767,32767,32767,
-           86,   86,  246,32767,  166,32767,  528,32767,  544,32767,
-          502,  406,32767,  333,32767,32767,32767,32767,32767,32767,
-        32767,32767,32767,  503,32767,32767,32767,32767,  222,32767,
-          440,32767,   86,32767,32767,  182,32767,32767,  297,  241,
-        32767,32767,  537,32767,32767,32767,32767,32767,32767,32767,
-        32767,32767,  167,32767,32767,32767,  184,32767,32767,  502,
-        32767,32767,32767,32767,32767,32767,32767,  288,32767,32767,
-        32767,32767,32767,32767,32767,  502,32767,32767,  226,32767,
-        32767,32767,32767,32767,32767,32767,32767,32767,   84,   60,
-        32767,  269,32767,32767,32767,32767,32767,32767,32767,32767,
-        32767,32767,32767,  124,  124,    3,  124,  124,  253,    3,
-          253,  124,  253,  253,  124,  124,  124,  124,  124,  124,
-          124,  124,  124,  124,  209,  212,  201,  201,  161,  124,
-          124,  261
+        32767,32767,32767,32767,32767,32767,  169,32767,  419,  425,
+          425,32767,32767,32767,32767,  169,32767,32767,32767,32767,
+        32767,  169,32767,32767,32767,32767,  509,  508,  169,32767,
+          405,  487,  169,  182,32767,  180,  180,32767,  202,  202,
+        32767,32767,  184,  480,  499,32767,  184,  169,32767,  393,
+          171,  487,32767,32767,  234,32767,  234,  393,  169,  234,
+        32767,32767,  234,32767,   85,  429,32767,32767,32767,32767,
+        32767,32767,32767,32767,32767,32767,32767,32767,  406,32767,
+        32767,32767,  372,  373,  482,  495,32767,  496,32767,  404,
+        32767,  336,  337,  339,  316,32767,  318,  362,  363,  364,
+          365,  366,  367,  368,  370,32767,  409,32767,  412,32767,
+        32767,32767,   87,  112,  251,32767,  546,   87,  407,32767,
+        32767,  300,  546,32767,32767,32767,32767,  540,32767,32767,
+          294,32767,32767,32767,   87,   87,  247,32767,  167,32767,
+          530,32767,  547,32767,  504,  408,32767,  335,32767,32767,
+        32767,32767,32767,32767,32767,32767,32767,  505,32767,32767,
+        32767,32767,  223,32767,  442,32767,   87,32767,32767,  183,
+        32767,32767,  298,  242,32767,32767,  539,32767,32767,32767,
+        32767,32767,32767,32767,32767,32767,  168,32767,32767,32767,
+          185,32767,32767,  504,32767,32767,32767,32767,32767,32767,
+        32767,  289,32767,32767,32767,32767,32767,32767,32767,  504,
+        32767,32767,  227,32767,32767,32767,32767,32767,32767,32767,
+        32767,32767,   85,   60,32767,  270,32767,32767,32767,32767,
+        32767,32767,32767,32767,32767,32767,32767,  125,  125,    3,
+          125,  125,  254,    3,  254,  125,  254,  254,  125,  125,
+          125,  125,  125,  125,  125,  125,  125,  125,  210,  213,
+          202,  202,  162,  125,  125,  262
     );
 
     protected $goto = array(
-          162,  162,  136,  136,  141,  144,  136,  137,  138,  139,
-          146,  183,  164,  160,  160,  160,  160,  141,  141,  161,
-          161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
-          156,  157,  158,  159,  180,  135,  181,  497,  498,  361,
-          499,  503,  504,  505,  506,  507,  508,  509,  510,  972,
-          140,  142,  143,  145,  167,  172,  182,  198,  247,  250,
-          252,  254,  256,  257,  258,  259,  260,  261,  269,  270,
-          271,  272,  284,  285,  313,  314,  315,  377,  378,  379,
-          553,  184,  185,  186,  187,  188,  189,  190,  191,  192,
-          193,  194,  195,  196,  147,  148,  149,  163,  150,  165,
-          151,  199,  166,  152,  153,  154,  200,  155,  133,  630,
-          571,  792,  571,  571,  571,  571,  571,  571,  571,  571,
-          571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-          571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-          571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-          571,  571,  571,  571,  571, 1110,  762, 1110, 1110, 1110,
-         1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110,
-         1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110,
-         1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110,
-         1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110,
-          501,  501,  501,  501,  501,  501,  512,  638,  512,  761,
-          501,  501,  501,  501,  501,  501,  501,  501,  501,  501,
-          513,  755,  513,  893,  893, 1201, 1201,  527,  585,  613,
-          857,  857,  857,  857,  170,  852,  858, 1086, 1085,  173,
-          174,  175,  386,  387,  388,  389,  169,  197,  201,  203,
-          251,  253,  255,  262,  263,  264,  265,  266,  267,  273,
-          274,  275,  276,  286,  287,  316,  317,  318,  392,  393,
-          394,  395,  171,  176,  248,  249,  177,  178,  179,  385,
-          615,  546,  546,  578,  542, 1212, 1212,  823,  340,  544,
-          544,  500,  502,  533,  550,  579,  582,  592,  599,  619,
-          863, 1212,  622,  911,  570,  359,  570,  570,  570,  570,
-          570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
-          570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
-          570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
-          570,  570,  570,  570,  570,  570,  570,  570,  570,  555,
-          556,  557,  558,  559,  560,  561,  562,  564,  595,  518,
-          554,  326,  311,  594,  526,  609,  610,  949,  552,  523,
-          523,  523,  577,  523,  588,  591,  636,  526,  526,  547,
-          436,  436,  436,  436,  436,  436,  541,  523, 1205,  950,
-          436,  436,  436,  436,  436,  436,  436,  436,  436,  436,
-         1075,  362, 1075,  900,  900,  900,  900,  596,  343,  402,
-          900,  514, 1159,  514,  900, 1179,  603, 1179,    3,    4,
-          367,  367,  367,  614, 1075, 1075, 1075, 1075,  785, 1075,
-         1075,  367,  367, 1178, 1198, 1178, 1171,  367,  374,  467,
-         1195, 1195, 1195,  523,  523,  367, 1226,  540,  572,  523,
-          523, 1019, 1068,  523,  897,  785,  785,  906,  346,  917,
-          520,  917,  396,  368,  781,  372,  915, 1177,  970,  779,
-          524,  539,  669,  665,  566,  400, 1061,  920,  600,  760,
-          551,  890,  620,  621,  886,  625,  626,  633,  635,  640,
-          642,  789,  879,  861,  859,  861,  664, 1091,  515,  888,
-          883, 1193, 1193, 1193,  867, 1029,   19,   15,  355,  341,
-          342,  958,  778,  778,  356, 1066,  786,  786,  786,  788,
-          452,  531,  777, 1156,  465,  543,  565,  583,    0,  520,
-         1071, 1072,    0,    0, 1068,    0,    0,   23, 1211, 1211,
-          456,    0,  611,  369,  369,  369,    0, 1069, 1170, 1069,
-            0,   13,  538,    0, 1211,    0, 1070,  449,  451,  942,
-          641,    0, 1214,    0, 1111,  623,  940,    0,    0,    0,
-          369,    0,  618,    0,  384,    0,    0, 1067,  627,    0,
-            0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+          165,  138,  138,  138,  165,  143,  146,  139,  140,  141,
+          148,  186,  167,  162,  162,  162,  162,  143,  143,  164,
+          164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+          158,  159,  160,  161,  183,  137,  184,  501,  502,  365,
+          503,  507,  508,  509,  510,  511,  512,  513,  514,  977,
+          142,  163,  144,  145,  147,  170,  175,  185,  202,  251,
+          254,  256,  258,  260,  261,  262,  263,  264,  265,  273,
+          274,  275,  276,  288,  289,  317,  318,  319,  381,  382,
+          383,  557,  187,  188,  189,  190,  191,  192,  193,  194,
+          195,  196,  197,  198,  199,  200,  149,  150,  151,  166,
+          152,  168,  153,  203,  169,  154,  155,  156,  204,  157,
+          135,  634,  575,  760,  575,  575,  575,  575,  575,  575,
+          575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+          575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+          575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
+          575,  575,  575,  575,  575,  575,  575, 1116,  766, 1116,
+         1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116,
+         1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116,
+         1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116,
+         1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116,
+         1116, 1116,  505,  505,  505,  505,  505,  505,  516,  642,
+          516,  767,  505,  505,  505,  505,  505,  505,  505,  505,
+          505,  505,  517,  797,  517,  898,  898, 1207, 1207,  531,
+          589,  617,  862,  862,  862,  862,  173,  857,  863, 1092,
+         1091,  176,  177,  178,  390,  391,  392,  393,  172,  201,
+          205,  207,  255,  257,  259,  266,  267,  268,  269,  270,
+          271,  277,  278,  279,  280,  290,  291,  320,  321,  322,
+          396,  397,  398,  399,  174,  179,  252,  253,  180,  181,
+          182,  389,  619,  550,  550,  582,  546,  598,  765,  613,
+          614,  548,  548,  504,  506,  537,  554,  583,  586,  596,
+          603,  884,  866,  864,  866,  668,  828,  519,  893,  888,
+          574,  344,  574,  574,  574,  574,  574,  574,  574,  574,
+          574,  574,  574,  574,  574,  574,  574,  574,  574,  574,
+          574,  574,  574,  574,  574,  574,  574,  574,  574,  574,
+          574,  574,  574,  574,  574,  574,  574,  574,  574,  574,
+          574,  574,  574,  574,  574,  559,  560,  561,  562,  563,
+          564,  565,  566,  568,  599,  522,  558,  330,  315, 1219,
+         1219,  530,  592,  595,  640,  527,  527,  527,  868,  527,
+          600,  347,  406,  530,  530, 1219,  440,  440,  440,  440,
+          440,  440,  545,  527,  551,  954,  440,  440,  440,  440,
+          440,  440,  440,  440,  440,  440, 1081, 1211, 1081,  905,
+          905,  905,  905,    3,    4,  623,  905,  955,  626,  556,
+          905,  363, 1185,  581, 1185,  916,  371,  371,  371,  366,
+         1081, 1081, 1081, 1081,  790, 1081, 1081,  371,  371, 1184,
+          607, 1184, 1177,  371, 1165,  471, 1201, 1201, 1201,  527,
+          527,  371, 1233,  544,  576,  527,  527,  618, 1074,  527,
+         1204,  790,  790,  378, 1025,  922,  524,  922,  518,  902,
+          518,  911,  350, 1183,  975,  400,  528,  543,  786,  669,
+          570,  372,  376,  920,  604,  784,  555,  895,  624,  625,
+          891,  629,  630,  637,  639,  644,  646,  453,  455,  947,
+          645,  673, 1097,  404, 1117,  627,  945, 1199, 1199, 1199,
+         1035,   19,   15,  359, 1218, 1218, 1067,  872,  783,  783,
+          794,  963,  791,  791,  791,  793, 1072,  925,  782,  456,
+         1218,  569,  345,  346,  360,  524, 1077, 1078, 1221, 1162,
+         1074,  535,   23,  587,  469,  547,    0,  615,  373,  373,
+          373,    0,    0, 1075, 1176, 1075,    0,    0,  542,    0,
+          460,    0, 1076,    0,    0,    0,    0,    0,    0,    0,
+            0,   13,    0,    0,    0,  373,    0,    0,  622,  388,
+            0,    0,    0, 1073,  631,    0,    0,    0,    0,    0,
             0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-            0,  517,  537,    0,    0,    0,    0,    0,    0,    0,
-            0,    0,    0,  517,    0,  537,    0,    0,    0,    0,
-            0,  532,  516,    0,  521,  439,    0,  441,    0,    0,
-            0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-            0,    0,  784, 1219
+            0,    0,    0,    0,    0,    0,    0,  521,  541,    0,
+            0,    0,    0,    0,    0,    0,    0,    0,    0,  521,
+            0,  541,    0,    0,    0,    0,    0,  536,  520,    0,
+          525,  443,    0,  445,    0,    0,    0,    0,    0,    0,
+            0,    0,    0,    0,    0,    0,    0,    0,  789, 1226
     );
 
     protected $gotoCheck = array(
@@ -715,97 +718,97 @@ class Php5 extends \PhpParser\ParserAbstract
            42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
            42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
            42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
-           42,   42,   42,   42,   42,   42,   42,   42,   42,   56,
-           66,   28,   66,   66,   66,   66,   66,   66,   66,   66,
+           42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
+           42,   56,   66,    5,   66,   66,   66,   66,   66,   66,
            66,   66,   66,   66,   66,   66,   66,   66,   66,   66,
            66,   66,   66,   66,   66,   66,   66,   66,   66,   66,
            66,   66,   66,   66,   66,   66,   66,   66,   66,   66,
-           66,   66,   66,   66,   66,  124,   15,  124,  124,  124,
+           66,   66,   66,   66,   66,   66,   66,  124,   14,  124,
           124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
           124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
           124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
           124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-          115,  115,  115,  115,  115,  115,   66,    8,   66,   14,
-          115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
-          115,    5,  115,   74,   74,   74,   74,   99,   39,   39,
-           66,   66,   66,   66,   26,   66,   66,  122,  122,   26,
+          124,  124,  115,  115,  115,  115,  115,  115,   66,    8,
+           66,   15,  115,  115,  115,  115,  115,  115,  115,  115,
+          115,  115,  115,   28,  115,   74,   74,   74,   74,   99,
+           39,   39,   66,   66,   66,   66,   26,   66,   66,  122,
+          122,   26,   26,   26,   26,   26,   26,   26,   26,   26,
            26,   26,   26,   26,   26,   26,   26,   26,   26,   26,
            26,   26,   26,   26,   26,   26,   26,   26,   26,   26,
            26,   26,   26,   26,   26,   26,   26,   26,   26,   26,
-           26,   26,   26,   26,   26,   26,   26,   26,   26,   50,
-           50,   50,   50,   50,   50,  140,  140,   49,   69,   50,
-           50,   50,   50,   50,   50,   50,   50,   50,   50,   60,
-           32,  140,   60,   81,   56,   60,   56,   56,   56,   56,
+           26,   50,   50,   50,   50,   50,   50,   64,   13,   64,
+           64,   50,   50,   50,   50,   50,   50,   50,   50,   50,
+           50,   13,   13,   13,   13,   13,   49,   13,   13,   13,
+           56,   69,   56,   56,   56,   56,   56,   56,   56,   56,
            56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
            56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
            56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
-           56,   56,   56,   56,   56,   56,   56,   56,   56,  108,
-          108,  108,  108,  108,  108,  108,  108,  108,  108,   10,
-           46,  123,  123,   64,   46,   64,   64,   95,    2,   10,
-           10,   10,    2,   10,   59,   59,   59,   46,   46,  107,
-           56,   56,   56,   56,   56,   56,   10,   10,  138,   95,
-           56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
-           56,   45,   56,   56,   56,   56,   56,   67,   67,   67,
-           56,  120,  129,  120,   56,  116,  125,  116,   29,   29,
-           12,   12,   12,   48,   56,   56,   56,   56,   22,   56,
-           56,   12,   12,  117,  136,  117,   79,   12,   47,   56,
-          117,  117,  117,   10,   10,   12,   12,   10,   10,   10,
-           10,  100,   79,   10,   76,   22,   22,   78,   17,   12,
-           12,   12,   21,   11,   24,   16,   82,  117,   99,   23,
-           10,   31,   71,   31,   31,   20,  111,   83,   31,   13,
-           10,   31,   31,   31,   31,   31,   31,   31,   31,   31,
-           31,   25,   13,   13,   13,   13,   13,   33,   13,   13,
-           13,    8,    8,    8,   68,   33,   33,   33,   33,   69,
-           69,   97,   22,   22,   57,  113,   22,   22,   22,   22,
-           62,   57,   22,  128,  106,   57,   33,   63,   -1,   12,
-           79,   79,   -1,   -1,   79,   -1,   -1,   33,  139,  139,
-           57,   -1,   33,  121,  121,  121,   -1,   79,   79,   79,
-           -1,   57,    8,   -1,  139,   -1,   79,    7,    7,    7,
-            7,   -1,  139,   -1,    7,    7,    7,   -1,   -1,   -1,
-          121,   -1,   12,   -1,  121,   -1,   -1,   12,   12,   -1,
-           -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+           56,   56,   56,   56,   56,  108,  108,  108,  108,  108,
+          108,  108,  108,  108,  108,   10,   46,  123,  123,  140,
+          140,   46,   59,   59,   59,   10,   10,   10,   32,   10,
+           67,   67,   67,   46,   46,  140,   56,   56,   56,   56,
+           56,   56,   10,   10,  107,   95,   56,   56,   56,   56,
+           56,   56,   56,   56,   56,   56,   56,  138,   56,   56,
+           56,   56,   56,   29,   29,   60,   56,   95,   60,    2,
+           56,   60,  116,    2,  116,   81,   12,   12,   12,   45,
+           56,   56,   56,   56,   22,   56,   56,   12,   12,  117,
+          125,  117,   79,   12,  129,   56,  117,  117,  117,   10,
+           10,   12,   12,   10,   10,   10,   10,   48,   79,   10,
+          136,   22,   22,   47,  100,   12,   12,   12,  120,   76,
+          120,   78,   17,  117,   99,   21,   10,   31,   24,   31,
+           31,   11,   16,   82,   31,   23,   10,   31,   31,   31,
+           31,   31,   31,   31,   31,   31,   31,    7,    7,    7,
+            7,   71,   33,   20,    7,    7,    7,    8,    8,    8,
+           33,   33,   33,   33,  139,  139,  111,   68,   22,   22,
+           25,   97,   22,   22,   22,   22,  113,   83,   22,   62,
+          139,   33,   69,   69,   57,   12,   79,   79,  139,  128,
+           79,   57,   33,   63,  106,   57,   -1,   33,  121,  121,
+          121,   -1,   -1,   79,   79,   79,   -1,   -1,    8,   -1,
+           57,   -1,   79,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+           -1,   57,   -1,   -1,   -1,  121,   -1,   -1,   12,  121,
+           -1,   -1,   -1,   12,   12,   -1,   -1,   -1,   -1,   -1,
            -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-           -1,    8,    8,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-           -1,   -1,   -1,    8,   -1,    8,   -1,   -1,   -1,   -1,
-           -1,   99,    8,   -1,    8,    8,   -1,    8,   -1,   -1,
-           -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-           -1,   -1,    8,    8
+           -1,   -1,   -1,   -1,   -1,   -1,   -1,    8,    8,   -1,
+           -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,    8,
+           -1,    8,   -1,   -1,   -1,   -1,   -1,   99,    8,   -1,
+            8,    8,   -1,    8,   -1,   -1,   -1,   -1,   -1,   -1,
+           -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,    8,    8
     );
 
     protected $gotoBase = array(
-            0,    0, -277,    0,    0,  210,    0,  552,  196,    0,
-           40,  130,  111,  477,  207,  154,  119,  139,    0,    0,
-           71,  132,  109,  122,  133,   74,   32,    0,  101, -251,
-            0, -173,  280,   83,    0,    0,    0,    0,    0,  190,
-            0,    0,  -24,    0,    0,  361,  336,  149,  144,  269,
-            1,    0,    0,    0,    0,    0,  102,   87,    0,   72,
-         -163,    0,   78,   75, -287,    0,  -92,   84,   85, -157,
-            0,  114,    0,    0,  -55,    0,  146,    0,  145,   98,
-            0,  278,  116,   59,    0,    0,    0,    0,    0,    0,
-            0,    0,    0,    0,    0,   90,    0,   91,    0,  186,
-          151,    0,    0,    0,    0,    0,   61,  352,  305,    0,
-            0,   60,    0,   94,    0,  -78,  117,  135,    0,    0,
-          113,  238,  -69,   41,  -47,  211,    0,    0,   66,  206,
-            0,    0,    0,    0,    0,    0,  153,    0,  358,  228,
-          -25,    0,    0
+            0,    0, -230,    0,    0,  102,    0,  492,  198,    0,
+           42,  144,  113,  286,  156,  209,  132,  149,    0,    0,
+           95,  141,  111,  134,  143,   99,   30,    0,  213, -260,
+            0, -171,  358,   84,    0,    0,    0,    0,    0,  192,
+            0,    0,  -24,    0,    0,  389,  342,  170,  174,  288,
+           -1,    0,    0,    0,    0,    0,  104,  103,    0,   66,
+          -51,    0,   83,   87, -367,    0,  -94,   53,   94, -138,
+            0,  139,    0,    0,  -57,    0,  157,    0,  155,  100,
+            0,  397,  129,  105,    0,    0,    0,    0,    0,    0,
+            0,    0,    0,    0,    0,  114,    0,   97,    0,  188,
+          160,    0,    0,    0,    0,    0,   77,  368,  311,    0,
+            0,   96,    0,  101,    0,  -80,  120,  137,    0,    0,
+          166,  239,  -71,   43,  -49,  231,    0,    0,   78,  234,
+            0,    0,    0,    0,    0,    0,  175,    0,  380,  200,
+           55,    0,    0
     );
 
     protected $gotoDefault = array(
-        -32768,  469,  673,    2,  674,  745,  753,  606,  483,  639,
-          484,  519, 1189,  798,  799,  800,  364,  410,  485,  363,
-          397,  390,  787,  780,  782,  790,  168,  398,  793,    1,
-          795,  525,  831, 1020,  351,  803,  352,  598,  805,  535,
-          807,  808,  134,  365,  366,  536,  486,  373,  586,  822,
-          268,  370,  824,  353,  825,  834,  354,  466,  461,  567,
-          617,  431,  448,  580,  574,  545, 1083,  575,  866,  339,
-          874,  670,  882,  885,  487,  568,  896,  453,  904, 1096,
-          380,  910,  916,  921,  277,  924,  411,  399,  593,  929,
-          930,    7,  934,  631,  632,    8,  299,  957,  607,  971,
-          416, 1039, 1041,  488,  489,  529,  460,  511,  534,  490,
-         1062,  442,  401, 1065,  491,  492,  432,  433, 1080,  345,
-         1164,  344,  450,  310, 1151,  589, 1115,  457, 1204, 1160,
-          338,  493,  494,  360, 1183,  375, 1199,  437, 1206, 1213,
-          334,  549,  576
+        -32768,  473,  677,    2,  678,  750,  758,  610,  487,  643,
+          488,  523, 1195,  803,  804,  805,  368,  414,  489,  367,
+          401,  394,  792,  785,  787,  795,  171,  402,  798,    1,
+          800,  529,  836, 1026,  355,  808,  356,  602,  810,  539,
+          812,  813,  136,  369,  370,  540,  490,  377,  590,  827,
+          272,  374,  829,  357,  830,  839,  358,  470,  465,  571,
+          621,  435,  452,  584,  578,  549, 1089,  579,  871,  343,
+          879,  674,  887,  890,  491,  572,  901,  457,  909, 1102,
+          384,  915,  921,  926,  281,  929,  415,  403,  597,  934,
+          935,    7,  939,  635,  636,    8,  303,  962,  611,  976,
+          420, 1045, 1047,  492,  493,  533,  464,  515,  538,  494,
+         1068,  446,  405, 1071,  495,  496,  436,  437, 1086,  349,
+         1170,  348,  454,  314, 1157,  593, 1121,  461, 1210, 1166,
+          342,  497,  498,  364, 1189,  379, 1205,  441, 1212, 1220,
+          338,  553,  580
     );
 
     protected $ruleToNonTerminal = array(
@@ -816,29 +819,30 @@ class Php5 extends \PhpParser\ParserAbstract
             5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
             5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
             5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
-            5,    5,    5,    6,    6,    6,    6,    6,    6,    6,
-            7,    7,    8,    9,   10,   10,   11,   12,    4,    4,
-            4,    4,    4,    4,    4,    4,    4,    4,    4,   17,
-           17,   18,   18,   18,   18,   20,   20,   16,   16,   21,
-           21,   22,   22,   23,   23,   24,   24,   19,   19,   25,
-           27,   27,   28,   29,   29,   31,   30,   30,   30,   30,
+            5,    5,    5,    5,    6,    6,    6,    6,    6,    6,
+            6,    7,    7,    8,    9,   10,   10,   11,   12,    4,
+            4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
+           17,   17,   18,   18,   18,   18,   20,   20,   16,   16,
+           21,   21,   22,   22,   23,   23,   24,   24,   19,   19,
+           25,   27,   27,   28,   29,   29,   31,   30,   30,   30,
+           30,   32,   32,   32,   32,   32,   32,   32,   32,   32,
            32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
            32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
-           32,   32,   32,   32,   32,   32,   32,   32,   32,   13,
-           13,   53,   53,   55,   54,   54,   47,   47,   57,   57,
-           58,   58,   14,   15,   15,   15,   61,   61,   61,   62,
-           62,   65,   65,   63,   63,   67,   67,   40,   40,   49,
-           49,   52,   52,   52,   51,   51,   68,   41,   41,   41,
-           41,   69,   69,   70,   70,   71,   71,   38,   38,   34,
-           34,   72,   36,   36,   73,   35,   35,   37,   37,   48,
-           48,   48,   59,   59,   75,   75,   76,   76,   78,   78,
-           78,   77,   77,   60,   60,   79,   79,   79,   80,   80,
-           81,   81,   81,   43,   43,   82,   82,   82,   44,   44,
-           83,   83,   84,   84,   64,   85,   85,   85,   85,   90,
-           90,   91,   91,   92,   92,   92,   92,   92,   93,   94,
-           94,   89,   89,   86,   86,   88,   88,   96,   96,   95,
-           95,   95,   95,   95,   95,   87,   87,   98,   97,   97,
-           45,   45,   39,   39,   42,   42,   42,   42,   42,   42,
+           13,   13,   53,   53,   55,   54,   54,   47,   47,   57,
+           57,   58,   58,   14,   15,   15,   15,   61,   61,   61,
+           62,   62,   65,   65,   63,   63,   67,   67,   40,   40,
+           49,   49,   52,   52,   52,   51,   51,   68,   41,   41,
+           41,   41,   69,   69,   70,   70,   71,   71,   38,   38,
+           34,   34,   72,   36,   36,   73,   35,   35,   37,   37,
+           48,   48,   48,   59,   59,   75,   75,   76,   76,   78,
+           78,   78,   77,   77,   60,   60,   79,   79,   79,   80,
+           80,   81,   81,   81,   43,   43,   82,   82,   82,   44,
+           44,   83,   83,   84,   84,   64,   85,   85,   85,   85,
+           90,   90,   91,   91,   92,   92,   92,   92,   92,   93,
+           94,   94,   89,   89,   86,   86,   88,   88,   96,   96,
+           95,   95,   95,   95,   95,   95,   87,   87,   98,   97,
+           97,   45,   45,   39,   39,   42,   42,   42,   42,   42,
+           42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
            42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
            42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
            42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
@@ -846,25 +850,24 @@ class Php5 extends \PhpParser\ParserAbstract
            42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
            42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
            42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
-           42,   42,   42,   42,   42,   42,   42,   42,   33,   33,
-           46,   46,  103,  103,  104,  104,  104,  104,  110,   99,
-           99,  106,  106,  112,  112,  113,  114,  114,  114,  114,
-          114,  114,   66,   66,   56,   56,   56,  100,  100,  118,
-          118,  115,  115,  119,  119,  119,  119,  101,  101,  101,
-          105,  105,  105,  111,  111,  124,  124,  124,  124,  124,
-          124,  124,  124,  124,  124,  124,  124,  124,   26,   26,
-           26,   26,   26,   26,  126,  126,  126,  126,  126,  126,
+           33,   33,   46,   46,  103,  103,  104,  104,  104,  104,
+          110,   99,   99,  106,  106,  112,  112,  113,  114,  114,
+          114,  114,  114,  114,   66,   66,   56,   56,   56,  100,
+          100,  118,  118,  115,  115,  119,  119,  119,  119,  101,
+          101,  101,  105,  105,  105,  111,  111,  124,  124,  124,
+          124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
+           26,   26,   26,   26,   26,   26,  126,  126,  126,  126,
           126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
           126,  126,  126,  126,  126,  126,  126,  126,  126,  126,
-          126,  126,  126,  126,  126,  126,  126,  109,  109,  102,
-          102,  102,  102,  125,  125,  128,  128,  127,  127,  129,
-          129,   50,   50,   50,   50,  131,  131,  130,  130,  130,
-          130,  130,  132,  132,  117,  117,  120,  120,  116,  116,
-          134,  133,  133,  133,  133,  121,  121,  121,  121,  108,
-          108,  122,  122,  122,  122,   74,  135,  135,  136,  136,
-          136,  107,  107,  137,  137,  138,  138,  138,  138,  123,
-          123,  123,  123,  140,  141,  139,  139,  139,  139,  139,
-          139,  139,  142,  142,  142
+          126,  126,  126,  126,  126,  126,  126,  126,  126,  109,
+          109,  102,  102,  102,  102,  125,  125,  128,  128,  127,
+          127,  129,  129,   50,   50,   50,   50,  131,  131,  130,
+          130,  130,  130,  130,  132,  132,  117,  117,  120,  120,
+          116,  116,  134,  133,  133,  133,  133,  121,  121,  121,
+          121,  108,  108,  122,  122,  122,  122,   74,  135,  135,
+          136,  136,  136,  107,  107,  137,  137,  138,  138,  138,
+          138,  138,  123,  123,  123,  123,  140,  141,  139,  139,
+          139,  139,  139,  139,  139,  142,  142,  142
     );
 
     protected $ruleToLength = array(
@@ -876,54 +879,54 @@ class Php5 extends \PhpParser\ParserAbstract
             1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
             1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
             1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-            1,    1,    1,    1,    1,    3,    1,    1,    1,    1,
-            1,    1,    3,    5,    4,    3,    4,    2,    3,    1,
-            1,    7,    8,    6,    7,    3,    1,    3,    1,    3,
-            1,    1,    3,    1,    2,    1,    2,    3,    1,    3,
-            3,    1,    3,    2,    0,    1,    1,    1,    1,    1,
-            3,    5,    8,    3,    5,    9,    3,    2,    3,    2,
-            3,    2,    3,    3,    3,    3,    1,    2,    2,    5,
-            7,    9,    5,    6,    3,    3,    2,    2,    1,    1,
-            1,    0,    2,    8,    0,    4,    1,    3,    0,    1,
-            0,    1,   10,    7,    6,    5,    1,    2,    2,    0,
-            2,    0,    2,    0,    2,    1,    3,    1,    4,    1,
-            4,    1,    1,    4,    1,    3,    3,    3,    4,    4,
-            5,    0,    2,    4,    3,    1,    1,    1,    4,    0,
-            2,    3,    0,    2,    4,    0,    2,    0,    3,    1,
-            2,    1,    1,    0,    1,    3,    4,    6,    1,    1,
-            1,    0,    1,    0,    2,    2,    3,    3,    1,    3,
-            1,    2,    2,    3,    1,    1,    2,    4,    3,    1,
-            1,    3,    2,    0,    1,    3,    3,    9,    3,    1,
-            3,    0,    2,    4,    5,    4,    4,    4,    3,    1,
-            1,    1,    3,    1,    1,    0,    1,    1,    2,    1,
-            1,    1,    1,    1,    1,    1,    3,    1,    1,    3,
-            3,    1,    0,    1,    1,    3,    3,    4,    4,    1,
-            2,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-            3,    3,    3,    2,    2,    2,    2,    3,    3,    3,
+            1,    1,    1,    1,    1,    1,    3,    1,    1,    1,
+            1,    1,    1,    3,    5,    4,    3,    4,    2,    3,
+            1,    1,    7,    8,    6,    7,    3,    1,    3,    1,
+            3,    1,    1,    3,    1,    2,    1,    2,    3,    1,
+            3,    3,    1,    3,    2,    0,    1,    1,    1,    1,
+            1,    3,    5,    8,    3,    5,    9,    3,    2,    3,
+            2,    3,    2,    3,    3,    3,    3,    1,    2,    2,
+            5,    7,    9,    5,    6,    3,    3,    2,    2,    1,
+            1,    1,    0,    2,    8,    0,    4,    1,    3,    0,
+            1,    0,    1,   10,    7,    6,    5,    1,    2,    2,
+            0,    2,    0,    2,    0,    2,    1,    3,    1,    4,
+            1,    4,    1,    1,    4,    1,    3,    3,    3,    4,
+            4,    5,    0,    2,    4,    3,    1,    1,    1,    4,
+            0,    2,    3,    0,    2,    4,    0,    2,    0,    3,
+            1,    2,    1,    1,    0,    1,    3,    4,    6,    1,
+            1,    1,    0,    1,    0,    2,    2,    3,    3,    1,
+            3,    1,    2,    2,    3,    1,    1,    2,    4,    3,
+            1,    1,    3,    2,    0,    1,    3,    3,    9,    3,
+            1,    3,    0,    2,    4,    5,    4,    4,    4,    3,
+            1,    1,    1,    3,    1,    1,    0,    1,    1,    2,
+            1,    1,    1,    1,    1,    1,    1,    3,    1,    1,
+            3,    3,    1,    0,    1,    1,    3,    3,    4,    4,
+            1,    2,    3,    3,    3,    3,    3,    3,    3,    3,
+            3,    3,    3,    3,    3,    2,    2,    2,    2,    3,
             3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-            3,    3,    3,    3,    2,    2,    2,    2,    3,    3,
-            3,    3,    3,    3,    3,    3,    3,    3,    1,    3,
-            5,    4,    3,    4,    4,    2,    2,    2,    2,    2,
-            2,    2,    2,    2,    2,    2,    2,    2,    2,    1,
-            1,    1,    3,    2,    1,    2,   10,   11,    3,    3,
-            2,    4,    4,    3,    4,    4,    4,    4,    7,    3,
-            2,    0,    4,    1,    3,    2,    2,    4,    6,    2,
-            2,    4,    1,    1,    1,    2,    3,    1,    1,    1,
-            1,    1,    1,    3,    3,    4,    4,    0,    2,    1,
-            0,    1,    1,    0,    1,    1,    1,    1,    1,    1,
-            1,    1,    1,    1,    1,    1,    3,    2,    1,    3,
-            1,    4,    3,    1,    3,    3,    3,    3,    3,    3,
+            3,    3,    3,    3,    3,    3,    2,    2,    2,    2,
             3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-            3,    2,    2,    2,    2,    3,    3,    3,    3,    3,
-            3,    3,    3,    5,    4,    4,    3,    1,    3,    1,
-            1,    3,    3,    0,    2,    0,    1,    3,    1,    3,
-            1,    1,    1,    1,    1,    6,    4,    3,    4,    2,
-            4,    4,    1,    3,    1,    2,    1,    1,    4,    1,
-            1,    3,    6,    4,    4,    4,    4,    1,    4,    0,
-            1,    1,    3,    1,    1,    4,    3,    1,    1,    1,
-            0,    0,    2,    3,    1,    3,    1,    4,    2,    2,
-            2,    1,    2,    1,    1,    1,    4,    3,    3,    3,
-            6,    3,    1,    1,    1
+            1,    3,    5,    4,    3,    4,    4,    2,    2,    2,
+            2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
+            2,    1,    1,    1,    3,    2,    1,    2,   10,   11,
+            3,    3,    2,    4,    4,    3,    4,    4,    4,    4,
+            7,    3,    2,    0,    4,    1,    3,    2,    2,    4,
+            6,    2,    2,    4,    1,    1,    1,    2,    3,    1,
+            1,    1,    1,    1,    1,    3,    3,    4,    4,    0,
+            2,    1,    0,    1,    1,    0,    1,    1,    1,    1,
+            1,    1,    1,    1,    1,    1,    1,    1,    3,    2,
+            1,    3,    1,    4,    3,    1,    3,    3,    3,    3,
+            3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+            3,    3,    3,    2,    2,    2,    2,    3,    3,    3,
+            3,    3,    3,    3,    3,    5,    4,    4,    3,    1,
+            3,    1,    1,    3,    3,    0,    2,    0,    1,    3,
+            1,    3,    1,    1,    1,    1,    1,    6,    4,    3,
+            4,    2,    4,    4,    1,    3,    1,    2,    1,    1,
+            4,    1,    1,    3,    6,    4,    4,    4,    4,    1,
+            4,    0,    1,    1,    3,    1,    1,    4,    3,    1,
+            1,    1,    0,    0,    2,    3,    1,    3,    1,    4,
+            2,    2,    2,    2,    1,    2,    1,    1,    1,    4,
+            3,    3,    3,    6,    3,    1,    1,    1
     );
 
     protected function initReduceCallbacks() {
@@ -941,7 +944,7 @@ protected function initReduceCallbacks() {
                  $this->semValue = array();
             },
             4 => function ($stackPos) {
-                 $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($startAttributes + $this->endAttributes); } else { $nop = null; };
+                 $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($this->createZeroLengthAttributes($startAttributes)); } else { $nop = null; };
             if ($nop !== null) { $this->semStack[$stackPos-(1-1)][] = $nop; } $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             5 => function ($stackPos) {
@@ -1170,7 +1173,7 @@ protected function initReduceCallbacks() {
                 $this->semValue = $this->semStack[$stackPos];
             },
             80 => function ($stackPos) {
-                 $this->semValue = new Node\Identifier($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                $this->semValue = $this->semStack[$stackPos];
             },
             81 => function ($stackPos) {
                  $this->semValue = new Node\Identifier($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
@@ -1182,19 +1185,19 @@ protected function initReduceCallbacks() {
                  $this->semValue = new Node\Identifier($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             84 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semValue = new Node\Identifier($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             85 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             86 => function ($stackPos) {
-                 $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             87 => function ($stackPos) {
-                 $this->semValue = new Expr\Variable(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             88 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Expr\Variable(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             89 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
@@ -1203,119 +1206,119 @@ protected function initReduceCallbacks() {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             91 => function ($stackPos) {
-                 $this->semValue = new Stmt\HaltCompiler($this->lexer->handleHaltCompiler(), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             92 => function ($stackPos) {
+                 $this->semValue = new Stmt\HaltCompiler($this->lexer->handleHaltCompiler(), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+            },
+            93 => function ($stackPos) {
                  $this->semValue = new Stmt\Namespace_($this->semStack[$stackPos-(3-2)], null, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             $this->semValue->setAttribute('kind', Stmt\Namespace_::KIND_SEMICOLON);
             $this->checkNamespace($this->semValue);
             },
-            93 => function ($stackPos) {
+            94 => function ($stackPos) {
                  $this->semValue = new Stmt\Namespace_($this->semStack[$stackPos-(5-2)], $this->semStack[$stackPos-(5-4)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
             $this->semValue->setAttribute('kind', Stmt\Namespace_::KIND_BRACED);
             $this->checkNamespace($this->semValue);
             },
-            94 => function ($stackPos) {
+            95 => function ($stackPos) {
                  $this->semValue = new Stmt\Namespace_(null, $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             $this->semValue->setAttribute('kind', Stmt\Namespace_::KIND_BRACED);
             $this->checkNamespace($this->semValue);
             },
-            95 => function ($stackPos) {
-                 $this->semValue = new Stmt\Use_($this->semStack[$stackPos-(3-2)], Stmt\Use_::TYPE_NORMAL, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
-            },
             96 => function ($stackPos) {
-                 $this->semValue = new Stmt\Use_($this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-2)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\Use_($this->semStack[$stackPos-(3-2)], Stmt\Use_::TYPE_NORMAL, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             97 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = new Stmt\Use_($this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-2)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             98 => function ($stackPos) {
-                 $this->semValue = new Stmt\Const_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             99 => function ($stackPos) {
-                 $this->semValue = Stmt\Use_::TYPE_FUNCTION;
+                 $this->semValue = new Stmt\Const_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             100 => function ($stackPos) {
-                 $this->semValue = Stmt\Use_::TYPE_CONSTANT;
+                 $this->semValue = Stmt\Use_::TYPE_FUNCTION;
             },
             101 => function ($stackPos) {
-                 $this->semValue = new Stmt\GroupUse(new Name($this->semStack[$stackPos-(7-3)], $this->startAttributeStack[$stackPos-(7-3)] + $this->endAttributeStack[$stackPos-(7-3)]), $this->semStack[$stackPos-(7-6)], $this->semStack[$stackPos-(7-2)], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
+                 $this->semValue = Stmt\Use_::TYPE_CONSTANT;
             },
             102 => function ($stackPos) {
-                 $this->semValue = new Stmt\GroupUse(new Name($this->semStack[$stackPos-(8-4)], $this->startAttributeStack[$stackPos-(8-4)] + $this->endAttributeStack[$stackPos-(8-4)]), $this->semStack[$stackPos-(8-7)], $this->semStack[$stackPos-(8-2)], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\GroupUse(new Name($this->semStack[$stackPos-(7-3)], $this->startAttributeStack[$stackPos-(7-3)] + $this->endAttributeStack[$stackPos-(7-3)]), $this->semStack[$stackPos-(7-6)], $this->semStack[$stackPos-(7-2)], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
             },
             103 => function ($stackPos) {
-                 $this->semValue = new Stmt\GroupUse(new Name($this->semStack[$stackPos-(6-2)], $this->startAttributeStack[$stackPos-(6-2)] + $this->endAttributeStack[$stackPos-(6-2)]), $this->semStack[$stackPos-(6-5)], Stmt\Use_::TYPE_UNKNOWN, $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\GroupUse(new Name($this->semStack[$stackPos-(8-4)], $this->startAttributeStack[$stackPos-(8-4)] + $this->endAttributeStack[$stackPos-(8-4)]), $this->semStack[$stackPos-(8-7)], $this->semStack[$stackPos-(8-2)], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes);
             },
             104 => function ($stackPos) {
-                 $this->semValue = new Stmt\GroupUse(new Name($this->semStack[$stackPos-(7-3)], $this->startAttributeStack[$stackPos-(7-3)] + $this->endAttributeStack[$stackPos-(7-3)]), $this->semStack[$stackPos-(7-6)], Stmt\Use_::TYPE_UNKNOWN, $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\GroupUse(new Name($this->semStack[$stackPos-(6-2)], $this->startAttributeStack[$stackPos-(6-2)] + $this->endAttributeStack[$stackPos-(6-2)]), $this->semStack[$stackPos-(6-5)], Stmt\Use_::TYPE_UNKNOWN, $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
             },
             105 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 $this->semValue = new Stmt\GroupUse(new Name($this->semStack[$stackPos-(7-3)], $this->startAttributeStack[$stackPos-(7-3)] + $this->endAttributeStack[$stackPos-(7-3)]), $this->semStack[$stackPos-(7-6)], Stmt\Use_::TYPE_UNKNOWN, $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
             },
             106 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             107 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             108 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             109 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             110 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             111 => function ($stackPos) {
-                 $this->semValue = new Stmt\UseUse($this->semStack[$stackPos-(1-1)], null, Stmt\Use_::TYPE_UNKNOWN, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->checkUseUse($this->semValue, $stackPos-(1-1));
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             112 => function ($stackPos) {
-                 $this->semValue = new Stmt\UseUse($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], Stmt\Use_::TYPE_UNKNOWN, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); $this->checkUseUse($this->semValue, $stackPos-(3-3));
+                 $this->semValue = new Stmt\UseUse($this->semStack[$stackPos-(1-1)], null, Stmt\Use_::TYPE_UNKNOWN, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->checkUseUse($this->semValue, $stackPos-(1-1));
             },
             113 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Stmt\UseUse($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], Stmt\Use_::TYPE_UNKNOWN, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); $this->checkUseUse($this->semValue, $stackPos-(3-3));
             },
             114 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(2-2)];
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             115 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)]; $this->semValue->type = Stmt\Use_::TYPE_NORMAL;
+                 $this->semValue = $this->semStack[$stackPos-(2-2)];
             },
             116 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(2-2)]; $this->semValue->type = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = $this->semStack[$stackPos-(1-1)]; $this->semValue->type = Stmt\Use_::TYPE_NORMAL;
             },
             117 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 $this->semValue = $this->semStack[$stackPos-(2-2)]; $this->semValue->type = $this->semStack[$stackPos-(2-1)];
             },
             118 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             119 => function ($stackPos) {
-                 $this->semValue = new Node\Const_($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             120 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 $this->semValue = new Node\Const_($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             121 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             122 => function ($stackPos) {
-                 $this->semValue = new Node\Const_($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             123 => function ($stackPos) {
-                 if (is_array($this->semStack[$stackPos-(2-2)])) { $this->semValue = array_merge($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)]); } else { $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; };
+                 $this->semValue = new Node\Const_($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             124 => function ($stackPos) {
-                 $this->semValue = array();
+                 if (is_array($this->semStack[$stackPos-(2-2)])) { $this->semValue = array_merge($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)]); } else { $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; };
             },
             125 => function ($stackPos) {
-                 $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($startAttributes + $this->endAttributes); } else { $nop = null; };
-            if ($nop !== null) { $this->semStack[$stackPos-(1-1)][] = $nop; } $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = array();
             },
             126 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($this->createZeroLengthAttributes($startAttributes)); } else { $nop = null; };
+            if ($nop !== null) { $this->semStack[$stackPos-(1-1)][] = $nop; } $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             127 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
@@ -1324,9 +1327,12 @@ protected function initReduceCallbacks() {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             129 => function ($stackPos) {
-                 throw new Error('__HALT_COMPILER() can only be used from the outermost scope', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             130 => function ($stackPos) {
+                 throw new Error('__HALT_COMPILER() can only be used from the outermost scope', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+            },
+            131 => function ($stackPos) {
 
         if ($this->semStack[$stackPos-(3-2)]) {
             $this->semValue = $this->semStack[$stackPos-(3-2)]; $attrs = $this->startAttributeStack[$stackPos-(3-1)]; $stmts = $this->semValue; if (!empty($attrs['comments'])) {$stmts[0]->setAttribute('comments', array_merge($attrs['comments'], $stmts[0]->getAttribute('comments', []))); };
@@ -1336,850 +1342,849 @@ protected function initReduceCallbacks() {
         }
 
             },
-            131 => function ($stackPos) {
-                 $this->semValue = new Stmt\If_($this->semStack[$stackPos-(5-2)], ['stmts' => is_array($this->semStack[$stackPos-(5-3)]) ? $this->semStack[$stackPos-(5-3)] : array($this->semStack[$stackPos-(5-3)]), 'elseifs' => $this->semStack[$stackPos-(5-4)], 'else' => $this->semStack[$stackPos-(5-5)]], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
-            },
             132 => function ($stackPos) {
-                 $this->semValue = new Stmt\If_($this->semStack[$stackPos-(8-2)], ['stmts' => $this->semStack[$stackPos-(8-4)], 'elseifs' => $this->semStack[$stackPos-(8-5)], 'else' => $this->semStack[$stackPos-(8-6)]], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\If_($this->semStack[$stackPos-(5-2)], ['stmts' => is_array($this->semStack[$stackPos-(5-3)]) ? $this->semStack[$stackPos-(5-3)] : array($this->semStack[$stackPos-(5-3)]), 'elseifs' => $this->semStack[$stackPos-(5-4)], 'else' => $this->semStack[$stackPos-(5-5)]], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
             },
             133 => function ($stackPos) {
-                 $this->semValue = new Stmt\While_($this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\If_($this->semStack[$stackPos-(8-2)], ['stmts' => $this->semStack[$stackPos-(8-4)], 'elseifs' => $this->semStack[$stackPos-(8-5)], 'else' => $this->semStack[$stackPos-(8-6)]], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes);
             },
             134 => function ($stackPos) {
-                 $this->semValue = new Stmt\Do_($this->semStack[$stackPos-(5-4)], is_array($this->semStack[$stackPos-(5-2)]) ? $this->semStack[$stackPos-(5-2)] : array($this->semStack[$stackPos-(5-2)]), $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\While_($this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             135 => function ($stackPos) {
-                 $this->semValue = new Stmt\For_(['init' => $this->semStack[$stackPos-(9-3)], 'cond' => $this->semStack[$stackPos-(9-5)], 'loop' => $this->semStack[$stackPos-(9-7)], 'stmts' => $this->semStack[$stackPos-(9-9)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\Do_($this->semStack[$stackPos-(5-4)], is_array($this->semStack[$stackPos-(5-2)]) ? $this->semStack[$stackPos-(5-2)] : array($this->semStack[$stackPos-(5-2)]), $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
             },
             136 => function ($stackPos) {
-                 $this->semValue = new Stmt\Switch_($this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\For_(['init' => $this->semStack[$stackPos-(9-3)], 'cond' => $this->semStack[$stackPos-(9-5)], 'loop' => $this->semStack[$stackPos-(9-7)], 'stmts' => $this->semStack[$stackPos-(9-9)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
             },
             137 => function ($stackPos) {
-                 $this->semValue = new Stmt\Break_(null, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\Switch_($this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             138 => function ($stackPos) {
-                 $this->semValue = new Stmt\Break_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\Break_(null, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             139 => function ($stackPos) {
-                 $this->semValue = new Stmt\Continue_(null, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\Break_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             140 => function ($stackPos) {
-                 $this->semValue = new Stmt\Continue_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\Continue_(null, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             141 => function ($stackPos) {
-                 $this->semValue = new Stmt\Return_(null, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\Continue_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             142 => function ($stackPos) {
-                 $this->semValue = new Stmt\Return_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\Return_(null, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             143 => function ($stackPos) {
-                 $this->semValue = new Stmt\Global_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\Return_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             144 => function ($stackPos) {
-                 $this->semValue = new Stmt\Static_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\Global_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             145 => function ($stackPos) {
-                 $this->semValue = new Stmt\Echo_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\Static_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             146 => function ($stackPos) {
-                 $this->semValue = new Stmt\InlineHTML($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\Echo_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             147 => function ($stackPos) {
-                 $this->semValue = new Stmt\Expression($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\InlineHTML($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             148 => function ($stackPos) {
                  $this->semValue = new Stmt\Expression($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             149 => function ($stackPos) {
-                 $this->semValue = new Stmt\Unset_($this->semStack[$stackPos-(5-3)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\Expression($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             150 => function ($stackPos) {
-                 $this->semValue = new Stmt\Foreach_($this->semStack[$stackPos-(7-3)], $this->semStack[$stackPos-(7-5)][0], ['keyVar' => null, 'byRef' => $this->semStack[$stackPos-(7-5)][1], 'stmts' => $this->semStack[$stackPos-(7-7)]], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\Unset_($this->semStack[$stackPos-(5-3)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
             },
             151 => function ($stackPos) {
-                 $this->semValue = new Stmt\Foreach_($this->semStack[$stackPos-(9-3)], $this->semStack[$stackPos-(9-7)][0], ['keyVar' => $this->semStack[$stackPos-(9-5)], 'byRef' => $this->semStack[$stackPos-(9-7)][1], 'stmts' => $this->semStack[$stackPos-(9-9)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\Foreach_($this->semStack[$stackPos-(7-3)], $this->semStack[$stackPos-(7-5)][0], ['keyVar' => null, 'byRef' => $this->semStack[$stackPos-(7-5)][1], 'stmts' => $this->semStack[$stackPos-(7-7)]], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
             },
             152 => function ($stackPos) {
-                 $this->semValue = new Stmt\Declare_($this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-5)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\Foreach_($this->semStack[$stackPos-(9-3)], $this->semStack[$stackPos-(9-7)][0], ['keyVar' => $this->semStack[$stackPos-(9-5)], 'byRef' => $this->semStack[$stackPos-(9-7)][1], 'stmts' => $this->semStack[$stackPos-(9-9)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
             },
             153 => function ($stackPos) {
-                 $this->semValue = new Stmt\TryCatch($this->semStack[$stackPos-(6-3)], $this->semStack[$stackPos-(6-5)], $this->semStack[$stackPos-(6-6)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes); $this->checkTryCatch($this->semValue);
+                 $this->semValue = new Stmt\Declare_($this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-5)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
             },
             154 => function ($stackPos) {
-                 $this->semValue = new Stmt\Throw_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\TryCatch($this->semStack[$stackPos-(6-3)], $this->semStack[$stackPos-(6-5)], $this->semStack[$stackPos-(6-6)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes); $this->checkTryCatch($this->semValue);
             },
             155 => function ($stackPos) {
-                 $this->semValue = new Stmt\Goto_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\Throw_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             156 => function ($stackPos) {
-                 $this->semValue = new Stmt\Label($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\Goto_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             157 => function ($stackPos) {
-                 $this->semValue = new Stmt\Expression($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\Label($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             158 => function ($stackPos) {
-                 $this->semValue = array(); /* means: no statement */
+                 $this->semValue = new Stmt\Expression($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             159 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = array(); /* means: no statement */
             },
             160 => function ($stackPos) {
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+            },
+            161 => function ($stackPos) {
                  $startAttributes = $this->startAttributeStack[$stackPos-(1-1)]; if (isset($startAttributes['comments'])) { $this->semValue = new Stmt\Nop($startAttributes + $this->endAttributes); } else { $this->semValue = null; };
             if ($this->semValue === null) $this->semValue = array(); /* means: no statement */
             },
-            161 => function ($stackPos) {
+            162 => function ($stackPos) {
                  $this->semValue = array();
             },
-            162 => function ($stackPos) {
+            163 => function ($stackPos) {
                  $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
-            163 => function ($stackPos) {
+            164 => function ($stackPos) {
                  $this->semValue = new Stmt\Catch_(array($this->semStack[$stackPos-(8-3)]), $this->semStack[$stackPos-(8-4)], $this->semStack[$stackPos-(8-7)], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes);
             },
-            164 => function ($stackPos) {
+            165 => function ($stackPos) {
                  $this->semValue = null;
             },
-            165 => function ($stackPos) {
+            166 => function ($stackPos) {
                  $this->semValue = new Stmt\Finally_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
-            166 => function ($stackPos) {
+            167 => function ($stackPos) {
                  $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
-            167 => function ($stackPos) {
+            168 => function ($stackPos) {
                  $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
-            168 => function ($stackPos) {
+            169 => function ($stackPos) {
                  $this->semValue = false;
             },
-            169 => function ($stackPos) {
+            170 => function ($stackPos) {
                  $this->semValue = true;
             },
-            170 => function ($stackPos) {
+            171 => function ($stackPos) {
                  $this->semValue = false;
             },
-            171 => function ($stackPos) {
+            172 => function ($stackPos) {
                  $this->semValue = true;
             },
-            172 => function ($stackPos) {
+            173 => function ($stackPos) {
                  $this->semValue = new Stmt\Function_($this->semStack[$stackPos-(10-3)], ['byRef' => $this->semStack[$stackPos-(10-2)], 'params' => $this->semStack[$stackPos-(10-5)], 'returnType' => $this->semStack[$stackPos-(10-7)], 'stmts' => $this->semStack[$stackPos-(10-9)]], $this->startAttributeStack[$stackPos-(10-1)] + $this->endAttributes);
             },
-            173 => function ($stackPos) {
+            174 => function ($stackPos) {
                  $this->semValue = new Stmt\Class_($this->semStack[$stackPos-(7-2)], ['type' => $this->semStack[$stackPos-(7-1)], 'extends' => $this->semStack[$stackPos-(7-3)], 'implements' => $this->semStack[$stackPos-(7-4)], 'stmts' => $this->semStack[$stackPos-(7-6)]], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
             $this->checkClass($this->semValue, $stackPos-(7-2));
             },
-            174 => function ($stackPos) {
+            175 => function ($stackPos) {
                  $this->semValue = new Stmt\Interface_($this->semStack[$stackPos-(6-2)], ['extends' => $this->semStack[$stackPos-(6-3)], 'stmts' => $this->semStack[$stackPos-(6-5)]], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
             $this->checkInterface($this->semValue, $stackPos-(6-2));
             },
-            175 => function ($stackPos) {
-                 $this->semValue = new Stmt\Trait_($this->semStack[$stackPos-(5-2)], ['stmts' => $this->semStack[$stackPos-(5-4)]], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
-            },
             176 => function ($stackPos) {
-                 $this->semValue = 0;
+                 $this->semValue = new Stmt\Trait_($this->semStack[$stackPos-(5-2)], ['stmts' => $this->semStack[$stackPos-(5-4)]], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
             },
             177 => function ($stackPos) {
-                 $this->semValue = Stmt\Class_::MODIFIER_ABSTRACT;
+                 $this->semValue = 0;
             },
             178 => function ($stackPos) {
-                 $this->semValue = Stmt\Class_::MODIFIER_FINAL;
+                 $this->semValue = Stmt\Class_::MODIFIER_ABSTRACT;
             },
             179 => function ($stackPos) {
-                 $this->semValue = null;
+                 $this->semValue = Stmt\Class_::MODIFIER_FINAL;
             },
             180 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(2-2)];
+                 $this->semValue = null;
             },
             181 => function ($stackPos) {
-                 $this->semValue = array();
+                 $this->semValue = $this->semStack[$stackPos-(2-2)];
             },
             182 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(2-2)];
+                 $this->semValue = array();
             },
             183 => function ($stackPos) {
-                 $this->semValue = array();
+                 $this->semValue = $this->semStack[$stackPos-(2-2)];
             },
             184 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(2-2)];
+                 $this->semValue = array();
             },
             185 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semValue = $this->semStack[$stackPos-(2-2)];
             },
             186 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             187 => function ($stackPos) {
-                 $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             188 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(4-2)];
+                 $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
             },
             189 => function ($stackPos) {
-                 $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
+                 $this->semValue = $this->semStack[$stackPos-(4-2)];
             },
             190 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(4-2)];
+                 $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
             },
             191 => function ($stackPos) {
-                 $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
+                 $this->semValue = $this->semStack[$stackPos-(4-2)];
             },
             192 => function ($stackPos) {
-                 $this->semValue = null;
+                 $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
             },
             193 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(4-2)];
+                 $this->semValue = null;
             },
             194 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semValue = $this->semStack[$stackPos-(4-2)];
             },
             195 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             196 => function ($stackPos) {
-                 $this->semValue = new Stmt\DeclareDeclare($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             197 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(3-2)];
+                 $this->semValue = new Stmt\DeclareDeclare($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             198 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(4-3)];
+                 $this->semValue = $this->semStack[$stackPos-(3-2)];
             },
             199 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(4-2)];
+                 $this->semValue = $this->semStack[$stackPos-(4-3)];
             },
             200 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(5-3)];
+                 $this->semValue = $this->semStack[$stackPos-(4-2)];
             },
             201 => function ($stackPos) {
-                 $this->semValue = array();
+                 $this->semValue = $this->semStack[$stackPos-(5-3)];
             },
             202 => function ($stackPos) {
-                 $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = array();
             },
             203 => function ($stackPos) {
-                 $this->semValue = new Stmt\Case_($this->semStack[$stackPos-(4-2)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             204 => function ($stackPos) {
-                 $this->semValue = new Stmt\Case_(null, $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\Case_($this->semStack[$stackPos-(4-2)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             205 => function ($stackPos) {
-                $this->semValue = $this->semStack[$stackPos];
+                 $this->semValue = new Stmt\Case_(null, $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             206 => function ($stackPos) {
                 $this->semValue = $this->semStack[$stackPos];
             },
             207 => function ($stackPos) {
-                 $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
+                $this->semValue = $this->semStack[$stackPos];
             },
             208 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(4-2)];
+                 $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
             },
             209 => function ($stackPos) {
-                 $this->semValue = array();
+                 $this->semValue = $this->semStack[$stackPos-(4-2)];
             },
             210 => function ($stackPos) {
-                 $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = array();
             },
             211 => function ($stackPos) {
-                 $this->semValue = new Stmt\ElseIf_($this->semStack[$stackPos-(3-2)], is_array($this->semStack[$stackPos-(3-3)]) ? $this->semStack[$stackPos-(3-3)] : array($this->semStack[$stackPos-(3-3)]), $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             212 => function ($stackPos) {
-                 $this->semValue = array();
+                 $this->semValue = new Stmt\ElseIf_($this->semStack[$stackPos-(3-2)], is_array($this->semStack[$stackPos-(3-3)]) ? $this->semStack[$stackPos-(3-3)] : array($this->semStack[$stackPos-(3-3)]), $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             213 => function ($stackPos) {
-                 $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = array();
             },
             214 => function ($stackPos) {
-                 $this->semValue = new Stmt\ElseIf_($this->semStack[$stackPos-(4-2)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             215 => function ($stackPos) {
-                 $this->semValue = null;
+                 $this->semValue = new Stmt\ElseIf_($this->semStack[$stackPos-(4-2)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             216 => function ($stackPos) {
-                 $this->semValue = new Stmt\Else_(is_array($this->semStack[$stackPos-(2-2)]) ? $this->semStack[$stackPos-(2-2)] : array($this->semStack[$stackPos-(2-2)]), $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = null;
             },
             217 => function ($stackPos) {
-                 $this->semValue = null;
+                 $this->semValue = new Stmt\Else_(is_array($this->semStack[$stackPos-(2-2)]) ? $this->semStack[$stackPos-(2-2)] : array($this->semStack[$stackPos-(2-2)]), $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             218 => function ($stackPos) {
-                 $this->semValue = new Stmt\Else_($this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = null;
             },
             219 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)], false);
+                 $this->semValue = new Stmt\Else_($this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             220 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(2-2)], true);
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)], false);
             },
             221 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)], false);
+                 $this->semValue = array($this->semStack[$stackPos-(2-2)], true);
             },
             222 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)], false);
             },
             223 => function ($stackPos) {
-                 $this->semValue = array();
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             224 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semValue = array();
             },
             225 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             226 => function ($stackPos) {
-                 $this->semValue = new Node\Param($this->semStack[$stackPos-(4-4)], null, $this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-2)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); $this->checkParam($this->semValue);
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             227 => function ($stackPos) {
-                 $this->semValue = new Node\Param($this->semStack[$stackPos-(6-4)], $this->semStack[$stackPos-(6-6)], $this->semStack[$stackPos-(6-1)], $this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-3)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes); $this->checkParam($this->semValue);
+                 $this->semValue = new Node\Param($this->semStack[$stackPos-(4-4)], null, $this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-2)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); $this->checkParam($this->semValue);
             },
             228 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Node\Param($this->semStack[$stackPos-(6-4)], $this->semStack[$stackPos-(6-6)], $this->semStack[$stackPos-(6-1)], $this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-3)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes); $this->checkParam($this->semValue);
             },
             229 => function ($stackPos) {
-                 $this->semValue = new Node\Identifier('array', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             230 => function ($stackPos) {
-                 $this->semValue = new Node\Identifier('callable', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Node\Identifier('array', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             231 => function ($stackPos) {
-                 $this->semValue = null;
+                 $this->semValue = new Node\Identifier('callable', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             232 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = null;
             },
             233 => function ($stackPos) {
-                 $this->semValue = null;
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             234 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(2-2)];
+                 $this->semValue = null;
             },
             235 => function ($stackPos) {
-                 $this->semValue = array();
+                 $this->semValue = $this->semStack[$stackPos-(2-2)];
             },
             236 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(3-2)];
+                 $this->semValue = array();
             },
             237 => function ($stackPos) {
-                 $this->semValue = array(new Node\Arg($this->semStack[$stackPos-(3-2)], false, false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes));
+                 $this->semValue = $this->semStack[$stackPos-(3-2)];
             },
             238 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semValue = array(new Node\Arg($this->semStack[$stackPos-(3-2)], false, false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes));
             },
             239 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             240 => function ($stackPos) {
-                 $this->semValue = new Node\Arg($this->semStack[$stackPos-(1-1)], false, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             241 => function ($stackPos) {
-                 $this->semValue = new Node\Arg($this->semStack[$stackPos-(2-2)], true, false, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Node\Arg($this->semStack[$stackPos-(1-1)], false, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             242 => function ($stackPos) {
-                 $this->semValue = new Node\Arg($this->semStack[$stackPos-(2-2)], false, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Node\Arg($this->semStack[$stackPos-(2-2)], true, false, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             243 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 $this->semValue = new Node\Arg($this->semStack[$stackPos-(2-2)], false, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             244 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             245 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             246 => function ($stackPos) {
-                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             247 => function ($stackPos) {
-                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             248 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             249 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             250 => function ($stackPos) {
-                 $this->semValue = new Stmt\StaticVar($this->semStack[$stackPos-(1-1)], null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             251 => function ($stackPos) {
-                 $this->semValue = new Stmt\StaticVar($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\StaticVar($this->semStack[$stackPos-(1-1)], null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             252 => function ($stackPos) {
-                 if ($this->semStack[$stackPos-(2-2)] !== null) { $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; }
+                 $this->semValue = new Stmt\StaticVar($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             253 => function ($stackPos) {
-                 $this->semValue = array();
+                 if ($this->semStack[$stackPos-(2-2)] !== null) { $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; }
             },
             254 => function ($stackPos) {
-                 $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($startAttributes + $this->endAttributes); } else { $nop = null; };
-            if ($nop !== null) { $this->semStack[$stackPos-(1-1)][] = $nop; } $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = array();
             },
             255 => function ($stackPos) {
-                 $this->semValue = new Stmt\Property($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); $this->checkProperty($this->semValue, $stackPos-(3-1));
+                 $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($this->createZeroLengthAttributes($startAttributes)); } else { $nop = null; };
+            if ($nop !== null) { $this->semStack[$stackPos-(1-1)][] = $nop; } $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             256 => function ($stackPos) {
-                 $this->semValue = new Stmt\ClassConst($this->semStack[$stackPos-(3-2)], 0, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\Property($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); $this->checkProperty($this->semValue, $stackPos-(3-1));
             },
             257 => function ($stackPos) {
-                 $this->semValue = new Stmt\ClassMethod($this->semStack[$stackPos-(9-4)], ['type' => $this->semStack[$stackPos-(9-1)], 'byRef' => $this->semStack[$stackPos-(9-3)], 'params' => $this->semStack[$stackPos-(9-6)], 'returnType' => $this->semStack[$stackPos-(9-8)], 'stmts' => $this->semStack[$stackPos-(9-9)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
-            $this->checkClassMethod($this->semValue, $stackPos-(9-1));
+                 $this->semValue = new Stmt\ClassConst($this->semStack[$stackPos-(3-2)], 0, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             258 => function ($stackPos) {
-                 $this->semValue = new Stmt\TraitUse($this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\ClassMethod($this->semStack[$stackPos-(9-4)], ['type' => $this->semStack[$stackPos-(9-1)], 'byRef' => $this->semStack[$stackPos-(9-3)], 'params' => $this->semStack[$stackPos-(9-6)], 'returnType' => $this->semStack[$stackPos-(9-8)], 'stmts' => $this->semStack[$stackPos-(9-9)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
+            $this->checkClassMethod($this->semValue, $stackPos-(9-1));
             },
             259 => function ($stackPos) {
-                 $this->semValue = array();
+                 $this->semValue = new Stmt\TraitUse($this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             260 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(3-2)];
+                 $this->semValue = array();
             },
             261 => function ($stackPos) {
-                 $this->semValue = array();
+                 $this->semValue = $this->semStack[$stackPos-(3-2)];
             },
             262 => function ($stackPos) {
-                 $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = array();
             },
             263 => function ($stackPos) {
-                 $this->semValue = new Stmt\TraitUseAdaptation\Precedence($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             264 => function ($stackPos) {
-                 $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(5-1)][0], $this->semStack[$stackPos-(5-1)][1], $this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-4)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\TraitUseAdaptation\Precedence($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             265 => function ($stackPos) {
-                 $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], $this->semStack[$stackPos-(4-3)], null, $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(5-1)][0], $this->semStack[$stackPos-(5-1)][1], $this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-4)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
             },
             266 => function ($stackPos) {
-                 $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], null, $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], $this->semStack[$stackPos-(4-3)], null, $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             267 => function ($stackPos) {
                  $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], null, $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             268 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)]);
+                 $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], null, $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             269 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = array($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)]);
             },
             270 => function ($stackPos) {
-                 $this->semValue = array(null, $this->semStack[$stackPos-(1-1)]);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             271 => function ($stackPos) {
-                 $this->semValue = null;
+                 $this->semValue = array(null, $this->semStack[$stackPos-(1-1)]);
             },
             272 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(3-2)];
+                 $this->semValue = null;
             },
             273 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = $this->semStack[$stackPos-(3-2)];
             },
             274 => function ($stackPos) {
-                 $this->semValue = 0;
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             275 => function ($stackPos) {
                  $this->semValue = 0;
             },
             276 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = 0;
             },
             277 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             278 => function ($stackPos) {
-                 $this->checkModifier($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $stackPos-(2-2)); $this->semValue = $this->semStack[$stackPos-(2-1)] | $this->semStack[$stackPos-(2-2)];
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             279 => function ($stackPos) {
-                 $this->semValue = Stmt\Class_::MODIFIER_PUBLIC;
+                 $this->checkModifier($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $stackPos-(2-2)); $this->semValue = $this->semStack[$stackPos-(2-1)] | $this->semStack[$stackPos-(2-2)];
             },
             280 => function ($stackPos) {
-                 $this->semValue = Stmt\Class_::MODIFIER_PROTECTED;
+                 $this->semValue = Stmt\Class_::MODIFIER_PUBLIC;
             },
             281 => function ($stackPos) {
-                 $this->semValue = Stmt\Class_::MODIFIER_PRIVATE;
+                 $this->semValue = Stmt\Class_::MODIFIER_PROTECTED;
             },
             282 => function ($stackPos) {
-                 $this->semValue = Stmt\Class_::MODIFIER_STATIC;
+                 $this->semValue = Stmt\Class_::MODIFIER_PRIVATE;
             },
             283 => function ($stackPos) {
-                 $this->semValue = Stmt\Class_::MODIFIER_ABSTRACT;
+                 $this->semValue = Stmt\Class_::MODIFIER_STATIC;
             },
             284 => function ($stackPos) {
-                 $this->semValue = Stmt\Class_::MODIFIER_FINAL;
+                 $this->semValue = Stmt\Class_::MODIFIER_ABSTRACT;
             },
             285 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semValue = Stmt\Class_::MODIFIER_FINAL;
             },
             286 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             287 => function ($stackPos) {
-                 $this->semValue = new Node\VarLikeIdentifier(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             288 => function ($stackPos) {
-                 $this->semValue = new Stmt\PropertyProperty($this->semStack[$stackPos-(1-1)], null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Node\VarLikeIdentifier(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             289 => function ($stackPos) {
-                 $this->semValue = new Stmt\PropertyProperty($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\PropertyProperty($this->semStack[$stackPos-(1-1)], null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             290 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 $this->semValue = new Stmt\PropertyProperty($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             291 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             292 => function ($stackPos) {
-                 $this->semValue = array();
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             293 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = array();
             },
             294 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             295 => function ($stackPos) {
-                 $this->semValue = new Expr\Assign($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             296 => function ($stackPos) {
                  $this->semValue = new Expr\Assign($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             297 => function ($stackPos) {
-                 $this->semValue = new Expr\AssignRef($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Assign($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             298 => function ($stackPos) {
                  $this->semValue = new Expr\AssignRef($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             299 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Expr\AssignRef($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             300 => function ($stackPos) {
-                 $this->semValue = new Expr\Clone_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             301 => function ($stackPos) {
-                 $this->semValue = new Expr\AssignOp\Plus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Clone_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             302 => function ($stackPos) {
-                 $this->semValue = new Expr\AssignOp\Minus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\AssignOp\Plus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             303 => function ($stackPos) {
-                 $this->semValue = new Expr\AssignOp\Mul($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\AssignOp\Minus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             304 => function ($stackPos) {
-                 $this->semValue = new Expr\AssignOp\Div($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\AssignOp\Mul($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             305 => function ($stackPos) {
-                 $this->semValue = new Expr\AssignOp\Concat($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\AssignOp\Div($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             306 => function ($stackPos) {
-                 $this->semValue = new Expr\AssignOp\Mod($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\AssignOp\Concat($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             307 => function ($stackPos) {
-                 $this->semValue = new Expr\AssignOp\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\AssignOp\Mod($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             308 => function ($stackPos) {
-                 $this->semValue = new Expr\AssignOp\BitwiseOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\AssignOp\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             309 => function ($stackPos) {
-                 $this->semValue = new Expr\AssignOp\BitwiseXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\AssignOp\BitwiseOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             310 => function ($stackPos) {
-                 $this->semValue = new Expr\AssignOp\ShiftLeft($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\AssignOp\BitwiseXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             311 => function ($stackPos) {
-                 $this->semValue = new Expr\AssignOp\ShiftRight($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\AssignOp\ShiftLeft($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             312 => function ($stackPos) {
-                 $this->semValue = new Expr\AssignOp\Pow($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\AssignOp\ShiftRight($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             313 => function ($stackPos) {
-                 $this->semValue = new Expr\PostInc($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\AssignOp\Pow($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             314 => function ($stackPos) {
-                 $this->semValue = new Expr\PreInc($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\AssignOp\Coalesce($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             315 => function ($stackPos) {
-                 $this->semValue = new Expr\PostDec($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\PostInc($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             316 => function ($stackPos) {
-                 $this->semValue = new Expr\PreDec($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\PreInc($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             317 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\BooleanOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\PostDec($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             318 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\BooleanAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\PreDec($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             319 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\LogicalOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\BooleanOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             320 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\LogicalAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\BooleanAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             321 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\LogicalXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\LogicalOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             322 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\BitwiseOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\LogicalAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             323 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\LogicalXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             324 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\BitwiseXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\BitwiseOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             325 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\Concat($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             326 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\Plus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\BitwiseXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             327 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\Minus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\Concat($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             328 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\Mul($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\Plus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             329 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\Div($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\Minus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             330 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\Mod($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\Mul($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             331 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\ShiftLeft($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\Div($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             332 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\ShiftRight($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\Mod($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             333 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\Pow($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\ShiftLeft($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             334 => function ($stackPos) {
-                 $this->semValue = new Expr\UnaryPlus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\ShiftRight($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             335 => function ($stackPos) {
-                 $this->semValue = new Expr\UnaryMinus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\Pow($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             336 => function ($stackPos) {
-                 $this->semValue = new Expr\BooleanNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\UnaryPlus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             337 => function ($stackPos) {
-                 $this->semValue = new Expr\BitwiseNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\UnaryMinus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             338 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\Identical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BooleanNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             339 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\NotIdentical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BitwiseNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             340 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\Equal($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\Identical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             341 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\NotEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\NotIdentical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             342 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\Spaceship($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\Equal($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             343 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\Smaller($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\NotEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             344 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\SmallerOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\Spaceship($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             345 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\Greater($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\Smaller($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             346 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\GreaterOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\SmallerOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             347 => function ($stackPos) {
-                 $this->semValue = new Expr\Instanceof_($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\Greater($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             348 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Expr\BinaryOp\GreaterOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             349 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(3-2)];
+                 $this->semValue = new Expr\Instanceof_($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             350 => function ($stackPos) {
-                 $this->semValue = new Expr\Ternary($this->semStack[$stackPos-(5-1)], $this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-5)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             351 => function ($stackPos) {
-                 $this->semValue = new Expr\Ternary($this->semStack[$stackPos-(4-1)], null, $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(3-2)];
             },
             352 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\Coalesce($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Ternary($this->semStack[$stackPos-(5-1)], $this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-5)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
             },
             353 => function ($stackPos) {
-                 $this->semValue = new Expr\Isset_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Ternary($this->semStack[$stackPos-(4-1)], null, $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             354 => function ($stackPos) {
-                 $this->semValue = new Expr\Empty_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\Coalesce($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             355 => function ($stackPos) {
-                 $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Isset_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             356 => function ($stackPos) {
-                 $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE_ONCE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Empty_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             357 => function ($stackPos) {
-                 $this->semValue = new Expr\Eval_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             358 => function ($stackPos) {
-                 $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE_ONCE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             359 => function ($stackPos) {
-                 $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE_ONCE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Eval_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             360 => function ($stackPos) {
-                 $this->semValue = new Expr\Cast\Int_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             361 => function ($stackPos) {
-                 $this->semValue = new Expr\Cast\Double($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE_ONCE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             362 => function ($stackPos) {
-                 $this->semValue = new Expr\Cast\String_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Cast\Int_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             363 => function ($stackPos) {
-                 $this->semValue = new Expr\Cast\Array_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $attrs = $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes;
+            $attrs['kind'] = $this->getFloatCastKind($this->semStack[$stackPos-(2-1)]);
+            $this->semValue = new Expr\Cast\Double($this->semStack[$stackPos-(2-2)], $attrs);
             },
             364 => function ($stackPos) {
-                 $this->semValue = new Expr\Cast\Object_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Cast\String_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             365 => function ($stackPos) {
-                 $this->semValue = new Expr\Cast\Bool_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Cast\Array_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             366 => function ($stackPos) {
-                 $this->semValue = new Expr\Cast\Unset_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Cast\Object_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             367 => function ($stackPos) {
+                 $this->semValue = new Expr\Cast\Bool_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+            },
+            368 => function ($stackPos) {
+                 $this->semValue = new Expr\Cast\Unset_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+            },
+            369 => function ($stackPos) {
                  $attrs = $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes;
             $attrs['kind'] = strtolower($this->semStack[$stackPos-(2-1)]) === 'exit' ? Expr\Exit_::KIND_EXIT : Expr\Exit_::KIND_DIE;
             $this->semValue = new Expr\Exit_($this->semStack[$stackPos-(2-2)], $attrs);
             },
-            368 => function ($stackPos) {
+            370 => function ($stackPos) {
                  $this->semValue = new Expr\ErrorSuppress($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
-            369 => function ($stackPos) {
+            371 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
-            370 => function ($stackPos) {
+            372 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
-            371 => function ($stackPos) {
+            373 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
-            372 => function ($stackPos) {
+            374 => function ($stackPos) {
                  $this->semValue = new Expr\ShellExec($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            373 => function ($stackPos) {
+            375 => function ($stackPos) {
                  $this->semValue = new Expr\Print_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
-            374 => function ($stackPos) {
+            376 => function ($stackPos) {
                  $this->semValue = new Expr\Yield_(null, null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
-            375 => function ($stackPos) {
+            377 => function ($stackPos) {
                  $this->semValue = new Expr\YieldFrom($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
-            376 => function ($stackPos) {
+            378 => function ($stackPos) {
                  $this->semValue = new Expr\Closure(['static' => false, 'byRef' => $this->semStack[$stackPos-(10-2)], 'params' => $this->semStack[$stackPos-(10-4)], 'uses' => $this->semStack[$stackPos-(10-6)], 'returnType' => $this->semStack[$stackPos-(10-7)], 'stmts' => $this->semStack[$stackPos-(10-9)]], $this->startAttributeStack[$stackPos-(10-1)] + $this->endAttributes);
             },
-            377 => function ($stackPos) {
+            379 => function ($stackPos) {
                  $this->semValue = new Expr\Closure(['static' => true, 'byRef' => $this->semStack[$stackPos-(11-3)], 'params' => $this->semStack[$stackPos-(11-5)], 'uses' => $this->semStack[$stackPos-(11-7)], 'returnType' => $this->semStack[$stackPos-(11-8)], 'stmts' => $this->semStack[$stackPos-(11-10)]], $this->startAttributeStack[$stackPos-(11-1)] + $this->endAttributes);
             },
-            378 => function ($stackPos) {
+            380 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(3-2)];
             },
-            379 => function ($stackPos) {
+            381 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(3-2)];
             },
-            380 => function ($stackPos) {
+            382 => function ($stackPos) {
                  $this->semValue = new Expr\Yield_($this->semStack[$stackPos-(2-2)], null, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
-            381 => function ($stackPos) {
+            383 => function ($stackPos) {
                  $this->semValue = new Expr\Yield_($this->semStack[$stackPos-(4-4)], $this->semStack[$stackPos-(4-2)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
-            382 => function ($stackPos) {
+            384 => function ($stackPos) {
                  $attrs = $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes; $attrs['kind'] = Expr\Array_::KIND_LONG;
             $this->semValue = new Expr\Array_($this->semStack[$stackPos-(4-3)], $attrs);
             },
-            383 => function ($stackPos) {
+            385 => function ($stackPos) {
                  $attrs = $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes; $attrs['kind'] = Expr\Array_::KIND_SHORT;
             $this->semValue = new Expr\Array_($this->semStack[$stackPos-(3-2)], $attrs);
             },
-            384 => function ($stackPos) {
+            386 => function ($stackPos) {
                  $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
-            385 => function ($stackPos) {
+            387 => function ($stackPos) {
                  $attrs = $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes; $attrs['kind'] = ($this->semStack[$stackPos-(4-1)][0] === "'" || ($this->semStack[$stackPos-(4-1)][1] === "'" && ($this->semStack[$stackPos-(4-1)][0] === 'b' || $this->semStack[$stackPos-(4-1)][0] === 'B')) ? Scalar\String_::KIND_SINGLE_QUOTED : Scalar\String_::KIND_DOUBLE_QUOTED);
             $this->semValue = new Expr\ArrayDimFetch(new Scalar\String_(Scalar\String_::parse($this->semStack[$stackPos-(4-1)]), $attrs), $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
-            386 => function ($stackPos) {
+            388 => function ($stackPos) {
                  $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
-            387 => function ($stackPos) {
+            389 => function ($stackPos) {
                  $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
-            388 => function ($stackPos) {
+            390 => function ($stackPos) {
                  $this->semValue = array(new Stmt\Class_(null, ['type' => 0, 'extends' => $this->semStack[$stackPos-(7-3)], 'implements' => $this->semStack[$stackPos-(7-4)], 'stmts' => $this->semStack[$stackPos-(7-6)]], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes), $this->semStack[$stackPos-(7-2)]);
             $this->checkClass($this->semValue[0], -1);
             },
-            389 => function ($stackPos) {
-                 $this->semValue = new Expr\New_($this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
-            },
-            390 => function ($stackPos) {
-                 list($class, $ctorArgs) = $this->semStack[$stackPos-(2-2)]; $this->semValue = new Expr\New_($class, $ctorArgs, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
-            },
             391 => function ($stackPos) {
-                 $this->semValue = array();
+                 $this->semValue = new Expr\New_($this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             392 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(4-3)];
+                 list($class, $ctorArgs) = $this->semStack[$stackPos-(2-2)]; $this->semValue = new Expr\New_($class, $ctorArgs, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             393 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semValue = array();
             },
             394 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 $this->semValue = $this->semStack[$stackPos-(4-3)];
             },
             395 => function ($stackPos) {
-                 $this->semValue = new Expr\ClosureUse($this->semStack[$stackPos-(2-2)], $this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             396 => function ($stackPos) {
-                 $this->semValue = new Expr\FuncCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             397 => function ($stackPos) {
-                 $this->semValue = new Expr\StaticCall($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\ClosureUse($this->semStack[$stackPos-(2-2)], $this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             398 => function ($stackPos) {
-                 $this->semValue = new Expr\StaticCall($this->semStack[$stackPos-(6-1)], $this->semStack[$stackPos-(6-4)], $this->semStack[$stackPos-(6-6)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\FuncCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             399 => function ($stackPos) {
-                 $this->semValue = $this->fixupPhp5StaticPropCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\StaticCall($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             400 => function ($stackPos) {
-                 $this->semValue = new Expr\FuncCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\StaticCall($this->semStack[$stackPos-(6-1)], $this->semStack[$stackPos-(6-4)], $this->semStack[$stackPos-(6-6)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
             },
             401 => function ($stackPos) {
-                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = $this->fixupPhp5StaticPropCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             402 => function ($stackPos) {
-                 $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\FuncCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             403 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             404 => function ($stackPos) {
                  $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             405 => function ($stackPos) {
-                 $this->semValue = new Name\FullyQualified($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             406 => function ($stackPos) {
-                 $this->semValue = new Name\Relative($this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             407 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Name\FullyQualified($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             408 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Name\Relative($this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             409 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
@@ -2194,249 +2199,246 @@ protected function initReduceCallbacks() {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             413 => function ($stackPos) {
-                 $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             414 => function ($stackPos) {
-                 $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             415 => function ($stackPos) {
-                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             416 => function ($stackPos) {
-                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             417 => function ($stackPos) {
-                 $this->semValue = null;
+                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             418 => function ($stackPos) {
-                 $this->semValue = null;
+                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             419 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = null;
             },
             420 => function ($stackPos) {
-                 $this->semValue = array();
+                 $this->semValue = null;
             },
             421 => function ($stackPos) {
-                 $this->semValue = array(new Scalar\EncapsedStringPart(Scalar\String_::parseEscapeSequences($this->semStack[$stackPos-(1-1)], '`', false), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes));
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             422 => function ($stackPos) {
-                 foreach ($this->semStack[$stackPos-(1-1)] as $s) { if ($s instanceof Node\Scalar\EncapsedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '`', false); } }; $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = array();
             },
             423 => function ($stackPos) {
-                 $this->semValue = array();
+                 $this->semValue = array(new Scalar\EncapsedStringPart(Scalar\String_::parseEscapeSequences($this->semStack[$stackPos-(1-1)], '`', false), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes));
             },
             424 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 foreach ($this->semStack[$stackPos-(1-1)] as $s) { if ($s instanceof Node\Scalar\EncapsedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '`', false); } }; $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             425 => function ($stackPos) {
-                 $this->semValue = $this->parseLNumber($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes, true);
+                 $this->semValue = array();
             },
             426 => function ($stackPos) {
-                 $this->semValue = new Scalar\DNumber(Scalar\DNumber::parse($this->semStack[$stackPos-(1-1)]), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             427 => function ($stackPos) {
-                 $attrs = $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes; $attrs['kind'] = ($this->semStack[$stackPos-(1-1)][0] === "'" || ($this->semStack[$stackPos-(1-1)][1] === "'" && ($this->semStack[$stackPos-(1-1)][0] === 'b' || $this->semStack[$stackPos-(1-1)][0] === 'B')) ? Scalar\String_::KIND_SINGLE_QUOTED : Scalar\String_::KIND_DOUBLE_QUOTED);
-            $this->semValue = new Scalar\String_(Scalar\String_::parse($this->semStack[$stackPos-(1-1)], false), $attrs);
+                 $this->semValue = $this->parseLNumber($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes, true);
             },
             428 => function ($stackPos) {
-                 $this->semValue = new Scalar\MagicConst\Line($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Scalar\DNumber(Scalar\DNumber::parse($this->semStack[$stackPos-(1-1)]), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             429 => function ($stackPos) {
-                 $this->semValue = new Scalar\MagicConst\File($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $attrs = $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes; $attrs['kind'] = ($this->semStack[$stackPos-(1-1)][0] === "'" || ($this->semStack[$stackPos-(1-1)][1] === "'" && ($this->semStack[$stackPos-(1-1)][0] === 'b' || $this->semStack[$stackPos-(1-1)][0] === 'B')) ? Scalar\String_::KIND_SINGLE_QUOTED : Scalar\String_::KIND_DOUBLE_QUOTED);
+            $this->semValue = new Scalar\String_(Scalar\String_::parse($this->semStack[$stackPos-(1-1)], false), $attrs);
             },
             430 => function ($stackPos) {
-                 $this->semValue = new Scalar\MagicConst\Dir($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Scalar\MagicConst\Line($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             431 => function ($stackPos) {
-                 $this->semValue = new Scalar\MagicConst\Class_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Scalar\MagicConst\File($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             432 => function ($stackPos) {
-                 $this->semValue = new Scalar\MagicConst\Trait_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Scalar\MagicConst\Dir($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             433 => function ($stackPos) {
-                 $this->semValue = new Scalar\MagicConst\Method($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Scalar\MagicConst\Class_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             434 => function ($stackPos) {
-                 $this->semValue = new Scalar\MagicConst\Function_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Scalar\MagicConst\Trait_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             435 => function ($stackPos) {
-                 $this->semValue = new Scalar\MagicConst\Namespace_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Scalar\MagicConst\Method($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             436 => function ($stackPos) {
-                 $attrs = $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes; $attrs['kind'] = strpos($this->semStack[$stackPos-(3-1)], "'") === false ? Scalar\String_::KIND_HEREDOC : Scalar\String_::KIND_NOWDOC; preg_match('/\A[bB]?<<<[ \t]*[\'"]?([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)[\'"]?(?:\r\n|\n|\r)\z/', $this->semStack[$stackPos-(3-1)], $matches); $attrs['docLabel'] = $matches[1];;
-            $this->semValue = new Scalar\String_(Scalar\String_::parseDocString($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-2)], false), $attrs);
+                 $this->semValue = new Scalar\MagicConst\Function_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             437 => function ($stackPos) {
-                 $attrs = $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes; $attrs['kind'] = strpos($this->semStack[$stackPos-(2-1)], "'") === false ? Scalar\String_::KIND_HEREDOC : Scalar\String_::KIND_NOWDOC; preg_match('/\A[bB]?<<<[ \t]*[\'"]?([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)[\'"]?(?:\r\n|\n|\r)\z/', $this->semStack[$stackPos-(2-1)], $matches); $attrs['docLabel'] = $matches[1];;
-            $this->semValue = new Scalar\String_('', $attrs);
+                 $this->semValue = new Scalar\MagicConst\Namespace_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             438 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = $this->parseDocString($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes, $this->startAttributeStack[$stackPos-(3-3)] + $this->endAttributeStack[$stackPos-(3-3)], false);
             },
             439 => function ($stackPos) {
-                 $this->semValue = new Expr\ClassConstFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = $this->parseDocString($this->semStack[$stackPos-(2-1)], '', $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes, $this->startAttributeStack[$stackPos-(2-2)] + $this->endAttributeStack[$stackPos-(2-2)], false);
             },
             440 => function ($stackPos) {
-                 $this->semValue = new Expr\ConstFetch($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             441 => function ($stackPos) {
-                 $this->semValue = new Expr\Array_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\ClassConstFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             442 => function ($stackPos) {
-                 $this->semValue = new Expr\Array_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\ConstFetch($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             443 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Expr\Array_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             444 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\BooleanOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Array_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             445 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\BooleanAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             446 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\LogicalOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\BooleanOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             447 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\LogicalAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\BooleanAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             448 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\LogicalXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\LogicalOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             449 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\BitwiseOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\LogicalAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             450 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\LogicalXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             451 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\BitwiseXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\BitwiseOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             452 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\Concat($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             453 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\Plus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\BitwiseXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             454 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\Minus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\Concat($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             455 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\Mul($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\Plus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             456 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\Div($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\Minus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             457 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\Mod($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\Mul($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             458 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\ShiftLeft($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\Div($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             459 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\ShiftRight($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\Mod($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             460 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\Pow($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\ShiftLeft($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             461 => function ($stackPos) {
-                 $this->semValue = new Expr\UnaryPlus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\ShiftRight($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             462 => function ($stackPos) {
-                 $this->semValue = new Expr\UnaryMinus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\Pow($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             463 => function ($stackPos) {
-                 $this->semValue = new Expr\BooleanNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\UnaryPlus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             464 => function ($stackPos) {
-                 $this->semValue = new Expr\BitwiseNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\UnaryMinus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             465 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\Identical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BooleanNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             466 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\NotIdentical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BitwiseNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             467 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\Equal($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\Identical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             468 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\NotEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\NotIdentical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             469 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\Smaller($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\Equal($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             470 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\SmallerOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\NotEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             471 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\Greater($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\Smaller($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             472 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\GreaterOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\SmallerOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             473 => function ($stackPos) {
-                 $this->semValue = new Expr\Ternary($this->semStack[$stackPos-(5-1)], $this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-5)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\Greater($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             474 => function ($stackPos) {
-                 $this->semValue = new Expr\Ternary($this->semStack[$stackPos-(4-1)], null, $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\GreaterOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             475 => function ($stackPos) {
-                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Ternary($this->semStack[$stackPos-(5-1)], $this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-5)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
             },
             476 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(3-2)];
+                 $this->semValue = new Expr\Ternary($this->semStack[$stackPos-(4-1)], null, $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             477 => function ($stackPos) {
-                 $this->semValue = new Expr\ConstFetch($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             478 => function ($stackPos) {
-                 $this->semValue = new Expr\ClassConstFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(3-2)];
             },
             479 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Expr\ConstFetch($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             480 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Expr\ClassConstFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             481 => function ($stackPos) {
-                 $attrs = $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes; $attrs['kind'] = Scalar\String_::KIND_DOUBLE_QUOTED;
-            foreach ($this->semStack[$stackPos-(3-2)] as $s) { if ($s instanceof Node\Scalar\EncapsedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '"', true); } }; $this->semValue = new Scalar\Encapsed($this->semStack[$stackPos-(3-2)], $attrs);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             482 => function ($stackPos) {
-                 $attrs = $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes; $attrs['kind'] = strpos($this->semStack[$stackPos-(3-1)], "'") === false ? Scalar\String_::KIND_HEREDOC : Scalar\String_::KIND_NOWDOC; preg_match('/\A[bB]?<<<[ \t]*[\'"]?([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)[\'"]?(?:\r\n|\n|\r)\z/', $this->semStack[$stackPos-(3-1)], $matches); $attrs['docLabel'] = $matches[1];;
-            foreach ($this->semStack[$stackPos-(3-2)] as $s) { if ($s instanceof Node\Scalar\EncapsedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, null, true); } } $s->value = preg_replace('~(\r\n|\n|\r)\z~', '', $s->value); if ('' === $s->value) array_pop($this->semStack[$stackPos-(3-2)]);; $this->semValue = new Scalar\Encapsed($this->semStack[$stackPos-(3-2)], $attrs);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             483 => function ($stackPos) {
-                 $this->semValue = array();
+                 $attrs = $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes; $attrs['kind'] = Scalar\String_::KIND_DOUBLE_QUOTED;
+            foreach ($this->semStack[$stackPos-(3-2)] as $s) { if ($s instanceof Node\Scalar\EncapsedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '"', true); } }; $this->semValue = new Scalar\Encapsed($this->semStack[$stackPos-(3-2)], $attrs);
             },
             484 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = $this->parseDocString($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes, $this->startAttributeStack[$stackPos-(3-3)] + $this->endAttributeStack[$stackPos-(3-3)], true);
             },
             485 => function ($stackPos) {
-                $this->semValue = $this->semStack[$stackPos];
+                 $this->semValue = array();
             },
             486 => function ($stackPos) {
-                $this->semValue = $this->semStack[$stackPos];
+                 $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             487 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                $this->semValue = $this->semStack[$stackPos];
             },
             488 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                $this->semValue = $this->semStack[$stackPos];
             },
             489 => function ($stackPos) {
-                 $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(3-3)], $this->semStack[$stackPos-(3-1)], false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             490 => function ($stackPos) {
-                 $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             491 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(3-3)], $this->semStack[$stackPos-(3-1)], false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             492 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             493 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
@@ -2445,64 +2447,64 @@ protected function initReduceCallbacks() {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             495 => function ($stackPos) {
-                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-5)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             496 => function ($stackPos) {
-                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             497 => function ($stackPos) {
-                 $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-5)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
             },
             498 => function ($stackPos) {
-                 $this->semValue = new Expr\MethodCall($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             499 => function ($stackPos) {
-                 $this->semValue = new Expr\FuncCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             500 => function ($stackPos) {
-                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\MethodCall($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             501 => function ($stackPos) {
-                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\FuncCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             502 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             503 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(3-2)];
+                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             504 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             505 => function ($stackPos) {
-                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(3-2)];
             },
             506 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             507 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             508 => function ($stackPos) {
-                 $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             509 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             510 => function ($stackPos) {
-                 $var = substr($this->semStack[$stackPos-(1-1)], 1); $this->semValue = \is_string($var) ? new Node\VarLikeIdentifier($var, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes) : $var;
+                 $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             511 => function ($stackPos) {
-                 $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             512 => function ($stackPos) {
-                 $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(6-1)], $this->semStack[$stackPos-(6-5)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
+                 $var = substr($this->semStack[$stackPos-(1-1)], 1); $this->semValue = \is_string($var) ? new Node\VarLikeIdentifier($var, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes) : $var;
             },
             513 => function ($stackPos) {
-                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             514 => function ($stackPos) {
-                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(6-1)], $this->semStack[$stackPos-(6-5)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
             },
             515 => function ($stackPos) {
                  $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
@@ -2511,117 +2513,126 @@ protected function initReduceCallbacks() {
                  $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             517 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             518 => function ($stackPos) {
-                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             519 => function ($stackPos) {
-                 $this->semValue = null;
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             520 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             521 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = null;
             },
             522 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(3-2)];
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             523 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             524 => function ($stackPos) {
-                 $this->semValue = new Expr\Error($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->errorState = 2;
+                 $this->semValue = $this->semStack[$stackPos-(3-2)];
             },
             525 => function ($stackPos) {
-                 $this->semValue = new Expr\List_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             526 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 $this->semValue = new Expr\Error($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->errorState = 2;
             },
             527 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semValue = new Expr\List_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             528 => function ($stackPos) {
-                 $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             529 => function ($stackPos) {
-                 $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             530 => function ($stackPos) {
-                 $this->semValue = null;
+                 $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             531 => function ($stackPos) {
-                 $this->semValue = array();
+                 $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             532 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = null;
             },
             533 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 $this->semValue = array();
             },
             534 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             535 => function ($stackPos) {
-                 $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(3-3)], $this->semStack[$stackPos-(3-1)], false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             536 => function ($stackPos) {
-                 $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             537 => function ($stackPos) {
-                 $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(4-4)], $this->semStack[$stackPos-(4-1)], true, $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(3-3)], $this->semStack[$stackPos-(3-1)], false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             538 => function ($stackPos) {
-                 $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(2-2)], null, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             539 => function ($stackPos) {
-                 $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(4-4)], $this->semStack[$stackPos-(4-1)], true, $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             540 => function ($stackPos) {
-                 $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(2-2)], null, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             541 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(2-2)], null, false, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             542 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)]);
+                 $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             543 => function ($stackPos) {
-                 $this->semValue = new Scalar\EncapsedStringPart($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             544 => function ($stackPos) {
-                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             545 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = array($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)]);
             },
             546 => function ($stackPos) {
-                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = new Scalar\EncapsedStringPart($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             547 => function ($stackPos) {
-                 $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             548 => function ($stackPos) {
-                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             549 => function ($stackPos) {
-                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             550 => function ($stackPos) {
-                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-4)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             551 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(3-2)];
+                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             552 => function ($stackPos) {
-                 $this->semValue = new Scalar\String_($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             553 => function ($stackPos) {
-                 $this->semValue = $this->parseNumString($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-4)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
             },
             554 => function ($stackPos) {
+                 $this->semValue = $this->semStack[$stackPos-(3-2)];
+            },
+            555 => function ($stackPos) {
+                 $this->semValue = new Scalar\String_($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+            },
+            556 => function ($stackPos) {
+                 $this->semValue = $this->parseNumString($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+            },
+            557 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
         ];
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Parser/Php7.php b/vendor/nikic/php-parser/lib/PhpParser/Parser/Php7.php
index 24ce4d14b5..75c8305fa0 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Parser/Php7.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Parser/Php7.php
@@ -17,17 +17,17 @@
  */
 class Php7 extends \PhpParser\ParserAbstract
 {
-    protected $tokenToSymbolMapSize = 392;
-    protected $actionTableSize = 940;
-    protected $gotoTableSize = 486;
+    protected $tokenToSymbolMapSize = 394;
+    protected $actionTableSize = 964;
+    protected $gotoTableSize = 508;
 
-    protected $invalidSymbol = 157;
+    protected $invalidSymbol = 159;
     protected $errorSymbol = 1;
     protected $defaultAction = -32766;
     protected $unexpectedTokenRule = 32767;
 
-    protected $YY2TBLSTATE = 336;
-    protected $numNonLeafStates = 581;
+    protected $YY2TBLSTATE = 348;
+    protected $numNonLeafStates = 602;
 
     protected $symbolToName = array(
         "EOF",
@@ -58,6 +58,7 @@ class Php7 extends \PhpParser\ParserAbstract
         "T_SL_EQUAL",
         "T_SR_EQUAL",
         "T_POW_EQUAL",
+        "T_COALESCE_EQUAL",
         "'?'",
         "':'",
         "T_COALESCE",
@@ -133,6 +134,7 @@ class Php7 extends \PhpParser\ParserAbstract
         "T_CONTINUE",
         "T_GOTO",
         "T_FUNCTION",
+        "T_FN",
         "T_CONST",
         "T_RETURN",
         "T_TRY",
@@ -190,449 +192,462 @@ class Php7 extends \PhpParser\ParserAbstract
     );
 
     protected $tokenToSymbol = array(
-            0,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,   53,  155,  157,  156,   52,   35,  157,
-          151,  152,   50,   47,    7,   48,   49,   51,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,   29,  148,
-           41,   15,   43,   28,   65,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,   67,  157,  154,   34,  157,  153,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  149,   33,  150,   55,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-          157,  157,  157,  157,  157,  157,    1,    2,    3,    4,
+            0,  159,  159,  159,  159,  159,  159,  159,  159,  159,
+          159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
+          159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
+          159,  159,  159,   54,  157,  159,  158,   53,   36,  159,
+          153,  154,   51,   48,    7,   49,   50,   52,  159,  159,
+          159,  159,  159,  159,  159,  159,  159,  159,   30,  150,
+           42,   15,   44,   29,   66,  159,  159,  159,  159,  159,
+          159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
+          159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
+          159,   68,  159,  156,   35,  159,  155,  159,  159,  159,
+          159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
+          159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
+          159,  159,  159,  151,   34,  152,   56,  159,  159,  159,
+          159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
+          159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
+          159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
+          159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
+          159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
+          159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
+          159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
+          159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
+          159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
+          159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
+          159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
+          159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
+          159,  159,  159,  159,  159,  159,    1,    2,    3,    4,
             5,    6,    8,    9,   10,   11,   12,   13,   14,   16,
            17,   18,   19,   20,   21,   22,   23,   24,   25,   26,
-           27,   30,   31,   32,   36,   37,   38,   39,   40,   42,
-           44,   45,   46,   54,   56,   57,   58,   59,   60,   61,
-           62,   63,   64,   66,   68,   69,   70,   71,   72,   73,
-           74,   75,   76,   77,   78,   79,   80,   81,  157,  157,
-           82,   83,   84,   85,   86,   87,   88,   89,   90,   91,
+           27,   28,   31,   32,   33,   37,   38,   39,   40,   41,
+           43,   45,   46,   47,   55,   57,   58,   59,   60,   61,
+           62,   63,   64,   65,   67,   69,   70,   71,   72,   73,
+           74,   75,   76,   77,   78,   79,   80,   81,   82,  159,
+          159,   83,   84,   85,   86,   87,   88,   89,   90,   91,
            92,   93,   94,   95,   96,   97,   98,   99,  100,  101,
           102,  103,  104,  105,  106,  107,  108,  109,  110,  111,
           112,  113,  114,  115,  116,  117,  118,  119,  120,  121,
           122,  123,  124,  125,  126,  127,  128,  129,  130,  131,
-          132,  133,  134,  135,  136,  137,  157,  157,  157,  157,
-          157,  157,  138,  139,  140,  141,  142,  143,  144,  145,
-          146,  147
+          132,  133,  134,  135,  136,  137,  138,  139,  159,  159,
+          159,  159,  159,  159,  140,  141,  142,  143,  144,  145,
+          146,  147,  148,  149
     );
 
     protected $action = array(
-          586,  587,  588,  589,  590,  218,  591,  592,  593,  629,
-          630,  665,   32,  102,  103,  104,  105,  106,  107,  108,
-          109,  110,  111,  112,  113,-32766,-32766,-32766,  881,  882,
-          883,  880,  879,  878,    0,-32766,-32766,-32766,-32766,-32766,
-        -32766,  663,  824,  117,   24,-32766,  428,-32766,-32766,-32766,
-        -32766,-32766,  594,  914,  916,-32766,    9,-32766,-32766,-32766,
-        -32766,-32766,-32766,  857,  250,  350,  595,  596,  597,  598,
-          599,  600,  601,  119,  250,  661,  881,  882,  883,  880,
-          879,  878,  602,  603,  604,  605,  606,  607,  608,  609,
-          610,  611,  612,  632,  633,  634,  635,  636,  624,  625,
-          626,  627,  628,  613,  614,  615,  616,  617,  618,  619,
-          655,  656,  657,  658,  659,  660,  620,  621,  622,  623,
-          653,  644,  642,  643,  639,  640,  800,  631,  637,  638,
-          645,  646,  648,  647,  649,  650,   45,   46,  405,   47,
-           48,  641,  652,  651, -233,   49,   50,  231,   51,-32767,
-        -32767,-32767,-32767,   93,   94,   95,   96,   97,-32766,-32766,
-        -32766,   42, -451,   25, -293, -293,  828,  829,   98,   99,
-          100,  260,  241,  230, -453, 1047,  828,  829,-32766, 1013,
-          873,   52,   53,  486,  101,  670,  242,   54, -238,   55,
-          223,  224,   56,   57,   58,   59,   60,   61,   62,   63,
-         -452,   25,  234,   64,  357,-32766,-32766,-32766,  990, 1014,
-         1015,  407, -271, 1047, -488,  665,  265, 1013,-32766,-32766,
-        -32766,  746,  248, -451,  250,-32766,  420,-32766,-32766,-32766,
-        -32766,  388, -258, 1078,  277, -453,  365, -451,-32766, 1077,
-        -32766,-32766,-32766,  116, -451,  801,  291,   68,  665, -453,
-          428,  292,  267, 1065,  417,  418, -453, -489, -456,  373,
-          997, -452,  557,  419,  420, 1050, 1019, 1020, 1021, 1022,
-         1016, 1017,  245,  764, -451, -452,  217,  429, 1023, 1018,
-          362,  295, -452, 1047, -455,   66, 1009,  257,-32766,  262,
-          267,  406, -136, -136, -136,   -4,  746,  686,  687,  299,
-          668,  735,  266, 1090,   37,   20,  408, -136,  409, -136,
-          410, -136,  411, -136,  429,  412,  229,  362,  490,   38,
-           39,  358,  359,  355,   40,  413,  828,  829,   65,  663,
-           44,  290,  669,  414,  415, -451, -492,   33, 1047,  416,
-          122,  346,  721,  769,  360,  361,  353, 1099,  -91, -451,
-         1100,  389,-32766,-32766,-32766,  354, -451,  121,  665, -488,
-          267,   28,  226,  379, 1047,  228,  406,  746,  748,  555,
-         -136,  990,-32766,  219,-32766,-32766,  735, -258,  233,   37,
-           20,  408,  351,  409, -495,  410, -495,  411,  665,  451,
-          412,  249,  232,  428,   38,   39,  358,  359,  342,   40,
-          413,  125, -489,   65,  256,  294,  290,  665,  414,  415,
-           25,   30,  118,   74,  416,  267,  356,  678,  769,  360,
-          361,  568, 1047,  428,   25,  127, 1013,  540,  123,-32766,
-        -32766,-32766, -176,  834,  124, -177, 1047,  406,  279,  746,
-         1013,  267,  428,  748,  555,   -4, 1027,  735,  665,  474,
-           37,   20,  408,  281,  409,  990,  410,  115,  411,-32766,
-        -32766,  412, -218, -218, -218,   38,   39,  358,  359,  990,
-           40,  413,  419,  420,   65, -491,  225,  290,  229,  414,
-          415, -492,  569,  428,  114,  416,  419,  420,  721,  769,
-          360,  361,  131,  541,   68,  133,  362,  130,  317,  267,
-          859,  134,  227,  529,  530,  997,  517,   21,   68,  406,
-           95,   96,   97,  267,  748,  555, -218,  120,  665,  735,
-          665,  129,   37,   20,  408,  745,  409,  244,  410,  -82,
-          411,  686,  687,  412, -217, -217, -217,   38,   39,  358,
-          359,  572,   40,  413,  665,  760,   65,  241,  746,  290,
-          101,  414,  415,  428,   43,  428, 1066,  416,  398,    8,
-          721,  769,  360,  361,  508,  509,  828,  829,  128,   75,
-           76,   77,  858,  578,  665, 1101,  570, -176, -291,  428,
-         -177,  537,  666, 1047,  523,  663,  748,  555, -217,   31,
-          123,   78,   79,   80,   81,   82,   83,   84,   85,   86,
-           87,   88,   89,   90,   91,   92,   93,   94,   95,   96,
-           97,   98,   99,  100,  887,  241,  990,  746,  406,  668,
-         -491,  455,  460,-32766,  518,  532,  -80,  101,  735,  533,
-          370,   37,   20,  408,  549,  409,  377,  410,   10,  411,
-          507,  990,  412,  770,  524,  566,   38,   39,  358,  746,
-          771,   40,  413,  261, 1029,   65,  264, 1026,  290,   12,
-          267,  293,  373, -410,  258,    5,  416,  970,  347,    0,
-          335,  348,  331,  259,    0,    0,    0,  563,    0,    0,
-            0,    0,    0,    0,    0,    0,    0,  406,    0,    0,
-            0,    0,    0,    0,    0,  748,  555,  735,  330,  324,
-           37,   20,  408,  457,  409,  762,  410,  853,  411,  556,
-          870,  412,  726,  577,   36,   38,   39,  358,  746,  406,
-           40,  413,   35,  576,   65,  803,  863,  290,  866,  735,
-          787,  865,   37,   20,  408,  416,  409,  862,  410,  782,
-          411,  724,  795,  412,  784,  854,  561,   38,   39,  358,
-          746,  794,   40,  413,  864,  793,   65,  558,  341,  290,
-          340,  560,  276,  275,  748,  555,  571,  416,  567,  565,
-          564,  559,  514,  792,  753,  763,  755,  689,  562,  978,
-          766, 1097, 1048,  722, 1096, 1098,  681,  768,  406,  746,
-          680,  690,  767,  691,  688, 1095,  786,  555,  735, 1063,
-         1041,   37,   20,  408, 1055,  409, 1060,  410,  573,  411,
-           41,   34,  412,   27,   26,   23,   38,   39,  358, -454,
-          406,   40,  413, -455, -456,   65, -478, -480,  290,  237,
-          735,  345,  343,   37,   20,  408,  416,  409,  278,  410,
-          240,  411,  239,  238,  412,  222,  221,  135,   38,   39,
-          358,  132,  126,   40,  413,   73,   72,   65,   71,  406,
-          290,   70,   69,   67, 1028,  748,  555,  954,  416,  735,
-          957,  548,   37,   20,  408,  503,  409,  484,  410,  313,
-          411,  252,   22,  412,   18,   13, -236,   38,   39,  358,
-          982,  835,   40,  413, 1011,  953,   65,  748,  555,  290,
-        -32766,-32766,-32766, 1001,  546,  403,  396,  416,  394,  390,
-          314,   19,   17,   16,  -91,   15,   14, -233, -234,    0,
-        -32766, -422,-32766,-32766,-32766,-32766,-32766,-32766,-32767,-32767,
-        -32767,-32767,-32767, 1010, 1093, 1054,  748,  555, 1040, 1039
+          607,  608,  609,  610,  611,  685,  612,  613,  614,  650,
+          651,    0,   32,  103,  104,  105,  106,  107,  108,  109,
+          110,  111,  112,  113,  114,  115,-32767,-32767,-32767,-32767,
+           94,   95,   96,   97,   98,-32766,-32766,-32766,  687,  491,
+         -497,  904,  905,  906,  903,  902,  901,  904,  905,  906,
+          903,  902,  901,  615,  938,  940,-32766,    9,-32766,-32766,
+        -32766,-32766,-32766,-32766,-32766,-32766,-32766,  616,  617,  618,
+          619,  620,  621,  622,  333, 1104,  683,-32766,-32766,-32766,
+          846, 1103,  119,  623,  624,  625,  626,  627,  628,  629,
+          630,  631,  632,  633,  653,  654,  655,  656,  657,  645,
+          646,  647,  675,  648,  649,  634,  635,  636,  637,  638,
+          639,  640,  677,  678,  679,  680,  681,  682,  641,  642,
+          643,  644,  674,  665,  663,  664,  660,  661,  402,  652,
+          658,  659,  666,  667,  669,  668,  670,  671,   45,   46,
+          421,   47,   48,  662,  673,  672,   27,   49,   50,  233,
+           51,-32766,-32766,-32766,   96,   97,   98,   24,-32766,-32766,
+        -32766, -458,  261,  121, 1023,-32766,-32766,-32766, 1091, 1073,
+        -32766,-32766,-32766, 1039,-32766,-32766,-32766,-32766,-32766,-32766,
+         -496,-32766,-32766,-32766,   52,   53,-32766, -497,-32766,-32766,
+           54,  687,   55,  231,  232,   56,   57,   58,   59,   60,
+           61,   62,   63, 1016,   24,  242,   64,  369,-32766,-32766,
+        -32766,  226, 1040, 1041,  423, 1076, 1073, -493,  880,  508,
+         1039,  436, 1023, -458,  768, 1073,  239,  333, -500,-32766,
+         -500,-32766,-32766,-32766,-32766,  856,  253, -458,  276,  378,
+          372,  786,   68, 1073, -458,  685, -461,  278, 1126,  403,
+          289, 1127,  288,   99,  100,  101,  303,  252,  433,  434,
+          822,-32766,   69,  261,  237,  850,  851,  435,  436,  102,
+         1045, 1046, 1047, 1048, 1042, 1043,  256, 1016, -456, -456,
+          306,  444, 1049, 1044,  375,  133,  561, -239,  363,   66,
+          237,  268,  692,  273,  278,  422, -137, -137, -137,   -4,
+          768, 1073,  310,  278, 1035,  757,  687,  362,   37,   20,
+          424, -137,  425, -137,  426, -137,  427, -137,  127,  428,
+         -295,  278, -295,   38,   39,  370,  371, -496,  271,   40,
+          429,  277,  687,   65,  261, 1016,  302,  896,  430,  431,
+         -456, -456,  333, -494,  432,   44,   42,  743,  791,  373,
+          374, -457, -234,  562, -456, -456,  375,-32766,-32766,-32766,
+          882, -456, -456,  124, -493,   75,  850,  851,  333, -273,
+         -260,  422,  768,  770,  576, -137,  261,  125,-32766,  278,
+          823,  757,  857, 1073,   37,   20,  424,  240,  425, -178,
+          426,  589,  427,  393,  503,  428,  687,  235,  241,   38,
+           39,  370,  371,  125,  354,   40,  429,  260,  259,   65,
+          267,  687,  302, -457,  430,  431, -296, -177, -296,   24,
+          432,  305,  365,  700,  791,  373,  374, -457,  120,  118,
+           24, 1073,   30,  366, -457, 1039, -460,  850,  851,  687,
+          367,  691, 1073,  422,  291,  768, 1039,  333,  -83,  770,
+          576,   -4,  467,  757,  126,  368,   37,   20,  424,  -92,
+          425,  278,  426,  444,  427, 1016,  375,  428, -219, -219,
+         -219,   38,   39,  370,  371,  333, 1016,   40,  429,  850,
+          851,   65,  435,  436,  302,  236,  430,  431,  225,  708,
+         -494,  709,  432,  435,  436,  743,  791,  373,  374,  690,
+          387,  136, 1117,  578,   68,  413,  238,    8,   33,  278,
+         1053,  227,  708,  687,  709,   68,  422, -260,  535,   21,
+          278,  770,  576, -219,  550,  551,  757,  687,  116,   37,
+           20,  424,  117,  425,  358,  426, -178,  427,  132,  328,
+          428, -218, -218, -218,   38,   39,  370,  371,  687,  333,
+           40,  429,  122,  768,   65,  383,  384,  302,  123,  430,
+          431,   29,  234,  333, -177,  432,  528,  529,  743,  791,
+          373,  374,  129,  850,  851,  135,   76,   77,   78, 1092,
+          881,  599,  582,  254,  333,  137,  138,  782,  590,  593,
+          293,  767,  131,  252,  770,  576, -218,   31,  102,   79,
+           80,   81,   82,   83,   84,   85,   86,   87,   88,   89,
+           90,   91,   92,   93,   94,   95,   96,   97,   98,   99,
+          100,  101,   43,  252,  422,  558,  768,  687,  690,-32766,
+          471,  130,  476,  685,  757,  102,  553,   37,   20,  424,
+          526,  425,  688,  426,  272,  427,  910, 1016,  428,  792,
+         1128,  793,   38,   39,  370,  583,  269,  570,   40,  429,
+          536, 1052,   65,  275, 1055,  302, -415,  541,  270,  -81,
+           10,  391,  768,  432,  542,  554,  784,  594,    5,    0,
+           12,  577,    0,    0,  304,    0,    0,    0,    0,  336,
+          342,    0,    0,    0,    0,    0,    0,  422,    0,    0,
+            0,  584,  770,  576,    0,    0,    0,  757,    0,    0,
+           37,   20,  424,  343,  425,    0,  426,    0,  427,  768,
+            0,  428,    0,    0,    0,   38,   39,  370,  347,  387,
+          473,   40,  429,  359,  360,   65,  744,   35,  302,   36,
+          597,  598,  748,  422,  825,  809,  432,  816,  587,  876,
+          877,  806,  817,  757,  746,  804,   37,   20,  424,  885,
+          425,  888,  426,  889,  427,  768,  886,  428,  887,  893,
+         -485,   38,   39,  370,  579,  770,  576,   40,  429,  581,
+          585,   65,  586,  588,  302,  592,  286,  287,  352,  353,
+          422,  580,  432, 1123,  591, 1125,  703,  790,  702,  712,
+          757,  789,  713,   37,   20,  424,  710,  425, 1124,  426,
+          788,  427,  768, 1004,  428,  711,  777,  785,   38,   39,
+          370,  808,  576, -483,   40,  429,  775,  814,   65,  815,
+         1122,  302, 1074, 1067, 1081, 1086,  422, 1089, -237,  432,
+         -461, -460, -459,   23,   25,   28,  757,   34,   41,   37,
+           20,  424,   67,  425,   70,  426,   71,  427,   72,   73,
+          428,   74,  128,  134,   38,   39,  370,  139,  770,  576,
+           40,  429,  229,  230,   65,  246,  247,  302,  248,  249,
+          250,  251,  290,  422,  355,  432,  357, -427, -235, -234,
+           14,   15,   16,  757,   17,   19,   37,   20,  424,  325,
+          425,  404,  426,  406,  427,  409,  411,  428,  412,  419,
+          567,   38,   39,  370,  770,  576, 1027,   40,  429,  977,
+         1037,   65,  858, 1008,  302,-32766,-32766,-32766,  -92,   13,
+           18,   22,  432,  263,  324,  501,  522,  569,  981,  978,
+            0,  994,    0, 1036, 1065, 1066,-32766, 1080,-32766,-32766,
+        -32766,-32766,-32766,-32766,-32767,-32767,-32767,-32767,-32767, 1120,
+          532,  770,  576, 1054
     );
 
     protected $actionCheck = array(
-            2,    3,    4,    5,    6,   13,    8,    9,   10,   11,
-           12,   77,   15,   16,   17,   18,   19,   20,   21,   22,
-           23,   24,   25,   26,   27,    8,    9,   10,  112,  113,
-          114,  115,  116,  117,    0,    8,    9,   10,    8,    9,
-           10,   77,    1,   13,    7,   28,  112,   30,   31,   32,
-           33,   34,   54,   56,   57,   28,    7,   30,   31,   32,
-           33,   34,   35,    1,   28,    7,   68,   69,   70,   71,
-           72,   73,   74,    7,   28,   77,  112,  113,  114,  115,
-          116,  117,   84,   85,   86,   87,   88,   89,   90,   91,
+            2,    3,    4,    5,    6,   78,    8,    9,   10,   11,
+           12,    0,   15,   16,   17,   18,   19,   20,   21,   22,
+           23,   24,   25,   26,   27,   28,   42,   43,   44,   45,
+           46,   47,   48,   49,   50,    8,    9,   10,   78,   79,
+            7,  114,  115,  116,  117,  118,  119,  114,  115,  116,
+          117,  118,  119,   55,   57,   58,   29,    7,   31,   32,
+           33,   34,   35,   36,    8,    9,   10,   69,   70,   71,
+           72,   73,   74,   75,  114,    1,   78,    8,    9,   10,
+            1,    7,   13,   85,   86,   87,   88,   89,   90,   91,
            92,   93,   94,   95,   96,   97,   98,   99,  100,  101,
           102,  103,  104,  105,  106,  107,  108,  109,  110,  111,
           112,  113,  114,  115,  116,  117,  118,  119,  120,  121,
-          122,  123,  124,  125,  126,  127,   29,  129,  130,  131,
-          132,  133,  134,  135,  136,  137,    2,    3,    4,    5,
-            6,  143,  144,  145,  152,   11,   12,    7,   14,   41,
-           42,   43,   44,   45,   46,   47,   48,   49,    8,    9,
-           10,   67,   67,   67,  102,  103,  130,  131,   50,   51,
-           52,  109,   54,   35,   67,   79,  130,  131,   28,   83,
-          118,   47,   48,    1,   66,    1,    7,   53,  152,   55,
-           56,   57,   58,   59,   60,   61,   62,   63,   64,   65,
-           67,   67,   68,   69,   70,    8,    9,   10,  112,   75,
-           76,   77,  150,   79,    7,   77,    7,   83,    8,    9,
-           10,    1,  128,  128,   28,   28,  130,   30,   31,   32,
-           33,   29,    7,    1,    7,  128,  102,  142,   28,    7,
-           30,   31,   32,  149,  149,  148,  112,  151,   77,  142,
-          112,    7,  156,    1,  120,  121,  149,    7,  151,  146,
-            1,  128,  149,  129,  130,    1,  132,  133,  134,  135,
-          136,  137,  138,    1,   67,  142,   94,  143,  144,  145,
-          146,    7,  149,   79,  151,  151,    1,  153,    8,  155,
-          156,   71,   72,   73,   74,    0,    1,  102,  103,    7,
-           79,   81,   67,   82,   84,   85,   86,   87,   88,   89,
-           90,   91,   92,   93,  143,   95,   35,  146,   48,   99,
-          100,  101,  102,    7,  104,  105,  130,  131,  108,   77,
-           67,  111,  148,  113,  114,  128,    7,   13,   79,  119,
-           29,  146,  122,  123,  124,  125,    7,   77,  152,  142,
-           80,  149,    8,    9,   10,    7,  149,   15,   77,  152,
-          156,  140,  141,  128,   79,   35,   71,    1,  148,  149,
-          150,  112,   28,   13,   30,   31,   81,  152,   35,   84,
-           85,   86,  123,   88,  152,   90,  154,   92,   77,   82,
-           95,  128,   35,  112,   99,  100,  101,  102,  103,  104,
-          105,  149,  152,  108,  109,  142,  111,   77,  113,  114,
-           67,    7,  149,  149,  119,  156,    7,  122,  123,  124,
-          125,  149,   79,  112,   67,   15,   83,   77,  147,    8,
-            9,   10,    7,  152,  149,    7,   79,   71,  143,    1,
-           83,  156,  112,  148,  149,  150,  139,   81,   77,   78,
-           84,   85,   86,   33,   88,  112,   90,   15,   92,    8,
-            9,   95,   96,   97,   98,   99,  100,  101,  102,  112,
-          104,  105,  129,  130,  108,    7,   35,  111,   35,  113,
-          114,  152,   29,  112,   15,  119,  129,  130,  122,  123,
-          124,  125,   15,  143,  151,   15,  146,   97,   98,  156,
-          150,   15,   35,   72,   73,    1,   72,   73,  151,   71,
-           47,   48,   49,  156,  148,  149,  150,   15,   77,   81,
-           77,   29,   84,   85,   86,   29,   88,   29,   90,   29,
-           92,  102,  103,   95,   96,   97,   98,   99,  100,  101,
-          102,   29,  104,  105,   77,   35,  108,   54,    1,  111,
-           66,  113,  114,  112,   67,  112,  152,  119,  102,  103,
-          122,  123,  124,  125,  106,  107,  130,  131,   67,    8,
-            9,   10,  148,  149,   77,   80,   29,  152,   79,  112,
-          152,   74,   77,   79,   93,   77,  148,  149,  150,   28,
-          147,   30,   31,   32,   33,   34,   35,   36,   37,   38,
-           39,   40,   41,   42,   43,   44,   45,   46,   47,   48,
-           49,   50,   51,   52,   79,   54,  112,    1,   71,   79,
-          152,   82,   86,   82,   87,   91,   94,   66,   81,   96,
-          102,   84,   85,   86,   89,   88,   94,   90,   94,   92,
-          109,  112,   95,  123,   96,   29,   99,  100,  101,    1,
-          123,  104,  105,  110,  139,  108,  126,  139,  111,  142,
-          156,  142,  146,  142,  126,  142,  119,  153,  146,   -1,
-          146,  146,  146,  127,   -1,   -1,   -1,   29,   -1,   -1,
-           -1,   -1,   -1,   -1,   -1,   -1,   -1,   71,   -1,   -1,
-           -1,   -1,   -1,   -1,   -1,  148,  149,   81,  146,  146,
-           84,   85,   86,  146,   88,  147,   90,  148,   92,  149,
-          148,   95,  148,  148,  148,   99,  100,  101,    1,   71,
-          104,  105,  148,  148,  108,  148,  148,  111,  148,   81,
-          148,  148,   84,   85,   86,  119,   88,  148,   90,  148,
-           92,  148,  148,   95,  148,  148,   29,   99,  100,  101,
-            1,  148,  104,  105,  148,  150,  108,  149,  149,  111,
-          149,  149,  149,  149,  148,  149,  149,  119,  149,  149,
-          149,  149,  154,  150,  150,  150,  150,  150,   29,  150,
-          150,  150,  150,  150,  150,  150,  150,  150,   71,    1,
-          150,  150,  150,  150,  150,  150,  148,  149,   81,  150,
-          150,   84,   85,   86,  150,   88,  150,   90,  150,   92,
-          151,  151,   95,  151,  151,  151,   99,  100,  101,  151,
-           71,  104,  105,  151,  151,  108,  151,  151,  111,  151,
-           81,  151,  151,   84,   85,   86,  119,   88,  151,   90,
-          151,   92,  151,  151,   95,  151,  151,  151,   99,  100,
-          101,  151,  151,  104,  105,  151,  151,  108,  151,   71,
-          111,  151,  151,  151,  155,  148,  149,  152,  119,   81,
-          152,  152,   84,   85,   86,  152,   88,  152,   90,  152,
-           92,  152,  152,   95,  152,  152,  152,   99,  100,  101,
-          152,  152,  104,  105,  152,  152,  108,  148,  149,  111,
-            8,    9,   10,  152,  152,  152,  152,  119,  152,  152,
-          152,  152,  152,  152,  152,  152,  152,  152,  152,   -1,
-           28,  153,   30,   31,   32,   33,   34,   35,   36,   37,
-           38,   39,   40,  154,  154,  154,  148,  149,  154,  154
+          122,  123,  124,  125,  126,  127,  128,  129,   30,  131,
+          132,  133,  134,  135,  136,  137,  138,  139,    2,    3,
+            4,    5,    6,  145,  146,  147,    7,   11,   12,   36,
+           14,    8,    9,   10,   48,   49,   50,   68,    8,    9,
+           10,   68,   29,    7,    1,    8,    9,   10,    1,   80,
+            8,    9,   29,   84,   31,   32,   33,   34,   35,   29,
+            7,   31,   32,   33,   48,   49,   29,  154,   31,   32,
+           54,   78,   56,   57,   58,   59,   60,   61,   62,   63,
+           64,   65,   66,  114,   68,   69,   70,   71,    8,    9,
+           10,   13,   76,   77,   78,    1,   80,    7,    1,   49,
+           84,  132,    1,  130,    1,   80,    7,  114,  154,   29,
+          156,   31,   32,   33,   34,    1,    7,  144,    7,  103,
+          104,    1,  153,   80,  151,   78,  153,  158,   78,  151,
+          114,   81,    7,   51,   52,   53,    7,   55,  122,  123,
+           30,    8,  149,   29,   36,  132,  133,  131,  132,   67,
+          134,  135,  136,  137,  138,  139,  140,  114,   68,   68,
+            7,  145,  146,  147,  148,   13,   78,  154,  125,  153,
+           36,  155,    1,  157,  158,   72,   73,   74,   75,    0,
+            1,   80,    7,  158,    1,   82,   78,    7,   85,   86,
+           87,   88,   89,   90,   91,   92,   93,   94,  151,   96,
+          103,  158,  105,  100,  101,  102,  103,  154,  111,  106,
+          107,   68,   78,  110,   29,  114,  113,  120,  115,  116,
+          130,  130,  114,    7,  121,   68,   68,  124,  125,  126,
+          127,   68,  154,  145,  144,  144,  148,    8,    9,   10,
+          152,  151,  151,   30,  154,  151,  132,  133,  114,  152,
+            7,   72,    1,  150,  151,  152,   29,  149,   29,  158,
+          150,   82,  154,   80,   85,   86,   87,   36,   89,    7,
+           91,  151,   93,  130,    1,   96,   78,   36,   36,  100,
+          101,  102,  103,  149,  105,  106,  107,  130,  130,  110,
+          111,   78,  113,  130,  115,  116,  103,    7,  105,   68,
+          121,  144,    7,  124,  125,  126,  127,  144,  151,  151,
+           68,   80,    7,    7,  151,   84,  153,  132,  133,   78,
+            7,  150,   80,   72,  145,    1,   84,  114,   30,  150,
+          151,  152,   83,   82,  151,    7,   85,   86,   87,  154,
+           89,  158,   91,  145,   93,  114,  148,   96,   97,   98,
+           99,  100,  101,  102,  103,  114,  114,  106,  107,  132,
+          133,  110,  131,  132,  113,   36,  115,  116,   95,  103,
+          154,  105,  121,  131,  132,  124,  125,  126,  127,   80,
+          148,   13,   83,  151,  153,  103,   36,  105,   13,  158,
+          141,   13,  103,   78,  105,  153,   72,  154,   73,   74,
+          158,  150,  151,  152,   73,   74,   82,   78,   15,   85,
+           86,   87,   15,   89,  148,   91,  154,   93,   98,   99,
+           96,   97,   98,   99,  100,  101,  102,  103,   78,  114,
+          106,  107,   15,    1,  110,  103,  104,  113,   15,  115,
+          116,  142,  143,  114,  154,  121,  108,  109,  124,  125,
+          126,  127,   15,  132,  133,   15,    8,    9,   10,  154,
+          150,  151,   30,   30,  114,   15,   15,   36,   30,   30,
+           34,   30,   30,   55,  150,  151,  152,   29,   67,   31,
+           32,   33,   34,   35,   36,   37,   38,   39,   40,   41,
+           42,   43,   44,   45,   46,   47,   48,   49,   50,   51,
+           52,   53,   68,   55,   72,   75,    1,   78,   80,   83,
+           83,   68,   87,   78,   82,   67,   92,   85,   86,   87,
+          111,   89,   78,   91,  112,   93,   80,  114,   96,  125,
+           81,  125,  100,  101,  102,   30,  128,   90,  106,  107,
+           88,  141,  110,  128,  141,  113,  144,   94,  129,   95,
+           95,   95,    1,  121,   97,   97,  149,  152,  144,   -1,
+          144,  151,   -1,   -1,  144,   -1,   -1,   -1,   -1,  148,
+          148,   -1,   -1,   -1,   -1,   -1,   -1,   72,   -1,   -1,
+           -1,   30,  150,  151,   -1,   -1,   -1,   82,   -1,   -1,
+           85,   86,   87,  148,   89,   -1,   91,   -1,   93,    1,
+           -1,   96,   -1,   -1,   -1,  100,  101,  102,  148,  148,
+          148,  106,  107,  148,  148,  110,  152,  150,  113,  150,
+          150,  150,  150,   72,  150,  150,  121,  150,   30,  150,
+          150,  150,  150,   82,  150,  150,   85,   86,   87,  150,
+           89,  150,   91,  150,   93,    1,  150,   96,  150,  150,
+          153,  100,  101,  102,  151,  150,  151,  106,  107,  151,
+          151,  110,  151,  151,  113,  151,  151,  151,  151,  151,
+           72,  151,  121,  152,   30,  152,  152,  152,  152,  152,
+           82,  152,  152,   85,   86,   87,  152,   89,  152,   91,
+          152,   93,    1,  152,   96,  152,  152,  152,  100,  101,
+          102,  150,  151,  153,  106,  107,  152,  152,  110,  152,
+          152,  113,  152,  152,  152,  152,   72,  152,  154,  121,
+          153,  153,  153,  153,  153,  153,   82,  153,  153,   85,
+           86,   87,  153,   89,  153,   91,  153,   93,  153,  153,
+           96,  153,  153,  153,  100,  101,  102,  153,  150,  151,
+          106,  107,  153,  153,  110,  153,  153,  113,  153,  153,
+          153,  153,  153,   72,  153,  121,  153,  155,  154,  154,
+          154,  154,  154,   82,  154,  154,   85,   86,   87,  154,
+           89,  154,   91,  154,   93,  154,  154,   96,  154,  154,
+          154,  100,  101,  102,  150,  151,  154,  106,  107,  154,
+          154,  110,  154,  154,  113,    8,    9,   10,  154,  154,
+          154,  154,  121,  154,  154,  154,  154,  154,  154,  154,
+           -1,  155,   -1,  156,  156,  156,   29,  156,   31,   32,
+           33,   34,   35,   36,   37,   38,   39,   40,   41,  156,
+          156,  150,  151,  157
     );
 
     protected $actionBase = array(
-            0,  220,  295,  366,  438,  285,  350,  606,   -2,   -2,
-          -36,   -2,   -2,  749,  616,  616,  547,  616,  717,  648,
-          788,  788,  788,  281,  443,  441,  441,  467,  371,  441,
-          467,  311,  330,  138,  -66,  -66,  -66,  -66,  -66,  -66,
-          -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,
-          -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,
-          -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,
-          -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,
-          -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,
-          -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,
-          -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,
-          -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,
-          -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,
-          -66,  -66,  -66,  -66,  -66,  -66,  184,  184,   97,  182,
-          324,  729,  718,  725,  732,  733,  727,  715,  360,  645,
-          632,  492,  650,  654,  656,  649,  723,  618,  730,  719,
-          561,  561,  561,  561,  561,  561,  561,  561,  561,  561,
-          561,  561,  561,  561,  561,  561,  280,   30,  451,  421,
-          421,  421,  421,  421,  421,  421,  421,  421,  421,  421,
-          421,  421,  421,  421,  421,  421,  421,  421,  150,  150,
-          150,  344,  210,  207,  197,   17,   95,   27,  892,  892,
-          892,  892,  892,  108,  108,  108,  108,  357,  357,  343,
-           62,   96,   96,   96,   96,   96,   96,   96,   96,   96,
-           96,   96,   96,   96,  259,  463,  463,   36,   36,   36,
-           36,  504,  196,  499,   46,  307,  515,  709,  252,  252,
-          436,  107,  133,  118,  118,  118,  195,  539,  529,  529,
-          529,  529,  221,  221,  529,  529,  270,  264,  232,   95,
-           95,  263,   95,   95,   95,  429,  429,  429,  171,  113,
-          541,  171,  562,  622,  548,  623,  533,  605,   94,  522,
-          204,  528,  525,  204,  204,  204,  458,  434,  431,  762,
-          184,  521,  184,  184,  184,  184,  678,  184,  184,  184,
-          184,  184,  184,  202,  184,   41,  424,   97,  272,  272,
-          420,  272,  493,  235,  614,  425,  404,  493,  493,  493,
-          613,  611,  250,  225,   -8,  609,  428,  456,  468,  329,
-          497,  497,  508,  508,  535,  510,  497,  497,  497,  497,
-          497,  664,  664,  508,  540,  508,  535,  659,  508,  510,
-          508,  508,  497,  508,  664,  510,   66,  339,  244,  274,
-          510,  348,  538,  497,  530,  530,  316,  508,  140,  508,
-           37,  546,  664,  664,  546,  179,  510,  209,  575,  565,
-          531,  558,  227,  498,  498,   58,  531,  409,  510,  498,
-           49,  540,  292,  498,   34,  712,  711,  500,  710,  660,
-          707,  681,  705,  560,  520,  527,  695,  694,  704,  662,
-          663,  496,  557,  469,  442,  523,  487,  668,  528,  516,
-          484,  484,  484,  487,  673,  484,  484,  484,  484,  484,
-          484,  484,  484,  779,  519,  536,  502,  553,  542,  342,
-          608,  518,  557,  557,  633,  768,  514,  505,  678,  751,
-          701,  574,  410,  759,  692,  658,  552,  526,  691,  758,
-          743,  612,  469,  742,  634,  501,  635,  557,  636,  484,
-          675,  676,  785,  784,  672,  781,  764,  757,  524,  637,
-          495,  780,  640,  739,  621,  620,  566,  763,  734,  756,
-          641,  754,  642,  564,  537,  766,  491,  680,  687,  619,
-          643,  644,  559,  477,  631,  630,  629,  700,  577,  761,
-          534,  760,  765,  582,  603,  480,  627,  486,  597,  696,
-          453,  507,  596,  594,  738,  626,  689,  593,  625,  752,
-          532,  516,  517,  543,  544,  545,  617,  753,  512,  591,
-          589,  583,  580,  624,  578,    0,    0,    0,    0,    0,
+            0,  223,  299,  371,  444,  303,  208,  618,   -2,   -2,
+          -73,   -2,   -2,  625,  718,  718,  764,  718,  552,  671,
+          811,  811,  811,  228,  113,  113,  113,  254,  361,  -40,
+          361,  333,  449,  470,  435,  435,  435,  435,  435,  435,
+          435,  435,  435,  435,  435,  435,  435,  435,  435,  435,
+          435,  435,  435,  435,  435,  435,  435,  435,  435,  435,
+          435,  435,  435,  435,  435,  435,  435,  435,  435,  435,
+          435,  435,  435,  435,  435,  435,  435,  435,  435,  435,
+          435,  435,  435,  435,  435,  435,  435,  435,  435,  435,
+          435,  435,  435,  435,  435,  435,  435,  435,  435,  435,
+          435,  435,  435,  435,  435,  435,  435,  435,  435,  435,
+          435,  435,  435,  435,  435,  435,  435,  435,  435,  435,
+          435,  435,  435,  435,  435,  435,  435,  435,  435,  435,
+          435,  435,  435,  435,  435,  435,  435,  435,  435,  435,
+          291,  291,  230,  393,  495,  779,  784,  781,  776,  775,
+          780,  785,  498,  678,  680,  562,  681,  682,  683,  685,
+          782,  804,  777,  783,  568,  568,  568,  568,  568,  568,
+          568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
+          568,  253,   69,  162,   56,   56,   56,   56,   56,   56,
+           56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
+           56,   56,   56,   56,   56,   56,  349,  349,  349,  157,
+          210,  150,  200,  211,  143,   27,  917,  917,  917,  917,
+          917,  -16,  -16,  -16,  -16,  351,  351,  362,  217,   89,
+           89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
+           89,   89,  163,  313,  106,  106,  133,  133,  133,  133,
+          133,  133,  221,  305,  234,  347,  369,  523,  806,  167,
+          167,  441,   93,  283,  202,  202,  202,  386,  547,  533,
+          533,  533,  533,  419,  419,  533,  533,  170,  214,   74,
+          211,  211,  277,  211,  211,  211,  409,  409,  409,  452,
+          318,  352,  546,  318,  619,  640,  577,  675,  578,  677,
+          278,  585,  145,  586,  145,  145,  145,  458,  445,  451,
+          774,  291,  522,  291,  291,  291,  291,  722,  291,  291,
+          291,  291,  291,  291,   98,  291,   79,  430,  230,  240,
+          240,  556,  240,  452,  538,  263,  635,  410,  425,  538,
+          538,  538,  636,  637,  336,  363,  198,  638,  382,  402,
+          173,   33,  549,  549,  555,  555,  566,  551,  549,  549,
+          549,  549,  549,  690,  690,  555,  548,  555,  566,  695,
+          555,  551,  551,  555,  555,  549,  555,  690,  551,  156,
+          415,  249,  273,  551,  551,  426,  528,  549,  535,  535,
+          433,  555,  219,  555,  139,  539,  690,  690,  539,  229,
+          551,  231,  590,  591,  529,  527,  553,  245,  553,  553,
+          300,  529,  553,  551,  553,  448,   50,  548,  295,  553,
+           11,  699,  701,  418,  703,  694,  705,  731,  706,  530,
+          524,  526,  719,  720,  708,  692,  691,  561,  582,  513,
+          517,  534,  554,  689,  581,  531,  531,  531,  554,  687,
+          531,  531,  531,  531,  531,  531,  531,  531,  787,  540,
+          545,  723,  537,  541,  576,  543,  623,  520,  582,  582,
+          584,  732,  786,  564,  722,  762,  709,  587,  557,  741,
+          725,  525,  542,  565,  726,  727,  745,  765,  628,  513,
+          766,  641,  563,  643,  582,  644,  531,  670,  617,  788,
+          789,  688,  791,  736,  747,  749,  580,  645,  569,  803,
+          646,  768,  629,  631,  589,  737,  684,  751,  647,  752,
+          754,  649,  592,  572,  734,  573,  733,  272,  729,  632,
+          650,  654,  656,  658,  661,  710,  594,  738,  544,  740,
+          735,  595,  597,  560,  663,  488,  599,  570,  571,  600,
+          714,  558,  550,  601,  602,  769,  664,  728,  604,  665,
+          756,  574,  581,  536,  532,  575,  567,  634,  755,  559,
+          605,  609,  611,  613,  674,  616,    0,    0,    0,    0,
+            0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
             0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+            0,    0,    0,  136,  136,  136,  136,   -2,   -2,   -2,
+            0,    0,   -2,    0,    0,  136,  136,  136,  136,  136,
+          136,  136,  136,  136,  136,  136,  136,  136,  136,  136,
+          136,  136,  136,  136,  136,  136,  136,  136,  136,  136,
+          136,  136,  136,  136,  136,  136,  136,  136,  136,  136,
+          136,  136,  136,  136,  136,  136,  136,  136,  136,  136,
+          136,  136,  136,  136,  136,  136,  136,  136,  136,  136,
+          136,  136,  136,  136,  136,  136,  136,  136,  136,  136,
+          136,  136,  136,  136,  136,  136,  136,  136,  136,  136,
+          136,  136,  136,  136,  136,  136,  136,  136,  136,  136,
+          136,  136,  136,  136,  136,  136,  136,  136,  136,  136,
+          136,  136,  136,  136,  136,  136,  136,  136,  136,  136,
+          136,  136,  136,  136,  136,  136,  136,  136,  136,  136,
+          136,  136,  136,  136,  136,  136,  136,  136,  136,  136,
+          136,  136,  568,  568,  568,  568,  568,  568,  568,  568,
+          568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
+          568,  568,  568,  568,  568,  568,    0,    0,    0,    0,
             0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-            0,    0,  134,  134,  134,  134,   -2,   -2,   -2,    0,
-            0,   -2,    0,    0,  134,  134,  134,  134,  134,  134,
-          134,  134,  134,  134,  134,  134,  134,  134,  134,  134,
-          134,  134,  134,  134,  134,  134,  134,  134,  134,  134,
-          134,  134,  134,  134,  134,  134,  134,  134,  134,  134,
-          134,  134,  134,  134,  134,  134,  134,  134,  134,  134,
-          134,  134,  134,  134,  134,  134,  134,  134,  134,  134,
-          134,  134,  134,  134,  134,  134,  134,  134,  134,  134,
-          134,  134,  134,  134,  134,  134,  134,  134,  134,  134,
-          134,  134,  134,  134,  134,  134,  134,  134,  134,  134,
-          134,  134,  134,  134,  134,  134,  134,  134,  134,  134,
-          134,  134,  134,  134,  134,  134,  134,  134,  134,  134,
-          134,  134,  134,  134,  134,  134,  134,  134,  134,  134,
-          134,  134,  134,  134,  134,  134,  134,  561,  561,  561,
-          561,  561,  561,  561,  561,  561,  561,  561,  561,  561,
-          561,  561,  561,  561,  561,  561,  561,  561,  561,  561,
-          561,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-            0,    0,    0,    0,    0,    0,    0,  561,  561,  561,
-          561,  561,  561,  561,  561,  561,  561,  561,  561,  561,
-          561,  561,  561,  561,  561,  561,  561,  561,  561,  561,
-          561,  561,  561,  561,   -3,  561,  561,   -3,  561,  561,
-          561,  561,  561,  561,  118,  118,  118,  118,  171,  171,
-          171,  -84,  171,  171,  171,  171,  171,  171,  171,  171,
-          171,  171,  171,  171,  171,  171,  118,  118,  171,  171,
-          171,  171,  171,  171,  -84,  171,  221,  221,  221,  204,
-          204,  171,    0,    0,    0,    0,    0,  497,  221,  171,
-          171,  171,  171,    0,    0,  171,  171,  540,  204,    0,
-            0,    0,    0,    0,    0,    0,  497,  497,  497,    0,
-          497,  221,    0,  272,  184,  400,  400,  400,  400,    0,
-          497,    0,  540,  497,    0,    0,    0,    0,    0,    0,
-          510,    0,  664,    0,    0,    0,    0,  508,    0,    0,
-            0,    0,    0,    0,    0,    0,  540,    0,    0,    0,
-            0,  540,    0,  484,    0,  505,    0,    0,  484,  484,
-          484,  505,  505,    0,    0,    0,  505
+            0,    0,    0,  568,  568,  568,  568,  568,  568,  568,
+          568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
+          568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
+          568,  568,   -3,  568,  568,   -3,  568,  568,  568,  568,
+          568,  568,  568,  202,  202,  202,  202,  318,  318,  318,
+          -67,  318,  318,  318,  318,  318,  318,  318,  318,  318,
+          318,  318,  318,  318,  318,  -67,  202,  202,  318,  318,
+          318,  318,  318,  318,  318,  318,  318,  318,  419,  419,
+          419,  145,  145,  318,    0,    0,    0,    0,    0,  549,
+          419,  318,  318,  318,  318,    0,    0,  318,  318,  548,
+          145,    0,    0,    0,    0,    0,    0,    0,  549,  549,
+          549,  548,    0,  549,  419,    0,  240,  291,  440,  440,
+          440,  440,    0,  549,    0,  549,    0,    0,    0,    0,
+            0,    0,  551,    0,  690,    0,    0,    0,    0,  555,
+            0,    0,    0,    0,    0,    0,    0,    0,  548,    0,
+            0,    0,    0,  548,    0,    0,  531,    0,  564,    0,
+            0,  531,  531,  531,  564,  564,    0,    0,    0,  564
     );
 
     protected $actionDefault = array(
-            3,32767,32767,32767,32767,32767,32767,32767,32767,   91,
+            3,32767,32767,32767,32767,32767,32767,32767,32767,   92,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
-        32767,32767,32767,32767,   93,  504,  504,  494,32767,  504,
-          494,32767,32767,32767,  312,  312,  312,32767,  449,  449,
-          449,  449,  449,  449,  449,32767,32767,32767,32767,32767,
-          391,32767,32767,32767,32767,32767,32767,32767,32767,32767,
+        32767,32767,32767,32767,  510,  510,  510,   94,  499,32767,
+          499,32767,32767,32767,  314,  314,  314,32767,  454,  454,
+          454,  454,  454,  454,  454,32767,32767,32767,32767,32767,
+          394,32767,32767,32767,32767,32767,32767,32767,32767,32767,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
-        32767,32767,32767,32767,32767,32767,32767,32767,32767,   91,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
+        32767,   92,32767,32767,32767,32767,32767,32767,32767,32767,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
-          501,32767,32767,32767,32767,32767,32767,32767,32767,32767,
+        32767,32767,32767,32767,  506,32767,32767,32767,32767,32767,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
-          374,  375,  377,  378,  311,  450,  257,  500,  310,  129,
-          268,  259,  210,  308,  242,  133,  339,  392,  341,  390,
-          394,  340,  317,  321,  322,  323,  324,  325,  326,  327,
-          328,  329,  330,  331,  332,  315,  316,  393,  371,  370,
-          369,  337,  338,  314,  342,  344,  314,  343,  360,  361,
-          358,  359,  362,  363,  364,  365,  366,32767,32767,32767,
+        32767,32767,32767,32767,  377,  378,  380,  381,  313,  455,
+          509,  259,  505,  312,  130,  270,  261,  211,  243,  310,
+          134,  342,  395,  344,  393,  397,  343,  319,  323,  324,
+          325,  326,  327,  328,  329,  330,  331,  332,  333,  334,
+          335,  317,  318,  396,  398,  399,  374,  373,  372,  340,
+          316,  341,  345,  316,  347,  346,  363,  364,  361,  362,
+          365,  366,  367,  368,  369,32767,32767,32767,32767,32767,
+        32767,32767,32767,32767,32767,32767,32767,32767,32767,   94,
+        32767,32767,32767,  293,  354,  355,  250,  250,  250,  250,
+          250,  250,32767,  250,32767,  250,32767,32767,32767,32767,
+        32767,32767,  448,  371,  349,  350,  348,32767,  426,32767,
+        32767,32767,32767,32767,  428,32767,   92,32767,32767,32767,
+          337,  339,  420,  508,  320,  507,32767,32767,   94,  414,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
-        32767,   93,32767,32767,32767,  351,  352,  249,  249,  249,
-          249,32767,  249,  294,32767,32767,32767,32767,32767,32767,
-        32767,  443,  368,  346,  347,  345,32767,  421,32767,32767,
-        32767,32767,32767,  423,32767,   91,32767,32767,32767,  334,
-          336,  415,  503,  318,  502,32767,32767,   93,32767,32767,
-        32767,32767,32767,32767,32767,32767,32767,32767,  418,32767,
-        32767,  409,   91,32767,32767,   91,  173,  229,  231,  178,
-        32767,  426,32767,32767,32767,32767,32767,32767,32767,32767,
+          423,32767,32767,   92,32767,32767,   92,  174,  230,  232,
+          179,32767,  431,32767,32767,32767,32767,32767,32767,32767,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
-        32767,32767,  356,  511,32767,  451,32767,  348,  349,  350,
-        32767,32767,  451,  451,  451,32767,  451,32767,  451,  451,
-        32767,32767,32767,32767,32767,  178,32767,32767,32767,32767,
-           93,  424,  424,   91,   91,   91,   91,  419,32767,  178,
-        32767,32767,32767,32767,32767,  178,   90,   90,   90,   90,
-          178,   90,  193,32767,  191,  191,   90,32767,   92,32767,
-           92,  195,32767,  465,  195,   90,  178,   90,  215,  215,
-          400,  180,   92,  251,  251,   92,  400,   90,  178,  251,
-           90,32767,   90,  251,32767,32767,32767,   84,32767,32767,
+        32767,32767,32767,  414,  359,  517,32767,  456,32767,  351,
+          352,  353,32767,32767,  456,  456,  456,32767,  456,32767,
+          456,  456,32767,32767,32767,32767,32767,  179,32767,32767,
+        32767,32767,   94,  429,  429,   92,   92,   92,   92,  424,
+        32767,  179,  179,32767,32767,32767,32767,32767,  179,   91,
+           91,   91,   91,  179,  179,   91,  194,32767,  192,  192,
+           91,32767,   93,32767,   93,  196,32767,  470,  196,   91,
+          179,   91,  216,  216,  405,  181,  252,   93,  252,  252,
+           93,  405,  252,  179,  252,   91,   91,32767,   91,  252,
+        32767,32767,32767,   85,32767,32767,32767,32767,32767,32767,
+        32767,32767,32767,32767,32767,32767,32767,32767,  416,32767,
+          436,32767,  449,  468,32767,  357,  358,  360,32767,  458,
+          382,  383,  384,  385,  386,  387,  388,  390,32767,  419,
+        32767,32767,32767,   87,  121,  269,32767,  515,   87,  417,
+        32767,  515,32767,32767,32767,32767,32767,32767,32767,32767,
+        32767,32767,   87,   87,32767,32767,32767,32767,32767,  495,
+        32767,  516,32767,  456,  418,32767,  356,  432,  475,32767,
+        32767,  457,32767,32767,32767,32767,   87,32767,32767,32767,
+        32767,32767,32767,32767,32767,32767,  436,32767,32767,32767,
+        32767,32767,32767,32767,  456,32767,32767,32767,32767,32767,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
-        32767,32767,  411,32767,  431,32767,  444,  463,  409,32767,
-          354,  355,  357,32767,  453,  379,  380,  381,  382,  383,
-          384,  385,  387,32767,  414,32767,32767,   86,  120,  267,
-        32767,  509,   86,  412,32767,  509,32767,32767,32767,32767,
-        32767,32767,32767,32767,32767,32767,   86,   86,32767,32767,
-        32767,32767,  490,32767,  510,32767,  451,  413,32767,  353,
-          427,  470,32767,32767,  452,32767,32767,32767,   86,32767,
-        32767,32767,32767,32767,32767,32767,32767,32767,  431,32767,
-        32767,32767,32767,32767,32767,  451,32767,32767,32767,32767,
-        32767,32767,32767,  307,32767,32767,32767,32767,32767,32767,
-        32767,32767,  451,32767,32767,  241,32767,32767,32767,32767,
+          456,32767,32767,  242,32767,32767,32767,  309,32767,32767,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
-           84,   60,32767,  287,32767,32767,32767,32767,32767,32767,
-        32767,32767,32767,32767,32767,  135,  135,    3,  270,    3,
-          270,  135,  135,  135,  270,  270,  135,  135,  135,  135,
-          135,  135,  135,  168,  223,  226,  215,  215,  279,  135,
-          135
+        32767,   85,   60,32767,  289,32767,32767,32767,32767,32767,
+        32767,32767,32767,32767,32767,32767,  136,  136,    3,  272,
+            3,  272,  136,  136,  136,  272,  272,  136,  136,  136,
+          136,  136,  136,  136,  169,  224,  227,  216,  216,  281,
+          136,  136
     );
 
     protected $goto = array(
-          166,  166,  140,  140,  148,  149,  140,  148,  151,  182,
-          167,  164,  164,  164,  164,  165,  165,  165,  165,  165,
-          165,  165,  160,  161,  162,  163,  179,  177,  180,  430,
-          431,  322,  432,  435,  436,  437,  438,  439,  440,  441,
-          442,  901,  137,  141,  142,  143,  144,  145,  139,  146,
-          147,  150,  176,  178,  181,  198,  201,  202,  204,  205,
-          207,  208,  209,  210,  211,  212,  213,  214,  215,  216,
-          235,  236,  253,  254,  255,  327,  328,  329,  479,  183,
-          184,  185,  186,  187,  188,  189,  190,  191,  192,  193,
-          194,  195,  196,  152,  197,  153,  168,  169,  170,  199,
-          171,  154,  155,  156,  172,  157,  200,  138,  173,  158,
-          174,  175,  159,  542,  203,  447,  551,  203,  743,  444,
-          304,  308,  459,  482,  483,  485,  444,  493,  496,  519,
-         1087, 1087,  987,  481,  452,  452,  452,  472,  452,  698,
-          472,  677,  692,  779,  779,  779,  779, 1087,  467,  773,
-          780,  452,  433,  433,  433,  285,  433,  433,  433,  433,
-          433,  433,  433,  433,  433,  433,  433,  433,  433,  434,
-          434,  434,  676,  434,  434,  434,  434,  434,  434,  434,
-          434,  434,  434,  434,  434,  434,  480,  869,  554,  319,
-          664,  263,  536,  867,  321,  988,  247,  502,  282,  452,
-          452,  515,  516, 1057, 1058,  466,  488,  452,  452,  452,
-            3,    4,  465,  989, 1043,  712,  785,  575,  504,  506,
-          837,  453,  520,  535,  538,  813,  545,  553,  809,  498,
-          498, 1012,  477, 1012, 1012, 1012, 1012, 1012, 1012, 1012,
-         1012, 1012, 1012, 1012, 1012, 1012,  703,  675,  976,  765,
-          738,  977,  739, 1086, 1086,  499,  501,  547,  802,  783,
-          783,  781,  783,  574,  679,  445,  811,  806,  473, 1079,
-         1086,  876, 1102,  777,  316,  550,  478, 1067,  492,  703,
-          302,  684,  703,  734,  729,  730,  744, 1089,  685,  731,
-          682,  732,  733,  683,  877,  737,  306,  449,  521,  470,
-          948,  833,  458,  821,  334,  522,  338,  468,  325,  325,
-          269,  270,  272,  476,  332,  273,  333,  274,  336,  505,
-          339,  525, 1056,  391,  826,  289,  539,  816,  816, 1074,
-          694,  694,  510,  283,  312,   11,  704,  704,  704,  706,
-          693,  991,  286,  287,  827,  827,  827,  827,  991,  827,
-          696,  827,  699,  579, 1062, 1062,  526,  827,  842,  846,
-          449,  984, 1053,  708,  790,  991,  991,  991,  991, 1053,
-          979,  991,  991,  384,  399,  886, 1064, 1064,  707,  695,
-          841,  495,  845,    0,    0,  751,    0,  788,  752,    0,
-            0,    0,    0,    0,    0, 1049,  818,    0,  778,    0,
-            0,    0,    0,    0,    0,    0,    0,  986,  884,    0,
-            0,  711,  464,  983,    0,    0,    0,    0,  844,    0,
-            0, 1051, 1051,  844,    0,    0,    0,    0,    0,    0,
+          171,  144,  144,  144,  171,  152,  153,  152,  155,  187,
+          172,  168,  168,  168,  168,  169,  169,  169,  169,  169,
+          169,  169,  164,  165,  166,  167,  184,  182,  185,  445,
+          446,  334,  447,  450,  451,  452,  453,  454,  455,  456,
+          457,  924,  141,  145,  146,  147,  170,  148,  149,  143,
+          150,  151,  154,  181,  183,  186,  206,  209,  211,  212,
+          214,  215,  216,  217,  218,  219,  220,  221,  222,  223,
+          224,  244,  245,  264,  265,  266,  339,  340,  341,  496,
+          188,  189,  190,  191,  192,  193,  194,  195,  196,  197,
+          198,  199,  200,  201,  202,  156,  203,  157,  173,  174,
+          175,  207,  176,  158,  159,  160,  177,  161,  208,  142,
+          204,  162,  178,  205,  179,  180,  163,  563,  210,  463,
+          210,  516,  516, 1038,  572, 1038, 1038, 1038, 1038, 1038,
+         1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,  468,  468,
+          468,  514,  537,  468,  297,  489,  521,  489,  498,  274,
+          533,  534,  698,  483,  258,  468,  448,  448,  448,  725,
+          448,  448,  448,  448,  448,  448,  448,  448,  448,  448,
+          448,  448,  448,  449,  449,  449,  699,  449,  449,  449,
+          449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
+         1114, 1114,  734,  725,  899,  725,  315,  319,  475,  499,
+          500,  502, 1083, 1084,  468,  468,  760, 1114,  761,  900,
+          482,  506,  468,  468,  468,  329,  330,  686,  481,  545,
+          495,  332,  510,  596,  523,  525,  294,  469,  538,  556,
+          559,  835,  566,  574,  831,  765,  729,  717,  864,  494,
+          807,  868,  490,  860,  716,  716,  810,  697, 1013, 1105,
+          726,  726,  726,  728,  715,  840, 1093,  800,  824,  805,
+          805,  803,  805,  595,  313,  460,  833,  828,  459,    3,
+            4,  907,  733,  539, 1009,  487,  317,  461,  459,  497,
+          892,  575,  972,  474,  843,  557,  890, 1129,  484,  485,
+          505,  517,  519,  520,  568,  801,  801,  801,  801,  465,
+          855,  795,  802, 1002,  787,  405, 1003,  799,  327,  571,
+          356, 1082,  530, 1014,  848,  346,  540,  350,   11,  337,
+          337,  280,  281,  283,  493,  344,  284,  345,  285,  348,
+          524,  351, 1015, 1069, 1113, 1113,  543,  301,  298,  299,
+          721,  560,  838,  838, 1100,  295,  865,  718,  600,  323,
+          544, 1113, 1010, 1017,  511, 1005,  869,  849,  849,  849,
+          849,  849,  849, 1017,  849,  849,  849,  720,  730, 1116,
+          714,  812,  849, 1088, 1088,  909,  465,  398,  513,  414,
+         1017, 1017, 1017, 1017,    0, 1079, 1017, 1017,    0,  701,
+            0,    0,    0,    0,    0, 1079,    0,    0,    0,    0,
+            0,  773, 1090, 1090,  774,  706,    0,  756,  751,  752,
+          766,    0,  707,  753,  704,  754,  755,  705,    0,  759,
+            0, 1075,    0,    0,    0,    0,    0, 1012,    0,    0,
+            0,  480,    0,    0,    0,    0,    0,    0,    0,    0,
+            0,    0,    0,    0,    0,  867,    0, 1077, 1077,  867,
             0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-            0,    0,    0,    0,    0,    0,    0,    0,  446,  462,
-            0,    0,    0,    0,    0,    0,    0,    0,    0,  446,
-            0,  462,    0,    0,  305,    0,  450,  372,    0,  374,
-            0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-            0,    0,    0,  702,    0, 1094
+            0,    0,    0,    0,    0,    0,    0,    0,  462,  478,
+            0,    0,    0,    0,    0,    0,    0,    0,    0,  462,
+            0,  478,    0,    0,  316,    0,    0,  466,  386,    0,
+          388,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+            0,    0,    0,    0,    0,  724,    0, 1121
     );
 
     protected $gotoCheck = array(
@@ -647,82 +662,84 @@ class Php7 extends \PhpParser\ParserAbstract
            33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
            33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
            33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
-           33,   33,   33,   63,   56,   10,    8,   56,   13,   75,
-           49,   49,   49,   49,   49,   49,   75,   15,   46,   46,
-          148,  148,   92,   97,   10,   10,   10,   85,   10,   15,
-           85,   18,   15,   75,   75,   75,   75,  148,   10,   75,
-           75,   10,  135,  135,  135,   80,  135,  135,  135,  135,
-          135,  135,  135,  135,  135,  135,  135,  135,  135,  137,
-          137,  137,   17,  137,  137,  137,  137,  137,  137,  137,
-          137,  137,  137,  137,  137,  137,    7,    7,    7,   69,
-            5,  134,    7,    7,   69,   92,  134,   73,   69,   10,
-           10,   73,   73,  141,  141,   10,   10,   10,   10,   10,
-           37,   37,   39,   92,   92,   36,   40,   39,   39,   39,
-           94,   10,   39,   39,   39,   39,   39,   39,   39,   86,
-           86,   86,   10,   86,   86,   86,   86,   86,   86,   86,
-           86,   86,   86,   86,   86,   86,   26,   16,   67,   67,
-           55,   67,   55,  147,  147,   68,   68,   68,   16,   16,
-           16,   16,   16,   16,   13,   16,   16,   16,  136,  146,
-          147,  111,   12,   76,   76,   76,    2,  143,    2,   26,
-           52,   13,   26,   13,   13,   13,   13,  147,   13,   13,
-           13,   13,   13,   13,  111,   13,   65,   12,   54,   53,
-          118,   90,   65,   88,   56,   56,   56,   65,   56,   56,
+           33,   33,   33,   33,   33,   33,   33,   63,   56,   10,
+           56,   86,   86,   86,    8,   86,   86,   86,   86,   86,
+           86,   86,   86,   86,   86,   86,   86,   86,   10,   10,
+           10,   46,   46,   10,   80,   85,   73,   85,   97,  134,
+           73,   73,   17,   10,  134,   10,  135,  135,  135,   26,
+          135,  135,  135,  135,  135,  135,  135,  135,  135,  135,
+          135,  135,  135,  137,  137,  137,   18,  137,  137,  137,
+          137,  137,  137,  137,  137,  137,  137,  137,  137,  137,
+          148,  148,   36,   26,  111,   26,   49,   49,   49,   49,
+           49,   49,  141,  141,   10,   10,   55,  148,   55,  111,
+           10,   10,   10,   10,   10,   69,   69,    5,   39,   69,
+            2,   69,    2,   39,   39,   39,   69,   10,   39,   39,
+           39,   39,   39,   39,   39,   13,   14,   14,   14,   10,
+           40,   14,  136,   94,   26,   26,   14,   16,   92,  146,
+           26,   26,   26,   26,   26,   14,  143,   14,   16,   16,
+           16,   16,   16,   16,   52,   16,   16,   16,   75,   37,
+           37,   14,   14,   54,   14,   53,   65,   65,   75,    7,
+            7,    7,  118,   65,   88,    7,    7,   12,   65,   65,
+           68,   68,   68,   68,   68,   75,   75,   75,   75,   12,
+           90,   75,   75,   67,   67,   65,   67,   76,   76,   76,
+           89,  139,   24,   92,   91,   56,   56,   56,   65,   56,
            56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
-           56,   12,  139,   65,   91,   20,   12,   85,   85,   85,
-           26,   26,   24,   11,   19,   65,   26,   26,   26,   26,
-           26,   63,   80,   80,   63,   63,   63,   63,   63,   63,
-           28,   63,   30,   82,    8,    8,   23,   63,   96,   99,
-           12,  127,   97,   32,   79,   63,   63,   63,   63,   97,
-          124,   63,   63,   71,  122,  114,   97,   97,   14,   14,
-           14,   72,   14,   -1,   -1,   63,   -1,   14,   63,   -1,
-           -1,   -1,   -1,   -1,   -1,   97,   14,   -1,   14,   -1,
-           -1,   -1,   -1,   -1,   -1,   -1,   -1,   12,   14,   -1,
-           -1,   14,    8,   14,   -1,   -1,   -1,   -1,   97,   -1,
-           -1,   97,   97,   97,   -1,   -1,   -1,   -1,   -1,   -1,
+           56,   56,   92,   92,  147,  147,   12,   20,   80,   80,
+           30,   12,   85,   85,   85,   11,   96,   28,   82,   19,
+           23,  147,  127,   63,   15,  124,   99,   63,   63,   63,
+           63,   63,   63,   63,   63,   63,   63,   15,   32,  147,
+           15,   79,   63,    8,    8,  114,   12,   71,   72,  122,
+           63,   63,   63,   63,   -1,   97,   63,   63,   -1,   13,
+           -1,   -1,   -1,   -1,   -1,   97,   -1,   -1,   -1,   -1,
+           -1,   63,   97,   97,   63,   13,   -1,   13,   13,   13,
+           13,   -1,   13,   13,   13,   13,   13,   13,   -1,   13,
+           -1,   97,   -1,   -1,   -1,   -1,   -1,   12,   -1,   -1,
+           -1,    8,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+           -1,   -1,   -1,   -1,   -1,   97,   -1,   97,   97,   97,
            -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
            -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,    8,    8,
            -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,    8,
-           -1,    8,   -1,   -1,    8,   -1,    8,    8,   -1,    8,
-           -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-           -1,   -1,   -1,    8,   -1,    8
+           -1,    8,   -1,   -1,    8,   -1,   -1,    8,    8,   -1,
+            8,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+           -1,   -1,   -1,   -1,   -1,    8,   -1,    8
     );
 
     protected $gotoBase = array(
-            0,    0, -281,    0,    0,  180,    0,  181,  106,    0,
-         -141,   54,    6,  -19,   11, -253,  245,  170,  139,   45,
-           69,    0,    0,   15,   56,    0,  -10,    0,   58,    0,
-           75,    0,   10,  -23,    0,    0,  206, -369,    0, -344,
-          197,    0,    0,    0,    0,    0,   93,    0,    0,   81,
-            0,    0,  243,   77,   80,  235,   87,    0,    0,    0,
-            0,    0,    0,  107,    0,  -63,    0,  -70,   17, -205,
-            0,   -2,   -3, -363,    0, -115,   14,    0,    0,    9,
-         -234,    0,   36,    0,    0,  110,   12,    0,   61,    0,
-           57,   74, -169,    0,  196,    0,   63,  128,    0,    5,
+            0,    0, -358,    0,    0,  207,    0,  274,  114,    0,
+         -148,   54,   10,   94, -144,  -40,  245,  150,  174,   48,
+           70,    0,    0,   -3,   25,    0, -108,    0,   44,    0,
+           52,    0,    3,  -23,    0,    0,  183, -331,    0, -359,
+          221,    0,    0,    0,    0,    0,  106,    0,    0,  157,
+            0,    0,  227,   45,   47,  191,   90,    0,    0,    0,
+            0,    0,    0,  111,    0,  -95,    0,  -26,   43, -193,
+            0,  -12,  -20, -435,    0,   26,   37,    0,    0,    4,
+         -259,    0,   20,    0,    0,  117, -104,    0,   31,   55,
+           46,   53,  -64,    0,  216,    0,   40,  143,    0,  -10,
             0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-            0,   51,    0,    0,   19,    0,    0,    0,   59,    0,
-            0,    0,  -22,    0,   18,    0,    0,   16,    0,    0,
-            0,    0,    0,    0,  -66,  -65,  242,  -48,    0,   73,
-            0,  -90,    0,  247,    0,    0,  240,    7, -116,    0,
+            0,  -34,    0,    0,    7,    0,    0,    0,   30,    0,
+            0,    0,  -32,    0,   -9,    0,    0,   -5,    0,    0,
+            0,    0,    0,    0, -119,  -69,  217,  -52,    0,   51,
+            0, -102,    0,  226,    0,    0,  223,   77,  -67,    0,
             0
     );
 
     protected $gotoDefault = array(
-        -32768,  404,  582,    2,  583,  654,  662,  527,  421,  552,
-          422,  448,  323,  736,  890,  756,  718,  719,  720,  309,
-          349,  300,  307,  511,  500,  395,  705,  368,  697,  392,
-          700,  367,  709,  136,  528,  400,  713,    1,  715,  454,
-          747,  297,  723,  298,  531,  725,  461,  727,  728,  303,
-          310,  311,  894,  469,  497,  740,  206,  463,  741,  296,
-          742,  750,  320,  301,  378,  401,  315,  871,  487,  318,
-          363,  381,  494,  489,  471,  998,  775,  387,  376,  789,
-          284,  797,  580,  805,  808,  423,  424,  385,  820,  386,
-          831,  825, 1006,  380,  836,  369,  843, 1038,  371,  847,
-          220,  850,  344,  512,  337,  855,  856,    6,  861,  543,
-          544,    7,  243,  397,  885,  513,  366,  900,  352,  967,
-          969,  456,  393,  980,  375,  534,  402,  985, 1042,  364,
-          425,  382,  271,  288,  246,  426,  443,  251,  427,  383,
-         1045, 1052,  326, 1068,  268,   29, 1080, 1088,  280,  475,
-          491
+        -32768,  420,  603,    2,  604,  676,  684,  548,  437,  573,
+          438,  464,  335,  758,  913,  778,  740,  741,  742,  320,
+          361,  311,  318,  531,  518,  410,  727,  381,  719,  407,
+          722,  380,  731,  140,  549,  416,  735,    1,  737,  470,
+          769,  308,  745,  309,  552,  747,  477,  749,  750,  314,
+          321,  322,  917,  486,  515,  762,  213,  479,  763,  307,
+          764,  772,  331,  312,  392,  417,  326,  894,  504,  527,
+          376,  395,  512,  507,  488, 1024,  797,  401,  390,  811,
+          296,  819,  601,  827,  830,  439,  440,  399,  842,  400,
+          853,  847, 1032,  394,  859,  382,  866, 1064,  385,  870,
+          228,  873,  255,  546,  349,  878,  879,    6,  884,  564,
+          565,    7,  243,  415,  908,  547,  379,  923,  364,  991,
+          993,  472,  408, 1006,  389,  555,  418, 1011, 1068,  377,
+          441,  396,  282,  300,  257,  442,  458,  262,  443,  397,
+         1071, 1078,  338, 1094,  279,   26, 1106, 1115,  292,  492,
+          509
     );
 
     protected $ruleToNonTerminal = array(
@@ -733,31 +750,31 @@ class Php7 extends \PhpParser\ParserAbstract
             5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
             5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
             5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
-            5,    5,    5,    6,    6,    6,    6,    6,    6,    6,
-            7,    7,    8,    9,   10,   10,   11,   12,   13,   13,
-           14,   14,   15,   15,    4,    4,    4,    4,    4,    4,
-            4,    4,    4,    4,    4,   20,   20,   21,   21,   21,
-           21,   23,   25,   25,   19,   27,   27,   24,   29,   29,
-           26,   26,   28,   28,   30,   30,   22,   31,   31,   32,
-           34,   35,   35,   36,   37,   37,   39,   38,   38,   38,
-           38,   40,   40,   40,   40,   40,   40,   40,   40,   40,
+            5,    5,    5,    5,    6,    6,    6,    6,    6,    6,
+            6,    7,    7,    8,    9,   10,   10,   11,   12,   13,
+           13,   14,   14,   15,   15,    4,    4,    4,    4,    4,
+            4,    4,    4,    4,    4,    4,   20,   20,   21,   21,
+           21,   21,   23,   25,   25,   19,   27,   27,   24,   29,
+           29,   26,   26,   28,   28,   30,   30,   22,   31,   31,
+           32,   34,   35,   35,   36,   37,   37,   39,   38,   38,
+           38,   38,   40,   40,   40,   40,   40,   40,   40,   40,
            40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
-           40,   40,   40,   40,   40,   40,   16,   16,   59,   59,
-           62,   62,   61,   60,   60,   53,   64,   64,   65,   65,
-           66,   66,   67,   67,   17,   18,   18,   18,   70,   70,
-           70,   71,   71,   74,   74,   72,   72,   76,   77,   77,
-           47,   47,   55,   55,   58,   58,   58,   57,   78,   78,
-           79,   48,   48,   48,   48,   80,   80,   81,   81,   82,
-           82,   45,   45,   41,   41,   83,   43,   43,   84,   42,
-           42,   44,   44,   54,   54,   54,   54,   68,   68,   87,
-           87,   88,   88,   88,   90,   90,   91,   91,   91,   89,
-           89,   69,   69,   92,   92,   93,   93,   94,   94,   94,
-           50,   95,   95,   96,   51,   98,   98,   99,   99,  100,
-          100,   73,  101,  101,  101,  101,  101,  106,  106,  107,
-          107,  108,  108,  108,  108,  108,  109,  110,  110,  105,
-          105,  102,  102,  104,  104,  112,  112,  111,  111,  111,
-          111,  111,  111,  103,  113,  113,  115,  114,  114,   52,
-          116,  116,   46,   46,   33,   33,   33,   33,   33,   33,
+           40,   40,   40,   40,   40,   40,   40,   16,   16,   59,
+           59,   62,   62,   61,   60,   60,   53,   64,   64,   65,
+           65,   66,   66,   67,   67,   17,   18,   18,   18,   70,
+           70,   70,   71,   71,   74,   74,   72,   72,   76,   77,
+           77,   47,   47,   55,   55,   58,   58,   58,   57,   78,
+           78,   79,   48,   48,   48,   48,   80,   80,   81,   81,
+           82,   82,   45,   45,   41,   41,   83,   43,   43,   84,
+           42,   42,   44,   44,   54,   54,   54,   54,   68,   68,
+           87,   87,   88,   88,   88,   90,   90,   91,   91,   91,
+           89,   89,   69,   69,   69,   92,   92,   93,   93,   94,
+           94,   94,   50,   95,   95,   96,   51,   98,   98,   99,
+           99,  100,  100,   73,  101,  101,  101,  101,  101,  106,
+          106,  107,  107,  108,  108,  108,  108,  108,  109,  110,
+          110,  105,  105,  102,  102,  104,  104,  112,  112,  111,
+          111,  111,  111,  111,  111,  103,  113,  113,  115,  114,
+          114,   52,  116,  116,   46,   46,   33,   33,   33,   33,
            33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
            33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
            33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
@@ -765,20 +782,20 @@ class Php7 extends \PhpParser\ParserAbstract
            33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
            33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
            33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
-           33,   33,   33,   33,   33,   33,   33,  123,  117,  117,
-          122,  122,  125,  126,  126,  127,  128,  128,  128,   75,
-           75,   63,   63,   63,  118,  118,  118,  130,  130,  119,
-          119,  121,  121,  121,  124,  124,  135,  135,  135,   86,
-          137,  137,  137,  120,  120,  120,  120,  120,  120,  120,
-          120,  120,  120,  120,  120,  120,  120,  120,  120,   49,
-           49,  133,  133,  133,  129,  129,  129,  138,  138,  138,
-          138,  138,  138,   56,   56,   56,   97,   97,   97,   97,
-          141,  140,  132,  132,  132,  132,  132,  132,  131,  131,
-          131,  139,  139,  139,  139,   85,  142,  142,  143,  143,
-          143,  143,  143,  143,  143,  136,  145,  145,  144,  144,
-          146,  146,  146,  146,  146,  134,  134,  134,  134,  148,
-          149,  147,  147,  147,  147,  147,  147,  147,  150,  150,
-          150,  150
+           33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
+           33,   33,  123,  117,  117,  122,  122,  125,  126,  126,
+          127,  128,  128,  128,   75,   75,   63,   63,   63,  118,
+          118,  118,  130,  130,  119,  119,  121,  121,  121,  124,
+          124,  135,  135,  135,   86,  137,  137,  137,  120,  120,
+          120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
+          120,  120,  120,  120,   49,   49,  133,  133,  133,  129,
+          129,  129,  138,  138,  138,  138,  138,  138,   56,   56,
+           56,   97,   97,   97,   97,  141,  140,  132,  132,  132,
+          132,  132,  132,  131,  131,  131,  139,  139,  139,  139,
+           85,  142,  142,  143,  143,  143,  143,  143,  143,  143,
+          136,  145,  145,  144,  144,  146,  146,  146,  146,  146,
+          146,  134,  134,  134,  134,  148,  149,  147,  147,  147,
+          147,  147,  147,  147,  150,  150,  150,  150
     );
 
     protected $ruleToLength = array(
@@ -790,51 +807,51 @@ class Php7 extends \PhpParser\ParserAbstract
             1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
             1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
             1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-            1,    1,    1,    1,    1,    3,    1,    1,    1,    1,
-            0,    1,    0,    1,    1,    1,    1,    1,    3,    5,
-            4,    3,    4,    2,    3,    1,    1,    7,    8,    6,
-            7,    2,    3,    1,    2,    3,    1,    2,    3,    1,
-            1,    3,    1,    2,    1,    2,    2,    3,    1,    3,
-            2,    3,    1,    3,    2,    0,    1,    1,    1,    1,
-            1,    3,    7,   10,    5,    7,    9,    5,    3,    3,
-            3,    3,    3,    3,    1,    2,    5,    7,    9,    6,
-            5,    6,    3,    3,    2,    1,    1,    1,    0,    2,
-            1,    3,    8,    0,    4,    2,    1,    3,    0,    1,
-            0,    1,    3,    1,    8,    7,    6,    5,    1,    2,
-            2,    0,    2,    0,    2,    0,    2,    2,    1,    3,
-            1,    4,    1,    4,    1,    1,    4,    2,    1,    3,
-            3,    3,    4,    4,    5,    0,    2,    4,    3,    1,
-            1,    1,    4,    0,    2,    5,    0,    2,    6,    0,
-            2,    0,    3,    1,    2,    1,    1,    2,    0,    1,
-            3,    4,    6,    4,    1,    2,    1,    1,    1,    0,
-            1,    0,    2,    2,    4,    1,    3,    1,    2,    2,
-            2,    3,    1,    1,    2,    3,    1,    1,    3,    2,
-            0,    1,    3,    4,    9,    3,    1,    1,    3,    0,
-            2,    4,    5,    4,    4,    4,    3,    1,    1,    1,
-            1,    1,    1,    0,    1,    1,    2,    1,    1,    1,
-            1,    1,    1,    2,    1,    3,    1,    1,    3,    2,
-            3,    1,    0,    1,    1,    3,    3,    3,    4,    1,
-            2,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-            3,    3,    3,    2,    2,    2,    2,    3,    3,    3,
+            1,    1,    1,    1,    1,    1,    3,    1,    1,    1,
+            1,    0,    1,    0,    1,    1,    1,    1,    1,    3,
+            5,    4,    3,    4,    2,    3,    1,    1,    7,    8,
+            6,    7,    2,    3,    1,    2,    3,    1,    2,    3,
+            1,    1,    3,    1,    2,    1,    2,    2,    3,    1,
+            3,    2,    3,    1,    3,    2,    0,    1,    1,    1,
+            1,    1,    3,    7,   10,    5,    7,    9,    5,    3,
+            3,    3,    3,    3,    3,    1,    2,    5,    7,    9,
+            6,    5,    6,    3,    3,    2,    1,    1,    1,    0,
+            2,    1,    3,    8,    0,    4,    2,    1,    3,    0,
+            1,    0,    1,    3,    1,    8,    7,    6,    5,    1,
+            2,    2,    0,    2,    0,    2,    0,    2,    2,    1,
+            3,    1,    4,    1,    4,    1,    1,    4,    2,    1,
+            3,    3,    3,    4,    4,    5,    0,    2,    4,    3,
+            1,    1,    1,    4,    0,    2,    5,    0,    2,    6,
+            0,    2,    0,    3,    1,    2,    1,    1,    2,    0,
+            1,    3,    4,    6,    4,    1,    2,    1,    1,    1,
+            0,    1,    0,    2,    2,    2,    4,    1,    3,    1,
+            2,    2,    2,    3,    1,    1,    2,    3,    1,    1,
+            3,    2,    0,    1,    4,    4,    9,    3,    1,    1,
+            3,    0,    2,    4,    5,    4,    4,    4,    3,    1,
+            1,    1,    1,    1,    1,    0,    1,    1,    2,    1,
+            1,    1,    1,    1,    1,    2,    1,    3,    1,    1,
+            3,    2,    3,    1,    0,    1,    1,    3,    3,    3,
+            4,    1,    2,    3,    3,    3,    3,    3,    3,    3,
+            3,    3,    3,    3,    3,    3,    2,    2,    2,    2,
             3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-            3,    3,    3,    3,    2,    2,    2,    2,    3,    3,
-            3,    3,    3,    3,    3,    3,    3,    3,    3,    5,
-            4,    3,    4,    4,    2,    2,    4,    2,    2,    2,
-            2,    2,    2,    2,    2,    2,    2,    2,    1,    3,
-            2,    1,    2,    4,    2,    8,    9,    7,    3,    2,
-            0,    4,    2,    1,    3,    2,    2,    2,    4,    1,
-            1,    1,    2,    3,    1,    1,    1,    1,    1,    0,
-            3,    0,    1,    1,    0,    1,    1,    3,    3,    3,
-            4,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-            1,    1,    1,    1,    1,    3,    2,    3,    3,    0,
-            1,    1,    3,    1,    1,    3,    1,    1,    4,    4,
-            4,    1,    4,    1,    1,    3,    1,    4,    2,    2,
-            1,    3,    1,    4,    4,    3,    3,    3,    1,    3,
-            1,    1,    3,    1,    1,    4,    3,    1,    1,    2,
-            1,    3,    4,    3,    0,    1,    1,    1,    3,    1,
-            3,    1,    4,    2,    0,    2,    2,    1,    2,    1,
-            1,    1,    4,    3,    3,    3,    6,    3,    1,    1,
-            2,    1
+            3,    3,    3,    3,    3,    3,    3,    2,    2,    2,
+            2,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+            3,    3,    5,    4,    3,    4,    4,    2,    2,    4,
+            2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
+            2,    1,    3,    2,    1,    2,    4,    2,    8,    9,
+            8,    9,    7,    3,    2,    0,    4,    2,    1,    3,
+            2,    2,    2,    4,    1,    1,    1,    2,    3,    1,
+            1,    1,    1,    1,    0,    3,    0,    1,    1,    0,
+            1,    1,    3,    3,    3,    4,    1,    1,    1,    1,
+            1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+            3,    2,    3,    3,    0,    1,    1,    3,    1,    1,
+            3,    1,    1,    4,    4,    4,    1,    4,    1,    1,
+            3,    1,    4,    2,    2,    1,    3,    1,    4,    4,
+            3,    3,    3,    1,    3,    1,    1,    3,    1,    1,
+            4,    3,    1,    1,    2,    1,    3,    4,    3,    0,
+            1,    1,    1,    3,    1,    3,    1,    4,    2,    2,
+            0,    2,    2,    1,    2,    1,    1,    1,    4,    3,
+            3,    3,    6,    3,    1,    1,    2,    1
     );
 
     protected function initReduceCallbacks() {
@@ -852,7 +869,7 @@ protected function initReduceCallbacks() {
                  $this->semValue = array();
             },
             4 => function ($stackPos) {
-                 $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($startAttributes + $this->endAttributes); } else { $nop = null; };
+                 $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($this->createZeroLengthAttributes($startAttributes)); } else { $nop = null; };
             if ($nop !== null) { $this->semStack[$stackPos-(1-1)][] = $nop; } $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             5 => function ($stackPos) {
@@ -1081,7 +1098,7 @@ protected function initReduceCallbacks() {
                 $this->semValue = $this->semStack[$stackPos];
             },
             80 => function ($stackPos) {
-                 $this->semValue = new Node\Identifier($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                $this->semValue = $this->semStack[$stackPos];
             },
             81 => function ($stackPos) {
                  $this->semValue = new Node\Identifier($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
@@ -1093,19 +1110,19 @@ protected function initReduceCallbacks() {
                  $this->semValue = new Node\Identifier($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             84 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semValue = new Node\Identifier($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             85 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             86 => function ($stackPos) {
-                 $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             87 => function ($stackPos) {
-                 $this->semValue = new Expr\Variable(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             88 => function ($stackPos) {
-                 /* nothing */
+                 $this->semValue = new Expr\Variable(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             89 => function ($stackPos) {
                  /* nothing */
@@ -1114,16 +1131,16 @@ protected function initReduceCallbacks() {
                  /* nothing */
             },
             91 => function ($stackPos) {
-                 $this->emitError(new Error('A trailing comma is not allowed here', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes));
+                 /* nothing */
             },
             92 => function ($stackPos) {
-                $this->semValue = $this->semStack[$stackPos];
+                 $this->emitError(new Error('A trailing comma is not allowed here', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes));
             },
             93 => function ($stackPos) {
                 $this->semValue = $this->semStack[$stackPos];
             },
             94 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                $this->semValue = $this->semStack[$stackPos];
             },
             95 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
@@ -1132,134 +1149,134 @@ protected function initReduceCallbacks() {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             97 => function ($stackPos) {
-                 $this->semValue = new Stmt\HaltCompiler($this->lexer->handleHaltCompiler(), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             98 => function ($stackPos) {
+                 $this->semValue = new Stmt\HaltCompiler($this->lexer->handleHaltCompiler(), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+            },
+            99 => function ($stackPos) {
                  $this->semValue = new Stmt\Namespace_($this->semStack[$stackPos-(3-2)], null, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             $this->semValue->setAttribute('kind', Stmt\Namespace_::KIND_SEMICOLON);
             $this->checkNamespace($this->semValue);
             },
-            99 => function ($stackPos) {
+            100 => function ($stackPos) {
                  $this->semValue = new Stmt\Namespace_($this->semStack[$stackPos-(5-2)], $this->semStack[$stackPos-(5-4)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
             $this->semValue->setAttribute('kind', Stmt\Namespace_::KIND_BRACED);
             $this->checkNamespace($this->semValue);
             },
-            100 => function ($stackPos) {
+            101 => function ($stackPos) {
                  $this->semValue = new Stmt\Namespace_(null, $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             $this->semValue->setAttribute('kind', Stmt\Namespace_::KIND_BRACED);
             $this->checkNamespace($this->semValue);
             },
-            101 => function ($stackPos) {
-                 $this->semValue = new Stmt\Use_($this->semStack[$stackPos-(3-2)], Stmt\Use_::TYPE_NORMAL, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
-            },
             102 => function ($stackPos) {
-                 $this->semValue = new Stmt\Use_($this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-2)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\Use_($this->semStack[$stackPos-(3-2)], Stmt\Use_::TYPE_NORMAL, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             103 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = new Stmt\Use_($this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-2)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             104 => function ($stackPos) {
-                 $this->semValue = new Stmt\Const_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             105 => function ($stackPos) {
-                 $this->semValue = Stmt\Use_::TYPE_FUNCTION;
+                 $this->semValue = new Stmt\Const_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             106 => function ($stackPos) {
-                 $this->semValue = Stmt\Use_::TYPE_CONSTANT;
+                 $this->semValue = Stmt\Use_::TYPE_FUNCTION;
             },
             107 => function ($stackPos) {
-                 $this->semValue = new Stmt\GroupUse(new Name($this->semStack[$stackPos-(7-3)], $this->startAttributeStack[$stackPos-(7-3)] + $this->endAttributeStack[$stackPos-(7-3)]), $this->semStack[$stackPos-(7-6)], $this->semStack[$stackPos-(7-2)], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
+                 $this->semValue = Stmt\Use_::TYPE_CONSTANT;
             },
             108 => function ($stackPos) {
-                 $this->semValue = new Stmt\GroupUse(new Name($this->semStack[$stackPos-(8-4)], $this->startAttributeStack[$stackPos-(8-4)] + $this->endAttributeStack[$stackPos-(8-4)]), $this->semStack[$stackPos-(8-7)], $this->semStack[$stackPos-(8-2)], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\GroupUse(new Name($this->semStack[$stackPos-(7-3)], $this->startAttributeStack[$stackPos-(7-3)] + $this->endAttributeStack[$stackPos-(7-3)]), $this->semStack[$stackPos-(7-6)], $this->semStack[$stackPos-(7-2)], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
             },
             109 => function ($stackPos) {
-                 $this->semValue = new Stmt\GroupUse(new Name($this->semStack[$stackPos-(6-2)], $this->startAttributeStack[$stackPos-(6-2)] + $this->endAttributeStack[$stackPos-(6-2)]), $this->semStack[$stackPos-(6-5)], Stmt\Use_::TYPE_UNKNOWN, $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\GroupUse(new Name($this->semStack[$stackPos-(8-4)], $this->startAttributeStack[$stackPos-(8-4)] + $this->endAttributeStack[$stackPos-(8-4)]), $this->semStack[$stackPos-(8-7)], $this->semStack[$stackPos-(8-2)], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes);
             },
             110 => function ($stackPos) {
-                 $this->semValue = new Stmt\GroupUse(new Name($this->semStack[$stackPos-(7-3)], $this->startAttributeStack[$stackPos-(7-3)] + $this->endAttributeStack[$stackPos-(7-3)]), $this->semStack[$stackPos-(7-6)], Stmt\Use_::TYPE_UNKNOWN, $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\GroupUse(new Name($this->semStack[$stackPos-(6-2)], $this->startAttributeStack[$stackPos-(6-2)] + $this->endAttributeStack[$stackPos-(6-2)]), $this->semStack[$stackPos-(6-5)], Stmt\Use_::TYPE_UNKNOWN, $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
             },
             111 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = new Stmt\GroupUse(new Name($this->semStack[$stackPos-(7-3)], $this->startAttributeStack[$stackPos-(7-3)] + $this->endAttributeStack[$stackPos-(7-3)]), $this->semStack[$stackPos-(7-6)], Stmt\Use_::TYPE_UNKNOWN, $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
             },
             112 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             113 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             114 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             115 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             116 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             117 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             118 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             119 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             120 => function ($stackPos) {
-                 $this->semValue = new Stmt\UseUse($this->semStack[$stackPos-(1-1)], null, Stmt\Use_::TYPE_UNKNOWN, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->checkUseUse($this->semValue, $stackPos-(1-1));
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             121 => function ($stackPos) {
-                 $this->semValue = new Stmt\UseUse($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], Stmt\Use_::TYPE_UNKNOWN, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); $this->checkUseUse($this->semValue, $stackPos-(3-3));
+                 $this->semValue = new Stmt\UseUse($this->semStack[$stackPos-(1-1)], null, Stmt\Use_::TYPE_UNKNOWN, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->checkUseUse($this->semValue, $stackPos-(1-1));
             },
             122 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Stmt\UseUse($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], Stmt\Use_::TYPE_UNKNOWN, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); $this->checkUseUse($this->semValue, $stackPos-(3-3));
             },
             123 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(2-2)];
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             124 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)]; $this->semValue->type = Stmt\Use_::TYPE_NORMAL;
+                 $this->semValue = $this->semStack[$stackPos-(2-2)];
             },
             125 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(2-2)]; $this->semValue->type = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = $this->semStack[$stackPos-(1-1)]; $this->semValue->type = Stmt\Use_::TYPE_NORMAL;
             },
             126 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = $this->semStack[$stackPos-(2-2)]; $this->semValue->type = $this->semStack[$stackPos-(2-1)];
             },
             127 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             128 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             129 => function ($stackPos) {
-                 $this->semValue = new Node\Const_($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             130 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = new Node\Const_($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             131 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             132 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             133 => function ($stackPos) {
-                 $this->semValue = new Node\Const_($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             134 => function ($stackPos) {
-                 if (is_array($this->semStack[$stackPos-(2-2)])) { $this->semValue = array_merge($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)]); } else { $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; };
+                 $this->semValue = new Node\Const_($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             135 => function ($stackPos) {
-                 $this->semValue = array();
+                 if (is_array($this->semStack[$stackPos-(2-2)])) { $this->semValue = array_merge($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)]); } else { $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; };
             },
             136 => function ($stackPos) {
-                 $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($startAttributes + $this->endAttributes); } else { $nop = null; };
-            if ($nop !== null) { $this->semStack[$stackPos-(1-1)][] = $nop; } $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = array();
             },
             137 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($this->createZeroLengthAttributes($startAttributes)); } else { $nop = null; };
+            if ($nop !== null) { $this->semStack[$stackPos-(1-1)][] = $nop; } $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             138 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
@@ -1268,9 +1285,12 @@ protected function initReduceCallbacks() {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             140 => function ($stackPos) {
-                 throw new Error('__HALT_COMPILER() can only be used from the outermost scope', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             141 => function ($stackPos) {
+                 throw new Error('__HALT_COMPILER() can only be used from the outermost scope', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+            },
+            142 => function ($stackPos) {
 
         if ($this->semStack[$stackPos-(3-2)]) {
             $this->semValue = $this->semStack[$stackPos-(3-2)]; $attrs = $this->startAttributeStack[$stackPos-(3-1)]; $stmts = $this->semValue; if (!empty($attrs['comments'])) {$stmts[0]->setAttribute('comments', array_merge($attrs['comments'], $stmts[0]->getAttribute('comments', []))); };
@@ -1280,1159 +1300,1174 @@ protected function initReduceCallbacks() {
         }
 
             },
-            142 => function ($stackPos) {
+            143 => function ($stackPos) {
                  $this->semValue = new Stmt\If_($this->semStack[$stackPos-(7-3)], ['stmts' => is_array($this->semStack[$stackPos-(7-5)]) ? $this->semStack[$stackPos-(7-5)] : array($this->semStack[$stackPos-(7-5)]), 'elseifs' => $this->semStack[$stackPos-(7-6)], 'else' => $this->semStack[$stackPos-(7-7)]], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
             },
-            143 => function ($stackPos) {
+            144 => function ($stackPos) {
                  $this->semValue = new Stmt\If_($this->semStack[$stackPos-(10-3)], ['stmts' => $this->semStack[$stackPos-(10-6)], 'elseifs' => $this->semStack[$stackPos-(10-7)], 'else' => $this->semStack[$stackPos-(10-8)]], $this->startAttributeStack[$stackPos-(10-1)] + $this->endAttributes);
             },
-            144 => function ($stackPos) {
+            145 => function ($stackPos) {
                  $this->semValue = new Stmt\While_($this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-5)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
             },
-            145 => function ($stackPos) {
+            146 => function ($stackPos) {
                  $this->semValue = new Stmt\Do_($this->semStack[$stackPos-(7-5)], is_array($this->semStack[$stackPos-(7-2)]) ? $this->semStack[$stackPos-(7-2)] : array($this->semStack[$stackPos-(7-2)]), $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
             },
-            146 => function ($stackPos) {
+            147 => function ($stackPos) {
                  $this->semValue = new Stmt\For_(['init' => $this->semStack[$stackPos-(9-3)], 'cond' => $this->semStack[$stackPos-(9-5)], 'loop' => $this->semStack[$stackPos-(9-7)], 'stmts' => $this->semStack[$stackPos-(9-9)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
             },
-            147 => function ($stackPos) {
+            148 => function ($stackPos) {
                  $this->semValue = new Stmt\Switch_($this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-5)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
             },
-            148 => function ($stackPos) {
+            149 => function ($stackPos) {
                  $this->semValue = new Stmt\Break_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            149 => function ($stackPos) {
+            150 => function ($stackPos) {
                  $this->semValue = new Stmt\Continue_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            150 => function ($stackPos) {
+            151 => function ($stackPos) {
                  $this->semValue = new Stmt\Return_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            151 => function ($stackPos) {
+            152 => function ($stackPos) {
                  $this->semValue = new Stmt\Global_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            152 => function ($stackPos) {
+            153 => function ($stackPos) {
                  $this->semValue = new Stmt\Static_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            153 => function ($stackPos) {
+            154 => function ($stackPos) {
                  $this->semValue = new Stmt\Echo_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            154 => function ($stackPos) {
+            155 => function ($stackPos) {
                  $this->semValue = new Stmt\InlineHTML($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
-            155 => function ($stackPos) {
+            156 => function ($stackPos) {
                  $this->semValue = new Stmt\Expression($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
-            156 => function ($stackPos) {
+            157 => function ($stackPos) {
                  $this->semValue = new Stmt\Unset_($this->semStack[$stackPos-(5-3)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
             },
-            157 => function ($stackPos) {
+            158 => function ($stackPos) {
                  $this->semValue = new Stmt\Foreach_($this->semStack[$stackPos-(7-3)], $this->semStack[$stackPos-(7-5)][0], ['keyVar' => null, 'byRef' => $this->semStack[$stackPos-(7-5)][1], 'stmts' => $this->semStack[$stackPos-(7-7)]], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
             },
-            158 => function ($stackPos) {
+            159 => function ($stackPos) {
                  $this->semValue = new Stmt\Foreach_($this->semStack[$stackPos-(9-3)], $this->semStack[$stackPos-(9-7)][0], ['keyVar' => $this->semStack[$stackPos-(9-5)], 'byRef' => $this->semStack[$stackPos-(9-7)][1], 'stmts' => $this->semStack[$stackPos-(9-9)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
             },
-            159 => function ($stackPos) {
+            160 => function ($stackPos) {
                  $this->semValue = new Stmt\Foreach_($this->semStack[$stackPos-(6-3)], new Expr\Error($this->startAttributeStack[$stackPos-(6-4)] + $this->endAttributeStack[$stackPos-(6-4)]), ['stmts' => $this->semStack[$stackPos-(6-6)]], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
             },
-            160 => function ($stackPos) {
+            161 => function ($stackPos) {
                  $this->semValue = new Stmt\Declare_($this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-5)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
             },
-            161 => function ($stackPos) {
+            162 => function ($stackPos) {
                  $this->semValue = new Stmt\TryCatch($this->semStack[$stackPos-(6-3)], $this->semStack[$stackPos-(6-5)], $this->semStack[$stackPos-(6-6)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes); $this->checkTryCatch($this->semValue);
             },
-            162 => function ($stackPos) {
+            163 => function ($stackPos) {
                  $this->semValue = new Stmt\Throw_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            163 => function ($stackPos) {
+            164 => function ($stackPos) {
                  $this->semValue = new Stmt\Goto_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            164 => function ($stackPos) {
+            165 => function ($stackPos) {
                  $this->semValue = new Stmt\Label($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
-            165 => function ($stackPos) {
+            166 => function ($stackPos) {
                  $this->semValue = array(); /* means: no statement */
             },
-            166 => function ($stackPos) {
+            167 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
-            167 => function ($stackPos) {
+            168 => function ($stackPos) {
                  $startAttributes = $this->startAttributeStack[$stackPos-(1-1)]; if (isset($startAttributes['comments'])) { $this->semValue = new Stmt\Nop($startAttributes + $this->endAttributes); } else { $this->semValue = null; };
             if ($this->semValue === null) $this->semValue = array(); /* means: no statement */
             },
-            168 => function ($stackPos) {
+            169 => function ($stackPos) {
                  $this->semValue = array();
             },
-            169 => function ($stackPos) {
+            170 => function ($stackPos) {
                  $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
-            170 => function ($stackPos) {
+            171 => function ($stackPos) {
                  $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
-            171 => function ($stackPos) {
+            172 => function ($stackPos) {
                  $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
-            172 => function ($stackPos) {
+            173 => function ($stackPos) {
                  $this->semValue = new Stmt\Catch_($this->semStack[$stackPos-(8-3)], $this->semStack[$stackPos-(8-4)], $this->semStack[$stackPos-(8-7)], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes);
             },
-            173 => function ($stackPos) {
+            174 => function ($stackPos) {
                  $this->semValue = null;
             },
-            174 => function ($stackPos) {
+            175 => function ($stackPos) {
                  $this->semValue = new Stmt\Finally_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
-            175 => function ($stackPos) {
+            176 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
-            176 => function ($stackPos) {
+            177 => function ($stackPos) {
                  $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
-            177 => function ($stackPos) {
+            178 => function ($stackPos) {
                  $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
-            178 => function ($stackPos) {
+            179 => function ($stackPos) {
                  $this->semValue = false;
             },
-            179 => function ($stackPos) {
+            180 => function ($stackPos) {
                  $this->semValue = true;
             },
-            180 => function ($stackPos) {
+            181 => function ($stackPos) {
                  $this->semValue = false;
             },
-            181 => function ($stackPos) {
+            182 => function ($stackPos) {
                  $this->semValue = true;
             },
-            182 => function ($stackPos) {
+            183 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(3-2)];
             },
-            183 => function ($stackPos) {
+            184 => function ($stackPos) {
                  $this->semValue = [];
             },
-            184 => function ($stackPos) {
+            185 => function ($stackPos) {
                  $this->semValue = new Stmt\Function_($this->semStack[$stackPos-(8-3)], ['byRef' => $this->semStack[$stackPos-(8-2)], 'params' => $this->semStack[$stackPos-(8-5)], 'returnType' => $this->semStack[$stackPos-(8-7)], 'stmts' => $this->semStack[$stackPos-(8-8)]], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes);
             },
-            185 => function ($stackPos) {
+            186 => function ($stackPos) {
                  $this->semValue = new Stmt\Class_($this->semStack[$stackPos-(7-2)], ['type' => $this->semStack[$stackPos-(7-1)], 'extends' => $this->semStack[$stackPos-(7-3)], 'implements' => $this->semStack[$stackPos-(7-4)], 'stmts' => $this->semStack[$stackPos-(7-6)]], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
             $this->checkClass($this->semValue, $stackPos-(7-2));
             },
-            186 => function ($stackPos) {
+            187 => function ($stackPos) {
                  $this->semValue = new Stmt\Interface_($this->semStack[$stackPos-(6-2)], ['extends' => $this->semStack[$stackPos-(6-3)], 'stmts' => $this->semStack[$stackPos-(6-5)]], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
             $this->checkInterface($this->semValue, $stackPos-(6-2));
             },
-            187 => function ($stackPos) {
+            188 => function ($stackPos) {
                  $this->semValue = new Stmt\Trait_($this->semStack[$stackPos-(5-2)], ['stmts' => $this->semStack[$stackPos-(5-4)]], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
             },
-            188 => function ($stackPos) {
+            189 => function ($stackPos) {
                  $this->semValue = 0;
             },
-            189 => function ($stackPos) {
+            190 => function ($stackPos) {
                  $this->semValue = Stmt\Class_::MODIFIER_ABSTRACT;
             },
-            190 => function ($stackPos) {
+            191 => function ($stackPos) {
                  $this->semValue = Stmt\Class_::MODIFIER_FINAL;
             },
-            191 => function ($stackPos) {
+            192 => function ($stackPos) {
                  $this->semValue = null;
             },
-            192 => function ($stackPos) {
+            193 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(2-2)];
             },
-            193 => function ($stackPos) {
+            194 => function ($stackPos) {
                  $this->semValue = array();
             },
-            194 => function ($stackPos) {
+            195 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(2-2)];
             },
-            195 => function ($stackPos) {
+            196 => function ($stackPos) {
                  $this->semValue = array();
             },
-            196 => function ($stackPos) {
+            197 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(2-2)];
             },
-            197 => function ($stackPos) {
+            198 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
-            198 => function ($stackPos) {
+            199 => function ($stackPos) {
                  $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
-            199 => function ($stackPos) {
+            200 => function ($stackPos) {
                  $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
-            200 => function ($stackPos) {
+            201 => function ($stackPos) {
                  $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
             },
-            201 => function ($stackPos) {
+            202 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(4-2)];
             },
-            202 => function ($stackPos) {
+            203 => function ($stackPos) {
                  $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
             },
-            203 => function ($stackPos) {
+            204 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(4-2)];
             },
-            204 => function ($stackPos) {
+            205 => function ($stackPos) {
                  $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
             },
-            205 => function ($stackPos) {
+            206 => function ($stackPos) {
                  $this->semValue = null;
             },
-            206 => function ($stackPos) {
+            207 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(4-2)];
             },
-            207 => function ($stackPos) {
+            208 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
-            208 => function ($stackPos) {
+            209 => function ($stackPos) {
                  $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
-            209 => function ($stackPos) {
+            210 => function ($stackPos) {
                  $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
-            210 => function ($stackPos) {
+            211 => function ($stackPos) {
                  $this->semValue = new Stmt\DeclareDeclare($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
-            211 => function ($stackPos) {
+            212 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(3-2)];
             },
-            212 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(4-3)];
-            },
             213 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(4-2)];
+                 $this->semValue = $this->semStack[$stackPos-(4-3)];
             },
             214 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(5-3)];
+                 $this->semValue = $this->semStack[$stackPos-(4-2)];
             },
             215 => function ($stackPos) {
-                 $this->semValue = array();
+                 $this->semValue = $this->semStack[$stackPos-(5-3)];
             },
             216 => function ($stackPos) {
-                 $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = array();
             },
             217 => function ($stackPos) {
-                 $this->semValue = new Stmt\Case_($this->semStack[$stackPos-(4-2)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             218 => function ($stackPos) {
-                 $this->semValue = new Stmt\Case_(null, $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\Case_($this->semStack[$stackPos-(4-2)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             219 => function ($stackPos) {
-                $this->semValue = $this->semStack[$stackPos];
+                 $this->semValue = new Stmt\Case_(null, $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             220 => function ($stackPos) {
                 $this->semValue = $this->semStack[$stackPos];
             },
             221 => function ($stackPos) {
-                 $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
+                $this->semValue = $this->semStack[$stackPos];
             },
             222 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(4-2)];
+                 $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
             },
             223 => function ($stackPos) {
-                 $this->semValue = array();
+                 $this->semValue = $this->semStack[$stackPos-(4-2)];
             },
             224 => function ($stackPos) {
-                 $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = array();
             },
             225 => function ($stackPos) {
-                 $this->semValue = new Stmt\ElseIf_($this->semStack[$stackPos-(5-3)], is_array($this->semStack[$stackPos-(5-5)]) ? $this->semStack[$stackPos-(5-5)] : array($this->semStack[$stackPos-(5-5)]), $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
+                 $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             226 => function ($stackPos) {
-                 $this->semValue = array();
+                 $this->semValue = new Stmt\ElseIf_($this->semStack[$stackPos-(5-3)], is_array($this->semStack[$stackPos-(5-5)]) ? $this->semStack[$stackPos-(5-5)] : array($this->semStack[$stackPos-(5-5)]), $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
             },
             227 => function ($stackPos) {
-                 $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = array();
             },
             228 => function ($stackPos) {
-                 $this->semValue = new Stmt\ElseIf_($this->semStack[$stackPos-(6-3)], $this->semStack[$stackPos-(6-6)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
+                 $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             229 => function ($stackPos) {
-                 $this->semValue = null;
+                 $this->semValue = new Stmt\ElseIf_($this->semStack[$stackPos-(6-3)], $this->semStack[$stackPos-(6-6)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
             },
             230 => function ($stackPos) {
-                 $this->semValue = new Stmt\Else_(is_array($this->semStack[$stackPos-(2-2)]) ? $this->semStack[$stackPos-(2-2)] : array($this->semStack[$stackPos-(2-2)]), $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = null;
             },
             231 => function ($stackPos) {
-                 $this->semValue = null;
+                 $this->semValue = new Stmt\Else_(is_array($this->semStack[$stackPos-(2-2)]) ? $this->semStack[$stackPos-(2-2)] : array($this->semStack[$stackPos-(2-2)]), $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             232 => function ($stackPos) {
-                 $this->semValue = new Stmt\Else_($this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = null;
             },
             233 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)], false);
+                 $this->semValue = new Stmt\Else_($this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             234 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(2-2)], true);
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)], false);
             },
             235 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)], false);
+                 $this->semValue = array($this->semStack[$stackPos-(2-2)], true);
             },
             236 => function ($stackPos) {
                  $this->semValue = array($this->semStack[$stackPos-(1-1)], false);
             },
             237 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)], false);
             },
             238 => function ($stackPos) {
-                 $this->semValue = array();
+                 $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             239 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semValue = array();
             },
             240 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             241 => function ($stackPos) {
-                 $this->semValue = new Node\Param($this->semStack[$stackPos-(4-4)], null, $this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-2)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); $this->checkParam($this->semValue);
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             242 => function ($stackPos) {
-                 $this->semValue = new Node\Param($this->semStack[$stackPos-(6-4)], $this->semStack[$stackPos-(6-6)], $this->semStack[$stackPos-(6-1)], $this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-3)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes); $this->checkParam($this->semValue);
+                 $this->semValue = new Node\Param($this->semStack[$stackPos-(4-4)], null, $this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-2)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); $this->checkParam($this->semValue);
             },
             243 => function ($stackPos) {
-                 $this->semValue = new Node\Param(new Expr\Error($this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes), null, $this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-2)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = new Node\Param($this->semStack[$stackPos-(6-4)], $this->semStack[$stackPos-(6-6)], $this->semStack[$stackPos-(6-1)], $this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-3)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes); $this->checkParam($this->semValue);
             },
             244 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Node\Param(new Expr\Error($this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes), null, $this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-2)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             245 => function ($stackPos) {
-                 $this->semValue = new Node\NullableType($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             246 => function ($stackPos) {
-                 $this->semValue = $this->handleBuiltinTypes($this->semStack[$stackPos-(1-1)]);
+                 $this->semValue = new Node\NullableType($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             247 => function ($stackPos) {
-                 $this->semValue = new Node\Identifier('array', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = $this->handleBuiltinTypes($this->semStack[$stackPos-(1-1)]);
             },
             248 => function ($stackPos) {
-                 $this->semValue = new Node\Identifier('callable', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Node\Identifier('array', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             249 => function ($stackPos) {
-                 $this->semValue = null;
+                 $this->semValue = new Node\Identifier('callable', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             250 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = null;
             },
             251 => function ($stackPos) {
-                 $this->semValue = null;
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             252 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(2-2)];
+                 $this->semValue = null;
             },
             253 => function ($stackPos) {
-                 $this->semValue = array();
+                 $this->semValue = $this->semStack[$stackPos-(2-2)];
             },
             254 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(4-2)];
+                 $this->semValue = null;
             },
             255 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semValue = array();
             },
             256 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 $this->semValue = $this->semStack[$stackPos-(4-2)];
             },
             257 => function ($stackPos) {
-                 $this->semValue = new Node\Arg($this->semStack[$stackPos-(1-1)], false, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             258 => function ($stackPos) {
-                 $this->semValue = new Node\Arg($this->semStack[$stackPos-(2-2)], true, false, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             259 => function ($stackPos) {
-                 $this->semValue = new Node\Arg($this->semStack[$stackPos-(2-2)], false, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Node\Arg($this->semStack[$stackPos-(1-1)], false, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             260 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = new Node\Arg($this->semStack[$stackPos-(2-2)], true, false, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             261 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 $this->semValue = new Node\Arg($this->semStack[$stackPos-(2-2)], false, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             262 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             263 => function ($stackPos) {
-                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             264 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             265 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             266 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             267 => function ($stackPos) {
-                 $this->semValue = new Stmt\StaticVar($this->semStack[$stackPos-(1-1)], null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             268 => function ($stackPos) {
-                 $this->semValue = new Stmt\StaticVar($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             269 => function ($stackPos) {
-                 if ($this->semStack[$stackPos-(2-2)] !== null) { $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; }
+                 $this->semValue = new Stmt\StaticVar($this->semStack[$stackPos-(1-1)], null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             270 => function ($stackPos) {
-                 $this->semValue = array();
+                 $this->semValue = new Stmt\StaticVar($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             271 => function ($stackPos) {
-                 $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($startAttributes + $this->endAttributes); } else { $nop = null; };
-            if ($nop !== null) { $this->semStack[$stackPos-(1-1)][] = $nop; } $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 if ($this->semStack[$stackPos-(2-2)] !== null) { $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; }
             },
             272 => function ($stackPos) {
-                 $this->semValue = new Stmt\Property($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); $this->checkProperty($this->semValue, $stackPos-(3-1));
+                 $this->semValue = array();
             },
             273 => function ($stackPos) {
-                 $this->semValue = new Stmt\ClassConst($this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-1)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); $this->checkClassConst($this->semValue, $stackPos-(4-1));
+                 $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($this->createZeroLengthAttributes($startAttributes)); } else { $nop = null; };
+            if ($nop !== null) { $this->semStack[$stackPos-(1-1)][] = $nop; } $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             274 => function ($stackPos) {
-                 $this->semValue = new Stmt\ClassMethod($this->semStack[$stackPos-(9-4)], ['type' => $this->semStack[$stackPos-(9-1)], 'byRef' => $this->semStack[$stackPos-(9-3)], 'params' => $this->semStack[$stackPos-(9-6)], 'returnType' => $this->semStack[$stackPos-(9-8)], 'stmts' => $this->semStack[$stackPos-(9-9)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
-            $this->checkClassMethod($this->semValue, $stackPos-(9-1));
+                 $attrs = $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes;
+            $this->semValue = new Stmt\Property($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $attrs, $this->semStack[$stackPos-(4-2)]); $this->checkProperty($this->semValue, $stackPos-(4-1));
             },
             275 => function ($stackPos) {
-                 $this->semValue = new Stmt\TraitUse($this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\ClassConst($this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-1)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); $this->checkClassConst($this->semValue, $stackPos-(4-1));
             },
             276 => function ($stackPos) {
-                 $this->semValue = null; /* will be skipped */
+                 $this->semValue = new Stmt\ClassMethod($this->semStack[$stackPos-(9-4)], ['type' => $this->semStack[$stackPos-(9-1)], 'byRef' => $this->semStack[$stackPos-(9-3)], 'params' => $this->semStack[$stackPos-(9-6)], 'returnType' => $this->semStack[$stackPos-(9-8)], 'stmts' => $this->semStack[$stackPos-(9-9)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
+            $this->checkClassMethod($this->semValue, $stackPos-(9-1));
             },
             277 => function ($stackPos) {
-                 $this->semValue = array();
+                 $this->semValue = new Stmt\TraitUse($this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             278 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(3-2)];
+                 $this->semValue = null; /* will be skipped */
             },
             279 => function ($stackPos) {
                  $this->semValue = array();
             },
             280 => function ($stackPos) {
-                 $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = $this->semStack[$stackPos-(3-2)];
             },
             281 => function ($stackPos) {
-                 $this->semValue = new Stmt\TraitUseAdaptation\Precedence($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = array();
             },
             282 => function ($stackPos) {
-                 $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(5-1)][0], $this->semStack[$stackPos-(5-1)][1], $this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-4)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
+                 $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             283 => function ($stackPos) {
-                 $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], $this->semStack[$stackPos-(4-3)], null, $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\TraitUseAdaptation\Precedence($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             284 => function ($stackPos) {
-                 $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], null, $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(5-1)][0], $this->semStack[$stackPos-(5-1)][1], $this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-4)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
             },
             285 => function ($stackPos) {
-                 $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], null, $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], $this->semStack[$stackPos-(4-3)], null, $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             286 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)]);
+                 $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], null, $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             287 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], null, $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             288 => function ($stackPos) {
-                 $this->semValue = array(null, $this->semStack[$stackPos-(1-1)]);
+                 $this->semValue = array($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)]);
             },
             289 => function ($stackPos) {
-                 $this->semValue = null;
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             290 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = array(null, $this->semStack[$stackPos-(1-1)]);
             },
             291 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = null;
             },
             292 => function ($stackPos) {
-                 $this->semValue = 0;
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             293 => function ($stackPos) {
-                 $this->semValue = 0;
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             294 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = 0;
             },
             295 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = 0;
             },
             296 => function ($stackPos) {
-                 $this->checkModifier($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $stackPos-(2-2)); $this->semValue = $this->semStack[$stackPos-(2-1)] | $this->semStack[$stackPos-(2-2)];
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             297 => function ($stackPos) {
-                 $this->semValue = Stmt\Class_::MODIFIER_PUBLIC;
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             298 => function ($stackPos) {
-                 $this->semValue = Stmt\Class_::MODIFIER_PROTECTED;
+                 $this->checkModifier($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $stackPos-(2-2)); $this->semValue = $this->semStack[$stackPos-(2-1)] | $this->semStack[$stackPos-(2-2)];
             },
             299 => function ($stackPos) {
-                 $this->semValue = Stmt\Class_::MODIFIER_PRIVATE;
+                 $this->semValue = Stmt\Class_::MODIFIER_PUBLIC;
             },
             300 => function ($stackPos) {
-                 $this->semValue = Stmt\Class_::MODIFIER_STATIC;
+                 $this->semValue = Stmt\Class_::MODIFIER_PROTECTED;
             },
             301 => function ($stackPos) {
-                 $this->semValue = Stmt\Class_::MODIFIER_ABSTRACT;
+                 $this->semValue = Stmt\Class_::MODIFIER_PRIVATE;
             },
             302 => function ($stackPos) {
-                 $this->semValue = Stmt\Class_::MODIFIER_FINAL;
+                 $this->semValue = Stmt\Class_::MODIFIER_STATIC;
             },
             303 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = Stmt\Class_::MODIFIER_ABSTRACT;
             },
             304 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semValue = Stmt\Class_::MODIFIER_FINAL;
             },
             305 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             306 => function ($stackPos) {
-                 $this->semValue = new Node\VarLikeIdentifier(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             307 => function ($stackPos) {
-                 $this->semValue = new Stmt\PropertyProperty($this->semStack[$stackPos-(1-1)], null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             308 => function ($stackPos) {
-                 $this->semValue = new Stmt\PropertyProperty($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Node\VarLikeIdentifier(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             309 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = new Stmt\PropertyProperty($this->semStack[$stackPos-(1-1)], null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             310 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 $this->semValue = new Stmt\PropertyProperty($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             311 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             312 => function ($stackPos) {
-                 $this->semValue = array();
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             313 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             314 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = array();
             },
             315 => function ($stackPos) {
-                 $this->semValue = new Expr\Assign($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             316 => function ($stackPos) {
-                 $this->semValue = new Expr\Assign($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             317 => function ($stackPos) {
                  $this->semValue = new Expr\Assign($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             318 => function ($stackPos) {
-                 $this->semValue = new Expr\AssignRef($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Assign($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             319 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Expr\Assign($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             320 => function ($stackPos) {
-                 $this->semValue = new Expr\Clone_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\AssignRef($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             321 => function ($stackPos) {
-                 $this->semValue = new Expr\AssignOp\Plus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             322 => function ($stackPos) {
-                 $this->semValue = new Expr\AssignOp\Minus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Clone_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             323 => function ($stackPos) {
-                 $this->semValue = new Expr\AssignOp\Mul($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\AssignOp\Plus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             324 => function ($stackPos) {
-                 $this->semValue = new Expr\AssignOp\Div($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\AssignOp\Minus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             325 => function ($stackPos) {
-                 $this->semValue = new Expr\AssignOp\Concat($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\AssignOp\Mul($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             326 => function ($stackPos) {
-                 $this->semValue = new Expr\AssignOp\Mod($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\AssignOp\Div($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             327 => function ($stackPos) {
-                 $this->semValue = new Expr\AssignOp\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\AssignOp\Concat($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             328 => function ($stackPos) {
-                 $this->semValue = new Expr\AssignOp\BitwiseOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\AssignOp\Mod($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             329 => function ($stackPos) {
-                 $this->semValue = new Expr\AssignOp\BitwiseXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\AssignOp\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             330 => function ($stackPos) {
-                 $this->semValue = new Expr\AssignOp\ShiftLeft($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\AssignOp\BitwiseOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             331 => function ($stackPos) {
-                 $this->semValue = new Expr\AssignOp\ShiftRight($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\AssignOp\BitwiseXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             332 => function ($stackPos) {
-                 $this->semValue = new Expr\AssignOp\Pow($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\AssignOp\ShiftLeft($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             333 => function ($stackPos) {
-                 $this->semValue = new Expr\PostInc($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\AssignOp\ShiftRight($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             334 => function ($stackPos) {
-                 $this->semValue = new Expr\PreInc($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\AssignOp\Pow($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             335 => function ($stackPos) {
-                 $this->semValue = new Expr\PostDec($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\AssignOp\Coalesce($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             336 => function ($stackPos) {
-                 $this->semValue = new Expr\PreDec($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\PostInc($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             337 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\BooleanOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\PreInc($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             338 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\BooleanAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\PostDec($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             339 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\LogicalOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\PreDec($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             340 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\LogicalAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\BooleanOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             341 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\LogicalXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\BooleanAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             342 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\BitwiseOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\LogicalOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             343 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\LogicalAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             344 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\BitwiseXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\LogicalXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             345 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\Concat($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\BitwiseOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             346 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\Plus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             347 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\Minus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\BitwiseXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             348 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\Mul($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\Concat($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             349 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\Div($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\Plus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             350 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\Mod($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\Minus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             351 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\ShiftLeft($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\Mul($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             352 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\ShiftRight($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\Div($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             353 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\Pow($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\Mod($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             354 => function ($stackPos) {
-                 $this->semValue = new Expr\UnaryPlus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\ShiftLeft($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             355 => function ($stackPos) {
-                 $this->semValue = new Expr\UnaryMinus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\ShiftRight($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             356 => function ($stackPos) {
-                 $this->semValue = new Expr\BooleanNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\Pow($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             357 => function ($stackPos) {
-                 $this->semValue = new Expr\BitwiseNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\UnaryPlus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             358 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\Identical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\UnaryMinus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             359 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\NotIdentical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BooleanNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             360 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\Equal($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BitwiseNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             361 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\NotEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\Identical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             362 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\Spaceship($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\NotIdentical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             363 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\Smaller($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\Equal($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             364 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\SmallerOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\NotEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             365 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\Greater($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\Spaceship($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             366 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\GreaterOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\Smaller($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             367 => function ($stackPos) {
-                 $this->semValue = new Expr\Instanceof_($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\SmallerOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             368 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(3-2)];
+                 $this->semValue = new Expr\BinaryOp\Greater($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             369 => function ($stackPos) {
-                 $this->semValue = new Expr\Ternary($this->semStack[$stackPos-(5-1)], $this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-5)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\GreaterOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             370 => function ($stackPos) {
-                 $this->semValue = new Expr\Ternary($this->semStack[$stackPos-(4-1)], null, $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Instanceof_($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             371 => function ($stackPos) {
-                 $this->semValue = new Expr\BinaryOp\Coalesce($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(3-2)];
             },
             372 => function ($stackPos) {
-                 $this->semValue = new Expr\Isset_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Ternary($this->semStack[$stackPos-(5-1)], $this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-5)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
             },
             373 => function ($stackPos) {
-                 $this->semValue = new Expr\Empty_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Ternary($this->semStack[$stackPos-(4-1)], null, $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             374 => function ($stackPos) {
-                 $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BinaryOp\Coalesce($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             375 => function ($stackPos) {
-                 $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE_ONCE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Isset_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             376 => function ($stackPos) {
-                 $this->semValue = new Expr\Eval_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Empty_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             377 => function ($stackPos) {
-                 $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             378 => function ($stackPos) {
-                 $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE_ONCE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE_ONCE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             379 => function ($stackPos) {
-                 $this->semValue = new Expr\Cast\Int_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Eval_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             380 => function ($stackPos) {
-                 $this->semValue = new Expr\Cast\Double($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             381 => function ($stackPos) {
-                 $this->semValue = new Expr\Cast\String_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE_ONCE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             382 => function ($stackPos) {
-                 $this->semValue = new Expr\Cast\Array_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Cast\Int_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             383 => function ($stackPos) {
-                 $this->semValue = new Expr\Cast\Object_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $attrs = $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes;
+            $attrs['kind'] = $this->getFloatCastKind($this->semStack[$stackPos-(2-1)]);
+            $this->semValue = new Expr\Cast\Double($this->semStack[$stackPos-(2-2)], $attrs);
             },
             384 => function ($stackPos) {
-                 $this->semValue = new Expr\Cast\Bool_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Cast\String_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             385 => function ($stackPos) {
-                 $this->semValue = new Expr\Cast\Unset_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Cast\Array_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             386 => function ($stackPos) {
-                 $attrs = $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes;
-            $attrs['kind'] = strtolower($this->semStack[$stackPos-(2-1)]) === 'exit' ? Expr\Exit_::KIND_EXIT : Expr\Exit_::KIND_DIE;
-            $this->semValue = new Expr\Exit_($this->semStack[$stackPos-(2-2)], $attrs);
+                 $this->semValue = new Expr\Cast\Object_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             387 => function ($stackPos) {
-                 $this->semValue = new Expr\ErrorSuppress($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Cast\Bool_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             388 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Expr\Cast\Unset_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             389 => function ($stackPos) {
-                 $this->semValue = new Expr\ShellExec($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $attrs = $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes;
+            $attrs['kind'] = strtolower($this->semStack[$stackPos-(2-1)]) === 'exit' ? Expr\Exit_::KIND_EXIT : Expr\Exit_::KIND_DIE;
+            $this->semValue = new Expr\Exit_($this->semStack[$stackPos-(2-2)], $attrs);
             },
             390 => function ($stackPos) {
-                 $this->semValue = new Expr\Print_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\ErrorSuppress($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             391 => function ($stackPos) {
-                 $this->semValue = new Expr\Yield_(null, null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             392 => function ($stackPos) {
-                 $this->semValue = new Expr\Yield_($this->semStack[$stackPos-(2-2)], null, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\ShellExec($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             393 => function ($stackPos) {
-                 $this->semValue = new Expr\Yield_($this->semStack[$stackPos-(4-4)], $this->semStack[$stackPos-(4-2)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Print_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             394 => function ($stackPos) {
-                 $this->semValue = new Expr\YieldFrom($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Yield_(null, null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             395 => function ($stackPos) {
-                 $this->semValue = new Expr\Closure(['static' => false, 'byRef' => $this->semStack[$stackPos-(8-2)], 'params' => $this->semStack[$stackPos-(8-4)], 'uses' => $this->semStack[$stackPos-(8-6)], 'returnType' => $this->semStack[$stackPos-(8-7)], 'stmts' => $this->semStack[$stackPos-(8-8)]], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Yield_($this->semStack[$stackPos-(2-2)], null, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             396 => function ($stackPos) {
-                 $this->semValue = new Expr\Closure(['static' => true, 'byRef' => $this->semStack[$stackPos-(9-3)], 'params' => $this->semStack[$stackPos-(9-5)], 'uses' => $this->semStack[$stackPos-(9-7)], 'returnType' => $this->semStack[$stackPos-(9-8)], 'stmts' => $this->semStack[$stackPos-(9-9)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Yield_($this->semStack[$stackPos-(4-4)], $this->semStack[$stackPos-(4-2)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             397 => function ($stackPos) {
-                 $this->semValue = array(new Stmt\Class_(null, ['type' => 0, 'extends' => $this->semStack[$stackPos-(7-3)], 'implements' => $this->semStack[$stackPos-(7-4)], 'stmts' => $this->semStack[$stackPos-(7-6)]], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes), $this->semStack[$stackPos-(7-2)]);
-            $this->checkClass($this->semValue[0], -1);
+                 $this->semValue = new Expr\YieldFrom($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             398 => function ($stackPos) {
-                 $this->semValue = new Expr\New_($this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\ArrowFunction(['static' => false, 'byRef' => $this->semStack[$stackPos-(8-2)], 'params' => $this->semStack[$stackPos-(8-4)], 'returnType' => $this->semStack[$stackPos-(8-6)], 'expr' => $this->semStack[$stackPos-(8-8)]], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes);
             },
             399 => function ($stackPos) {
-                 list($class, $ctorArgs) = $this->semStack[$stackPos-(2-2)]; $this->semValue = new Expr\New_($class, $ctorArgs, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\ArrowFunction(['static' => true, 'byRef' => $this->semStack[$stackPos-(9-3)], 'params' => $this->semStack[$stackPos-(9-5)], 'returnType' => $this->semStack[$stackPos-(9-7)], 'expr' => $this->semStack[$stackPos-(9-9)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
             },
             400 => function ($stackPos) {
-                 $this->semValue = array();
+                 $this->semValue = new Expr\Closure(['static' => false, 'byRef' => $this->semStack[$stackPos-(8-2)], 'params' => $this->semStack[$stackPos-(8-4)], 'uses' => $this->semStack[$stackPos-(8-6)], 'returnType' => $this->semStack[$stackPos-(8-7)], 'stmts' => $this->semStack[$stackPos-(8-8)]], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes);
             },
             401 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(4-3)];
+                 $this->semValue = new Expr\Closure(['static' => true, 'byRef' => $this->semStack[$stackPos-(9-3)], 'params' => $this->semStack[$stackPos-(9-5)], 'uses' => $this->semStack[$stackPos-(9-7)], 'returnType' => $this->semStack[$stackPos-(9-8)], 'stmts' => $this->semStack[$stackPos-(9-9)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
             },
             402 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = array(new Stmt\Class_(null, ['type' => 0, 'extends' => $this->semStack[$stackPos-(7-3)], 'implements' => $this->semStack[$stackPos-(7-4)], 'stmts' => $this->semStack[$stackPos-(7-6)]], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes), $this->semStack[$stackPos-(7-2)]);
+            $this->checkClass($this->semValue[0], -1);
             },
             403 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semValue = new Expr\New_($this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             404 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 list($class, $ctorArgs) = $this->semStack[$stackPos-(2-2)]; $this->semValue = new Expr\New_($class, $ctorArgs, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             405 => function ($stackPos) {
-                 $this->semValue = new Expr\ClosureUse($this->semStack[$stackPos-(2-2)], $this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = array();
             },
             406 => function ($stackPos) {
-                 $this->semValue = new Expr\FuncCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(4-3)];
             },
             407 => function ($stackPos) {
-                 $this->semValue = new Expr\FuncCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             408 => function ($stackPos) {
-                 $this->semValue = new Expr\StaticCall($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             409 => function ($stackPos) {
-                 $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             410 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Expr\ClosureUse($this->semStack[$stackPos-(2-2)], $this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             411 => function ($stackPos) {
-                 $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\FuncCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             412 => function ($stackPos) {
-                 $this->semValue = new Name\FullyQualified($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\FuncCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             413 => function ($stackPos) {
-                 $this->semValue = new Name\Relative($this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\StaticCall($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             414 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             415 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             416 => function ($stackPos) {
-                 $this->semValue = new Expr\Error($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->errorState = 2;
+                 $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             417 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Name\FullyQualified($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             418 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Name\Relative($this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             419 => function ($stackPos) {
-                 $this->semValue = null;
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             420 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(3-2)];
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             421 => function ($stackPos) {
-                 $this->semValue = array();
+                 $this->semValue = new Expr\Error($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->errorState = 2;
             },
             422 => function ($stackPos) {
-                 $this->semValue = array(new Scalar\EncapsedStringPart(Scalar\String_::parseEscapeSequences($this->semStack[$stackPos-(1-1)], '`'), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes));
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             423 => function ($stackPos) {
-                 foreach ($this->semStack[$stackPos-(1-1)] as $s) { if ($s instanceof Node\Scalar\EncapsedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '`', true); } }; $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             424 => function ($stackPos) {
-                 $this->semValue = array();
+                 $this->semValue = null;
             },
             425 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = $this->semStack[$stackPos-(3-2)];
             },
             426 => function ($stackPos) {
-                 $this->semValue = new Expr\ConstFetch($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = array();
             },
             427 => function ($stackPos) {
-                 $this->semValue = new Expr\ClassConstFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = array(new Scalar\EncapsedStringPart(Scalar\String_::parseEscapeSequences($this->semStack[$stackPos-(1-1)], '`'), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes));
             },
             428 => function ($stackPos) {
-                 $this->semValue = new Expr\ClassConstFetch($this->semStack[$stackPos-(3-1)], new Expr\Error($this->startAttributeStack[$stackPos-(3-3)] + $this->endAttributeStack[$stackPos-(3-3)]), $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); $this->errorState = 2;
+                 foreach ($this->semStack[$stackPos-(1-1)] as $s) { if ($s instanceof Node\Scalar\EncapsedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '`', true); } }; $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             429 => function ($stackPos) {
-                 $attrs = $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes; $attrs['kind'] = Expr\Array_::KIND_SHORT;
-            $this->semValue = new Expr\Array_($this->semStack[$stackPos-(3-2)], $attrs);
+                 $this->semValue = array();
             },
             430 => function ($stackPos) {
-                 $attrs = $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes; $attrs['kind'] = Expr\Array_::KIND_LONG;
-            $this->semValue = new Expr\Array_($this->semStack[$stackPos-(4-3)], $attrs);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             431 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Expr\ConstFetch($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             432 => function ($stackPos) {
-                 $attrs = $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes; $attrs['kind'] = ($this->semStack[$stackPos-(1-1)][0] === "'" || ($this->semStack[$stackPos-(1-1)][1] === "'" && ($this->semStack[$stackPos-(1-1)][0] === 'b' || $this->semStack[$stackPos-(1-1)][0] === 'B')) ? Scalar\String_::KIND_SINGLE_QUOTED : Scalar\String_::KIND_DOUBLE_QUOTED);
-            $this->semValue = new Scalar\String_(Scalar\String_::parse($this->semStack[$stackPos-(1-1)]), $attrs);
+                 $this->semValue = new Expr\ClassConstFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             433 => function ($stackPos) {
-                 $this->semValue = $this->parseLNumber($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\ClassConstFetch($this->semStack[$stackPos-(3-1)], new Expr\Error($this->startAttributeStack[$stackPos-(3-3)] + $this->endAttributeStack[$stackPos-(3-3)]), $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); $this->errorState = 2;
             },
             434 => function ($stackPos) {
-                 $this->semValue = new Scalar\DNumber(Scalar\DNumber::parse($this->semStack[$stackPos-(1-1)]), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $attrs = $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes; $attrs['kind'] = Expr\Array_::KIND_SHORT;
+            $this->semValue = new Expr\Array_($this->semStack[$stackPos-(3-2)], $attrs);
             },
             435 => function ($stackPos) {
-                 $this->semValue = new Scalar\MagicConst\Line($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $attrs = $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes; $attrs['kind'] = Expr\Array_::KIND_LONG;
+            $this->semValue = new Expr\Array_($this->semStack[$stackPos-(4-3)], $attrs);
             },
             436 => function ($stackPos) {
-                 $this->semValue = new Scalar\MagicConst\File($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             437 => function ($stackPos) {
-                 $this->semValue = new Scalar\MagicConst\Dir($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $attrs = $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes; $attrs['kind'] = ($this->semStack[$stackPos-(1-1)][0] === "'" || ($this->semStack[$stackPos-(1-1)][1] === "'" && ($this->semStack[$stackPos-(1-1)][0] === 'b' || $this->semStack[$stackPos-(1-1)][0] === 'B')) ? Scalar\String_::KIND_SINGLE_QUOTED : Scalar\String_::KIND_DOUBLE_QUOTED);
+            $this->semValue = new Scalar\String_(Scalar\String_::parse($this->semStack[$stackPos-(1-1)]), $attrs);
             },
             438 => function ($stackPos) {
-                 $this->semValue = new Scalar\MagicConst\Class_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = $this->parseLNumber($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             439 => function ($stackPos) {
-                 $this->semValue = new Scalar\MagicConst\Trait_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Scalar\DNumber(Scalar\DNumber::parse($this->semStack[$stackPos-(1-1)]), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             440 => function ($stackPos) {
-                 $this->semValue = new Scalar\MagicConst\Method($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Scalar\MagicConst\Line($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             441 => function ($stackPos) {
-                 $this->semValue = new Scalar\MagicConst\Function_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Scalar\MagicConst\File($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             442 => function ($stackPos) {
-                 $this->semValue = new Scalar\MagicConst\Namespace_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Scalar\MagicConst\Dir($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             443 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Scalar\MagicConst\Class_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             444 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Scalar\MagicConst\Trait_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             445 => function ($stackPos) {
-                 $attrs = $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes; $attrs['kind'] = strpos($this->semStack[$stackPos-(3-1)], "'") === false ? Scalar\String_::KIND_HEREDOC : Scalar\String_::KIND_NOWDOC; preg_match('/\A[bB]?<<<[ \t]*[\'"]?([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)[\'"]?(?:\r\n|\n|\r)\z/', $this->semStack[$stackPos-(3-1)], $matches); $attrs['docLabel'] = $matches[1];;
-            $this->semValue = new Scalar\String_(Scalar\String_::parseDocString($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-2)]), $attrs);
+                 $this->semValue = new Scalar\MagicConst\Method($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             446 => function ($stackPos) {
-                 $attrs = $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes; $attrs['kind'] = strpos($this->semStack[$stackPos-(2-1)], "'") === false ? Scalar\String_::KIND_HEREDOC : Scalar\String_::KIND_NOWDOC; preg_match('/\A[bB]?<<<[ \t]*[\'"]?([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)[\'"]?(?:\r\n|\n|\r)\z/', $this->semStack[$stackPos-(2-1)], $matches); $attrs['docLabel'] = $matches[1];;
-            $this->semValue = new Scalar\String_('', $attrs);
+                 $this->semValue = new Scalar\MagicConst\Function_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             447 => function ($stackPos) {
-                 $attrs = $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes; $attrs['kind'] = Scalar\String_::KIND_DOUBLE_QUOTED;
-            foreach ($this->semStack[$stackPos-(3-2)] as $s) { if ($s instanceof Node\Scalar\EncapsedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '"', true); } }; $this->semValue = new Scalar\Encapsed($this->semStack[$stackPos-(3-2)], $attrs);
+                 $this->semValue = new Scalar\MagicConst\Namespace_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             448 => function ($stackPos) {
-                 $attrs = $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes; $attrs['kind'] = strpos($this->semStack[$stackPos-(3-1)], "'") === false ? Scalar\String_::KIND_HEREDOC : Scalar\String_::KIND_NOWDOC; preg_match('/\A[bB]?<<<[ \t]*[\'"]?([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)[\'"]?(?:\r\n|\n|\r)\z/', $this->semStack[$stackPos-(3-1)], $matches); $attrs['docLabel'] = $matches[1];;
-            foreach ($this->semStack[$stackPos-(3-2)] as $s) { if ($s instanceof Node\Scalar\EncapsedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, null, true); } } $s->value = preg_replace('~(\r\n|\n|\r)\z~', '', $s->value); if ('' === $s->value) array_pop($this->semStack[$stackPos-(3-2)]);; $this->semValue = new Scalar\Encapsed($this->semStack[$stackPos-(3-2)], $attrs);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             449 => function ($stackPos) {
-                 $this->semValue = null;
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             450 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = $this->parseDocString($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes, $this->startAttributeStack[$stackPos-(3-3)] + $this->endAttributeStack[$stackPos-(3-3)], true);
             },
             451 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = $this->parseDocString($this->semStack[$stackPos-(2-1)], '', $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes, $this->startAttributeStack[$stackPos-(2-2)] + $this->endAttributeStack[$stackPos-(2-2)], true);
             },
             452 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(3-2)];
+                 $attrs = $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes; $attrs['kind'] = Scalar\String_::KIND_DOUBLE_QUOTED;
+            foreach ($this->semStack[$stackPos-(3-2)] as $s) { if ($s instanceof Node\Scalar\EncapsedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '"', true); } }; $this->semValue = new Scalar\Encapsed($this->semStack[$stackPos-(3-2)], $attrs);
             },
             453 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = $this->parseDocString($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes, $this->startAttributeStack[$stackPos-(3-3)] + $this->endAttributeStack[$stackPos-(3-3)], true);
             },
             454 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = null;
             },
             455 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(3-2)];
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             456 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             457 => function ($stackPos) {
-                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(3-2)];
             },
             458 => function ($stackPos) {
-                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             459 => function ($stackPos) {
-                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             460 => function ($stackPos) {
-                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(3-2)];
             },
             461 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             462 => function ($stackPos) {
-                 $this->semValue = new Expr\MethodCall($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             463 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             464 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             465 => function ($stackPos) {
-                 $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             466 => function ($stackPos) {
-                 $this->semValue = substr($this->semStack[$stackPos-(1-1)], 1);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             467 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(4-3)];
+                 $this->semValue = new Expr\MethodCall($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             468 => function ($stackPos) {
-                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             469 => function ($stackPos) {
-                 $this->semValue = new Expr\Error($this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); $this->errorState = 2;
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             470 => function ($stackPos) {
-                 $var = $this->semStack[$stackPos-(1-1)]; $this->semValue = \is_string($var) ? new Node\VarLikeIdentifier($var, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes) : $var;
+                 $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             471 => function ($stackPos) {
-                 $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = substr($this->semStack[$stackPos-(1-1)], 1);
             },
             472 => function ($stackPos) {
-                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(4-3)];
             },
             473 => function ($stackPos) {
-                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             474 => function ($stackPos) {
-                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Error($this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); $this->errorState = 2;
             },
             475 => function ($stackPos) {
-                 $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $var = $this->semStack[$stackPos-(1-1)]; $this->semValue = \is_string($var) ? new Node\VarLikeIdentifier($var, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes) : $var;
             },
             476 => function ($stackPos) {
                  $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             477 => function ($stackPos) {
-                 $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             478 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             479 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(3-2)];
+                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             480 => function ($stackPos) {
-                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             481 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             482 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(3-2)];
+                 $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             483 => function ($stackPos) {
-                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             484 => function ($stackPos) {
-                 $this->semValue = new Expr\Error($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->errorState = 2;
+                 $this->semValue = $this->semStack[$stackPos-(3-2)];
             },
             485 => function ($stackPos) {
-                 $this->semValue = new Expr\List_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             486 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             487 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semValue = $this->semStack[$stackPos-(3-2)];
             },
             488 => function ($stackPos) {
-                 $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             489 => function ($stackPos) {
-                 $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(2-2)], null, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Error($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->errorState = 2;
             },
             490 => function ($stackPos) {
-                 $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\List_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             491 => function ($stackPos) {
-                 $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(3-3)], $this->semStack[$stackPos-(3-1)], false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             492 => function ($stackPos) {
-                 $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(4-4)], $this->semStack[$stackPos-(4-1)], true, $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             493 => function ($stackPos) {
-                 $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(3-3)], $this->semStack[$stackPos-(3-1)], false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             494 => function ($stackPos) {
-                 $this->semValue = null;
+                 $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(2-2)], null, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             495 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)]; $end = count($this->semValue)-1; if ($this->semValue[$end] === null) array_pop($this->semValue);
+                 $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             496 => function ($stackPos) {
-                $this->semValue = $this->semStack[$stackPos];
+                 $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(3-3)], $this->semStack[$stackPos-(3-1)], false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             497 => function ($stackPos) {
-                $this->semValue = $this->semStack[$stackPos];
+                 $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(4-4)], $this->semStack[$stackPos-(4-1)], true, $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             498 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(3-3)], $this->semStack[$stackPos-(3-1)], false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             499 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semValue = null;
             },
             500 => function ($stackPos) {
-                 $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(3-3)], $this->semStack[$stackPos-(3-1)], false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)]; $end = count($this->semValue)-1; if ($this->semValue[$end] === null) array_pop($this->semValue);
             },
             501 => function ($stackPos) {
-                 $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                $this->semValue = $this->semStack[$stackPos];
             },
             502 => function ($stackPos) {
-                 $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(4-4)], $this->semStack[$stackPos-(4-1)], true, $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 /* do nothing -- prevent default action of $$=$this->semStack[$1]. See $551. */
             },
             503 => function ($stackPos) {
-                 $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(2-2)], null, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             504 => function ($stackPos) {
-                 $this->semValue = null;
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             505 => function ($stackPos) {
-                 $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(3-3)], $this->semStack[$stackPos-(3-1)], false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             506 => function ($stackPos) {
-                 $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             507 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(4-4)], $this->semStack[$stackPos-(4-1)], true, $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             508 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)]);
+                 $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(2-2)], null, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             509 => function ($stackPos) {
-                 $this->semValue = new Scalar\EncapsedStringPart($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(2-2)], null, false, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             510 => function ($stackPos) {
-                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = null;
             },
             511 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             512 => function ($stackPos) {
-                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             513 => function ($stackPos) {
-                 $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             514 => function ($stackPos) {
-                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = array($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)]);
             },
             515 => function ($stackPos) {
-                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Scalar\EncapsedStringPart($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             516 => function ($stackPos) {
-                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-4)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             517 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(3-2)];
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             518 => function ($stackPos) {
-                 $this->semValue = new Scalar\String_($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             519 => function ($stackPos) {
-                 $this->semValue = $this->parseNumString($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             520 => function ($stackPos) {
-                 $this->semValue = $this->parseNumString('-' . $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             521 => function ($stackPos) {
+                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+            },
+            522 => function ($stackPos) {
+                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-4)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
+            },
+            523 => function ($stackPos) {
+                 $this->semValue = $this->semStack[$stackPos-(3-2)];
+            },
+            524 => function ($stackPos) {
+                 $this->semValue = new Scalar\String_($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+            },
+            525 => function ($stackPos) {
+                 $this->semValue = $this->parseNumString($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+            },
+            526 => function ($stackPos) {
+                 $this->semValue = $this->parseNumString('-' . $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+            },
+            527 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
         ];
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Parser/Tokens.php b/vendor/nikic/php-parser/lib/PhpParser/Parser/Tokens.php
index 861663fae0..50c5bf5747 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Parser/Tokens.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Parser/Tokens.php
@@ -30,115 +30,117 @@ final class Tokens
     const T_SL_EQUAL = 278;
     const T_SR_EQUAL = 279;
     const T_POW_EQUAL = 280;
-    const T_COALESCE = 281;
-    const T_BOOLEAN_OR = 282;
-    const T_BOOLEAN_AND = 283;
-    const T_IS_EQUAL = 284;
-    const T_IS_NOT_EQUAL = 285;
-    const T_IS_IDENTICAL = 286;
-    const T_IS_NOT_IDENTICAL = 287;
-    const T_SPACESHIP = 288;
-    const T_IS_SMALLER_OR_EQUAL = 289;
-    const T_IS_GREATER_OR_EQUAL = 290;
-    const T_SL = 291;
-    const T_SR = 292;
-    const T_INSTANCEOF = 293;
-    const T_INC = 294;
-    const T_DEC = 295;
-    const T_INT_CAST = 296;
-    const T_DOUBLE_CAST = 297;
-    const T_STRING_CAST = 298;
-    const T_ARRAY_CAST = 299;
-    const T_OBJECT_CAST = 300;
-    const T_BOOL_CAST = 301;
-    const T_UNSET_CAST = 302;
-    const T_POW = 303;
-    const T_NEW = 304;
-    const T_CLONE = 305;
-    const T_EXIT = 306;
-    const T_IF = 307;
-    const T_ELSEIF = 308;
-    const T_ELSE = 309;
-    const T_ENDIF = 310;
-    const T_LNUMBER = 311;
-    const T_DNUMBER = 312;
-    const T_STRING = 313;
-    const T_STRING_VARNAME = 314;
-    const T_VARIABLE = 315;
-    const T_NUM_STRING = 316;
-    const T_INLINE_HTML = 317;
-    const T_CHARACTER = 318;
-    const T_BAD_CHARACTER = 319;
-    const T_ENCAPSED_AND_WHITESPACE = 320;
-    const T_CONSTANT_ENCAPSED_STRING = 321;
-    const T_ECHO = 322;
-    const T_DO = 323;
-    const T_WHILE = 324;
-    const T_ENDWHILE = 325;
-    const T_FOR = 326;
-    const T_ENDFOR = 327;
-    const T_FOREACH = 328;
-    const T_ENDFOREACH = 329;
-    const T_DECLARE = 330;
-    const T_ENDDECLARE = 331;
-    const T_AS = 332;
-    const T_SWITCH = 333;
-    const T_ENDSWITCH = 334;
-    const T_CASE = 335;
-    const T_DEFAULT = 336;
-    const T_BREAK = 337;
-    const T_CONTINUE = 338;
-    const T_GOTO = 339;
-    const T_FUNCTION = 340;
-    const T_CONST = 341;
-    const T_RETURN = 342;
-    const T_TRY = 343;
-    const T_CATCH = 344;
-    const T_FINALLY = 345;
-    const T_THROW = 346;
-    const T_USE = 347;
-    const T_INSTEADOF = 348;
-    const T_GLOBAL = 349;
-    const T_STATIC = 350;
-    const T_ABSTRACT = 351;
-    const T_FINAL = 352;
-    const T_PRIVATE = 353;
-    const T_PROTECTED = 354;
-    const T_PUBLIC = 355;
-    const T_VAR = 356;
-    const T_UNSET = 357;
-    const T_ISSET = 358;
-    const T_EMPTY = 359;
-    const T_HALT_COMPILER = 360;
-    const T_CLASS = 361;
-    const T_TRAIT = 362;
-    const T_INTERFACE = 363;
-    const T_EXTENDS = 364;
-    const T_IMPLEMENTS = 365;
-    const T_OBJECT_OPERATOR = 366;
-    const T_LIST = 367;
-    const T_ARRAY = 368;
-    const T_CALLABLE = 369;
-    const T_CLASS_C = 370;
-    const T_TRAIT_C = 371;
-    const T_METHOD_C = 372;
-    const T_FUNC_C = 373;
-    const T_LINE = 374;
-    const T_FILE = 375;
-    const T_COMMENT = 376;
-    const T_DOC_COMMENT = 377;
-    const T_OPEN_TAG = 378;
-    const T_OPEN_TAG_WITH_ECHO = 379;
-    const T_CLOSE_TAG = 380;
-    const T_WHITESPACE = 381;
-    const T_START_HEREDOC = 382;
-    const T_END_HEREDOC = 383;
-    const T_DOLLAR_OPEN_CURLY_BRACES = 384;
-    const T_CURLY_OPEN = 385;
-    const T_PAAMAYIM_NEKUDOTAYIM = 386;
-    const T_NAMESPACE = 387;
-    const T_NS_C = 388;
-    const T_DIR = 389;
-    const T_NS_SEPARATOR = 390;
-    const T_ELLIPSIS = 391;
+    const T_COALESCE_EQUAL = 281;
+    const T_COALESCE = 282;
+    const T_BOOLEAN_OR = 283;
+    const T_BOOLEAN_AND = 284;
+    const T_IS_EQUAL = 285;
+    const T_IS_NOT_EQUAL = 286;
+    const T_IS_IDENTICAL = 287;
+    const T_IS_NOT_IDENTICAL = 288;
+    const T_SPACESHIP = 289;
+    const T_IS_SMALLER_OR_EQUAL = 290;
+    const T_IS_GREATER_OR_EQUAL = 291;
+    const T_SL = 292;
+    const T_SR = 293;
+    const T_INSTANCEOF = 294;
+    const T_INC = 295;
+    const T_DEC = 296;
+    const T_INT_CAST = 297;
+    const T_DOUBLE_CAST = 298;
+    const T_STRING_CAST = 299;
+    const T_ARRAY_CAST = 300;
+    const T_OBJECT_CAST = 301;
+    const T_BOOL_CAST = 302;
+    const T_UNSET_CAST = 303;
+    const T_POW = 304;
+    const T_NEW = 305;
+    const T_CLONE = 306;
+    const T_EXIT = 307;
+    const T_IF = 308;
+    const T_ELSEIF = 309;
+    const T_ELSE = 310;
+    const T_ENDIF = 311;
+    const T_LNUMBER = 312;
+    const T_DNUMBER = 313;
+    const T_STRING = 314;
+    const T_STRING_VARNAME = 315;
+    const T_VARIABLE = 316;
+    const T_NUM_STRING = 317;
+    const T_INLINE_HTML = 318;
+    const T_CHARACTER = 319;
+    const T_BAD_CHARACTER = 320;
+    const T_ENCAPSED_AND_WHITESPACE = 321;
+    const T_CONSTANT_ENCAPSED_STRING = 322;
+    const T_ECHO = 323;
+    const T_DO = 324;
+    const T_WHILE = 325;
+    const T_ENDWHILE = 326;
+    const T_FOR = 327;
+    const T_ENDFOR = 328;
+    const T_FOREACH = 329;
+    const T_ENDFOREACH = 330;
+    const T_DECLARE = 331;
+    const T_ENDDECLARE = 332;
+    const T_AS = 333;
+    const T_SWITCH = 334;
+    const T_ENDSWITCH = 335;
+    const T_CASE = 336;
+    const T_DEFAULT = 337;
+    const T_BREAK = 338;
+    const T_CONTINUE = 339;
+    const T_GOTO = 340;
+    const T_FUNCTION = 341;
+    const T_FN = 342;
+    const T_CONST = 343;
+    const T_RETURN = 344;
+    const T_TRY = 345;
+    const T_CATCH = 346;
+    const T_FINALLY = 347;
+    const T_THROW = 348;
+    const T_USE = 349;
+    const T_INSTEADOF = 350;
+    const T_GLOBAL = 351;
+    const T_STATIC = 352;
+    const T_ABSTRACT = 353;
+    const T_FINAL = 354;
+    const T_PRIVATE = 355;
+    const T_PROTECTED = 356;
+    const T_PUBLIC = 357;
+    const T_VAR = 358;
+    const T_UNSET = 359;
+    const T_ISSET = 360;
+    const T_EMPTY = 361;
+    const T_HALT_COMPILER = 362;
+    const T_CLASS = 363;
+    const T_TRAIT = 364;
+    const T_INTERFACE = 365;
+    const T_EXTENDS = 366;
+    const T_IMPLEMENTS = 367;
+    const T_OBJECT_OPERATOR = 368;
+    const T_LIST = 369;
+    const T_ARRAY = 370;
+    const T_CALLABLE = 371;
+    const T_CLASS_C = 372;
+    const T_TRAIT_C = 373;
+    const T_METHOD_C = 374;
+    const T_FUNC_C = 375;
+    const T_LINE = 376;
+    const T_FILE = 377;
+    const T_COMMENT = 378;
+    const T_DOC_COMMENT = 379;
+    const T_OPEN_TAG = 380;
+    const T_OPEN_TAG_WITH_ECHO = 381;
+    const T_CLOSE_TAG = 382;
+    const T_WHITESPACE = 383;
+    const T_START_HEREDOC = 384;
+    const T_END_HEREDOC = 385;
+    const T_DOLLAR_OPEN_CURLY_BRACES = 386;
+    const T_CURLY_OPEN = 387;
+    const T_PAAMAYIM_NEKUDOTAYIM = 388;
+    const T_NAMESPACE = 389;
+    const T_NS_C = 390;
+    const T_DIR = 391;
+    const T_NS_SEPARATOR = 392;
+    const T_ELLIPSIS = 393;
 }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php b/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php
index dab6aea7ad..975e17c6bb 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php
@@ -7,8 +7,10 @@
  * turn is based on work by Masato Bito.
  */
 use PhpParser\Node\Expr;
+use PhpParser\Node\Expr\Cast\Double;
 use PhpParser\Node\Name;
 use PhpParser\Node\Param;
+use PhpParser\Node\Scalar\Encapsed;
 use PhpParser\Node\Scalar\LNumber;
 use PhpParser\Node\Scalar\String_;
 use PhpParser\Node\Stmt\Class_;
@@ -679,6 +681,20 @@ protected function getAttributesAt(int $pos) : array {
         return $this->startAttributeStack[$pos] + $this->endAttributeStack[$pos];
     }
 
+    protected function getFloatCastKind(string $cast): int
+    {
+        $cast = strtolower($cast);
+        if (strpos($cast, 'float') !== false) {
+            return Double::KIND_FLOAT;
+        }
+
+        if (strpos($cast, 'real') !== false) {
+            return Double::KIND_REAL;
+        }
+
+        return Double::KIND_DOUBLE;
+    }
+
     protected function parseLNumber($str, $attributes, $allowInvalidOctal = false) {
         try {
             return LNumber::fromString($str, $attributes, $allowInvalidOctal);
@@ -710,6 +726,139 @@ protected function parseNumString(string $str, array $attributes) {
         return new LNumber($num, $attributes);
     }
 
+    protected function stripIndentation(
+        string $string, int $indentLen, string $indentChar,
+        bool $newlineAtStart, bool $newlineAtEnd, array $attributes
+    ) {
+        if ($indentLen === 0) {
+            return $string;
+        }
+
+        $start = $newlineAtStart ? '(?:(?<=\n)|\A)' : '(?<=\n)';
+        $end = $newlineAtEnd ? '(?:(?=[\r\n])|\z)' : '(?=[\r\n])';
+        $regex = '/' . $start . '([ \t]*)(' . $end . ')?/';
+        return preg_replace_callback(
+            $regex,
+            function ($matches) use ($indentLen, $indentChar, $attributes) {
+                $prefix = substr($matches[1], 0, $indentLen);
+                if (false !== strpos($prefix, $indentChar === " " ? "\t" : " ")) {
+                    $this->emitError(new Error(
+                        'Invalid indentation - tabs and spaces cannot be mixed', $attributes
+                    ));
+                } elseif (strlen($prefix) < $indentLen && !isset($matches[2])) {
+                    $this->emitError(new Error(
+                        'Invalid body indentation level ' .
+                        '(expecting an indentation level of at least ' . $indentLen . ')',
+                        $attributes
+                    ));
+                }
+                return substr($matches[0], strlen($prefix));
+            },
+            $string
+        );
+    }
+
+    protected function parseDocString(
+        string $startToken, $contents, string $endToken,
+        array $attributes, array $endTokenAttributes, bool $parseUnicodeEscape
+    ) {
+        $kind = strpos($startToken, "'") === false
+            ? String_::KIND_HEREDOC : String_::KIND_NOWDOC;
+
+        $regex = '/\A[bB]?<<<[ \t]*[\'"]?([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)[\'"]?(?:\r\n|\n|\r)\z/';
+        $result = preg_match($regex, $startToken, $matches);
+        assert($result === 1);
+        $label = $matches[1];
+
+        $result = preg_match('/\A[ \t]*/', $endToken, $matches);
+        assert($result === 1);
+        $indentation = $matches[0];
+
+        $attributes['kind'] = $kind;
+        $attributes['docLabel'] = $label;
+        $attributes['docIndentation'] = $indentation;
+
+        $indentHasSpaces = false !== strpos($indentation, " ");
+        $indentHasTabs = false !== strpos($indentation, "\t");
+        if ($indentHasSpaces && $indentHasTabs) {
+            $this->emitError(new Error(
+                'Invalid indentation - tabs and spaces cannot be mixed',
+                $endTokenAttributes
+            ));
+
+            // Proceed processing as if this doc string is not indented
+            $indentation = '';
+        }
+
+        $indentLen = \strlen($indentation);
+        $indentChar = $indentHasSpaces ? " " : "\t";
+
+        if (\is_string($contents)) {
+            if ($contents === '') {
+                return new String_('', $attributes);
+            }
+
+            $contents = $this->stripIndentation(
+                $contents, $indentLen, $indentChar, true, true, $attributes
+            );
+            $contents = preg_replace('~(\r\n|\n|\r)\z~', '', $contents);
+
+            if ($kind === String_::KIND_HEREDOC) {
+                $contents = String_::parseEscapeSequences($contents, null, $parseUnicodeEscape);
+            }
+
+            return new String_($contents, $attributes);
+        } else {
+            assert(count($contents) > 0);
+            if (!$contents[0] instanceof Node\Scalar\EncapsedStringPart) {
+                // If there is no leading encapsed string part, pretend there is an empty one
+                $this->stripIndentation(
+                    '', $indentLen, $indentChar, true, false, $contents[0]->getAttributes()
+                );
+            }
+
+            $newContents = [];
+            foreach ($contents as $i => $part) {
+                if ($part instanceof Node\Scalar\EncapsedStringPart) {
+                    $isLast = $i === \count($contents) - 1;
+                    $part->value = $this->stripIndentation(
+                        $part->value, $indentLen, $indentChar,
+                        $i === 0, $isLast, $part->getAttributes()
+                    );
+                    $part->value = String_::parseEscapeSequences($part->value, null, $parseUnicodeEscape);
+                    if ($isLast) {
+                        $part->value = preg_replace('~(\r\n|\n|\r)\z~', '', $part->value);
+                    }
+                    if ('' === $part->value) {
+                        continue;
+                    }
+                }
+                $newContents[] = $part;
+            }
+            return new Encapsed($newContents, $attributes);
+        }
+    }
+
+    /**
+     * Create attributes for a zero-length node with the given start attributes.
+     *
+     * @param array $startAttributes
+     * @return array
+     */
+    protected function createZeroLengthAttributes(array $startAttributes) {
+        $attributes = $startAttributes;
+        if (isset($startAttributes['startLine'])) {
+            $attributes['endLine'] = $startAttributes['startLine'];
+        }
+        if (isset($startAttributes['startTokenPos'])) {
+            $attributes['endTokenPos'] = $startAttributes['startTokenPos'] - 1;
+        }
+        if (isset($startAttributes['startFilePos'])) {
+            $attributes['endFilePos'] = $startAttributes['startFilePos'] - 1;
+        }
+        return $attributes;
+    }
+
     protected function checkModifier($a, $b, $modifierPos) {
         // Jumping through some hoops here because verifyModifier() is also used elsewhere
         try {
diff --git a/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php b/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php
index 96963307d2..78ee7d0032 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php
@@ -260,6 +260,10 @@ protected function pExpr_AssignOp_Pow(AssignOp\Pow $node) {
         return $this->pInfixOp(AssignOp\Pow::class, $node->var, ' **= ', $node->expr);
     }
 
+    protected function pExpr_AssignOp_Coalesce(AssignOp\Coalesce $node) {
+        return $this->pInfixOp(AssignOp\Coalesce::class, $node->var, ' ??= ', $node->expr);
+    }
+
     // Binary expressions
 
     protected function pExpr_BinaryOp_Plus(BinaryOp\Plus $node) {
@@ -435,7 +439,15 @@ protected function pExpr_Cast_Int(Cast\Int_ $node) {
     }
 
     protected function pExpr_Cast_Double(Cast\Double $node) {
-        return $this->pPrefixOp(Cast\Double::class, '(double) ', $node->expr);
+        $kind = $node->getAttribute('kind', Cast\Double::KIND_DOUBLE);
+        if ($kind === Cast\Double::KIND_DOUBLE) {
+            $cast = '(double)';
+        } elseif ($kind === Cast\Double::KIND_FLOAT) {
+            $cast = '(float)';
+        } elseif ($kind === Cast\Double::KIND_REAL) {
+            $cast = '(real)';
+        }
+        return $this->pPrefixOp(Cast\Double::class, $cast . ' ', $node->expr);
     }
 
     protected function pExpr_Cast_String(Cast\String_ $node) {
@@ -533,7 +545,9 @@ protected function pExpr_Array(Expr\Array_ $node) {
 
     protected function pExpr_ArrayItem(Expr\ArrayItem $node) {
         return (null !== $node->key ? $this->p($node->key) . ' => ' : '')
-             . ($node->byRef ? '&' : '') . $this->p($node->value);
+             . ($node->byRef ? '&' : '')
+             . ($node->unpack ? '...' : '')
+             . $this->p($node->value);
     }
 
     protected function pExpr_ArrayDimFetch(Expr\ArrayDimFetch $node) {
@@ -570,6 +584,15 @@ protected function pExpr_Closure(Expr\Closure $node) {
              . ' {' . $this->pStmts($node->stmts) . $this->nl . '}';
     }
 
+    protected function pExpr_ArrowFunction(Expr\ArrowFunction $node) {
+        return ($node->static ? 'static ' : '')
+            . 'fn' . ($node->byRef ? '&' : '')
+            . '(' . $this->pCommaSeparated($node->params) . ')'
+            . (null !== $node->returnType ? ': ' . $this->p($node->returnType) : '')
+            . ' => '
+            . $this->p($node->expr);
+    }
+
     protected function pExpr_ClosureUse(Expr\ClosureUse $node) {
         return ($node->byRef ? '&' : '') . $this->p($node->var);
     }
@@ -680,7 +703,9 @@ protected function pStmt_TraitUseAdaptation_Alias(Stmt\TraitUseAdaptation\Alias
     }
 
     protected function pStmt_Property(Stmt\Property $node) {
-        return (0 === $node->flags ? 'var ' : $this->pModifiers($node->flags)) . $this->pCommaSeparated($node->props) . ';';
+        return (0 === $node->flags ? 'var ' : $this->pModifiers($node->flags))
+            . ($node->type ? $this->p($node->type) . ' ' : '')
+            . $this->pCommaSeparated($node->props) . ';';
     }
 
     protected function pStmt_PropertyProperty(Stmt\PropertyProperty $node) {
diff --git a/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php b/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php
index 2339c75a3d..90f10c4624 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php
@@ -9,7 +9,6 @@
 use PhpParser\Node\Expr\AssignOp;
 use PhpParser\Node\Expr\BinaryOp;
 use PhpParser\Node\Expr\Cast;
-use PhpParser\Node\Name;
 use PhpParser\Node\Scalar;
 use PhpParser\Node\Stmt;
 
@@ -83,6 +82,7 @@ abstract class PrettyPrinterAbstract
         AssignOp\ShiftLeft::class      => [160,  1],
         AssignOp\ShiftRight::class     => [160,  1],
         AssignOp\Pow::class            => [160,  1],
+        AssignOp\Coalesce::class       => [160,  1],
         Expr\YieldFrom::class          => [165,  1],
         Expr\Print_::class             => [168,  1],
         BinaryOp\LogicalAnd::class     => [170, -1],
@@ -120,7 +120,7 @@ abstract class PrettyPrinterAbstract
      */
     protected $removalMap;
     /**
-     * @var mixed[] Map from "{$node->getType()}->{$subNode}" to [$find, $extraLeft, $extraRight].
+     * @var mixed[] Map from "{$node->getType()}->{$subNode}" to [$find, $beforeToken, $extraLeft, $extraRight].
      *              $find is an optional token after which the insertion occurs. $extraLeft/Right
      *              are optionally added before/after the main insertions.
      */
@@ -130,6 +130,7 @@ abstract class PrettyPrinterAbstract
      *               between elements of this list subnode.
      */
     protected $listInsertionMap;
+    protected $emptyListInsertionMap;
     /** @var int[] Map from "{$node->getType()}->{$subNode}" to token before which the modifiers
      *             should be reprinted. */
     protected $modifierChangeMap;
@@ -479,6 +480,7 @@ public function printFormatPreserving(array $stmts, array $origStmts, array $ori
         $this->initializeRemovalMap();
         $this->initializeInsertionMap();
         $this->initializeListInsertionMap();
+        $this->initializeEmptyListInsertionMap();
         $this->initializeModifierChangeMap();
 
         $this->resetState();
@@ -487,7 +489,7 @@ public function printFormatPreserving(array $stmts, array $origStmts, array $ori
         $this->preprocessNodes($stmts);
 
         $pos = 0;
-        $result = $this->pArray($stmts, $origStmts, $pos, 0, 'stmts', null, "\n");
+        $result = $this->pArray($stmts, $origStmts, $pos, 0, 'File', 'stmts', null);
         if (null !== $result) {
             $result .= $this->origTokens->getTokenCode($pos, count($origTokens), 0);
         } else {
@@ -568,9 +570,8 @@ protected function p(Node $node, $parentFormatPreserved = false) : string {
                 if (is_array($subNode) && is_array($origSubNode)) {
                     // Array subnode changed, we might be able to reconstruct it
                     $listResult = $this->pArray(
-                        $subNode, $origSubNode, $pos, $indentAdjustment, $subNodeName,
-                        $fixupInfo[$subNodeName] ?? null,
-                        $this->listInsertionMap[$type . '->' . $subNodeName] ?? null
+                        $subNode, $origSubNode, $pos, $indentAdjustment, $type, $subNodeName,
+                        $fixupInfo[$subNodeName] ?? null
                     );
                     if (null === $listResult) {
                         return $this->pFallback($fallbackNode);
@@ -617,12 +618,14 @@ protected function p(Node $node, $parentFormatPreserved = false) : string {
                     return $this->pFallback($fallbackNode);
                 }
 
-                list($findToken, $extraLeft, $extraRight) = $this->insertionMap[$key];
+                list($findToken, $beforeToken, $extraLeft, $extraRight) = $this->insertionMap[$key];
                 if (null !== $findToken) {
-                    $subStartPos = $this->origTokens->findRight($pos, $findToken) + 1;
+                    $subStartPos = $this->origTokens->findRight($pos, $findToken)
+                        + (int) !$beforeToken;
                 } else {
                     $subStartPos = $pos;
                 }
+
                 if (null === $extraLeft && null !== $extraRight) {
                     // If inserting on the right only, skipping whitespace looks better
                     $subStartPos = $this->origTokens->skipRightWhitespace($subStartPos);
@@ -687,18 +690,21 @@ protected function p(Node $node, $parentFormatPreserved = false) : string {
      * @param array       $origNodes        Original nodes
      * @param int         $pos              Current token position (updated by reference)
      * @param int         $indentAdjustment Adjustment for indentation
+     * @param string      $parentNodeType   Type of the containing node.
      * @param string      $subNodeName      Name of array subnode.
      * @param null|int    $fixup            Fixup information for array item nodes
-     * @param null|string $insertStr        Separator string to use for insertions
      *
      * @return null|string Result of pretty print or null if cannot preserve formatting
      */
     protected function pArray(
         array $nodes, array $origNodes, int &$pos, int $indentAdjustment,
-        string $subNodeName, $fixup, $insertStr
+        string $parentNodeType, string $subNodeName, $fixup
     ) {
         $diff = $this->nodeListDiffer->diffWithReplacements($origNodes, $nodes);
 
+        $mapKey = $parentNodeType . '->' . $subNodeName;
+        $insertStr = $this->listInsertionMap[$mapKey] ?? null;
+
         $beforeFirstKeepOrReplace = true;
         $delayedAdd = [];
         $lastElemIndentLevel = $this->indentLevel;
@@ -871,8 +877,27 @@ protected function pArray(
         }
 
         if (!empty($delayedAdd)) {
-            // TODO Handle insertion into empty list
-            return null;
+            if (!isset($this->emptyListInsertionMap[$mapKey])) {
+                return null;
+            }
+
+            list($findToken, $extraLeft, $extraRight) = $this->emptyListInsertionMap[$mapKey];
+            if (null !== $findToken) {
+                $insertPos = $this->origTokens->findRight($pos, $findToken) + 1;
+                $result .= $this->origTokens->getTokenCode($pos, $insertPos, $indentAdjustment);
+                $pos = $insertPos;
+            }
+
+            $first = true;
+            $result .= $extraLeft;
+            foreach ($delayedAdd as $delayedAddNode) {
+                if (!$first) {
+                    $result .= $insertStr;
+                }
+                $result .= $this->p($delayedAddNode, true);
+                $first = false;
+            }
+            $result .= $extraRight;
         }
 
         return $result;
@@ -1155,7 +1180,7 @@ protected function initializeFixupMap() {
             Expr\Assign::class, Expr\AssignRef::class, AssignOp\Plus::class, AssignOp\Minus::class,
             AssignOp\Mul::class, AssignOp\Div::class, AssignOp\Concat::class, AssignOp\Mod::class,
             AssignOp\BitwiseAnd::class, AssignOp\BitwiseOr::class, AssignOp\BitwiseXor::class,
-            AssignOp\ShiftLeft::class, AssignOp\ShiftRight::class, AssignOp\Pow::class,
+            AssignOp\ShiftLeft::class, AssignOp\ShiftRight::class, AssignOp\Pow::class, AssignOp\Coalesce::class
         ];
         foreach ($assignOps as $assignOp) {
             $this->fixupMap[$assignOp] = [
@@ -1193,6 +1218,7 @@ protected function initializeRemovalMap() {
         $this->removalMap = [
             'Expr_ArrayDimFetch->dim' => $stripBoth,
             'Expr_ArrayItem->key' => $stripDoubleArrow,
+            'Expr_ArrowFunction->returnType' => $stripColon,
             'Expr_Closure->returnType' => $stripColon,
             'Expr_Exit->expr' => $stripBoth,
             'Expr_Ternary->if' => $stripBoth,
@@ -1209,6 +1235,7 @@ protected function initializeRemovalMap() {
             'Stmt_Function->returnType' => $stripColon,
             'Stmt_If->else' => $stripLeft,
             'Stmt_Namespace->name' => $stripLeft,
+            'Stmt_Property->type' => $stripRight,
             'Stmt_PropertyProperty->default' => $stripEquals,
             'Stmt_Return->expr' => $stripBoth,
             'Stmt_StaticVar->default' => $stripEquals,
@@ -1225,29 +1252,32 @@ protected function initializeInsertionMap() {
         if ($this->insertionMap) return;
 
         // TODO: "yield" where both key and value are inserted doesn't work
+        // [$find, $beforeToken, $extraLeft, $extraRight]
         $this->insertionMap = [
-            'Expr_ArrayDimFetch->dim' => ['[', null, null],
-            'Expr_ArrayItem->key' => [null, null, ' => '],
-            'Expr_Closure->returnType' => [')', ' : ', null],
-            'Expr_Ternary->if' => ['?', ' ', ' '],
-            'Expr_Yield->key' => [\T_YIELD, null, ' => '],
-            'Expr_Yield->value' => [\T_YIELD, ' ', null],
-            'Param->type' => [null, null, ' '],
-            'Param->default' => [null, ' = ', null],
-            'Stmt_Break->num' => [\T_BREAK, ' ', null],
-            'Stmt_ClassMethod->returnType' => [')', ' : ', null],
-            'Stmt_Class->extends' => [null, ' extends ', null],
+            'Expr_ArrayDimFetch->dim' => ['[', false, null, null],
+            'Expr_ArrayItem->key' => [null, false, null, ' => '],
+            'Expr_ArrowFunction->returnType' => [')', false, ' : ', null],
+            'Expr_Closure->returnType' => [')', false, ' : ', null],
+            'Expr_Ternary->if' => ['?', false, ' ', ' '],
+            'Expr_Yield->key' => [\T_YIELD, false, null, ' => '],
+            'Expr_Yield->value' => [\T_YIELD, false, ' ', null],
+            'Param->type' => [null, false, null, ' '],
+            'Param->default' => [null, false, ' = ', null],
+            'Stmt_Break->num' => [\T_BREAK, false, ' ', null],
+            'Stmt_ClassMethod->returnType' => [')', false, ' : ', null],
+            'Stmt_Class->extends' => [null, false, ' extends ', null],
             'Expr_PrintableNewAnonClass->extends' => [null, ' extends ', null],
-            'Stmt_Continue->num' => [\T_CONTINUE, ' ', null],
-            'Stmt_Foreach->keyVar' => [\T_AS, null, ' => '],
-            'Stmt_Function->returnType' => [')', ' : ', null],
-            'Stmt_If->else' => [null, ' ', null],
-            'Stmt_Namespace->name' => [\T_NAMESPACE, ' ', null],
-            'Stmt_PropertyProperty->default' => [null, ' = ', null],
-            'Stmt_Return->expr' => [\T_RETURN, ' ', null],
-            'Stmt_StaticVar->default' => [null, ' = ', null],
-            //'Stmt_TraitUseAdaptation_Alias->newName' => [T_AS, ' ', null], // TODO
-            'Stmt_TryCatch->finally' => [null, ' ', null],
+            'Stmt_Continue->num' => [\T_CONTINUE, false, ' ', null],
+            'Stmt_Foreach->keyVar' => [\T_AS, false, null, ' => '],
+            'Stmt_Function->returnType' => [')', false, ' : ', null],
+            'Stmt_If->else' => [null, false, ' ', null],
+            'Stmt_Namespace->name' => [\T_NAMESPACE, false, ' ', null],
+            'Stmt_Property->type' => [\T_VARIABLE, true, null, ' '],
+            'Stmt_PropertyProperty->default' => [null, false, ' = ', null],
+            'Stmt_Return->expr' => [\T_RETURN, false, ' ', null],
+            'Stmt_StaticVar->default' => [null, false, ' = ', null],
+            //'Stmt_TraitUseAdaptation_Alias->newName' => [T_AS, false, ' ', null], // TODO
+            'Stmt_TryCatch->finally' => [null, false, ' ', null],
 
             // 'Expr_Exit->expr': Complicated due to optional ()
             // 'Stmt_Case->cond': Conversion from default to case
@@ -1270,6 +1300,7 @@ protected function initializeListInsertionMap() {
 
             // comma-separated lists
             'Expr_Array->items' => ', ',
+            'Expr_ArrowFunction->params' => ', ',
             'Expr_Closure->params' => ', ',
             'Expr_Closure->uses' => ', ',
             'Expr_FuncCall->args' => ', ',
@@ -1323,6 +1354,59 @@ protected function initializeListInsertionMap() {
             'Stmt_TraitUse->adaptations' => "\n",
             'Stmt_TryCatch->stmts' => "\n",
             'Stmt_While->stmts' => "\n",
+
+            // dummy for top-level context
+            'File->stmts' => "\n",
+        ];
+    }
+
+    protected function initializeEmptyListInsertionMap() {
+        if ($this->emptyListInsertionMap) return;
+
+        // TODO Insertion into empty statement lists.
+
+        // [$find, $extraLeft, $extraRight]
+        $this->emptyListInsertionMap = [
+            'Expr_ArrowFunction->params' => ['(', '', ''],
+            'Expr_Closure->uses' => [')', ' use(', ')'],
+            'Expr_Closure->params' => ['(', '', ''],
+            'Expr_FuncCall->args' => ['(', '', ''],
+            'Expr_MethodCall->args' => ['(', '', ''],
+            'Expr_New->args' => ['(', '', ''],
+            'Expr_PrintableNewAnonClass->args' => ['(', '', ''],
+            'Expr_PrintableNewAnonClass->implements' => [null, ' implements ', ''],
+            'Expr_StaticCall->args' => ['(', '', ''],
+            'Stmt_Class->implements' => [null, ' implements ', ''],
+            'Stmt_ClassMethod->params' => ['(', '', ''],
+            'Stmt_Interface->extends' => [null, ' extends ', ''],
+            'Stmt_Function->params' => ['(', '', ''],
+
+            /* These cannot be empty to start with:
+             * Expr_Isset->vars
+             * Stmt_Catch->types
+             * Stmt_Const->consts
+             * Stmt_ClassConst->consts
+             * Stmt_Declare->declares
+             * Stmt_Echo->exprs
+             * Stmt_Global->vars
+             * Stmt_GroupUse->uses
+             * Stmt_Property->props
+             * Stmt_StaticVar->vars
+             * Stmt_TraitUse->traits
+             * Stmt_TraitUseAdaptation_Precedence->insteadof
+             * Stmt_Unset->vars
+             * Stmt_Use->uses
+             */
+
+            /* TODO
+             * Stmt_If->elseifs
+             * Stmt_TryCatch->catches
+             * Expr_Array->items
+             * Expr_List->items
+             * Stmt_For->init
+             * Stmt_For->cond
+             * Stmt_For->loop
+             */
         ];
     }
 
diff --git a/vendor/nikic/php-parser/phpunit.xml.dist b/vendor/nikic/php-parser/phpunit.xml.dist
index b375637b94..5271264cbf 100644
--- a/vendor/nikic/php-parser/phpunit.xml.dist
+++ b/vendor/nikic/php-parser/phpunit.xml.dist
@@ -1,6 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
-<phpunit backupGlobals="false"
+<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:noNamespaceSchemaLocation="vendor/phpunit/phpunit/phpunit.xsd"
+         backupGlobals="false"
          colors="true"
          beStrictAboutTestsThatDoNotTestAnything="false"
          bootstrap="./test/bootstrap.php">
diff --git a/vendor/nikic/php-parser/test/PhpParser/Builder/ClassTest.php b/vendor/nikic/php-parser/test/PhpParser/Builder/ClassTest.php
index fe324d766c..2cfa787231 100644
--- a/vendor/nikic/php-parser/test/PhpParser/Builder/ClassTest.php
+++ b/vendor/nikic/php-parser/test/PhpParser/Builder/ClassTest.php
@@ -6,9 +6,8 @@
 use PhpParser\Node;
 use PhpParser\Node\Name;
 use PhpParser\Node\Stmt;
-use PHPUnit\Framework\TestCase;
 
-class ClassTest extends TestCase
+class ClassTest extends \PHPUnit\Framework\TestCase
 {
     protected function createClassBuilder($class) {
         return new Class_($class);
@@ -123,39 +122,31 @@ public function testDocComment() {
         );
     }
 
-    /**
-     * @expectedException \LogicException
-     * @expectedExceptionMessage Unexpected node of type "Stmt_Echo"
-     */
     public function testInvalidStmtError() {
+        $this->expectException(\LogicException::class);
+        $this->expectExceptionMessage('Unexpected node of type "Stmt_Echo"');
         $this->createClassBuilder('Test')
             ->addStmt(new Stmt\Echo_([]))
         ;
     }
 
-    /**
-     * @expectedException \LogicException
-     * @expectedExceptionMessage Doc comment must be a string or an instance of PhpParser\Comment\Doc
-     */
     public function testInvalidDocComment() {
+        $this->expectException(\LogicException::class);
+        $this->expectExceptionMessage('Doc comment must be a string or an instance of PhpParser\Comment\Doc');
         $this->createClassBuilder('Test')
             ->setDocComment(new Comment('Test'));
     }
 
-    /**
-     * @expectedException \LogicException
-     * @expectedExceptionMessage Name cannot be empty
-     */
     public function testEmptyName() {
+        $this->expectException(\LogicException::class);
+        $this->expectExceptionMessage('Name cannot be empty');
         $this->createClassBuilder('Test')
             ->extend('');
     }
 
-    /**
-     * @expectedException \LogicException
-     * @expectedExceptionMessage Name must be a string or an instance of Node\Name
-     */
     public function testInvalidName() {
+        $this->expectException(\LogicException::class);
+        $this->expectExceptionMessage('Name must be a string or an instance of Node\Name');
         $this->createClassBuilder('Test')
             ->extend(['Foo']);
     }
diff --git a/vendor/nikic/php-parser/test/PhpParser/Builder/FunctionTest.php b/vendor/nikic/php-parser/test/PhpParser/Builder/FunctionTest.php
index a2c6219224..c17045b83f 100644
--- a/vendor/nikic/php-parser/test/PhpParser/Builder/FunctionTest.php
+++ b/vendor/nikic/php-parser/test/PhpParser/Builder/FunctionTest.php
@@ -8,9 +8,8 @@
 use PhpParser\Node\Expr\Variable;
 use PhpParser\Node\Scalar\String_;
 use PhpParser\Node\Stmt;
-use PHPUnit\Framework\TestCase;
 
-class FunctionTest extends TestCase
+class FunctionTest extends \PHPUnit\Framework\TestCase
 {
     public function createFunctionBuilder($name) {
         return new Function_($name);
@@ -92,29 +91,23 @@ public function testReturnType() {
         ], []), $node);
     }
 
-    /**
-     * @expectedException \LogicException
-     * @expectedExceptionMessage void type cannot be nullable
-     */
     public function testInvalidNullableVoidType() {
+        $this->expectException(\LogicException::class);
+        $this->expectExceptionMessage('void type cannot be nullable');
         $this->createFunctionBuilder('test')->setReturnType('?void');
     }
 
-    /**
-     * @expectedException \LogicException
-     * @expectedExceptionMessage Expected parameter node, got "Name"
-     */
     public function testInvalidParamError() {
+        $this->expectException(\LogicException::class);
+        $this->expectExceptionMessage('Expected parameter node, got "Name"');
         $this->createFunctionBuilder('test')
             ->addParam(new Node\Name('foo'))
         ;
     }
 
-    /**
-     * @expectedException \LogicException
-     * @expectedExceptionMessage Expected statement or expression node
-     */
     public function testAddNonStmt() {
+        $this->expectException(\LogicException::class);
+        $this->expectExceptionMessage('Expected statement or expression node');
         $this->createFunctionBuilder('test')
             ->addStmt(new Node\Name('Test'));
     }
diff --git a/vendor/nikic/php-parser/test/PhpParser/Builder/InterfaceTest.php b/vendor/nikic/php-parser/test/PhpParser/Builder/InterfaceTest.php
index 2c926b6059..7f7f56a270 100644
--- a/vendor/nikic/php-parser/test/PhpParser/Builder/InterfaceTest.php
+++ b/vendor/nikic/php-parser/test/PhpParser/Builder/InterfaceTest.php
@@ -6,9 +6,8 @@
 use PhpParser\Node;
 use PhpParser\Node\Scalar\DNumber;
 use PhpParser\Node\Stmt;
-use PHPUnit\Framework\TestCase;
 
-class InterfaceTest extends TestCase
+class InterfaceTest extends \PHPUnit\Framework\TestCase
 {
     /** @var Interface_ */
     protected $builder;
@@ -79,11 +78,9 @@ public function testDocComment() {
         ]), $node);
     }
 
-    /**
-     * @expectedException \LogicException
-     * @expectedExceptionMessage Unexpected node of type "Stmt_PropertyProperty"
-     */
     public function testInvalidStmtError() {
+        $this->expectException(\LogicException::class);
+        $this->expectExceptionMessage('Unexpected node of type "Stmt_PropertyProperty"');
         $this->builder->addStmt(new Stmt\PropertyProperty('invalid'));
     }
 
diff --git a/vendor/nikic/php-parser/test/PhpParser/Builder/MethodTest.php b/vendor/nikic/php-parser/test/PhpParser/Builder/MethodTest.php
index 0decbed0d7..529f035497 100644
--- a/vendor/nikic/php-parser/test/PhpParser/Builder/MethodTest.php
+++ b/vendor/nikic/php-parser/test/PhpParser/Builder/MethodTest.php
@@ -8,9 +8,8 @@
 use PhpParser\Node\Expr\Variable;
 use PhpParser\Node\Scalar\String_;
 use PhpParser\Node\Stmt;
-use PHPUnit\Framework\TestCase;
 
-class MethodTest extends TestCase
+class MethodTest extends \PHPUnit\Framework\TestCase
 {
     public function createMethodBuilder($name) {
         return new Method($name);
@@ -135,33 +134,27 @@ public function testReturnType() {
         ], []), $node);
     }
 
-    /**
-     * @expectedException \LogicException
-     * @expectedExceptionMessage Cannot add statements to an abstract method
-     */
     public function testAddStmtToAbstractMethodError() {
+        $this->expectException(\LogicException::class);
+        $this->expectExceptionMessage('Cannot add statements to an abstract method');
         $this->createMethodBuilder('test')
             ->makeAbstract()
             ->addStmt(new Print_(new String_('test')))
         ;
     }
 
-    /**
-     * @expectedException \LogicException
-     * @expectedExceptionMessage Cannot make method with statements abstract
-     */
     public function testMakeMethodWithStmtsAbstractError() {
+        $this->expectException(\LogicException::class);
+        $this->expectExceptionMessage('Cannot make method with statements abstract');
         $this->createMethodBuilder('test')
             ->addStmt(new Print_(new String_('test')))
             ->makeAbstract()
         ;
     }
 
-    /**
-     * @expectedException \LogicException
-     * @expectedExceptionMessage Expected parameter node, got "Name"
-     */
     public function testInvalidParamError() {
+        $this->expectException(\LogicException::class);
+        $this->expectExceptionMessage('Expected parameter node, got "Name"');
         $this->createMethodBuilder('test')
             ->addParam(new Node\Name('foo'))
         ;
diff --git a/vendor/nikic/php-parser/test/PhpParser/Builder/NamespaceTest.php b/vendor/nikic/php-parser/test/PhpParser/Builder/NamespaceTest.php
index b8dce39c26..689001bcbe 100644
--- a/vendor/nikic/php-parser/test/PhpParser/Builder/NamespaceTest.php
+++ b/vendor/nikic/php-parser/test/PhpParser/Builder/NamespaceTest.php
@@ -5,9 +5,8 @@
 use PhpParser\Comment\Doc;
 use PhpParser\Node;
 use PhpParser\Node\Stmt;
-use PHPUnit\Framework\TestCase;
 
-class NamespaceTest extends TestCase
+class NamespaceTest extends \PHPUnit\Framework\TestCase
 {
     protected function createNamespaceBuilder($fqn) {
         return new Namespace_($fqn);
diff --git a/vendor/nikic/php-parser/test/PhpParser/Builder/ParamTest.php b/vendor/nikic/php-parser/test/PhpParser/Builder/ParamTest.php
index d33189212e..c9cbfcac0f 100644
--- a/vendor/nikic/php-parser/test/PhpParser/Builder/ParamTest.php
+++ b/vendor/nikic/php-parser/test/PhpParser/Builder/ParamTest.php
@@ -5,9 +5,8 @@
 use PhpParser\Node;
 use PhpParser\Node\Expr;
 use PhpParser\Node\Scalar;
-use PHPUnit\Framework\TestCase;
 
-class ParamTest extends TestCase
+class ParamTest extends \PHPUnit\Framework\TestCase
 {
     public function createParamBuilder($name) {
         return new Param($name);
@@ -80,9 +79,9 @@ public function provideTestDefaultValues() {
     }
 
     /**
-     * @dataProvider provideTestTypeHints
+     * @dataProvider provideTestTypes
      */
-    public function testTypeHints($typeHint, $expectedType) {
+    public function testTypes($typeHint, $expectedType) {
         $node = $this->createParamBuilder('test')
             ->setTypeHint($typeHint)
             ->getNode()
@@ -100,7 +99,7 @@ public function testTypeHints($typeHint, $expectedType) {
         $this->assertEquals($expectedType, $type);
     }
 
-    public function provideTestTypeHints() {
+    public function provideTestTypes() {
         return [
             ['array', new Node\Identifier('array')],
             ['callable', new Node\Identifier('callable')],
@@ -129,20 +128,16 @@ public function provideTestTypeHints() {
         ];
     }
 
-    /**
-     * @expectedException \LogicException
-     * @expectedExceptionMessage Parameter type cannot be void
-     */
     public function testVoidTypeError() {
-        $this->createParamBuilder('test')->setTypeHint('void');
+        $this->expectException(\LogicException::class);
+        $this->expectExceptionMessage('Parameter type cannot be void');
+        $this->createParamBuilder('test')->setType('void');
     }
 
-    /**
-     * @expectedException \LogicException
-     * @expectedExceptionMessage Type must be a string, or an instance of Name, Identifier or NullableType
-     */
     public function testInvalidTypeError() {
-        $this->createParamBuilder('test')->setTypeHint(new \stdClass);
+        $this->expectException(\LogicException::class);
+        $this->expectExceptionMessage('Type must be a string, or an instance of Name, Identifier or NullableType');
+        $this->createParamBuilder('test')->setType(new \stdClass);
     }
 
     public function testByRef() {
diff --git a/vendor/nikic/php-parser/test/PhpParser/Builder/PropertyTest.php b/vendor/nikic/php-parser/test/PhpParser/Builder/PropertyTest.php
index d7a5a70e26..a15cd43c76 100644
--- a/vendor/nikic/php-parser/test/PhpParser/Builder/PropertyTest.php
+++ b/vendor/nikic/php-parser/test/PhpParser/Builder/PropertyTest.php
@@ -7,9 +7,8 @@
 use PhpParser\Node\Name;
 use PhpParser\Node\Scalar;
 use PhpParser\Node\Stmt;
-use PHPUnit\Framework\TestCase;
 
-class PropertyTest extends TestCase
+class PropertyTest extends \PHPUnit\Framework\TestCase
 {
     public function createPropertyBuilder($name) {
         return new Property($name);
diff --git a/vendor/nikic/php-parser/test/PhpParser/Builder/TraitTest.php b/vendor/nikic/php-parser/test/PhpParser/Builder/TraitTest.php
index 666769dc3a..4d99ef8870 100644
--- a/vendor/nikic/php-parser/test/PhpParser/Builder/TraitTest.php
+++ b/vendor/nikic/php-parser/test/PhpParser/Builder/TraitTest.php
@@ -5,9 +5,8 @@
 use PhpParser\Comment;
 use PhpParser\Node\Name;
 use PhpParser\Node\Stmt;
-use PHPUnit\Framework\TestCase;
 
-class TraitTest extends TestCase
+class TraitTest extends \PHPUnit\Framework\TestCase
 {
     protected function createTraitBuilder($class) {
         return new Trait_($class);
@@ -37,11 +36,9 @@ public function testStmtAddition() {
         ]), $trait);
     }
 
-    /**
-     * @expectedException \LogicException
-     * @expectedExceptionMessage Unexpected node of type "Stmt_Echo"
-     */
     public function testInvalidStmtError() {
+        $this->expectException(\LogicException::class);
+        $this->expectExceptionMessage('Unexpected node of type "Stmt_Echo"');
         $this->createTraitBuilder('Test')
             ->addStmt(new Stmt\Echo_([]))
         ;
diff --git a/vendor/nikic/php-parser/test/PhpParser/Builder/TraitUseAdaptationTest.php b/vendor/nikic/php-parser/test/PhpParser/Builder/TraitUseAdaptationTest.php
new file mode 100644
index 0000000000..4961ccfac9
--- /dev/null
+++ b/vendor/nikic/php-parser/test/PhpParser/Builder/TraitUseAdaptationTest.php
@@ -0,0 +1,106 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Builder;
+
+use PhpParser\Node\Name;
+use PhpParser\Node\Stmt;
+use PhpParser\Node\Stmt\Class_;
+
+class TraitUseAdaptationTest extends \PHPUnit\Framework\TestCase
+{
+    protected function createTraitUseAdaptationBuilder($trait, $method) {
+        return new TraitUseAdaptation($trait, $method);
+    }
+
+    public function testAsMake() {
+        $builder = $this->createTraitUseAdaptationBuilder(null, 'foo');
+
+        $this->assertEquals(
+            new Stmt\TraitUseAdaptation\Alias(null, 'foo', null, 'bar'),
+            (clone $builder)->as('bar')->getNode()
+        );
+
+        $this->assertEquals(
+            new Stmt\TraitUseAdaptation\Alias(null, 'foo', Class_::MODIFIER_PUBLIC, null),
+            (clone $builder)->makePublic()->getNode()
+        );
+
+        $this->assertEquals(
+            new Stmt\TraitUseAdaptation\Alias(null, 'foo', Class_::MODIFIER_PROTECTED, null),
+            (clone $builder)->makeProtected()->getNode()
+        );
+
+        $this->assertEquals(
+            new Stmt\TraitUseAdaptation\Alias(null, 'foo', Class_::MODIFIER_PRIVATE, null),
+            (clone $builder)->makePrivate()->getNode()
+        );
+    }
+
+    public function testInsteadof() {
+        $node = $this->createTraitUseAdaptationBuilder('SomeTrait', 'foo')
+            ->insteadof('AnotherTrait')
+            ->getNode()
+        ;
+
+        $this->assertEquals(
+            new Stmt\TraitUseAdaptation\Precedence(
+                new Name('SomeTrait'),
+                'foo',
+                [new Name('AnotherTrait')]
+            ),
+            $node
+        );
+    }
+
+    public function testAsOnNotAlias() {
+        $this->expectException(\LogicException::class);
+        $this->expectExceptionMessage('Cannot set alias for not alias adaptation buider');
+        $this->createTraitUseAdaptationBuilder('Test', 'foo')
+            ->insteadof('AnotherTrait')
+            ->as('bar')
+        ;
+    }
+
+    public function testInsteadofOnNotPrecedence() {
+        $this->expectException(\LogicException::class);
+        $this->expectExceptionMessage('Cannot add overwritten traits for not precedence adaptation buider');
+        $this->createTraitUseAdaptationBuilder('Test', 'foo')
+            ->as('bar')
+            ->insteadof('AnotherTrait')
+        ;
+    }
+
+    public function testInsteadofWithoutTrait() {
+        $this->expectException(\LogicException::class);
+        $this->expectExceptionMessage('Precedence adaptation must have trait');
+        $this->createTraitUseAdaptationBuilder(null, 'foo')
+            ->insteadof('AnotherTrait')
+        ;
+    }
+
+    public function testMakeOnNotAlias() {
+        $this->expectException(\LogicException::class);
+        $this->expectExceptionMessage('Cannot set access modifier for not alias adaptation buider');
+        $this->createTraitUseAdaptationBuilder('Test', 'foo')
+            ->insteadof('AnotherTrait')
+            ->makePublic()
+        ;
+    }
+
+    public function testMultipleMake() {
+        $this->expectException(\LogicException::class);
+        $this->expectExceptionMessage('Multiple access type modifiers are not allowed');
+        $this->createTraitUseAdaptationBuilder(null, 'foo')
+            ->makePrivate()
+            ->makePublic()
+        ;
+    }
+
+    public function testUndefinedType() {
+        $this->expectException(\LogicException::class);
+        $this->expectExceptionMessage('Type of adaptation is not defined');
+        $this->createTraitUseAdaptationBuilder(null, 'foo')
+            ->getNode()
+        ;
+    }
+}
diff --git a/vendor/nikic/php-parser/test/PhpParser/Builder/TraitUseTest.php b/vendor/nikic/php-parser/test/PhpParser/Builder/TraitUseTest.php
new file mode 100644
index 0000000000..8d20dfbd7c
--- /dev/null
+++ b/vendor/nikic/php-parser/test/PhpParser/Builder/TraitUseTest.php
@@ -0,0 +1,52 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Builder;
+
+use PhpParser\Node\Name;
+use PhpParser\Node\Stmt;
+
+class TraitUseTest extends \PHPUnit\Framework\TestCase
+{
+    protected function createTraitUseBuilder(...$traits) {
+        return new TraitUse(...$traits);
+    }
+
+    public function testAnd() {
+        $node = $this->createTraitUseBuilder('SomeTrait')
+            ->and('AnotherTrait')
+            ->getNode()
+        ;
+
+        $this->assertEquals(
+            new Stmt\TraitUse([
+                new Name('SomeTrait'),
+                new Name('AnotherTrait')
+            ]),
+            $node
+        );
+    }
+
+    public function testWith() {
+        $node = $this->createTraitUseBuilder('SomeTrait')
+            ->with(new Stmt\TraitUseAdaptation\Alias(null, 'foo', null, 'bar'))
+            ->with((new TraitUseAdaptation(null, 'test'))->as('baz'))
+            ->getNode()
+        ;
+
+        $this->assertEquals(
+            new Stmt\TraitUse([new Name('SomeTrait')], [
+                new Stmt\TraitUseAdaptation\Alias(null, 'foo', null, 'bar'),
+                new Stmt\TraitUseAdaptation\Alias(null, 'test', null, 'baz')
+            ]),
+            $node
+        );
+    }
+
+    public function testInvalidAdaptationNode() {
+        $this->expectException(\LogicException::class);
+        $this->expectExceptionMessage('Adaptation must have type TraitUseAdaptation');
+        $this->createTraitUseBuilder('Test')
+            ->with(new Stmt\Echo_([]))
+        ;
+    }
+}
diff --git a/vendor/nikic/php-parser/test/PhpParser/Builder/UseTest.php b/vendor/nikic/php-parser/test/PhpParser/Builder/UseTest.php
index 85c1d77dfc..f17da59b42 100644
--- a/vendor/nikic/php-parser/test/PhpParser/Builder/UseTest.php
+++ b/vendor/nikic/php-parser/test/PhpParser/Builder/UseTest.php
@@ -1,11 +1,12 @@
 <?php declare(strict_types=1);
 
+namespace PhpParser\Builder;
+
 use PhpParser\Builder;
 use PhpParser\Node\Name;
 use PhpParser\Node\Stmt;
-use PHPUnit\Framework\TestCase;
 
-class UseTest extends TestCase
+class UseTest extends \PHPUnit\Framework\TestCase
 {
     protected function createUseBuilder($name, $type = Stmt\Use_::TYPE_NORMAL) {
         return new Builder\Use_($name, $type);
@@ -26,5 +27,10 @@ public function testCreation() {
         $this->assertEquals(new Stmt\Use_([
             new Stmt\UseUse(new Name('foo\bar'), 'foo')
         ], Stmt\Use_::TYPE_FUNCTION), $node);
+
+        $node = $this->createUseBuilder('foo\BAR', Stmt\Use_::TYPE_CONSTANT)->as('FOO')->getNode();
+        $this->assertEquals(new Stmt\Use_([
+            new Stmt\UseUse(new Name('foo\BAR'), 'FOO')
+        ], Stmt\Use_::TYPE_CONSTANT), $node);
     }
 }
diff --git a/vendor/nikic/php-parser/test/PhpParser/BuilderFactoryTest.php b/vendor/nikic/php-parser/test/PhpParser/BuilderFactoryTest.php
index 465f600f5b..a80e1c5814 100644
--- a/vendor/nikic/php-parser/test/PhpParser/BuilderFactoryTest.php
+++ b/vendor/nikic/php-parser/test/PhpParser/BuilderFactoryTest.php
@@ -2,7 +2,6 @@
 
 namespace PhpParser;
 
-use PhpParser\Builder;
 use PhpParser\Node\Arg;
 use PhpParser\Node\Expr;
 use PhpParser\Node\Expr\BinaryOp\Concat;
@@ -10,10 +9,8 @@
 use PhpParser\Node\Name;
 use PhpParser\Node\Scalar\LNumber;
 use PhpParser\Node\Scalar\String_;
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Yaml\Tests\A;
 
-class BuilderFactoryTest extends TestCase
+class BuilderFactoryTest extends \PHPUnit\Framework\TestCase
 {
     /**
      * @dataProvider provideTestFactory
@@ -25,15 +22,17 @@ public function testFactory($methodName, $className) {
 
     public function provideTestFactory() {
         return [
-            ['namespace', Builder\Namespace_::class],
-            ['class',     Builder\Class_::class],
-            ['interface', Builder\Interface_::class],
-            ['trait',     Builder\Trait_::class],
-            ['method',    Builder\Method::class],
-            ['function',  Builder\Function_::class],
-            ['property',  Builder\Property::class],
-            ['param',     Builder\Param::class],
-            ['use',       Builder\Use_::class],
+            ['namespace',   Builder\Namespace_::class],
+            ['class',       Builder\Class_::class],
+            ['interface',   Builder\Interface_::class],
+            ['trait',       Builder\Trait_::class],
+            ['method',      Builder\Method::class],
+            ['function',    Builder\Function_::class],
+            ['property',    Builder\Property::class],
+            ['param',       Builder\Param::class],
+            ['use',         Builder\Use_::class],
+            ['useFunction', Builder\Use_::class],
+            ['useConst',    Builder\Use_::class],
         ];
     }
 
@@ -67,19 +66,15 @@ public function testConcat() {
         );
     }
 
-    /**
-     * @expectedException \LogicException
-     * @expectedExceptionMessage Expected at least two expressions
-     */
     public function testConcatOneError() {
+        $this->expectException(\LogicException::class);
+        $this->expectExceptionMessage('Expected at least two expressions');
         (new BuilderFactory())->concat("a");
     }
 
-    /**
-     * @expectedException \LogicException
-     * @expectedExceptionMessage Expected string or Expr
-     */
     public function testConcatInvalidExpr() {
+        $this->expectException(\LogicException::class);
+        $this->expectExceptionMessage('Expected string or Expr');
         (new BuilderFactory())->concat("a", 42);
     }
 
@@ -188,47 +183,85 @@ public function testConstFetches() {
         );
     }
 
-    /**
-     * @expectedException \LogicException
-     * @expectedExceptionMessage Expected string or instance of Node\Identifier
-     */
+    public function testVar() {
+        $factory = new BuilderFactory();
+        $this->assertEquals(
+            new Expr\Variable("foo"),
+            $factory->var("foo")
+        );
+        $this->assertEquals(
+            new Expr\Variable(new Expr\Variable("foo")),
+            $factory->var($factory->var("foo"))
+        );
+    }
+
+    public function testPropertyFetch() {
+        $f = new BuilderFactory();
+        $this->assertEquals(
+            new Expr\PropertyFetch(new Expr\Variable('foo'), 'bar'),
+            $f->propertyFetch($f->var('foo'), 'bar')
+        );
+        $this->assertEquals(
+            new Expr\PropertyFetch(new Expr\Variable('foo'), 'bar'),
+            $f->propertyFetch($f->var('foo'), new Identifier('bar'))
+        );
+        $this->assertEquals(
+            new Expr\PropertyFetch(new Expr\Variable('foo'), new Expr\Variable('bar')),
+            $f->propertyFetch($f->var('foo'), $f->var('bar'))
+        );
+    }
+
     public function testInvalidIdentifier() {
+        $this->expectException(\LogicException::class);
+        $this->expectExceptionMessage('Expected string or instance of Node\Identifier');
         (new BuilderFactory())->classConstFetch('Foo', new Expr\Variable('foo'));
     }
 
-    /**
-     * @expectedException \LogicException
-     * @expectedExceptionMessage Expected string or instance of Node\Identifier or Node\Expr
-     */
     public function testInvalidIdentifierOrExpr() {
+        $this->expectException(\LogicException::class);
+        $this->expectExceptionMessage('Expected string or instance of Node\Identifier or Node\Expr');
         (new BuilderFactory())->staticCall('Foo', new Name('bar'));
     }
 
-    /**
-     * @expectedException \LogicException
-     * @expectedExceptionMessage Name must be a string or an instance of Node\Name or Node\Expr
-     */
     public function testInvalidNameOrExpr() {
+        $this->expectException(\LogicException::class);
+        $this->expectExceptionMessage('Name must be a string or an instance of Node\Name or Node\Expr');
         (new BuilderFactory())->funcCall(new Node\Stmt\Return_());
     }
 
+    public function testInvalidVar() {
+        $this->expectException(\LogicException::class);
+        $this->expectExceptionMessage('Variable name must be string or Expr');
+        (new BuilderFactory())->var(new Node\Stmt\Return_());
+    }
+
     public function testIntegration() {
         $factory = new BuilderFactory;
         $node = $factory->namespace('Name\Space')
             ->addStmt($factory->use('Foo\Bar\SomeOtherClass'))
             ->addStmt($factory->use('Foo\Bar')->as('A'))
+            ->addStmt($factory->useFunction('strlen'))
+            ->addStmt($factory->useConst('PHP_VERSION'))
             ->addStmt($factory
                 ->class('SomeClass')
                 ->extend('SomeOtherClass')
                 ->implement('A\Few', '\Interfaces')
                 ->makeAbstract()
 
+                ->addStmt($factory->useTrait('FirstTrait'))
+
+                ->addStmt($factory->useTrait('SecondTrait', 'ThirdTrait')
+                    ->and('AnotherTrait')
+                    ->with($factory->traitUseAdaptation('foo')->as('bar'))
+                    ->with($factory->traitUseAdaptation('AnotherTrait', 'baz')->as('test'))
+                    ->with($factory->traitUseAdaptation('AnotherTrait', 'func')->insteadof('SecondTrait')))
+
                 ->addStmt($factory->method('firstMethod'))
 
                 ->addStmt($factory->method('someMethod')
                     ->makePublic()
                     ->makeAbstract()
-                    ->addParam($factory->param('someParam')->setTypeHint('SomeClass'))
+                    ->addParam($factory->param('someParam')->setType('SomeClass'))
                     ->setDocComment('/**
                                       * This method does something.
                                       *
@@ -254,8 +287,16 @@ public function testIntegration() {
 
 use Foo\Bar\SomeOtherClass;
 use Foo\Bar as A;
+use function strlen;
+use const PHP_VERSION;
 abstract class SomeClass extends SomeOtherClass implements A\Few, \Interfaces
 {
+    use FirstTrait;
+    use SecondTrait, ThirdTrait, AnotherTrait {
+        foo as bar;
+        AnotherTrait::baz as test;
+        AnotherTrait::func insteadof SecondTrait;
+    }
     protected $someProperty;
     private $anotherProperty = array(1, 2, 3);
     function firstMethod()
diff --git a/vendor/nikic/php-parser/test/PhpParser/CodeParsingTest.php b/vendor/nikic/php-parser/test/PhpParser/CodeParsingTest.php
index 3bdab812e3..24e93dd522 100644
--- a/vendor/nikic/php-parser/test/PhpParser/CodeParsingTest.php
+++ b/vendor/nikic/php-parser/test/PhpParser/CodeParsingTest.php
@@ -5,8 +5,6 @@
 use PhpParser\Node\Expr;
 use PhpParser\Node\Stmt;
 
-require_once __DIR__ . '/CodeTestAbstract.php';
-
 class CodeParsingTest extends CodeTestAbstract
 {
     /**
@@ -52,7 +50,8 @@ public function createParsers(array $modes) {
         ];
     }
 
-    private function getParseOutput(Parser $parser, $code, array $modes) {
+    // Must be public for updateTests.php
+    public function getParseOutput(Parser $parser, $code, array $modes) {
         $dumpPositions = isset($modes['positions']);
 
         $errors = new ErrorHandler\Collecting;
@@ -78,9 +77,9 @@ public function provideTestParse() {
     private function formatErrorMessage(Error $e, $code) {
         if ($e->hasColumnInfo()) {
             return $e->getMessageWithColumnInfo($code);
-        } else {
-            return $e->getMessage();
         }
+
+        return $e->getMessage();
     }
 
     private function checkAttributes($stmts) {
diff --git a/vendor/nikic/php-parser/test/PhpParser/CodeTestAbstract.php b/vendor/nikic/php-parser/test/PhpParser/CodeTestAbstract.php
index 5eaf9d1b26..f5f408755c 100644
--- a/vendor/nikic/php-parser/test/PhpParser/CodeTestAbstract.php
+++ b/vendor/nikic/php-parser/test/PhpParser/CodeTestAbstract.php
@@ -2,11 +2,7 @@
 
 namespace PhpParser;
 
-use PHPUnit\Framework\TestCase;
-
-require_once __DIR__ . '/CodeTestParser.php';
-
-abstract class CodeTestAbstract extends TestCase
+abstract class CodeTestAbstract extends \PHPUnit\Framework\TestCase
 {
     protected function getTests($directory, $fileExtension, $chunksPerTest = 2) {
         $parser = new CodeTestParser;
diff --git a/vendor/nikic/php-parser/test/PhpParser/CommentTest.php b/vendor/nikic/php-parser/test/PhpParser/CommentTest.php
index 7b6c2aabe9..409841aae1 100644
--- a/vendor/nikic/php-parser/test/PhpParser/CommentTest.php
+++ b/vendor/nikic/php-parser/test/PhpParser/CommentTest.php
@@ -2,9 +2,7 @@
 
 namespace PhpParser;
 
-use PHPUnit\Framework\TestCase;
-
-class CommentTest extends TestCase
+class CommentTest extends \PHPUnit\Framework\TestCase
 {
     public function testGetSet() {
         $comment = new Comment('/* Some comment */', 1, 10, 2);
diff --git a/vendor/nikic/php-parser/test/PhpParser/ConstExprEvaluatorTest.php b/vendor/nikic/php-parser/test/PhpParser/ConstExprEvaluatorTest.php
index d0a83fff9f..02d992e599 100644
--- a/vendor/nikic/php-parser/test/PhpParser/ConstExprEvaluatorTest.php
+++ b/vendor/nikic/php-parser/test/PhpParser/ConstExprEvaluatorTest.php
@@ -4,9 +4,8 @@
 
 use PhpParser\Node\Expr;
 use PhpParser\Node\Scalar;
-use PHPUnit\Framework\TestCase;
 
-class ConstExprEvaluatorTest extends TestCase
+class ConstExprEvaluatorTest extends \PHPUnit\Framework\TestCase
 {
     /** @dataProvider provideTestEvaluate */
     public function testEvaluate($exprString, $expected) {
@@ -73,11 +72,9 @@ public function provideTestEvaluate() {
         ];
     }
 
-    /**
-     * @expectedException \PhpParser\ConstExprEvaluationException
-     * @expectedExceptionMessage Expression of type Expr_Variable cannot be evaluated
-     */
     public function testEvaluateFails() {
+        $this->expectException(ConstExprEvaluationException::class);
+        $this->expectExceptionMessage('Expression of type Expr_Variable cannot be evaluated');
         $evaluator = new ConstExprEvaluator();
         $evaluator->evaluateDirectly(new Expr\Variable('a'));
     }
diff --git a/vendor/nikic/php-parser/test/PhpParser/ErrorHandler/CollectingTest.php b/vendor/nikic/php-parser/test/PhpParser/ErrorHandler/CollectingTest.php
index 842f131ddc..a20101a8b6 100644
--- a/vendor/nikic/php-parser/test/PhpParser/ErrorHandler/CollectingTest.php
+++ b/vendor/nikic/php-parser/test/PhpParser/ErrorHandler/CollectingTest.php
@@ -3,9 +3,8 @@
 namespace PhpParser\ErrorHandler;
 
 use PhpParser\Error;
-use PHPUnit\Framework\TestCase;
 
-class CollectingTest extends TestCase
+class CollectingTest extends \PHPUnit\Framework\TestCase
 {
     public function testHandleError() {
         $errorHandler = new Collecting();
diff --git a/vendor/nikic/php-parser/test/PhpParser/ErrorHandler/ThrowingTest.php b/vendor/nikic/php-parser/test/PhpParser/ErrorHandler/ThrowingTest.php
index 31d349ae42..be641ec7a9 100644
--- a/vendor/nikic/php-parser/test/PhpParser/ErrorHandler/ThrowingTest.php
+++ b/vendor/nikic/php-parser/test/PhpParser/ErrorHandler/ThrowingTest.php
@@ -3,15 +3,12 @@
 namespace PhpParser\ErrorHandler;
 
 use PhpParser\Error;
-use PHPUnit\Framework\TestCase;
 
-class ThrowingTest extends TestCase
+class ThrowingTest extends \PHPUnit\Framework\TestCase
 {
-    /**
-     * @expectedException \PhpParser\Error
-     * @expectedExceptionMessage Test
-     */
     public function testHandleError() {
+        $this->expectException(Error::class);
+        $this->expectExceptionMessage('Test');
         $errorHandler = new Throwing();
         $errorHandler->handleError(new Error('Test'));
     }
diff --git a/vendor/nikic/php-parser/test/PhpParser/ErrorTest.php b/vendor/nikic/php-parser/test/PhpParser/ErrorTest.php
index 4b9d73a160..cc2d3fa5c8 100644
--- a/vendor/nikic/php-parser/test/PhpParser/ErrorTest.php
+++ b/vendor/nikic/php-parser/test/PhpParser/ErrorTest.php
@@ -2,9 +2,7 @@
 
 namespace PhpParser;
 
-use PHPUnit\Framework\TestCase;
-
-class ErrorTest extends TestCase
+class ErrorTest extends \PHPUnit\Framework\TestCase
 {
     public function testConstruct() {
         $attributes = [
@@ -94,11 +92,9 @@ public function testNoColumnInfo() {
         }
     }
 
-    /**
-     * @expectedException \RuntimeException
-     * @expectedExceptionMessage Invalid position information
-     */
     public function testInvalidPosInfo() {
+        $this->expectException(\RuntimeException::class);
+        $this->expectExceptionMessage('Invalid position information');
         $error = new Error('Some error', [
             'startFilePos' => 10,
             'endFilePos' => 11,
diff --git a/vendor/nikic/php-parser/test/PhpParser/Internal/DifferTest.php b/vendor/nikic/php-parser/test/PhpParser/Internal/DifferTest.php
index 0cf878b6f4..6fac3fd365 100644
--- a/vendor/nikic/php-parser/test/PhpParser/Internal/DifferTest.php
+++ b/vendor/nikic/php-parser/test/PhpParser/Internal/DifferTest.php
@@ -2,9 +2,7 @@
 
 namespace PhpParser\Internal;
 
-use PHPUnit\Framework\TestCase;
-
-class DifferTest extends TestCase
+class DifferTest extends \PHPUnit\Framework\TestCase
 {
     private function formatDiffString(array $diff) {
         $diffStr = '';
diff --git a/vendor/nikic/php-parser/test/PhpParser/JsonDecoderTest.php b/vendor/nikic/php-parser/test/PhpParser/JsonDecoderTest.php
index 7ef60787bd..d5cb05973e 100644
--- a/vendor/nikic/php-parser/test/PhpParser/JsonDecoderTest.php
+++ b/vendor/nikic/php-parser/test/PhpParser/JsonDecoderTest.php
@@ -2,9 +2,7 @@
 
 namespace PhpParser;
 
-use PHPUnit\Framework\TestCase;
-
-class JsonDecoderTest extends TestCase
+class JsonDecoderTest extends \PHPUnit\Framework\TestCase
 {
     public function testRoundTrip() {
         $code = <<<'PHP'
diff --git a/vendor/nikic/php-parser/test/PhpParser/Lexer/EmulativeTest.php b/vendor/nikic/php-parser/test/PhpParser/Lexer/EmulativeTest.php
index 3a33ba8207..a53c379b79 100644
--- a/vendor/nikic/php-parser/test/PhpParser/Lexer/EmulativeTest.php
+++ b/vendor/nikic/php-parser/test/PhpParser/Lexer/EmulativeTest.php
@@ -2,11 +2,10 @@
 
 namespace PhpParser\Lexer;
 
+use PhpParser\ErrorHandler;
 use PhpParser\LexerTest;
 use PhpParser\Parser\Tokens;
 
-require_once __DIR__ . '/../LexerTest.php';
-
 class EmulativeTest extends LexerTest
 {
     protected function getLexer(array $options = []) {
@@ -27,7 +26,7 @@ public function testReplaceKeywords($keyword, $expectedToken) {
     /**
      * @dataProvider provideTestReplaceKeywords
      */
-    public function testNoReplaceKeywordsAfterObjectOperator($keyword) {
+    public function testNoReplaceKeywordsAfterObjectOperator(string $keyword) {
         $lexer = $this->getLexer();
         $lexer->startLexing('<?php ->' . $keyword);
 
@@ -36,8 +35,23 @@ public function testNoReplaceKeywordsAfterObjectOperator($keyword) {
         $this->assertSame(0, $lexer->getNextToken());
     }
 
+    /**
+     * @dataProvider provideTestReplaceKeywords
+     */
+    public function testNoReplaceKeywordsAfterObjectOperatorWithSpaces(string $keyword) {
+        $lexer = $this->getLexer();
+        $lexer->startLexing('<?php ->    ' . $keyword);
+
+        $this->assertSame(Tokens::T_OBJECT_OPERATOR, $lexer->getNextToken());
+        $this->assertSame(Tokens::T_STRING, $lexer->getNextToken());
+        $this->assertSame(0, $lexer->getNextToken());
+    }
+
     public function provideTestReplaceKeywords() {
         return [
+            // PHP 7.4
+            ['fn',            Tokens::T_FN],
+
             // PHP 5.5
             ['finally',       Tokens::T_FINALLY],
             ['yield',         Tokens::T_YIELD],
@@ -63,12 +77,11 @@ public function testLexNewFeatures($code, array $expectedTokens) {
         $lexer = $this->getLexer();
         $lexer->startLexing('<?php ' . $code);
 
-        foreach ($expectedTokens as $expectedToken) {
-            list($expectedTokenType, $expectedTokenText) = $expectedToken;
-            $this->assertSame($expectedTokenType, $lexer->getNextToken($text));
-            $this->assertSame($expectedTokenText, $text);
+        $tokens = [];
+        while (0 !== $token = $lexer->getNextToken($text)) {
+            $tokens[] = [$token, $text];
         }
-        $this->assertSame(0, $lexer->getNextToken());
+        $this->assertSame($expectedTokens, $tokens);
     }
 
     /**
@@ -85,8 +98,35 @@ public function testLeaveStuffAloneInStrings($code) {
         $this->assertSame(0, $lexer->getNextToken());
     }
 
+    /**
+     * @dataProvider provideTestLexNewFeatures
+     */
+    public function testErrorAfterEmulation($code) {
+        $errorHandler = new ErrorHandler\Collecting;
+        $lexer = $this->getLexer();
+        $lexer->startLexing('<?php ' . $code . "\0", $errorHandler);
+
+        $errors = $errorHandler->getErrors();
+        $this->assertCount(1, $errors);
+
+        $error = $errors[0];
+        $this->assertSame('Unexpected null byte', $error->getRawMessage());
+
+        $attrs = $error->getAttributes();
+        $expPos = strlen('<?php ' . $code);
+        $expLine = 1 + substr_count('<?php ' . $code, "\n");
+        $this->assertSame($expPos, $attrs['startFilePos']);
+        $this->assertSame($expPos, $attrs['endFilePos']);
+        $this->assertSame($expLine, $attrs['startLine']);
+        $this->assertSame($expLine, $attrs['endLine']);
+    }
+
     public function provideTestLexNewFeatures() {
         return [
+            // PHP 7.4
+            ['??=', [
+                [Tokens::T_COALESCE_EQUAL, '??='],
+            ]],
             ['yield from', [
                 [Tokens::T_YIELD_FROM, 'yield from'],
             ]],
@@ -128,6 +168,43 @@ public function provideTestLexNewFeatures() {
                 [Tokens::T_END_HEREDOC, 'NOWDOC'],
                 [ord(';'), ';'],
             ]],
+
+            // Flexible heredoc/nowdoc
+            ["<<<LABEL\nLABEL,", [
+                [Tokens::T_START_HEREDOC, "<<<LABEL\n"],
+                [Tokens::T_END_HEREDOC, "LABEL"],
+                [ord(','), ','],
+            ]],
+            ["<<<LABEL\n    LABEL,", [
+                [Tokens::T_START_HEREDOC, "<<<LABEL\n"],
+                [Tokens::T_END_HEREDOC, "    LABEL"],
+                [ord(','), ','],
+            ]],
+            ["<<<LABEL\n    Foo\n  LABEL;", [
+                [Tokens::T_START_HEREDOC, "<<<LABEL\n"],
+                [Tokens::T_ENCAPSED_AND_WHITESPACE, "    Foo\n"],
+                [Tokens::T_END_HEREDOC, "  LABEL"],
+                [ord(';'), ';'],
+            ]],
+            ["<<<A\n A,<<<A\n A,", [
+                [Tokens::T_START_HEREDOC, "<<<A\n"],
+                [Tokens::T_END_HEREDOC, " A"],
+                [ord(','), ','],
+                [Tokens::T_START_HEREDOC, "<<<A\n"],
+                [Tokens::T_END_HEREDOC, " A"],
+                [ord(','), ','],
+            ]],
+            ["<<<LABEL\nLABELNOPE\nLABEL\n", [
+                [Tokens::T_START_HEREDOC, "<<<LABEL\n"],
+                [Tokens::T_ENCAPSED_AND_WHITESPACE, "LABELNOPE\n"],
+                [Tokens::T_END_HEREDOC, "LABEL"],
+            ]],
+            // Interpretation changed
+            ["<<<LABEL\n    LABEL\nLABEL\n", [
+                [Tokens::T_START_HEREDOC, "<<<LABEL\n"],
+                [Tokens::T_END_HEREDOC, "    LABEL"],
+                [Tokens::T_STRING, "LABEL"],
+            ]],
         ];
     }
 }
diff --git a/vendor/nikic/php-parser/test/PhpParser/LexerTest.php b/vendor/nikic/php-parser/test/PhpParser/LexerTest.php
index c34cc71e47..f24c64d512 100644
--- a/vendor/nikic/php-parser/test/PhpParser/LexerTest.php
+++ b/vendor/nikic/php-parser/test/PhpParser/LexerTest.php
@@ -3,9 +3,8 @@
 namespace PhpParser;
 
 use PhpParser\Parser\Tokens;
-use PHPUnit\Framework\TestCase;
 
-class LexerTest extends TestCase
+class LexerTest extends \PHPUnit\Framework\TestCase
 {
     /* To allow overwriting in parent class */
     protected function getLexer(array $options = []) {
@@ -235,11 +234,9 @@ public function provideTestHaltCompiler() {
         ];
     }
 
-    /**
-     * @expectedException \PhpParser\Error
-     * @expectedExceptionMessage __HALT_COMPILER must be followed by "();"
-     */
     public function testHandleHaltCompilerError() {
+        $this->expectException(Error::class);
+        $this->expectExceptionMessage('__HALT_COMPILER must be followed by "();"');
         $lexer = $this->getLexer();
         $lexer->startLexing('<?php ... __halt_compiler invalid ();');
 
diff --git a/vendor/nikic/php-parser/test/PhpParser/NameContextTest.php b/vendor/nikic/php-parser/test/PhpParser/NameContextTest.php
index 41c3460d4e..ee8458b67e 100644
--- a/vendor/nikic/php-parser/test/PhpParser/NameContextTest.php
+++ b/vendor/nikic/php-parser/test/PhpParser/NameContextTest.php
@@ -4,9 +4,8 @@
 
 use PhpParser\Node\Name;
 use PhpParser\Node\Stmt\Use_;
-use PHPUnit\Framework\TestCase;
 
-class NameContextTest extends TestCase
+class NameContextTest extends \PHPUnit\Framework\TestCase
 {
     /**
      * @dataProvider provideTestGetPossibleNames
diff --git a/vendor/nikic/php-parser/test/PhpParser/Node/IdentifierTest.php b/vendor/nikic/php-parser/test/PhpParser/Node/IdentifierTest.php
index fa2e72a861..2bd58fc8d0 100644
--- a/vendor/nikic/php-parser/test/PhpParser/Node/IdentifierTest.php
+++ b/vendor/nikic/php-parser/test/PhpParser/Node/IdentifierTest.php
@@ -2,9 +2,7 @@
 
 namespace PhpParser\Node;
 
-use PHPUnit\Framework\TestCase;
-
-class IdentifierTest extends TestCase
+class IdentifierTest extends \PHPUnit\Framework\TestCase
 {
     public function testToString() {
         $identifier = new Identifier('Foo');
diff --git a/vendor/nikic/php-parser/test/PhpParser/Node/NameTest.php b/vendor/nikic/php-parser/test/PhpParser/Node/NameTest.php
index 8fe9ed63e0..5e69ebba3c 100644
--- a/vendor/nikic/php-parser/test/PhpParser/Node/NameTest.php
+++ b/vendor/nikic/php-parser/test/PhpParser/Node/NameTest.php
@@ -2,9 +2,7 @@
 
 namespace PhpParser\Node;
 
-use PHPUnit\Framework\TestCase;
-
-class NameTest extends TestCase
+class NameTest extends \PHPUnit\Framework\TestCase
 {
     public function testConstruct() {
         $name = new Name(['foo', 'bar']);
@@ -51,35 +49,27 @@ public function testSlice() {
         $this->assertNull($name->slice(-2, -2));
     }
 
-    /**
-     * @expectedException \OutOfBoundsException
-     * @expectedExceptionMessage Offset 4 is out of bounds
-     */
     public function testSliceOffsetTooLarge() {
+        $this->expectException(\OutOfBoundsException::class);
+        $this->expectExceptionMessage('Offset 4 is out of bounds');
         (new Name('foo\bar\baz'))->slice(4);
     }
 
-    /**
-     * @expectedException \OutOfBoundsException
-     * @expectedExceptionMessage Offset -4 is out of bounds
-     */
     public function testSliceOffsetTooSmall() {
+        $this->expectException(\OutOfBoundsException::class);
+        $this->expectExceptionMessage('Offset -4 is out of bounds');
         (new Name('foo\bar\baz'))->slice(-4);
     }
 
-    /**
-     * @expectedException \OutOfBoundsException
-     * @expectedExceptionMessage Length 4 is out of bounds
-     */
     public function testSliceLengthTooLarge() {
+        $this->expectException(\OutOfBoundsException::class);
+        $this->expectExceptionMessage('Length 4 is out of bounds');
         (new Name('foo\bar\baz'))->slice(0, 4);
     }
 
-    /**
-     * @expectedException \OutOfBoundsException
-     * @expectedExceptionMessage Length -4 is out of bounds
-     */
     public function testSliceLengthTooSmall() {
+        $this->expectException(\OutOfBoundsException::class);
+        $this->expectExceptionMessage('Length -4 is out of bounds');
         (new Name('foo\bar\baz'))->slice(0, -4);
     }
 
@@ -131,27 +121,21 @@ public function testNameTypes() {
         $this->assertSame('namespace\foo', $name->toCodeString());
     }
 
-    /**
-     * @expectedException \InvalidArgumentException
-     * @expectedExceptionMessage Expected string, array of parts or Name instance
-     */
     public function testInvalidArg() {
+        $this->expectException(\InvalidArgumentException::class);
+        $this->expectExceptionMessage('Expected string, array of parts or Name instance');
         Name::concat('foo', new \stdClass);
     }
 
-    /**
-     * @expectedException \InvalidArgumentException
-     * @expectedExceptionMessage Name cannot be empty
-     */
     public function testInvalidEmptyString() {
+        $this->expectException(\InvalidArgumentException::class);
+        $this->expectExceptionMessage('Name cannot be empty');
         new Name('');
     }
 
-    /**
-     * @expectedException \InvalidArgumentException
-     * @expectedExceptionMessage Name cannot be empty
-     */
     public function testInvalidEmptyArray() {
+        $this->expectException(\InvalidArgumentException::class);
+        $this->expectExceptionMessage('Name cannot be empty');
         new Name([]);
     }
 
diff --git a/vendor/nikic/php-parser/test/PhpParser/Node/Scalar/MagicConstTest.php b/vendor/nikic/php-parser/test/PhpParser/Node/Scalar/MagicConstTest.php
index 42b94874a2..c8ae433b00 100644
--- a/vendor/nikic/php-parser/test/PhpParser/Node/Scalar/MagicConstTest.php
+++ b/vendor/nikic/php-parser/test/PhpParser/Node/Scalar/MagicConstTest.php
@@ -2,9 +2,7 @@
 
 namespace PhpParser\Node\Scalar;
 
-use PHPUnit\Framework\TestCase;
-
-class MagicConstTest extends TestCase
+class MagicConstTest extends \PHPUnit\Framework\TestCase
 {
     /**
      * @dataProvider provideTestGetName
diff --git a/vendor/nikic/php-parser/test/PhpParser/Node/Scalar/StringTest.php b/vendor/nikic/php-parser/test/PhpParser/Node/Scalar/StringTest.php
index d7629f3587..814a7758fc 100644
--- a/vendor/nikic/php-parser/test/PhpParser/Node/Scalar/StringTest.php
+++ b/vendor/nikic/php-parser/test/PhpParser/Node/Scalar/StringTest.php
@@ -2,9 +2,7 @@
 
 namespace PhpParser\Node\Scalar;
 
-use PHPUnit\Framework\TestCase;
-
-class StringTest extends TestCase
+class StringTest extends \PHPUnit\Framework\TestCase
 {
     /**
      * @dataProvider provideTestParseEscapeSequences
diff --git a/vendor/nikic/php-parser/test/PhpParser/Node/Stmt/ClassConstTest.php b/vendor/nikic/php-parser/test/PhpParser/Node/Stmt/ClassConstTest.php
index a5b6ce4608..9a1b4697ca 100644
--- a/vendor/nikic/php-parser/test/PhpParser/Node/Stmt/ClassConstTest.php
+++ b/vendor/nikic/php-parser/test/PhpParser/Node/Stmt/ClassConstTest.php
@@ -2,9 +2,7 @@
 
 namespace PhpParser\Node\Stmt;
 
-use PHPUnit\Framework\TestCase;
-
-class ClassConstTest extends TestCase
+class ClassConstTest extends \PHPUnit\Framework\TestCase
 {
     /**
      * @dataProvider provideModifiers
diff --git a/vendor/nikic/php-parser/test/PhpParser/Node/Stmt/ClassMethodTest.php b/vendor/nikic/php-parser/test/PhpParser/Node/Stmt/ClassMethodTest.php
index 4000495e60..51c5f1c2cf 100644
--- a/vendor/nikic/php-parser/test/PhpParser/Node/Stmt/ClassMethodTest.php
+++ b/vendor/nikic/php-parser/test/PhpParser/Node/Stmt/ClassMethodTest.php
@@ -5,9 +5,8 @@
 use PhpParser\Node\Expr\Variable;
 use PhpParser\Node\Name;
 use PhpParser\Node\Param;
-use PHPUnit\Framework\TestCase;
 
-class ClassMethodTest extends TestCase
+class ClassMethodTest extends \PHPUnit\Framework\TestCase
 {
     /**
      * @dataProvider provideModifiers
diff --git a/vendor/nikic/php-parser/test/PhpParser/Node/Stmt/ClassTest.php b/vendor/nikic/php-parser/test/PhpParser/Node/Stmt/ClassTest.php
index 5d2b5dc03e..9b7c7de1cc 100644
--- a/vendor/nikic/php-parser/test/PhpParser/Node/Stmt/ClassTest.php
+++ b/vendor/nikic/php-parser/test/PhpParser/Node/Stmt/ClassTest.php
@@ -2,9 +2,7 @@
 
 namespace PhpParser\Node\Stmt;
 
-use PHPUnit\Framework\TestCase;
-
-class ClassTest extends TestCase
+class ClassTest extends \PHPUnit\Framework\TestCase
 {
     public function testIsAbstract() {
         $class = new Class_('Foo', ['type' => Class_::MODIFIER_ABSTRACT]);
diff --git a/vendor/nikic/php-parser/test/PhpParser/Node/Stmt/InterfaceTest.php b/vendor/nikic/php-parser/test/PhpParser/Node/Stmt/InterfaceTest.php
index e3e90e47cd..da6e8eb6fe 100644
--- a/vendor/nikic/php-parser/test/PhpParser/Node/Stmt/InterfaceTest.php
+++ b/vendor/nikic/php-parser/test/PhpParser/Node/Stmt/InterfaceTest.php
@@ -3,9 +3,8 @@
 namespace PhpParser\Node\Stmt;
 
 use PhpParser\Node;
-use PHPUnit\Framework\TestCase;
 
-class InterfaceTest extends TestCase
+class InterfaceTest extends \PHPUnit\Framework\TestCase
 {
     public function testGetMethods() {
         $methods = [
diff --git a/vendor/nikic/php-parser/test/PhpParser/Node/Stmt/PropertyTest.php b/vendor/nikic/php-parser/test/PhpParser/Node/Stmt/PropertyTest.php
index 39387f96fd..e5d69fba5d 100644
--- a/vendor/nikic/php-parser/test/PhpParser/Node/Stmt/PropertyTest.php
+++ b/vendor/nikic/php-parser/test/PhpParser/Node/Stmt/PropertyTest.php
@@ -2,9 +2,7 @@
 
 namespace PhpParser\Node\Stmt;
 
-use PHPUnit\Framework\TestCase;
-
-class PropertyTest extends TestCase
+class PropertyTest extends \PHPUnit\Framework\TestCase
 {
     /**
      * @dataProvider provideModifiers
diff --git a/vendor/nikic/php-parser/test/PhpParser/NodeAbstractTest.php b/vendor/nikic/php-parser/test/PhpParser/NodeAbstractTest.php
index c8c785db65..071b8f2a3a 100644
--- a/vendor/nikic/php-parser/test/PhpParser/NodeAbstractTest.php
+++ b/vendor/nikic/php-parser/test/PhpParser/NodeAbstractTest.php
@@ -2,8 +2,6 @@
 
 namespace PhpParser;
 
-use PHPUnit\Framework\TestCase;
-
 class DummyNode extends NodeAbstract
 {
     public $subNode1;
@@ -25,7 +23,7 @@ public function getType() : string {
     }
 }
 
-class NodeAbstractTest extends TestCase
+class NodeAbstractTest extends \PHPUnit\Framework\TestCase
 {
     public function provideNodes() {
         $attributes = [
diff --git a/vendor/nikic/php-parser/test/PhpParser/NodeDumperTest.php b/vendor/nikic/php-parser/test/PhpParser/NodeDumperTest.php
index 64d53117aa..036c3d1ee5 100644
--- a/vendor/nikic/php-parser/test/PhpParser/NodeDumperTest.php
+++ b/vendor/nikic/php-parser/test/PhpParser/NodeDumperTest.php
@@ -2,9 +2,7 @@
 
 namespace PhpParser;
 
-use PHPUnit\Framework\TestCase;
-
-class NodeDumperTest extends TestCase
+class NodeDumperTest extends \PHPUnit\Framework\TestCase
 {
     private function canonicalize($string) {
         return str_replace("\r\n", "\n", $string);
@@ -55,6 +53,7 @@ public function provideTestDump() {
                 value: Foo
             )
             byRef: false
+            unpack: false
         )
     )
 )'
@@ -98,11 +97,9 @@ public function testDumpWithPositions() {
         $this->assertSame($this->canonicalize($expected), $this->canonicalize($dump));
     }
 
-    /**
-     * @expectedException        \InvalidArgumentException
-     * @expectedExceptionMessage Can only dump nodes and arrays.
-     */
     public function testError() {
+        $this->expectException(\InvalidArgumentException::class);
+        $this->expectExceptionMessage('Can only dump nodes and arrays.');
         $dumper = new NodeDumper;
         $dumper->dump(new \stdClass);
     }
diff --git a/vendor/nikic/php-parser/test/PhpParser/NodeFinderTest.php b/vendor/nikic/php-parser/test/PhpParser/NodeFinderTest.php
index daf42729a6..909738a738 100644
--- a/vendor/nikic/php-parser/test/PhpParser/NodeFinderTest.php
+++ b/vendor/nikic/php-parser/test/PhpParser/NodeFinderTest.php
@@ -3,9 +3,8 @@
 namespace PhpParser;
 
 use PhpParser\Node\Expr;
-use PHPUnit\Framework\TestCase;
 
-class NodeFinderTest extends TestCase
+class NodeFinderTest extends \PHPUnit\Framework\TestCase
 {
     private function getStmtsAndVars() {
         $assign = new Expr\Assign(new Expr\Variable('a'), new Expr\BinaryOp\Concat(
diff --git a/vendor/nikic/php-parser/test/PhpParser/NodeTraverserTest.php b/vendor/nikic/php-parser/test/PhpParser/NodeTraverserTest.php
index 61c8e25bb0..2daa9ceaf0 100644
--- a/vendor/nikic/php-parser/test/PhpParser/NodeTraverserTest.php
+++ b/vendor/nikic/php-parser/test/PhpParser/NodeTraverserTest.php
@@ -4,10 +4,8 @@
 
 use PhpParser\Node\Expr;
 use PhpParser\Node\Scalar\String_;
-use PhpParser\NodeVisitor;
-use PHPUnit\Framework\TestCase;
 
-class NodeTraverserTest extends TestCase
+class NodeTraverserTest extends \PHPUnit\Framework\TestCase
 {
     public function testNonModifying() {
         $str1Node = new String_('Foo');
@@ -43,32 +41,32 @@ public function testModifying() {
 
         // replace empty statements with string1 node
         $visitor1->expects($this->at(0))->method('beforeTraverse')->with([])
-                 ->will($this->returnValue([$str1Node]));
+                 ->willReturn([$str1Node]);
         $visitor2->expects($this->at(0))->method('beforeTraverse')->with([$str1Node]);
 
         // replace string1 node with print node
         $visitor1->expects($this->at(1))->method('enterNode')->with($str1Node)
-                 ->will($this->returnValue($printNode));
+                 ->willReturn($printNode);
         $visitor2->expects($this->at(1))->method('enterNode')->with($printNode);
 
         // replace string1 node with string2 node
         $visitor1->expects($this->at(2))->method('enterNode')->with($str1Node)
-                 ->will($this->returnValue($str2Node));
+                 ->willReturn($str2Node);
         $visitor2->expects($this->at(2))->method('enterNode')->with($str2Node);
 
         // replace string2 node with string1 node again
         $visitor1->expects($this->at(3))->method('leaveNode')->with($str2Node)
-                 ->will($this->returnValue($str1Node));
+                 ->willReturn($str1Node);
         $visitor2->expects($this->at(3))->method('leaveNode')->with($str1Node);
 
         // replace print node with string1 node again
         $visitor1->expects($this->at(4))->method('leaveNode')->with($printNode)
-                 ->will($this->returnValue($str1Node));
+                 ->willReturn($str1Node);
         $visitor2->expects($this->at(4))->method('leaveNode')->with($str1Node);
 
         // replace string1 node with empty statements again
         $visitor1->expects($this->at(5))->method('afterTraverse')->with([$str1Node])
-                 ->will($this->returnValue([]));
+                 ->willReturn([]);
         $visitor2->expects($this->at(5))->method('afterTraverse')->with([]);
 
         $traverser = new NodeTraverser;
@@ -87,7 +85,7 @@ public function testRemove() {
 
         // remove the string1 node, leave the string2 node
         $visitor->expects($this->at(2))->method('leaveNode')->with($str1Node)
-                ->will($this->returnValue(NodeTraverser::REMOVE_NODE));
+                ->willReturn(NodeTraverser::REMOVE_NODE);
 
         $traverser = new NodeTraverser;
         $traverser->addVisitor($visitor);
@@ -106,7 +104,7 @@ public function testMerge() {
 
         // replace strMiddle with strR1 and strR2 by merge
         $visitor->expects($this->at(4))->method('leaveNode')->with($strMiddle)
-                ->will($this->returnValue([$strR1, $strR2]));
+                ->willReturn([$strR1, $strR2]);
 
         $traverser = new NodeTraverser;
         $traverser->addVisitor($visitor);
@@ -117,11 +115,9 @@ public function testMerge() {
         );
     }
 
-    /**
-     * @expectedException \LogicException
-     * @expectedExceptionMessage Invalid node structure: Contains nested arrays
-     */
     public function testInvalidDeepArray() {
+        $this->expectException(\LogicException::class);
+        $this->expectExceptionMessage('Invalid node structure: Contains nested arrays');
         $strNode = new String_('Foo');
         $stmts = [[[$strNode]]];
 
@@ -141,7 +137,7 @@ public function testDontTraverseChildren() {
         $visitor2 = $this->getMockBuilder(NodeVisitor::class)->getMock();
 
         $visitor1->expects($this->at(1))->method('enterNode')->with($printNode)
-            ->will($this->returnValue(NodeTraverser::DONT_TRAVERSE_CHILDREN));
+            ->willReturn(NodeTraverser::DONT_TRAVERSE_CHILDREN);
         $visitor2->expects($this->at(1))->method('enterNode')->with($printNode);
 
         $visitor1->expects($this->at(2))->method('leaveNode')->with($printNode);
@@ -152,7 +148,7 @@ public function testDontTraverseChildren() {
 
         $visitor1->expects($this->at(4))->method('enterNode')->with($mulNode);
         $visitor2->expects($this->at(4))->method('enterNode')->with($mulNode)
-            ->will($this->returnValue(NodeTraverser::DONT_TRAVERSE_CHILDREN));
+            ->willReturn(NodeTraverser::DONT_TRAVERSE_CHILDREN);
 
         $visitor1->expects($this->at(5))->method('leaveNode')->with($mulNode);
         $visitor2->expects($this->at(5))->method('leaveNode')->with($mulNode);
@@ -167,6 +163,42 @@ public function testDontTraverseChildren() {
         $this->assertEquals($stmts, $traverser->traverse($stmts));
     }
 
+    public function testDontTraverseCurrentAndChildren() {
+        // print 'str'; -($foo * $foo);
+        $strNode = new String_('str');
+        $printNode = new Expr\Print_($strNode);
+        $varNode = new Expr\Variable('foo');
+        $mulNode = new Expr\BinaryOp\Mul($varNode, $varNode);
+        $divNode = new Expr\BinaryOp\Div($varNode, $varNode);
+        $negNode = new Expr\UnaryMinus($mulNode);
+        $stmts = [$printNode, $negNode];
+
+        $visitor1 = $this->getMockBuilder(NodeVisitor::class)->getMock();
+        $visitor2 = $this->getMockBuilder(NodeVisitor::class)->getMock();
+
+        $visitor1->expects($this->at(1))->method('enterNode')->with($printNode)
+            ->willReturn(NodeTraverser::DONT_TRAVERSE_CURRENT_AND_CHILDREN);
+        $visitor1->expects($this->at(2))->method('leaveNode')->with($printNode);
+
+        $visitor1->expects($this->at(3))->method('enterNode')->with($negNode);
+        $visitor2->expects($this->at(1))->method('enterNode')->with($negNode);
+
+        $visitor1->expects($this->at(4))->method('enterNode')->with($mulNode)
+            ->willReturn(NodeTraverser::DONT_TRAVERSE_CURRENT_AND_CHILDREN);
+        $visitor1->expects($this->at(5))->method('leaveNode')->with($mulNode)->willReturn($divNode);
+
+        $visitor1->expects($this->at(6))->method('leaveNode')->with($negNode);
+        $visitor2->expects($this->at(2))->method('leaveNode')->with($negNode);
+
+        $traverser = new NodeTraverser;
+        $traverser->addVisitor($visitor1);
+        $traverser->addVisitor($visitor2);
+
+        $resultStmts = $traverser->traverse($stmts);
+
+        $this->assertInstanceOf(Expr\BinaryOp\Div::class, $resultStmts[1]->expr);
+    }
+
     public function testStopTraversal() {
         $varNode1 = new Expr\Variable('a');
         $varNode2 = new Expr\Variable('b');
@@ -178,7 +210,7 @@ public function testStopTraversal() {
         // From enterNode() with array parent
         $visitor = $this->getMockBuilder(NodeVisitor::class)->getMock();
         $visitor->expects($this->at(1))->method('enterNode')->with($mulNode)
-            ->will($this->returnValue(NodeTraverser::STOP_TRAVERSAL));
+            ->willReturn(NodeTraverser::STOP_TRAVERSAL);
         $visitor->expects($this->at(2))->method('afterTraverse');
         $traverser = new NodeTraverser;
         $traverser->addVisitor($visitor);
@@ -187,7 +219,7 @@ public function testStopTraversal() {
         // From enterNode with Node parent
         $visitor = $this->getMockBuilder(NodeVisitor::class)->getMock();
         $visitor->expects($this->at(2))->method('enterNode')->with($varNode1)
-            ->will($this->returnValue(NodeTraverser::STOP_TRAVERSAL));
+            ->willReturn(NodeTraverser::STOP_TRAVERSAL);
         $visitor->expects($this->at(3))->method('afterTraverse');
         $traverser = new NodeTraverser;
         $traverser->addVisitor($visitor);
@@ -196,7 +228,7 @@ public function testStopTraversal() {
         // From leaveNode with Node parent
         $visitor = $this->getMockBuilder(NodeVisitor::class)->getMock();
         $visitor->expects($this->at(3))->method('leaveNode')->with($varNode1)
-            ->will($this->returnValue(NodeTraverser::STOP_TRAVERSAL));
+            ->willReturn(NodeTraverser::STOP_TRAVERSAL);
         $visitor->expects($this->at(4))->method('afterTraverse');
         $traverser = new NodeTraverser;
         $traverser->addVisitor($visitor);
@@ -205,7 +237,7 @@ public function testStopTraversal() {
         // From leaveNode with array parent
         $visitor = $this->getMockBuilder(NodeVisitor::class)->getMock();
         $visitor->expects($this->at(6))->method('leaveNode')->with($mulNode)
-            ->will($this->returnValue(NodeTraverser::STOP_TRAVERSAL));
+            ->willReturn(NodeTraverser::STOP_TRAVERSAL);
         $visitor->expects($this->at(7))->method('afterTraverse');
         $traverser = new NodeTraverser;
         $traverser->addVisitor($visitor);
@@ -214,9 +246,9 @@ public function testStopTraversal() {
         // Check that pending array modifications are still carried out
         $visitor = $this->getMockBuilder(NodeVisitor::class)->getMock();
         $visitor->expects($this->at(6))->method('leaveNode')->with($mulNode)
-            ->will($this->returnValue(NodeTraverser::REMOVE_NODE));
+            ->willReturn(NodeTraverser::REMOVE_NODE);
         $visitor->expects($this->at(7))->method('enterNode')->with($printNode)
-            ->will($this->returnValue(NodeTraverser::STOP_TRAVERSAL));
+            ->willReturn(NodeTraverser::STOP_TRAVERSAL);
         $visitor->expects($this->at(8))->method('afterTraverse');
         $traverser = new NodeTraverser;
         $traverser->addVisitor($visitor);
diff --git a/vendor/nikic/php-parser/test/PhpParser/NodeVisitor/FindingVisitorTest.php b/vendor/nikic/php-parser/test/PhpParser/NodeVisitor/FindingVisitorTest.php
index 2e87600b69..27cb6dd480 100644
--- a/vendor/nikic/php-parser/test/PhpParser/NodeVisitor/FindingVisitorTest.php
+++ b/vendor/nikic/php-parser/test/PhpParser/NodeVisitor/FindingVisitorTest.php
@@ -5,9 +5,8 @@
 use PhpParser\Node;
 use PhpParser\Node\Expr;
 use PhpParser\NodeTraverser;
-use PHPUnit\Framework\TestCase;
 
-class FindingVisitorTest extends TestCase
+class FindingVisitorTest extends \PHPUnit\Framework\TestCase
 {
     public function testFindVariables() {
         $traverser = new NodeTraverser();
diff --git a/vendor/nikic/php-parser/test/PhpParser/NodeVisitor/FirstFindingVisitorTest.php b/vendor/nikic/php-parser/test/PhpParser/NodeVisitor/FirstFindingVisitorTest.php
index 78bc1c7a07..9ae8932f92 100644
--- a/vendor/nikic/php-parser/test/PhpParser/NodeVisitor/FirstFindingVisitorTest.php
+++ b/vendor/nikic/php-parser/test/PhpParser/NodeVisitor/FirstFindingVisitorTest.php
@@ -5,9 +5,8 @@
 use PhpParser\Node;
 use PhpParser\Node\Expr;
 use PhpParser\NodeTraverser;
-use PHPUnit\Framework\TestCase;
 
-class FirstFindingVisitorTest extends TestCase
+class FirstFindingVisitorTest extends \PHPUnit\Framework\TestCase
 {
     public function testFindFirstVariable() {
         $traverser = new NodeTraverser();
diff --git a/vendor/nikic/php-parser/test/PhpParser/NodeVisitor/NameResolverTest.php b/vendor/nikic/php-parser/test/PhpParser/NodeVisitor/NameResolverTest.php
index 1ffd15aa88..571eaaea39 100644
--- a/vendor/nikic/php-parser/test/PhpParser/NodeVisitor/NameResolverTest.php
+++ b/vendor/nikic/php-parser/test/PhpParser/NodeVisitor/NameResolverTest.php
@@ -7,16 +7,15 @@
 use PhpParser\Node\Expr;
 use PhpParser\Node\Name;
 use PhpParser\Node\Stmt;
-use PHPUnit\Framework\TestCase;
 
-class NameResolverTest extends TestCase
+class NameResolverTest extends \PHPUnit\Framework\TestCase
 {
     private function canonicalize($string) {
         return str_replace("\r\n", "\n", $string);
     }
 
     /**
-     * @covers PhpParser\NodeVisitor\NameResolver
+     * @covers \PhpParser\NodeVisitor\NameResolver
      */
     public function testResolveNames() {
         $code = <<<'EOC'
@@ -95,6 +94,13 @@ public function testResolveNames() {
     C;
     E;
     K;
+
+    class ClassWithTypeProperties
+    {
+        public float $php = 7.4;
+        public ?Foo $person;
+        protected static ?bool $probability;
+    }
 }
 EOC;
         $expectedCode = <<<'EOC'
@@ -163,6 +169,12 @@ public function testResolveNames() {
     \Y\T\B\C;
     \Y\T\D\E;
     \Z\T\K;
+    class ClassWithTypeProperties
+    {
+        public float $php = 7.4;
+        public ?\Baz\Foo $person;
+        protected static ?bool $probability;
+    }
 }
 EOC;
 
@@ -181,7 +193,7 @@ public function testResolveNames() {
     }
 
     /**
-     * @covers PhpParser\NodeVisitor\NameResolver
+     * @covers \PhpParser\NodeVisitor\NameResolver
      */
     public function testResolveLocations() {
         $code = <<<'EOC'
@@ -200,8 +212,8 @@ interface A extends C, D {
     public function a(A $a) : A;
 }
 
-function fn(A $a) : A {}
-function fn2(array $a) : array {}
+function f(A $a) : A {}
+function f2(array $a) : array {}
 function(A $a) : A {};
 
 function fn3(?A $a) : ?A {}
@@ -237,10 +249,10 @@ interface A extends \NS\C, \NS\D
 {
     public function a(\NS\A $a) : \NS\A;
 }
-function fn(\NS\A $a) : \NS\A
+function f(\NS\A $a) : \NS\A
 {
 }
-function fn2(array $a) : array
+function f2(array $a) : array
 {
 }
 function (\NS\A $a) : \NS\A {
diff --git a/vendor/nikic/php-parser/test/PhpParser/Parser/MultipleTest.php b/vendor/nikic/php-parser/test/PhpParser/Parser/MultipleTest.php
index f7decb76c0..f89e7bf628 100644
--- a/vendor/nikic/php-parser/test/PhpParser/Parser/MultipleTest.php
+++ b/vendor/nikic/php-parser/test/PhpParser/Parser/MultipleTest.php
@@ -9,8 +9,6 @@
 use PhpParser\Node\Stmt;
 use PhpParser\ParserTest;
 
-require_once __DIR__ . '/../ParserTest.php';
-
 class MultipleTest extends ParserTest
 {
     // This provider is for the generic parser tests, just pick an arbitrary order here
@@ -84,11 +82,11 @@ public function testThrownError() {
 
         $parserA = $this->getMockBuilder(\PhpParser\Parser::class)->getMock();
         $parserA->expects($this->at(0))
-            ->method('parse')->will($this->throwException(new Error('FAIL A')));
+            ->method('parse')->willThrowException(new Error('FAIL A'));
 
         $parserB = $this->getMockBuilder(\PhpParser\Parser::class)->getMock();
         $parserB->expects($this->at(0))
-            ->method('parse')->will($this->throwException(new Error('FAIL B')));
+            ->method('parse')->willThrowException(new Error('FAIL B'));
 
         $parser = new Multiple([$parserA, $parserB]);
         $parser->parse('dummy');
diff --git a/vendor/nikic/php-parser/test/PhpParser/Parser/Php5Test.php b/vendor/nikic/php-parser/test/PhpParser/Parser/Php5Test.php
index bb36a25179..4386b5129a 100644
--- a/vendor/nikic/php-parser/test/PhpParser/Parser/Php5Test.php
+++ b/vendor/nikic/php-parser/test/PhpParser/Parser/Php5Test.php
@@ -5,8 +5,6 @@
 use PhpParser\Lexer;
 use PhpParser\ParserTest;
 
-require_once __DIR__ . '/../ParserTest.php';
-
 class Php5Test extends ParserTest
 {
     protected function getParser(Lexer $lexer) {
diff --git a/vendor/nikic/php-parser/test/PhpParser/Parser/Php7Test.php b/vendor/nikic/php-parser/test/PhpParser/Parser/Php7Test.php
index e2e4b3a272..22a4c5190c 100644
--- a/vendor/nikic/php-parser/test/PhpParser/Parser/Php7Test.php
+++ b/vendor/nikic/php-parser/test/PhpParser/Parser/Php7Test.php
@@ -5,8 +5,6 @@
 use PhpParser\Lexer;
 use PhpParser\ParserTest;
 
-require_once __DIR__ . '/../ParserTest.php';
-
 class Php7Test extends ParserTest
 {
     protected function getParser(Lexer $lexer) {
diff --git a/vendor/nikic/php-parser/test/PhpParser/ParserFactoryTest.php b/vendor/nikic/php-parser/test/PhpParser/ParserFactoryTest.php
index 2c3ea2b70e..d50981f2a1 100644
--- a/vendor/nikic/php-parser/test/PhpParser/ParserFactoryTest.php
+++ b/vendor/nikic/php-parser/test/PhpParser/ParserFactoryTest.php
@@ -4,9 +4,8 @@
 
 /* This test is very weak, because PHPUnit's assertEquals assertion is way too slow dealing with the
  * large objects involved here. So we just do some basic instanceof tests instead. */
-use PHPUnit\Framework\TestCase;
 
-class ParserFactoryTest extends TestCase
+class ParserFactoryTest extends \PHPUnit\Framework\TestCase
 {
     /** @dataProvider provideTestCreate */
     public function testCreate($kind, $lexer, $expected) {
diff --git a/vendor/nikic/php-parser/test/PhpParser/ParserTest.php b/vendor/nikic/php-parser/test/PhpParser/ParserTest.php
index 9c4412dc19..0f7f1b79f2 100644
--- a/vendor/nikic/php-parser/test/PhpParser/ParserTest.php
+++ b/vendor/nikic/php-parser/test/PhpParser/ParserTest.php
@@ -6,36 +6,29 @@
 use PhpParser\Node\Scalar;
 use PhpParser\Node\Scalar\String_;
 use PhpParser\Node\Stmt;
-use PHPUnit\Framework\TestCase;
 
-abstract class ParserTest extends TestCase
+abstract class ParserTest extends \PHPUnit\Framework\TestCase
 {
     /** @returns Parser */
     abstract protected function getParser(Lexer $lexer);
 
-    /**
-     * @expectedException \PhpParser\Error
-     * @expectedExceptionMessage Syntax error, unexpected EOF on line 1
-     */
     public function testParserThrowsSyntaxError() {
+        $this->expectException(Error::class);
+        $this->expectExceptionMessage('Syntax error, unexpected EOF on line 1');
         $parser = $this->getParser(new Lexer());
         $parser->parse('<?php foo');
     }
 
-    /**
-     * @expectedException \PhpParser\Error
-     * @expectedExceptionMessage Cannot use foo as self because 'self' is a special class name on line 1
-     */
     public function testParserThrowsSpecialError() {
+        $this->expectException(Error::class);
+        $this->expectExceptionMessage('Cannot use foo as self because \'self\' is a special class name on line 1');
         $parser = $this->getParser(new Lexer());
         $parser->parse('<?php use foo as self;');
     }
 
-    /**
-     * @expectedException \PhpParser\Error
-     * @expectedExceptionMessage Unterminated comment on line 1
-     */
     public function testParserThrowsLexerError() {
+        $this->expectException(Error::class);
+        $this->expectExceptionMessage('Unterminated comment on line 1');
         $parser = $this->getParser(new Lexer());
         $parser->parse('<?php /*');
     }
@@ -109,11 +102,9 @@ function test($a) {
         ], $var->getAttributes());
     }
 
-    /**
-     * @expectedException \RangeException
-     * @expectedExceptionMessage The lexer returned an invalid token (id=999, value=foobar)
-     */
     public function testInvalidToken() {
+        $this->expectException(\RangeException::class);
+        $this->expectExceptionMessage('The lexer returned an invalid token (id=999, value=foobar)');
         $lexer = new InvalidTokenLexer;
         $parser = $this->getParser($lexer);
         $parser->parse('dummy');
@@ -123,7 +114,7 @@ public function testInvalidToken() {
      * @dataProvider provideTestExtraAttributes
      */
     public function testExtraAttributes($code, $expectedAttributes) {
-        $parser = $this->getParser(new Lexer);
+        $parser = $this->getParser(new Lexer\Emulative);
         $stmts = $parser->parse("<?php $code;");
         $node = $stmts[0] instanceof Stmt\Expression ? $stmts[0]->expr : $stmts[0];
         $attributes = $node->getAttributes();
@@ -152,17 +143,20 @@ public function provideTestExtraAttributes() {
             ['"foo$bar"', ['kind' => String_::KIND_DOUBLE_QUOTED]],
             ['b"foo$bar"', ['kind' => String_::KIND_DOUBLE_QUOTED]],
             ['B"foo$bar"', ['kind' => String_::KIND_DOUBLE_QUOTED]],
-            ["<<<'STR'\nSTR\n", ['kind' => String_::KIND_NOWDOC, 'docLabel' => 'STR']],
-            ["<<<STR\nSTR\n", ['kind' => String_::KIND_HEREDOC, 'docLabel' => 'STR']],
-            ["<<<\"STR\"\nSTR\n", ['kind' => String_::KIND_HEREDOC, 'docLabel' => 'STR']],
-            ["b<<<'STR'\nSTR\n", ['kind' => String_::KIND_NOWDOC, 'docLabel' => 'STR']],
-            ["B<<<'STR'\nSTR\n", ['kind' => String_::KIND_NOWDOC, 'docLabel' => 'STR']],
-            ["<<< \t 'STR'\nSTR\n", ['kind' => String_::KIND_NOWDOC, 'docLabel' => 'STR']],
-            ["<<<'\xff'\n\xff\n", ['kind' => String_::KIND_NOWDOC, 'docLabel' => "\xff"]],
-            ["<<<\"STR\"\n\$a\nSTR\n", ['kind' => String_::KIND_HEREDOC, 'docLabel' => 'STR']],
-            ["b<<<\"STR\"\n\$a\nSTR\n", ['kind' => String_::KIND_HEREDOC, 'docLabel' => 'STR']],
-            ["B<<<\"STR\"\n\$a\nSTR\n", ['kind' => String_::KIND_HEREDOC, 'docLabel' => 'STR']],
-            ["<<< \t \"STR\"\n\$a\nSTR\n", ['kind' => String_::KIND_HEREDOC, 'docLabel' => 'STR']],
+            ["<<<'STR'\nSTR\n", ['kind' => String_::KIND_NOWDOC, 'docLabel' => 'STR', 'docIndentation' => '']],
+            ["<<<STR\nSTR\n", ['kind' => String_::KIND_HEREDOC, 'docLabel' => 'STR', 'docIndentation' => '']],
+            ["<<<\"STR\"\nSTR\n", ['kind' => String_::KIND_HEREDOC, 'docLabel' => 'STR', 'docIndentation' => '']],
+            ["b<<<'STR'\nSTR\n", ['kind' => String_::KIND_NOWDOC, 'docLabel' => 'STR', 'docIndentation' => '']],
+            ["B<<<'STR'\nSTR\n", ['kind' => String_::KIND_NOWDOC, 'docLabel' => 'STR', 'docIndentation' => '']],
+            ["<<< \t 'STR'\nSTR\n", ['kind' => String_::KIND_NOWDOC, 'docLabel' => 'STR', 'docIndentation' => '']],
+            ["<<<'\xff'\n\xff\n", ['kind' => String_::KIND_NOWDOC, 'docLabel' => "\xff", 'docIndentation' => '']],
+            ["<<<\"STR\"\n\$a\nSTR\n", ['kind' => String_::KIND_HEREDOC, 'docLabel' => 'STR', 'docIndentation' => '']],
+            ["b<<<\"STR\"\n\$a\nSTR\n", ['kind' => String_::KIND_HEREDOC, 'docLabel' => 'STR', 'docIndentation' => '']],
+            ["B<<<\"STR\"\n\$a\nSTR\n", ['kind' => String_::KIND_HEREDOC, 'docLabel' => 'STR', 'docIndentation' => '']],
+            ["<<< \t \"STR\"\n\$a\nSTR\n", ['kind' => String_::KIND_HEREDOC, 'docLabel' => 'STR', 'docIndentation' => '']],
+            ["<<<STR\n    STR\n", ['kind' => String_::KIND_HEREDOC, 'docLabel' => 'STR', 'docIndentation' => '    ']],
+            ["<<<STR\n\tSTR\n", ['kind' => String_::KIND_HEREDOC, 'docLabel' => 'STR', 'docIndentation' => "\t"]],
+            ["<<<'STR'\n    Foo\n  STR\n", ['kind' => String_::KIND_NOWDOC, 'docLabel' => 'STR', 'docIndentation' => '  ']],
             ["die", ['kind' => Expr\Exit_::KIND_DIE]],
             ["die('done')", ['kind' => Expr\Exit_::KIND_DIE]],
             ["exit", ['kind' => Expr\Exit_::KIND_EXIT]],
@@ -172,6 +166,10 @@ public function provideTestExtraAttributes() {
             ["namespace Foo;", ['kind' => Stmt\Namespace_::KIND_SEMICOLON]],
             ["namespace Foo {}", ['kind' => Stmt\Namespace_::KIND_BRACED]],
             ["namespace {}", ['kind' => Stmt\Namespace_::KIND_BRACED]],
+            ["(float) 5.0", ['kind' => Expr\Cast\Double::KIND_FLOAT]],
+            ["(double) 5.0", ['kind' => Expr\Cast\Double::KIND_DOUBLE]],
+            ["(real) 5.0", ['kind' => Expr\Cast\Double::KIND_REAL]],
+            [" (  REAL )  5.0", ['kind' => Expr\Cast\Double::KIND_REAL]],
         ];
     }
 }
diff --git a/vendor/nikic/php-parser/test/PhpParser/PrettyPrinterTest.php b/vendor/nikic/php-parser/test/PhpParser/PrettyPrinterTest.php
index b155571943..e5b8a1aeae 100644
--- a/vendor/nikic/php-parser/test/PhpParser/PrettyPrinterTest.php
+++ b/vendor/nikic/php-parser/test/PhpParser/PrettyPrinterTest.php
@@ -12,8 +12,6 @@
 use PhpParser\Node\Stmt;
 use PhpParser\PrettyPrinter\Standard;
 
-require_once __DIR__ . '/CodeTestAbstract.php';
-
 class PrettyPrinterTest extends CodeTestAbstract
 {
     protected function doTestPrettyPrintMethod($method, $name, $code, $expected, $modeLine) {
@@ -184,11 +182,9 @@ public function provideTestUnnaturalLiterals() {
         ];
     }
 
-    /**
-     * @expectedException \LogicException
-     * @expectedExceptionMessage Cannot pretty-print AST with Error nodes
-     */
     public function testPrettyPrintWithError() {
+        $this->expectException(\LogicException::class);
+        $this->expectExceptionMessage('Cannot pretty-print AST with Error nodes');
         $stmts = [new Stmt\Expression(
             new Expr\PropertyFetch(new Expr\Variable('a'), new Expr\Error())
         )];
@@ -196,11 +192,9 @@ public function testPrettyPrintWithError() {
         $prettyPrinter->prettyPrint($stmts);
     }
 
-    /**
-     * @expectedException \LogicException
-     * @expectedExceptionMessage Cannot pretty-print AST with Error nodes
-     */
     public function testPrettyPrintWithErrorInClassConstFetch() {
+        $this->expectException(\LogicException::class);
+        $this->expectExceptionMessage('Cannot pretty-print AST with Error nodes');
         $stmts = [new Stmt\Expression(
             new Expr\ClassConstFetch(new Name('Foo'), new Expr\Error())
         )];
@@ -208,11 +202,9 @@ public function testPrettyPrintWithErrorInClassConstFetch() {
         $prettyPrinter->prettyPrint($stmts);
     }
 
-    /**
-     * @expectedException \LogicException
-     * @expectedExceptionMessage Cannot directly print EncapsedStringPart
-     */
     public function testPrettyPrintEncapsedStringPart() {
+        $this->expectException(\LogicException::class);
+        $this->expectExceptionMessage('Cannot directly print EncapsedStringPart');
         $expr = new Node\Scalar\EncapsedStringPart('foo');
         $prettyPrinter = new PrettyPrinter\Standard;
         $prettyPrinter->prettyPrintExpr($expr);
diff --git a/vendor/nikic/php-parser/test/code/formatPreservation/addingPropertyType.test b/vendor/nikic/php-parser/test/code/formatPreservation/addingPropertyType.test
new file mode 100644
index 0000000000..2ef332b27e
--- /dev/null
+++ b/vendor/nikic/php-parser/test/code/formatPreservation/addingPropertyType.test
@@ -0,0 +1,39 @@
+Adding property type
+-----
+<?php
+
+class A
+{
+
+    public $a
+    = 1;
+}
+-----
+$stmts[0]->stmts[0]->type = new Node\Identifier('string');
+-----
+<?php
+
+class A
+{
+
+    public string $a
+    = 1;
+}
+-----
+<?php
+
+class A
+{
+    public
+        $b;
+}
+-----
+$stmts[0]->stmts[0]->type = new Node\Identifier('int');
+-----
+<?php
+
+class A
+{
+    public
+        int $b;
+}
diff --git a/vendor/nikic/php-parser/test/code/formatPreservation/anonClasses.test b/vendor/nikic/php-parser/test/code/formatPreservation/anonClasses.test
index 7551059f75..b7896f22fb 100644
--- a/vendor/nikic/php-parser/test/code/formatPreservation/anonClasses.test
+++ b/vendor/nikic/php-parser/test/code/formatPreservation/anonClasses.test
@@ -13,4 +13,16 @@ $new->args[] = new Expr\Variable('y');
 <?php
 new class
 ($x, $y)
-{ };
\ No newline at end of file
+{ };
+-----
+<?php
+new class
+{};
+-----
+// Ignore name assigned to anon class
+$new = $stmts[0]->expr;
+$new->class->name = new Node\Identifier('Anon1');
+-----
+<?php
+new class
+{};
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/formatPreservation/array_spread.test b/vendor/nikic/php-parser/test/code/formatPreservation/array_spread.test
new file mode 100644
index 0000000000..ce83e1651a
--- /dev/null
+++ b/vendor/nikic/php-parser/test/code/formatPreservation/array_spread.test
@@ -0,0 +1,29 @@
+Array spread
+-----
+<?php
+$items = [
+...$value
+];
+-----
+$array = $stmts[0]->expr->expr;
+$array->items[] = new Expr\ArrayItem(new Expr\Variable('b'));
+-----
+<?php
+$items = [
+...$value, $b
+];
+-----
+<?php
+$items =
+[
+... $value
+];
+-----
+$array = $stmts[0]->expr->expr;
+$array->items[] = new Expr\ArrayItem(new Expr\Variable('c'), null, false, [], true);
+-----
+<?php
+$items =
+[
+... $value, ...$c
+];
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/formatPreservation/arrow_function.test b/vendor/nikic/php-parser/test/code/formatPreservation/arrow_function.test
new file mode 100644
index 0000000000..eeff36f7bb
--- /dev/null
+++ b/vendor/nikic/php-parser/test/code/formatPreservation/arrow_function.test
@@ -0,0 +1,97 @@
+Arrow function
+-----
+<?php
+fn($a)
+=>
+$a;
+-----
+$stmts[0]->expr->expr = new Expr\Variable('b');
+-----
+<?php
+fn($a)
+=>
+$b;
+-----
+<?php
+fn(
+$a
+) => $a;
+-----
+$stmts[0]->expr->params[] = new Node\Param(new Expr\Variable('b'));
+-----
+<?php
+fn(
+$a, $b
+) => $a;
+-----
+<?php
+fn(
+$a
+)
+=>
+$a;
+-----
+// TODO: Format preserving currently not supported
+$stmts[0]->expr->params = [];
+-----
+<?php
+fn() => $a;
+-----
+<?php
+fn($a)
+: int
+=> $a;
+-----
+$stmts[0]->expr->returnType = new Node\Identifier('bool');
+-----
+<?php
+fn($a)
+: bool
+=> $a;
+-----
+<?php
+fn($a)
+: int
+=> $a;
+-----
+$stmts[0]->expr->returnType = null;
+-----
+<?php
+fn($a)
+=> $a;
+-----
+<?php
+fn($a)
+: int
+=> $a;
+
+static fn($a)
+: int
+=> $a;
+-----
+// TODO: Format preserving currently not supported
+$stmts[0]->expr->static = true;
+$stmts[1]->expr->static = false;
+-----
+<?php
+static fn($a): int => $a;
+
+fn($a): int => $a;
+-----
+<?php
+fn($a)
+: int
+=> $a;
+
+fn&($a)
+: int
+=> $a;
+-----
+// TODO: Format preserving currently not supported
+$stmts[0]->expr->byRef = true;
+$stmts[1]->expr->byRef = false;
+-----
+<?php
+fn&($a): int => $a;
+
+fn($a): int => $a;
diff --git a/vendor/nikic/php-parser/test/code/formatPreservation/emptyListInsertion.test b/vendor/nikic/php-parser/test/code/formatPreservation/emptyListInsertion.test
new file mode 100644
index 0000000000..ad3137bf68
--- /dev/null
+++ b/vendor/nikic/php-parser/test/code/formatPreservation/emptyListInsertion.test
@@ -0,0 +1,110 @@
+Inserting into an empty list
+-----
+<?php
+class
+Test {}
+
+interface
+Test {}
+-----
+$stmts[0]->implements[] = new Node\Name('Iface');
+$stmts[0]->implements[] = new Node\Name('Iface2');
+$stmts[1]->extends[] = new Node\Name('Iface');
+$stmts[1]->extends[] = new Node\Name('Iface2');
+-----
+<?php
+class
+Test implements Iface, Iface2 {}
+
+interface
+Test extends Iface, Iface2 {}
+-----
+<?php
+function test
+() {}
+
+class Test {
+    public function
+    test
+    () {}
+}
+
+function
+() {};
+
+fn()
+=> 42;
+-----
+$stmts[0]->params[] = new Node\Param(new Node\Expr\Variable('a'));
+$stmts[0]->params[] = new Node\Param(new Node\Expr\Variable('b'));
+$stmts[1]->stmts[0]->params[] = new Node\Param(new Node\Expr\Variable('a'));
+$stmts[1]->stmts[0]->params[] = new Node\Param(new Node\Expr\Variable('b'));
+$stmts[2]->expr->params[] = new Node\Param(new Node\Expr\Variable('a'));
+$stmts[2]->expr->params[] = new Node\Param(new Node\Expr\Variable('b'));
+$stmts[2]->expr->uses[] = new Node\Expr\Variable('c');
+$stmts[2]->expr->uses[] = new Node\Expr\Variable('d');
+$stmts[3]->expr->params[] = new Node\Param(new Node\Expr\Variable('a'));
+$stmts[3]->expr->params[] = new Node\Param(new Node\Expr\Variable('b'));
+-----
+<?php
+function test
+($a, $b) {}
+
+class Test {
+    public function
+    test
+    ($a, $b) {}
+}
+
+function
+($a, $b) use($c, $d) {};
+
+fn($a, $b)
+=> 42;
+-----
+<?php
+foo
+();
+
+$foo->
+bar();
+
+Foo
+::bar ();
+
+new
+Foo
+();
+
+new class
+()
+extends Foo {};
+-----
+$stmts[0]->expr->args[] = new Node\Expr\Variable('a');
+$stmts[0]->expr->args[] = new Node\Expr\Variable('b');
+$stmts[1]->expr->args[] = new Node\Expr\Variable('a');
+$stmts[1]->expr->args[] = new Node\Expr\Variable('b');
+$stmts[2]->expr->args[] = new Node\Expr\Variable('a');
+$stmts[2]->expr->args[] = new Node\Expr\Variable('b');
+$stmts[3]->expr->args[] = new Node\Expr\Variable('a');
+$stmts[3]->expr->args[] = new Node\Expr\Variable('b');
+$stmts[4]->expr->args[] = new Node\Expr\Variable('a');
+$stmts[4]->expr->args[] = new Node\Expr\Variable('b');
+-----
+<?php
+foo
+($a, $b);
+
+$foo->
+bar($a, $b);
+
+Foo
+::bar ($a, $b);
+
+new
+Foo
+($a, $b);
+
+new class
+($a, $b)
+extends Foo {};
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/formatPreservation/listInsertion.test b/vendor/nikic/php-parser/test/code/formatPreservation/listInsertion.test
index b23bfd5813..9211958d7d 100644
--- a/vendor/nikic/php-parser/test/code/formatPreservation/listInsertion.test
+++ b/vendor/nikic/php-parser/test/code/formatPreservation/listInsertion.test
@@ -73,13 +73,10 @@ function test($param0, Foo     $param1) {}
 function test() {}
 -----
 $stmts[0]->params[] = new Node\Param(new Expr\Variable('param0'));
-/* Insertion into empty list not handled yet */
 -----
 <?php
 
-function test($param0)
-{
-}
+function test($param0) {}
 -----
 <?php
 
diff --git a/vendor/nikic/php-parser/test/code/formatPreservation/removingPropertyType.test b/vendor/nikic/php-parser/test/code/formatPreservation/removingPropertyType.test
new file mode 100644
index 0000000000..37b174c10d
--- /dev/null
+++ b/vendor/nikic/php-parser/test/code/formatPreservation/removingPropertyType.test
@@ -0,0 +1,22 @@
+Removing property type
+-----
+<?php
+
+class B
+{
+
+    public
+    ?float
+    $b;
+}
+-----
+$stmts[0]->stmts[0]->type = null;
+-----
+<?php
+
+class B
+{
+
+    public
+    $b;
+}
diff --git a/vendor/nikic/php-parser/test/code/parser/commentAtEndOfClass.test b/vendor/nikic/php-parser/test/code/parser/commentAtEndOfClass.test
index 389df2bea9..8096b73bd7 100644
--- a/vendor/nikic/php-parser/test/code/parser/commentAtEndOfClass.test
+++ b/vendor/nikic/php-parser/test/code/parser/commentAtEndOfClass.test
@@ -18,6 +18,7 @@ array(
         stmts: array(
             0: Stmt_Property(
                 flags: MODIFIER_PROTECTED (2)
+                type: null
                 props: array(
                     0: Stmt_PropertyProperty(
                         name: VarLikeIdentifier(
diff --git a/vendor/nikic/php-parser/test/code/parser/errorHandling/recovery.test b/vendor/nikic/php-parser/test/code/parser/errorHandling/recovery.test
index 67c0ffeeb3..a9fd49d0d6 100644
--- a/vendor/nikic/php-parser/test/code/parser/errorHandling/recovery.test
+++ b/vendor/nikic/php-parser/test/code/parser/errorHandling/recovery.test
@@ -756,6 +756,7 @@ array(
             )
             3: Stmt_Property(
                 flags: MODIFIER_PUBLIC (1)
+                type: null
                 props: array(
                     0: Stmt_PropertyProperty(
                         name: VarLikeIdentifier(
@@ -975,6 +976,7 @@ array(
         stmts: array(
             0: Stmt_Property(
                 flags: MODIFIER_PUBLIC (1)
+                type: null
                 props: array(
                     0: Stmt_PropertyProperty(
                         name: VarLikeIdentifier(
@@ -1302,6 +1304,7 @@ array(
                             )
                         )
                         byRef: false
+                        unpack: false
                     )
                     1: Expr_ArrayItem(
                         key: null
@@ -1316,6 +1319,7 @@ array(
                             )
                         )
                         byRef: false
+                        unpack: false
                     )
                 )
             )
@@ -1334,6 +1338,7 @@ array(
                             name: value
                         )
                         byRef: false
+                        unpack: false
                     )
                     1: Expr_ArrayItem(
                         key: null
@@ -1341,6 +1346,7 @@ array(
                             name: oopsAnotherValue
                         )
                         byRef: false
+                        unpack: false
                     )
                 )
             )
@@ -1361,6 +1367,7 @@ array(
                             name: value
                         )
                         byRef: false
+                        unpack: false
                     )
                     1: Expr_ArrayItem(
                         key: null
@@ -1368,9 +1375,43 @@ array(
                             name: oopsAnotherValue
                         )
                         byRef: false
+                        unpack: false
                     )
                 )
             )
         )
     )
-)
\ No newline at end of file
+)
+-----
+<?php
+function foo() :
+{
+    return $a;
+}
+-----
+!!php7
+Syntax error, unexpected '{' from 3:1 to 3:1
+array(
+    0: Stmt_Function(
+        byRef: false
+        name: Identifier(
+            name: foo
+        )
+        params: array(
+        )
+        returnType: null
+        stmts: array(
+            0: Stmt_Return(
+                expr: Expr_Variable(
+                    name: a
+                )
+            )
+        )
+    )
+)
+-----
+<?php
+$a = ["a "thing"];
+-----
+!!php7
+Syntax error, unexpected T_STRING, expecting ',' or ')' or ']' from 2:11 to 2:15
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/expr/arrayDef.test b/vendor/nikic/php-parser/test/code/parser/expr/arrayDef.test
index 510a93f8ae..0339a56761 100644
--- a/vendor/nikic/php-parser/test/code/parser/expr/arrayDef.test
+++ b/vendor/nikic/php-parser/test/code/parser/expr/arrayDef.test
@@ -29,6 +29,7 @@ array(
                         value: a
                     )
                     byRef: false
+                    unpack: false
                 )
             )
         )
@@ -42,6 +43,7 @@ array(
                         value: a
                     )
                     byRef: false
+                    unpack: false
                 )
             )
         )
@@ -55,6 +57,7 @@ array(
                         value: a
                     )
                     byRef: false
+                    unpack: false
                 )
                 1: Expr_ArrayItem(
                     key: null
@@ -62,6 +65,7 @@ array(
                         value: b
                     )
                     byRef: false
+                    unpack: false
                 )
             )
         )
@@ -75,6 +79,7 @@ array(
                         value: a
                     )
                     byRef: false
+                    unpack: false
                 )
                 1: Expr_ArrayItem(
                     key: null
@@ -82,6 +87,7 @@ array(
                         name: b
                     )
                     byRef: true
+                    unpack: false
                 )
                 2: Expr_ArrayItem(
                     key: Scalar_String(
@@ -91,6 +97,7 @@ array(
                         value: d
                     )
                     byRef: false
+                    unpack: false
                 )
                 3: Expr_ArrayItem(
                     key: Scalar_String(
@@ -100,6 +107,7 @@ array(
                         name: f
                     )
                     byRef: true
+                    unpack: false
                 )
             )
         )
@@ -125,6 +133,7 @@ array(
                         value: 1
                     )
                     byRef: false
+                    unpack: false
                 )
                 1: Expr_ArrayItem(
                     key: null
@@ -132,6 +141,7 @@ array(
                         value: 2
                     )
                     byRef: false
+                    unpack: false
                 )
                 2: Expr_ArrayItem(
                     key: null
@@ -139,6 +149,7 @@ array(
                         value: 3
                     )
                     byRef: false
+                    unpack: false
                 )
             )
         )
@@ -154,6 +165,7 @@ array(
                         value: b
                     )
                     byRef: false
+                    unpack: false
                 )
             )
         )
diff --git a/vendor/nikic/php-parser/test/code/parser/expr/arrayDestructuring.test b/vendor/nikic/php-parser/test/code/parser/expr/arrayDestructuring.test
index 7865e6ffb0..cfec0d13b1 100644
--- a/vendor/nikic/php-parser/test/code/parser/expr/arrayDestructuring.test
+++ b/vendor/nikic/php-parser/test/code/parser/expr/arrayDestructuring.test
@@ -19,6 +19,7 @@ array(
                             name: a
                         )
                         byRef: false
+                        unpack: false
                     )
                     1: Expr_ArrayItem(
                         key: null
@@ -26,6 +27,7 @@ array(
                             name: b
                         )
                         byRef: false
+                        unpack: false
                     )
                 )
             )
@@ -37,6 +39,7 @@ array(
                             name: c
                         )
                         byRef: false
+                        unpack: false
                     )
                     1: Expr_ArrayItem(
                         key: null
@@ -44,6 +47,7 @@ array(
                             name: d
                         )
                         byRef: false
+                        unpack: false
                     )
                 )
             )
@@ -60,6 +64,7 @@ array(
                             name: a
                         )
                         byRef: false
+                        unpack: false
                     )
                     2: null
                     3: null
@@ -69,6 +74,7 @@ array(
                             name: b
                         )
                         byRef: false
+                        unpack: false
                     )
                     5: null
                 )
@@ -97,14 +103,17 @@ array(
                                                     name: a
                                                 )
                                                 byRef: false
+                                                unpack: false
                                             )
                                         )
                                     )
                                     byRef: false
+                                    unpack: false
                                 )
                             )
                         )
                         byRef: false
+                        unpack: false
                     )
                     2: Expr_ArrayItem(
                         key: null
@@ -112,6 +121,7 @@ array(
                             name: b
                         )
                         byRef: false
+                        unpack: false
                     )
                 )
             )
@@ -132,6 +142,7 @@ array(
                             name: b
                         )
                         byRef: false
+                        unpack: false
                     )
                     1: Expr_ArrayItem(
                         key: Scalar_String(
@@ -141,6 +152,7 @@ array(
                             name: a
                         )
                         byRef: false
+                        unpack: false
                     )
                 )
             )
diff --git a/vendor/nikic/php-parser/test/code/parser/expr/arraySpread.test b/vendor/nikic/php-parser/test/code/parser/expr/arraySpread.test
new file mode 100644
index 0000000000..ed2edce3de
--- /dev/null
+++ b/vendor/nikic/php-parser/test/code/parser/expr/arraySpread.test
@@ -0,0 +1,432 @@
+Spread array
+-----
+<?php
+$array = [1, 2, 3];
+
+function getArr() {
+	return [4, 5];
+}
+
+function arrGen() {
+	for($i = 11; $i < 15; $i++) {
+		yield $i;
+	}
+}
+
+[...[]];
+[...[1, 2, 3]];
+[...$array];
+[...getArr()];
+[...arrGen()];
+[...new ArrayIterator(['a', 'b', 'c'])];
+[0, ...$array, ...getArr(), 6, 7, 8, 9, 10, ...arrGen()];
+[0, ...$array, ...$array, 'end'];
+-----
+array(
+    0: Stmt_Expression(
+        expr: Expr_Assign(
+            var: Expr_Variable(
+                name: array
+            )
+            expr: Expr_Array(
+                items: array(
+                    0: Expr_ArrayItem(
+                        key: null
+                        value: Scalar_LNumber(
+                            value: 1
+                        )
+                        byRef: false
+                        unpack: false
+                    )
+                    1: Expr_ArrayItem(
+                        key: null
+                        value: Scalar_LNumber(
+                            value: 2
+                        )
+                        byRef: false
+                        unpack: false
+                    )
+                    2: Expr_ArrayItem(
+                        key: null
+                        value: Scalar_LNumber(
+                            value: 3
+                        )
+                        byRef: false
+                        unpack: false
+                    )
+                )
+            )
+        )
+    )
+    1: Stmt_Function(
+        byRef: false
+        name: Identifier(
+            name: getArr
+        )
+        params: array(
+        )
+        returnType: null
+        stmts: array(
+            0: Stmt_Return(
+                expr: Expr_Array(
+                    items: array(
+                        0: Expr_ArrayItem(
+                            key: null
+                            value: Scalar_LNumber(
+                                value: 4
+                            )
+                            byRef: false
+                            unpack: false
+                        )
+                        1: Expr_ArrayItem(
+                            key: null
+                            value: Scalar_LNumber(
+                                value: 5
+                            )
+                            byRef: false
+                            unpack: false
+                        )
+                    )
+                )
+            )
+        )
+    )
+    2: Stmt_Function(
+        byRef: false
+        name: Identifier(
+            name: arrGen
+        )
+        params: array(
+        )
+        returnType: null
+        stmts: array(
+            0: Stmt_For(
+                init: array(
+                    0: Expr_Assign(
+                        var: Expr_Variable(
+                            name: i
+                        )
+                        expr: Scalar_LNumber(
+                            value: 11
+                        )
+                    )
+                )
+                cond: array(
+                    0: Expr_BinaryOp_Smaller(
+                        left: Expr_Variable(
+                            name: i
+                        )
+                        right: Scalar_LNumber(
+                            value: 15
+                        )
+                    )
+                )
+                loop: array(
+                    0: Expr_PostInc(
+                        var: Expr_Variable(
+                            name: i
+                        )
+                    )
+                )
+                stmts: array(
+                    0: Stmt_Expression(
+                        expr: Expr_Yield(
+                            key: null
+                            value: Expr_Variable(
+                                name: i
+                            )
+                        )
+                    )
+                )
+            )
+        )
+    )
+    3: Stmt_Expression(
+        expr: Expr_Array(
+            items: array(
+                0: Expr_ArrayItem(
+                    key: null
+                    value: Expr_Array(
+                        items: array(
+                        )
+                    )
+                    byRef: false
+                    unpack: true
+                )
+            )
+        )
+    )
+    4: Stmt_Expression(
+        expr: Expr_Array(
+            items: array(
+                0: Expr_ArrayItem(
+                    key: null
+                    value: Expr_Array(
+                        items: array(
+                            0: Expr_ArrayItem(
+                                key: null
+                                value: Scalar_LNumber(
+                                    value: 1
+                                )
+                                byRef: false
+                                unpack: false
+                            )
+                            1: Expr_ArrayItem(
+                                key: null
+                                value: Scalar_LNumber(
+                                    value: 2
+                                )
+                                byRef: false
+                                unpack: false
+                            )
+                            2: Expr_ArrayItem(
+                                key: null
+                                value: Scalar_LNumber(
+                                    value: 3
+                                )
+                                byRef: false
+                                unpack: false
+                            )
+                        )
+                    )
+                    byRef: false
+                    unpack: true
+                )
+            )
+        )
+    )
+    5: Stmt_Expression(
+        expr: Expr_Array(
+            items: array(
+                0: Expr_ArrayItem(
+                    key: null
+                    value: Expr_Variable(
+                        name: array
+                    )
+                    byRef: false
+                    unpack: true
+                )
+            )
+        )
+    )
+    6: Stmt_Expression(
+        expr: Expr_Array(
+            items: array(
+                0: Expr_ArrayItem(
+                    key: null
+                    value: Expr_FuncCall(
+                        name: Name(
+                            parts: array(
+                                0: getArr
+                            )
+                        )
+                        args: array(
+                        )
+                    )
+                    byRef: false
+                    unpack: true
+                )
+            )
+        )
+    )
+    7: Stmt_Expression(
+        expr: Expr_Array(
+            items: array(
+                0: Expr_ArrayItem(
+                    key: null
+                    value: Expr_FuncCall(
+                        name: Name(
+                            parts: array(
+                                0: arrGen
+                            )
+                        )
+                        args: array(
+                        )
+                    )
+                    byRef: false
+                    unpack: true
+                )
+            )
+        )
+    )
+    8: Stmt_Expression(
+        expr: Expr_Array(
+            items: array(
+                0: Expr_ArrayItem(
+                    key: null
+                    value: Expr_New(
+                        class: Name(
+                            parts: array(
+                                0: ArrayIterator
+                            )
+                        )
+                        args: array(
+                            0: Arg(
+                                value: Expr_Array(
+                                    items: array(
+                                        0: Expr_ArrayItem(
+                                            key: null
+                                            value: Scalar_String(
+                                                value: a
+                                            )
+                                            byRef: false
+                                            unpack: false
+                                        )
+                                        1: Expr_ArrayItem(
+                                            key: null
+                                            value: Scalar_String(
+                                                value: b
+                                            )
+                                            byRef: false
+                                            unpack: false
+                                        )
+                                        2: Expr_ArrayItem(
+                                            key: null
+                                            value: Scalar_String(
+                                                value: c
+                                            )
+                                            byRef: false
+                                            unpack: false
+                                        )
+                                    )
+                                )
+                                byRef: false
+                                unpack: false
+                            )
+                        )
+                    )
+                    byRef: false
+                    unpack: true
+                )
+            )
+        )
+    )
+    9: Stmt_Expression(
+        expr: Expr_Array(
+            items: array(
+                0: Expr_ArrayItem(
+                    key: null
+                    value: Scalar_LNumber(
+                        value: 0
+                    )
+                    byRef: false
+                    unpack: false
+                )
+                1: Expr_ArrayItem(
+                    key: null
+                    value: Expr_Variable(
+                        name: array
+                    )
+                    byRef: false
+                    unpack: true
+                )
+                2: Expr_ArrayItem(
+                    key: null
+                    value: Expr_FuncCall(
+                        name: Name(
+                            parts: array(
+                                0: getArr
+                            )
+                        )
+                        args: array(
+                        )
+                    )
+                    byRef: false
+                    unpack: true
+                )
+                3: Expr_ArrayItem(
+                    key: null
+                    value: Scalar_LNumber(
+                        value: 6
+                    )
+                    byRef: false
+                    unpack: false
+                )
+                4: Expr_ArrayItem(
+                    key: null
+                    value: Scalar_LNumber(
+                        value: 7
+                    )
+                    byRef: false
+                    unpack: false
+                )
+                5: Expr_ArrayItem(
+                    key: null
+                    value: Scalar_LNumber(
+                        value: 8
+                    )
+                    byRef: false
+                    unpack: false
+                )
+                6: Expr_ArrayItem(
+                    key: null
+                    value: Scalar_LNumber(
+                        value: 9
+                    )
+                    byRef: false
+                    unpack: false
+                )
+                7: Expr_ArrayItem(
+                    key: null
+                    value: Scalar_LNumber(
+                        value: 10
+                    )
+                    byRef: false
+                    unpack: false
+                )
+                8: Expr_ArrayItem(
+                    key: null
+                    value: Expr_FuncCall(
+                        name: Name(
+                            parts: array(
+                                0: arrGen
+                            )
+                        )
+                        args: array(
+                        )
+                    )
+                    byRef: false
+                    unpack: true
+                )
+            )
+        )
+    )
+    10: Stmt_Expression(
+        expr: Expr_Array(
+            items: array(
+                0: Expr_ArrayItem(
+                    key: null
+                    value: Scalar_LNumber(
+                        value: 0
+                    )
+                    byRef: false
+                    unpack: false
+                )
+                1: Expr_ArrayItem(
+                    key: null
+                    value: Expr_Variable(
+                        name: array
+                    )
+                    byRef: false
+                    unpack: true
+                )
+                2: Expr_ArrayItem(
+                    key: null
+                    value: Expr_Variable(
+                        name: array
+                    )
+                    byRef: false
+                    unpack: true
+                )
+                3: Expr_ArrayItem(
+                    key: null
+                    value: Scalar_String(
+                        value: end
+                    )
+                    byRef: false
+                    unpack: false
+                )
+            )
+        )
+    )
+)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/expr/arrow_function.test b/vendor/nikic/php-parser/test/code/parser/expr/arrow_function.test
new file mode 100644
index 0000000000..1beec451e4
--- /dev/null
+++ b/vendor/nikic/php-parser/test/code/parser/expr/arrow_function.test
@@ -0,0 +1,145 @@
+Arrow Functions
+-----
+<?php
+fn(bool $a) => $a;
+fn($x = 42) => $x;
+static fn(&$x) => $x;
+fn&($x) => $x;
+fn($x, ...$rest) => $rest;
+fn(): int => $x;
+-----
+!!php7
+array(
+    0: Stmt_Expression(
+        expr: Expr_ArrowFunction(
+            static: false
+            byRef: false
+            params: array(
+                0: Param(
+                    type: Identifier(
+                        name: bool
+                    )
+                    byRef: false
+                    variadic: false
+                    var: Expr_Variable(
+                        name: a
+                    )
+                    default: null
+                )
+            )
+            returnType: null
+            expr: Expr_Variable(
+                name: a
+            )
+        )
+    )
+    1: Stmt_Expression(
+        expr: Expr_ArrowFunction(
+            static: false
+            byRef: false
+            params: array(
+                0: Param(
+                    type: null
+                    byRef: false
+                    variadic: false
+                    var: Expr_Variable(
+                        name: x
+                    )
+                    default: Scalar_LNumber(
+                        value: 42
+                    )
+                )
+            )
+            returnType: null
+            expr: Expr_Variable(
+                name: x
+            )
+        )
+    )
+    2: Stmt_Expression(
+        expr: Expr_ArrowFunction(
+            static: true
+            byRef: false
+            params: array(
+                0: Param(
+                    type: null
+                    byRef: true
+                    variadic: false
+                    var: Expr_Variable(
+                        name: x
+                    )
+                    default: null
+                )
+            )
+            returnType: null
+            expr: Expr_Variable(
+                name: x
+            )
+        )
+    )
+    3: Stmt_Expression(
+        expr: Expr_ArrowFunction(
+            static: false
+            byRef: true
+            params: array(
+                0: Param(
+                    type: null
+                    byRef: false
+                    variadic: false
+                    var: Expr_Variable(
+                        name: x
+                    )
+                    default: null
+                )
+            )
+            returnType: null
+            expr: Expr_Variable(
+                name: x
+            )
+        )
+    )
+    4: Stmt_Expression(
+        expr: Expr_ArrowFunction(
+            static: false
+            byRef: false
+            params: array(
+                0: Param(
+                    type: null
+                    byRef: false
+                    variadic: false
+                    var: Expr_Variable(
+                        name: x
+                    )
+                    default: null
+                )
+                1: Param(
+                    type: null
+                    byRef: false
+                    variadic: true
+                    var: Expr_Variable(
+                        name: rest
+                    )
+                    default: null
+                )
+            )
+            returnType: null
+            expr: Expr_Variable(
+                name: rest
+            )
+        )
+    )
+    5: Stmt_Expression(
+        expr: Expr_ArrowFunction(
+            static: false
+            byRef: false
+            params: array(
+            )
+            returnType: Identifier(
+                name: int
+            )
+            expr: Expr_Variable(
+                name: x
+            )
+        )
+    )
+)
diff --git a/vendor/nikic/php-parser/test/code/parser/expr/assign.test b/vendor/nikic/php-parser/test/code/parser/expr/assign.test
index 33335f89d2..423f48af2f 100644
--- a/vendor/nikic/php-parser/test/code/parser/expr/assign.test
+++ b/vendor/nikic/php-parser/test/code/parser/expr/assign.test
@@ -17,6 +17,7 @@ $a += $b;
 $a <<= $b;
 $a >>= $b;
 $a **= $b;
+$a ??= $b;
 
 // chained assign
 $a = $b *= $c **= $d;
@@ -185,6 +186,16 @@ array(
         )
     )
     13: Stmt_Expression(
+        expr: Expr_AssignOp_Coalesce(
+            var: Expr_Variable(
+                name: a
+            )
+            expr: Expr_Variable(
+                name: b
+            )
+        )
+    )
+    14: Stmt_Expression(
         expr: Expr_Assign(
             var: Expr_Variable(
                 name: a
@@ -213,7 +224,7 @@ array(
             0: // chained assign
         )
     )
-    14: Stmt_Expression(
+    15: Stmt_Expression(
         expr: Expr_AssignRef(
             var: Expr_Variable(
                 name: a
@@ -232,7 +243,7 @@ array(
             0: // by ref assign
         )
     )
-    15: Stmt_Expression(
+    16: Stmt_Expression(
         expr: Expr_Assign(
             var: Expr_List(
                 items: array(
@@ -242,6 +253,7 @@ array(
                             name: a
                         )
                         byRef: false
+                        unpack: false
                     )
                 )
                 comments: array(
@@ -259,7 +271,7 @@ array(
             0: // list() assign
         )
     )
-    16: Stmt_Expression(
+    17: Stmt_Expression(
         expr: Expr_Assign(
             var: Expr_List(
                 items: array(
@@ -269,6 +281,7 @@ array(
                             name: a
                         )
                         byRef: false
+                        unpack: false
                     )
                     1: null
                     2: Expr_ArrayItem(
@@ -277,6 +290,7 @@ array(
                             name: b
                         )
                         byRef: false
+                        unpack: false
                     )
                 )
             )
@@ -285,7 +299,7 @@ array(
             )
         )
     )
-    17: Stmt_Expression(
+    18: Stmt_Expression(
         expr: Expr_Assign(
             var: Expr_List(
                 items: array(
@@ -295,6 +309,7 @@ array(
                             name: a
                         )
                         byRef: false
+                        unpack: false
                     )
                     1: Expr_ArrayItem(
                         key: null
@@ -307,10 +322,12 @@ array(
                                         name: c
                                     )
                                     byRef: false
+                                    unpack: false
                                 )
                             )
                         )
                         byRef: false
+                        unpack: false
                     )
                     2: Expr_ArrayItem(
                         key: null
@@ -318,6 +335,7 @@ array(
                             name: d
                         )
                         byRef: false
+                        unpack: false
                     )
                 )
             )
@@ -326,7 +344,7 @@ array(
             )
         )
     )
-    18: Stmt_Expression(
+    19: Stmt_Expression(
         expr: Expr_PreInc(
             var: Expr_Variable(
                 name: a
@@ -339,21 +357,21 @@ array(
             0: // inc/dec
         )
     )
-    19: Stmt_Expression(
+    20: Stmt_Expression(
         expr: Expr_PostInc(
             var: Expr_Variable(
                 name: a
             )
         )
     )
-    20: Stmt_Expression(
+    21: Stmt_Expression(
         expr: Expr_PreDec(
             var: Expr_Variable(
                 name: a
             )
         )
     )
-    21: Stmt_Expression(
+    22: Stmt_Expression(
         expr: Expr_PostDec(
             var: Expr_Variable(
                 name: a
diff --git a/vendor/nikic/php-parser/test/code/parser/expr/constant_expr.test b/vendor/nikic/php-parser/test/code/parser/expr/constant_expr.test
index d774de71e2..0f9815f94e 100644
--- a/vendor/nikic/php-parser/test/code/parser/expr/constant_expr.test
+++ b/vendor/nikic/php-parser/test/code/parser/expr/constant_expr.test
@@ -544,6 +544,7 @@ array(
                                     value: 1
                                 )
                                 byRef: false
+                                unpack: false
                             )
                             1: Expr_ArrayItem(
                                 key: null
@@ -551,6 +552,7 @@ array(
                                     value: 2
                                 )
                                 byRef: false
+                                unpack: false
                             )
                             2: Expr_ArrayItem(
                                 key: null
@@ -558,6 +560,7 @@ array(
                                     value: 3
                                 )
                                 byRef: false
+                                unpack: false
                             )
                         )
                     )
diff --git a/vendor/nikic/php-parser/test/code/parser/expr/fetchAndCall/constantDeref.test b/vendor/nikic/php-parser/test/code/parser/expr/fetchAndCall/constantDeref.test
index 4d14c09ad9..557532f1b7 100644
--- a/vendor/nikic/php-parser/test/code/parser/expr/fetchAndCall/constantDeref.test
+++ b/vendor/nikic/php-parser/test/code/parser/expr/fetchAndCall/constantDeref.test
@@ -56,6 +56,7 @@ array(
                             value: 1
                         )
                         byRef: false
+                        unpack: false
                     )
                     1: Expr_ArrayItem(
                         key: null
@@ -63,6 +64,7 @@ array(
                             value: 2
                         )
                         byRef: false
+                        unpack: false
                     )
                     2: Expr_ArrayItem(
                         key: null
@@ -70,6 +72,7 @@ array(
                             value: 3
                         )
                         byRef: false
+                        unpack: false
                     )
                 )
             )
@@ -90,6 +93,7 @@ array(
                                     value: 1
                                 )
                                 byRef: false
+                                unpack: false
                             )
                             1: Expr_ArrayItem(
                                 key: null
@@ -97,6 +101,7 @@ array(
                                     value: 2
                                 )
                                 byRef: false
+                                unpack: false
                             )
                             2: Expr_ArrayItem(
                                 key: null
@@ -104,6 +109,7 @@ array(
                                     value: 3
                                 )
                                 byRef: false
+                                unpack: false
                             )
                         )
                     )
@@ -130,6 +136,7 @@ array(
                             value: 1
                         )
                         byRef: false
+                        unpack: false
                     )
                     1: Expr_ArrayItem(
                         key: null
@@ -137,6 +144,7 @@ array(
                             value: 2
                         )
                         byRef: false
+                        unpack: false
                     )
                     2: Expr_ArrayItem(
                         key: null
@@ -144,6 +152,7 @@ array(
                             value: 3
                         )
                         byRef: false
+                        unpack: false
                     )
                 )
             )
@@ -164,6 +173,7 @@ array(
                                     value: 1
                                 )
                                 byRef: false
+                                unpack: false
                             )
                             1: Expr_ArrayItem(
                                 key: null
@@ -171,6 +181,7 @@ array(
                                     value: 2
                                 )
                                 byRef: false
+                                unpack: false
                             )
                             2: Expr_ArrayItem(
                                 key: null
@@ -178,6 +189,7 @@ array(
                                     value: 3
                                 )
                                 byRef: false
+                                unpack: false
                             )
                         )
                     )
diff --git a/vendor/nikic/php-parser/test/code/parser/expr/issetAndEmpty.test b/vendor/nikic/php-parser/test/code/parser/expr/issetAndEmpty.test
index cd074b1a4b..989b3a5547 100644
--- a/vendor/nikic/php-parser/test/code/parser/expr/issetAndEmpty.test
+++ b/vendor/nikic/php-parser/test/code/parser/expr/issetAndEmpty.test
@@ -63,6 +63,7 @@ array(
                             value: 1
                         )
                         byRef: false
+                        unpack: false
                     )
                     1: Expr_ArrayItem(
                         key: null
@@ -70,6 +71,7 @@ array(
                             value: 2
                         )
                         byRef: false
+                        unpack: false
                     )
                     2: Expr_ArrayItem(
                         key: null
@@ -77,6 +79,7 @@ array(
                             value: 3
                         )
                         byRef: false
+                        unpack: false
                     )
                 )
             )
diff --git a/vendor/nikic/php-parser/test/code/parser/expr/listReferences.test b/vendor/nikic/php-parser/test/code/parser/expr/listReferences.test
index fd9b1e87ce..436d45ffa3 100644
--- a/vendor/nikic/php-parser/test/code/parser/expr/listReferences.test
+++ b/vendor/nikic/php-parser/test/code/parser/expr/listReferences.test
@@ -19,6 +19,7 @@ array(
                             name: v
                         )
                         byRef: true
+                        unpack: false
                     )
                 )
             )
@@ -39,6 +40,7 @@ array(
                             name: v
                         )
                         byRef: true
+                        unpack: false
                     )
                 )
             )
@@ -57,6 +59,7 @@ array(
                             name: v
                         )
                         byRef: true
+                        unpack: false
                     )
                 )
             )
@@ -77,6 +80,7 @@ array(
                             name: v
                         )
                         byRef: true
+                        unpack: false
                     )
                 )
             )
diff --git a/vendor/nikic/php-parser/test/code/parser/expr/listWithKeys.test b/vendor/nikic/php-parser/test/code/parser/expr/listWithKeys.test
index d0cfbb5ffb..e2eeedf0d9 100644
--- a/vendor/nikic/php-parser/test/code/parser/expr/listWithKeys.test
+++ b/vendor/nikic/php-parser/test/code/parser/expr/listWithKeys.test
@@ -19,6 +19,7 @@ array(
                             name: b
                         )
                         byRef: false
+                        unpack: false
                     )
                 )
             )
@@ -32,6 +33,7 @@ array(
                             value: b
                         )
                         byRef: false
+                        unpack: false
                     )
                 )
             )
@@ -55,10 +57,12 @@ array(
                                         name: c
                                     )
                                     byRef: false
+                                    unpack: false
                                 )
                             )
                         )
                         byRef: false
+                        unpack: false
                     )
                     1: Expr_ArrayItem(
                         key: Scalar_String(
@@ -68,6 +72,7 @@ array(
                             name: e
                         )
                         byRef: false
+                        unpack: false
                     )
                 )
             )
diff --git a/vendor/nikic/php-parser/test/code/parser/expr/uvs/indirectCall.test b/vendor/nikic/php-parser/test/code/parser/expr/uvs/indirectCall.test
index 2f36cc7af1..39db60c035 100644
--- a/vendor/nikic/php-parser/test/code/parser/expr/uvs/indirectCall.test
+++ b/vendor/nikic/php-parser/test/code/parser/expr/uvs/indirectCall.test
@@ -144,6 +144,7 @@ array(
                                                     value: udef
                                                 )
                                                 byRef: false
+                                                unpack: false
                                             )
                                             1: Expr_ArrayItem(
                                                 key: null
@@ -151,6 +152,7 @@ array(
                                                     value: id
                                                 )
                                                 byRef: false
+                                                unpack: false
                                             )
                                         )
                                     )
@@ -345,6 +347,7 @@ array(
                                             name: obj
                                         )
                                         byRef: false
+                                        unpack: false
                                     )
                                     1: Expr_ArrayItem(
                                         key: null
@@ -352,6 +355,7 @@ array(
                                             value: id
                                         )
                                         byRef: false
+                                        unpack: false
                                     )
                                 )
                             )
diff --git a/vendor/nikic/php-parser/test/code/parser/expr/uvs/isset.test b/vendor/nikic/php-parser/test/code/parser/expr/uvs/isset.test
index 68133a8646..828fd9b1f5 100644
--- a/vendor/nikic/php-parser/test/code/parser/expr/uvs/isset.test
+++ b/vendor/nikic/php-parser/test/code/parser/expr/uvs/isset.test
@@ -21,6 +21,7 @@ array(
                                         value: 0
                                     )
                                     byRef: false
+                                    unpack: false
                                 )
                                 1: Expr_ArrayItem(
                                     key: null
@@ -28,6 +29,7 @@ array(
                                         value: 1
                                     )
                                     byRef: false
+                                    unpack: false
                                 )
                             )
                         )
@@ -57,6 +59,7 @@ array(
                                     value: b
                                 )
                                 byRef: false
+                                unpack: false
                             )
                         )
                     )
diff --git a/vendor/nikic/php-parser/test/code/parser/expr/uvs/misc.test b/vendor/nikic/php-parser/test/code/parser/expr/uvs/misc.test
index 73b515f08c..801eb37c06 100644
--- a/vendor/nikic/php-parser/test/code/parser/expr/uvs/misc.test
+++ b/vendor/nikic/php-parser/test/code/parser/expr/uvs/misc.test
@@ -105,6 +105,7 @@ array(
                                 value: 0
                             )
                             byRef: false
+                            unpack: false
                         )
                         1: Expr_ArrayItem(
                             key: null
@@ -112,6 +113,7 @@ array(
                                 value: 1
                             )
                             byRef: false
+                            unpack: false
                         )
                     )
                 )
diff --git a/vendor/nikic/php-parser/test/code/parser/exprStmtMode.test b/vendor/nikic/php-parser/test/code/parser/exprStmtMode.test
deleted file mode 100644
index 759e9e5455..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/exprStmtMode.test
+++ /dev/null
@@ -1,57 +0,0 @@
-Expression statement mode
------
-<?php
-$a = $b;
-yield $x;
------
-!!exprStmts
-array(
-    0: Stmt_Expression(
-        expr: Expr_Assign(
-            var: Expr_Variable(
-                name: a
-            )
-            expr: Expr_Variable(
-                name: b
-            )
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_Yield(
-            key: null
-            value: Expr_Variable(
-                name: x
-            )
-        )
-    )
-)
------
-<?php
-$a = $b
-$c = $d
------
-!!exprStmts
-Syntax error, unexpected T_VARIABLE from 3:1 to 3:2
-Syntax error, unexpected EOF from 3:8 to 3:8
-array(
-    0: Stmt_Expression(
-        expr: Expr_Assign(
-            var: Expr_Variable(
-                name: a
-            )
-            expr: Expr_Variable(
-                name: b
-            )
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_Assign(
-            var: Expr_Variable(
-                name: c
-            )
-            expr: Expr_Variable(
-                name: d
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/nopPositions.test b/vendor/nikic/php-parser/test/code/parser/nopPositions.test
new file mode 100644
index 0000000000..a981329be3
--- /dev/null
+++ b/vendor/nikic/php-parser/test/code/parser/nopPositions.test
@@ -0,0 +1,13 @@
+Positions for leading nop statement
+-----
+<?php
+/* Comment */
+-----
+!!positions
+array(
+    0: Stmt_Nop[2:14 - 2:13](
+        comments: array(
+            0: /* Comment */
+        )
+    )
+)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/scalar/flexibleDocString.test b/vendor/nikic/php-parser/test/code/parser/scalar/flexibleDocString.test
new file mode 100644
index 0000000000..17d728dd0e
--- /dev/null
+++ b/vendor/nikic/php-parser/test/code/parser/scalar/flexibleDocString.test
@@ -0,0 +1,361 @@
+Flexible heredoc/nowdoc (PHP 7.3)
+-----
+<?php
+
+$ary = [
+    <<<FOO
+Test
+FOO,
+    <<<'BAR'
+    Test
+    BAR,
+];
+
+<<<'END'
+ END;
+
+<<<END
+
+  END;
+
+<<<END
+@@{ " " }@@
+  END;
+
+<<<'END'
+     a
+    b
+
+   c
+
+  d
+ e
+ END;
+
+<<<END
+	    a
+	   b
+	  $test
+	 d
+	e
+	END;
+
+<<<'END'
+
+    a
+
+   b
+
+  c
+
+ d
+
+e
+
+END;
+
+<<<END
+	a\r\n
+\ta\n
+   b\r\n
+  $test\n
+ d\r\n
+e\n
+END;
+
+<<<BAR
+ $one-
+ BAR;
+
+<<<BAR
+ $two -
+ BAR;
+
+<<<BAR
+ $three	-
+ BAR;
+
+<<<BAR
+ $four-$four
+ BAR;
+
+<<<BAR
+ $five-$five-
+ BAR;
+
+<<<BAR
+ $six-$six-$six
+ BAR;
+
+<<<BAR
+ $seven
+ -
+ BAR;
+
+<<<BAR
+ $eight
+  -
+ BAR;
+
+<<<BAR
+$nine
+BAR;
+
+<<<BAR
+ -
+ BAR;
+
+<<<BAR
+  -
+ BAR;
+-----
+array(
+    0: Stmt_Expression(
+        expr: Expr_Assign(
+            var: Expr_Variable(
+                name: ary
+            )
+            expr: Expr_Array(
+                items: array(
+                    0: Expr_ArrayItem(
+                        key: null
+                        value: Scalar_String(
+                            value: Test
+                        )
+                        byRef: false
+                        unpack: false
+                    )
+                    1: Expr_ArrayItem(
+                        key: null
+                        value: Scalar_String(
+                            value: Test
+                        )
+                        byRef: false
+                        unpack: false
+                    )
+                )
+            )
+        )
+    )
+    1: Stmt_Expression(
+        expr: Scalar_String(
+            value:
+        )
+    )
+    2: Stmt_Expression(
+        expr: Scalar_String(
+            value:
+        )
+    )
+    3: Stmt_Expression(
+        expr: Scalar_String(
+            value:
+        )
+    )
+    4: Stmt_Expression(
+        expr: Scalar_String(
+            value:     a
+           b
+
+          c
+
+         d
+        e
+        )
+    )
+    5: Stmt_Expression(
+        expr: Scalar_Encapsed(
+            parts: array(
+                0: Scalar_EncapsedStringPart(
+                    value:     a
+                   b
+
+                )
+                1: Expr_Variable(
+                    name: test
+                )
+                2: Scalar_EncapsedStringPart(
+                    value:
+                 d
+                e
+                )
+            )
+        )
+    )
+    6: Stmt_Expression(
+        expr: Scalar_String(
+            value:
+            a
+
+           b
+
+          c
+
+         d
+
+        e
+
+        )
+    )
+    7: Stmt_Expression(
+        expr: Scalar_Encapsed(
+            parts: array(
+                0: Scalar_EncapsedStringPart(
+                    value: 	a
+
+                @@{ "\t" }@@a
+
+                   b
+
+
+                )
+                1: Expr_Variable(
+                    name: test
+                )
+                2: Scalar_EncapsedStringPart(
+                    value:
+
+                 d
+
+                e
+
+                )
+            )
+        )
+    )
+    8: Stmt_Expression(
+        expr: Scalar_Encapsed(
+            parts: array(
+                0: Expr_Variable(
+                    name: one
+                )
+                1: Scalar_EncapsedStringPart(
+                    value: -
+                )
+            )
+        )
+    )
+    9: Stmt_Expression(
+        expr: Scalar_Encapsed(
+            parts: array(
+                0: Expr_Variable(
+                    name: two
+                )
+                1: Scalar_EncapsedStringPart(
+                    value:  -
+                )
+            )
+        )
+    )
+    10: Stmt_Expression(
+        expr: Scalar_Encapsed(
+            parts: array(
+                0: Expr_Variable(
+                    name: three
+                )
+                1: Scalar_EncapsedStringPart(
+                    value: 	-
+                )
+            )
+        )
+    )
+    11: Stmt_Expression(
+        expr: Scalar_Encapsed(
+            parts: array(
+                0: Expr_Variable(
+                    name: four
+                )
+                1: Scalar_EncapsedStringPart(
+                    value: -
+                )
+                2: Expr_Variable(
+                    name: four
+                )
+            )
+        )
+    )
+    12: Stmt_Expression(
+        expr: Scalar_Encapsed(
+            parts: array(
+                0: Expr_Variable(
+                    name: five
+                )
+                1: Scalar_EncapsedStringPart(
+                    value: -
+                )
+                2: Expr_Variable(
+                    name: five
+                )
+                3: Scalar_EncapsedStringPart(
+                    value: -
+                )
+            )
+        )
+    )
+    13: Stmt_Expression(
+        expr: Scalar_Encapsed(
+            parts: array(
+                0: Expr_Variable(
+                    name: six
+                )
+                1: Scalar_EncapsedStringPart(
+                    value: -
+                )
+                2: Expr_Variable(
+                    name: six
+                )
+                3: Scalar_EncapsedStringPart(
+                    value: -
+                )
+                4: Expr_Variable(
+                    name: six
+                )
+            )
+        )
+    )
+    14: Stmt_Expression(
+        expr: Scalar_Encapsed(
+            parts: array(
+                0: Expr_Variable(
+                    name: seven
+                )
+                1: Scalar_EncapsedStringPart(
+                    value:
+                -
+                )
+            )
+        )
+    )
+    15: Stmt_Expression(
+        expr: Scalar_Encapsed(
+            parts: array(
+                0: Expr_Variable(
+                    name: eight
+                )
+                1: Scalar_EncapsedStringPart(
+                    value:
+                 -
+                )
+            )
+        )
+    )
+    16: Stmt_Expression(
+        expr: Scalar_Encapsed(
+            parts: array(
+                0: Expr_Variable(
+                    name: nine
+                )
+            )
+        )
+    )
+    17: Stmt_Expression(
+        expr: Scalar_String(
+            value: -
+        )
+    )
+    18: Stmt_Expression(
+        expr: Scalar_String(
+            value:  -
+        )
+    )
+)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/scalar/flexibleDocStringErrors.test b/vendor/nikic/php-parser/test/code/parser/scalar/flexibleDocStringErrors.test
new file mode 100644
index 0000000000..25b7484b24
--- /dev/null
+++ b/vendor/nikic/php-parser/test/code/parser/scalar/flexibleDocStringErrors.test
@@ -0,0 +1,117 @@
+Error conditions for flexible doc strings
+-----
+<?php
+
+<<<A
+ @@{ "\t" }@@A;
+
+<<<A
+    FooBar
+ @@{ "\t" }@@A;
+
+echo <<<END
+@@{ "\t" }@@   X
+@@{ "\t\t" }@@END;
+
+echo <<<END
+      a
+     b
+    c
+     END;
+
+<<<END
+\ta
+@@{ "\t" }@@END;
+
+<<<TEST
+  Foo
+$var
+  TEST;
+
+<<<TEST
+$var
+ TEST;
+
+echo <<<END
+ a
+$a
+ END;
+-----
+Invalid indentation - tabs and spaces cannot be mixed from 4:1 to 4:3
+Invalid indentation - tabs and spaces cannot be mixed from 8:1 to 8:3
+Invalid indentation - tabs and spaces cannot be mixed from 10:6 to 12:5
+Invalid body indentation level (expecting an indentation level of at least 5) from 14:6 to 18:8
+Invalid body indentation level (expecting an indentation level of at least 1) from 20:1 to 22:4
+Invalid body indentation level (expecting an indentation level of at least 2) from 25:1 to 26:0
+Invalid body indentation level (expecting an indentation level of at least 1) from 30:1 to 30:4
+Invalid body indentation level (expecting an indentation level of at least 1) from 34:1 to 35:0
+array(
+    0: Stmt_Expression(
+        expr: Scalar_String(
+            value:
+        )
+    )
+    1: Stmt_Expression(
+        expr: Scalar_String(
+            value:     FooBar
+        )
+    )
+    2: Stmt_Echo(
+        exprs: array(
+            0: Scalar_String(
+                value:   X
+            )
+        )
+    )
+    3: Stmt_Echo(
+        exprs: array(
+            0: Scalar_String(
+                value:  a
+            b
+            c
+            )
+        )
+    )
+    4: Stmt_Expression(
+        expr: Scalar_String(
+            value: 	a
+        )
+    )
+    5: Stmt_Expression(
+        expr: Scalar_Encapsed(
+            parts: array(
+                0: Scalar_EncapsedStringPart(
+                    value: Foo
+
+                )
+                1: Expr_Variable(
+                    name: var
+                )
+            )
+        )
+    )
+    6: Stmt_Expression(
+        expr: Scalar_Encapsed(
+            parts: array(
+                0: Expr_Variable(
+                    name: var
+                )
+            )
+        )
+    )
+    7: Stmt_Echo(
+        exprs: array(
+            0: Scalar_Encapsed(
+                parts: array(
+                    0: Scalar_EncapsedStringPart(
+                        value: a
+
+                    )
+                    1: Expr_Variable(
+                        name: a
+                    )
+                )
+            )
+        )
+    )
+)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/semiReserved.test b/vendor/nikic/php-parser/test/code/parser/semiReserved.test
index 7446a875e1..70cf063dfc 100644
--- a/vendor/nikic/php-parser/test/code/parser/semiReserved.test
+++ b/vendor/nikic/php-parser/test/code/parser/semiReserved.test
@@ -112,6 +112,7 @@ array(
             )
             4: Stmt_Property(
                 flags: MODIFIER_PUBLIC (1)
+                type: null
                 props: array(
                     0: Stmt_PropertyProperty(
                         name: VarLikeIdentifier(
@@ -123,6 +124,7 @@ array(
             )
             5: Stmt_Property(
                 flags: MODIFIER_PUBLIC (1)
+                type: null
                 props: array(
                     0: Stmt_PropertyProperty(
                         name: VarLikeIdentifier(
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/class/anonymous.test b/vendor/nikic/php-parser/test/code/parser/stmt/class/anonymous.test
index a676db68ae..9aaaff9382 100644
--- a/vendor/nikic/php-parser/test/code/parser/stmt/class/anonymous.test
+++ b/vendor/nikic/php-parser/test/code/parser/stmt/class/anonymous.test
@@ -89,6 +89,7 @@ array(
                 stmts: array(
                     0: Stmt_Property(
                         flags: MODIFIER_PUBLIC (1)
+                        type: null
                         props: array(
                             0: Stmt_PropertyProperty(
                                 name: VarLikeIdentifier(
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/class/implicitPublic.test b/vendor/nikic/php-parser/test/code/parser/stmt/class/implicitPublic.test
index bd43dce9c3..92737af7ad 100644
--- a/vendor/nikic/php-parser/test/code/parser/stmt/class/implicitPublic.test
+++ b/vendor/nikic/php-parser/test/code/parser/stmt/class/implicitPublic.test
@@ -24,6 +24,7 @@ array(
         stmts: array(
             0: Stmt_Property(
                 flags: 0
+                type: null
                 props: array(
                     0: Stmt_PropertyProperty(
                         name: VarLikeIdentifier(
@@ -35,6 +36,7 @@ array(
             )
             1: Stmt_Property(
                 flags: MODIFIER_STATIC (8)
+                type: null
                 props: array(
                     0: Stmt_PropertyProperty(
                         name: VarLikeIdentifier(
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/class/modifier.test b/vendor/nikic/php-parser/test/code/parser/stmt/class/modifier.test
index cbeb57e115..797ef4e83e 100644
--- a/vendor/nikic/php-parser/test/code/parser/stmt/class/modifier.test
+++ b/vendor/nikic/php-parser/test/code/parser/stmt/class/modifier.test
@@ -15,6 +15,7 @@ array(
         stmts: array(
             0: Stmt_Property(
                 flags: MODIFIER_PUBLIC (1)
+                type: null
                 props: array(
                     0: Stmt_PropertyProperty(
                         name: VarLikeIdentifier(
@@ -43,6 +44,7 @@ array(
         stmts: array(
             0: Stmt_Property(
                 flags: MODIFIER_PUBLIC | MODIFIER_PROTECTED (3)
+                type: null
                 props: array(
                     0: Stmt_PropertyProperty(
                         name: VarLikeIdentifier(
@@ -99,6 +101,7 @@ array(
         stmts: array(
             0: Stmt_Property(
                 flags: MODIFIER_STATIC (8)
+                type: null
                 props: array(
                     0: Stmt_PropertyProperty(
                         name: VarLikeIdentifier(
@@ -207,6 +210,7 @@ array(
         stmts: array(
             0: Stmt_Property(
                 flags: MODIFIER_ABSTRACT (16)
+                type: null
                 props: array(
                     0: Stmt_PropertyProperty(
                         name: VarLikeIdentifier(
@@ -235,6 +239,7 @@ array(
         stmts: array(
             0: Stmt_Property(
                 flags: MODIFIER_FINAL (32)
+                type: null
                 props: array(
                     0: Stmt_PropertyProperty(
                         name: VarLikeIdentifier(
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/class/php4Style.test b/vendor/nikic/php-parser/test/code/parser/stmt/class/php4Style.test
index d6070b889a..8906ef1325 100644
--- a/vendor/nikic/php-parser/test/code/parser/stmt/class/php4Style.test
+++ b/vendor/nikic/php-parser/test/code/parser/stmt/class/php4Style.test
@@ -20,6 +20,7 @@ array(
         stmts: array(
             0: Stmt_Property(
                 flags: 0
+                type: null
                 props: array(
                     0: Stmt_PropertyProperty(
                         name: VarLikeIdentifier(
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/class/propertyTypes.test b/vendor/nikic/php-parser/test/code/parser/stmt/class/propertyTypes.test
new file mode 100644
index 0000000000..55955f3f9b
--- /dev/null
+++ b/vendor/nikic/php-parser/test/code/parser/stmt/class/propertyTypes.test
@@ -0,0 +1,70 @@
+Class declaration
+-----
+<?php
+
+class A {
+    public string $a;
+    protected static D $b;
+    private ?float $c;
+}
+-----
+!!php7
+array(
+    0: Stmt_Class(
+        flags: 0
+        name: Identifier(
+            name: A
+        )
+        extends: null
+        implements: array(
+        )
+        stmts: array(
+            0: Stmt_Property(
+                flags: MODIFIER_PUBLIC (1)
+                type: Identifier(
+                    name: string
+                )
+                props: array(
+                    0: Stmt_PropertyProperty(
+                        name: VarLikeIdentifier(
+                            name: a
+                        )
+                        default: null
+                    )
+                )
+            )
+            1: Stmt_Property(
+                flags: MODIFIER_PROTECTED | MODIFIER_STATIC (10)
+                type: Name(
+                    parts: array(
+                        0: D
+                    )
+                )
+                props: array(
+                    0: Stmt_PropertyProperty(
+                        name: VarLikeIdentifier(
+                            name: b
+                        )
+                        default: null
+                    )
+                )
+            )
+            2: Stmt_Property(
+                flags: MODIFIER_PRIVATE (4)
+                type: NullableType(
+                    type: Identifier(
+                        name: float
+                    )
+                )
+                props: array(
+                    0: Stmt_PropertyProperty(
+                        name: VarLikeIdentifier(
+                            name: c
+                        )
+                        default: null
+                    )
+                )
+            )
+        )
+    )
+)
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/class/simple.test b/vendor/nikic/php-parser/test/code/parser/stmt/class/simple.test
index 9247eec9fa..c0bd53f3c9 100644
--- a/vendor/nikic/php-parser/test/code/parser/stmt/class/simple.test
+++ b/vendor/nikic/php-parser/test/code/parser/stmt/class/simple.test
@@ -63,6 +63,7 @@ array(
             )
             1: Stmt_Property(
                 flags: MODIFIER_PUBLIC (1)
+                type: null
                 props: array(
                     0: Stmt_PropertyProperty(
                         name: VarLikeIdentifier(
@@ -84,6 +85,7 @@ array(
             )
             2: Stmt_Property(
                 flags: MODIFIER_PROTECTED (2)
+                type: null
                 props: array(
                     0: Stmt_PropertyProperty(
                         name: VarLikeIdentifier(
@@ -95,6 +97,7 @@ array(
             )
             3: Stmt_Property(
                 flags: MODIFIER_PRIVATE (4)
+                type: null
                 props: array(
                     0: Stmt_PropertyProperty(
                         name: VarLikeIdentifier(
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/function/defaultValues.test b/vendor/nikic/php-parser/test/code/parser/stmt/function/defaultValues.test
index 6ae96fa659..505cddfdc7 100644
--- a/vendor/nikic/php-parser/test/code/parser/stmt/function/defaultValues.test
+++ b/vendor/nikic/php-parser/test/code/parser/stmt/function/defaultValues.test
@@ -130,6 +130,7 @@ array(
                                 value: foo
                             )
                             byRef: false
+                            unpack: false
                         )
                     )
                 )
@@ -149,6 +150,7 @@ array(
                                 value: foo
                             )
                             byRef: false
+                            unpack: false
                         )
                         1: Expr_ArrayItem(
                             key: Scalar_String(
@@ -158,6 +160,7 @@ array(
                                 value: baz
                             )
                             byRef: false
+                            unpack: false
                         )
                     )
                 )
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/generator/yieldPrecedence.test b/vendor/nikic/php-parser/test/code/parser/stmt/generator/yieldPrecedence.test
index 1f843c314e..ce2b6374d6 100644
--- a/vendor/nikic/php-parser/test/code/parser/stmt/generator/yieldPrecedence.test
+++ b/vendor/nikic/php-parser/test/code/parser/stmt/generator/yieldPrecedence.test
@@ -108,6 +108,7 @@ array(
                                             )
                                         )
                                         byRef: false
+                                        unpack: false
                                     )
                                 )
                             )
@@ -195,6 +196,7 @@ array(
                                             )
                                         )
                                         byRef: false
+                                        unpack: false
                                     )
                                 )
                             )
@@ -236,6 +238,7 @@ array(
                                             )
                                         )
                                         byRef: false
+                                        unpack: false
                                     )
                                 )
                             )
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/loop/foreach.test b/vendor/nikic/php-parser/test/code/parser/stmt/loop/foreach.test
index 464c859558..2dc802fc0c 100644
--- a/vendor/nikic/php-parser/test/code/parser/stmt/loop/foreach.test
+++ b/vendor/nikic/php-parser/test/code/parser/stmt/loop/foreach.test
@@ -87,6 +87,7 @@ array(
                         name: a
                     )
                     byRef: false
+                    unpack: false
                 )
                 1: Expr_ArrayItem(
                     key: null
@@ -94,6 +95,7 @@ array(
                         name: b
                     )
                     byRef: false
+                    unpack: false
                 )
             )
         )
@@ -116,6 +118,7 @@ array(
                         name: b
                     )
                     byRef: false
+                    unpack: false
                 )
                 1: null
                 2: Expr_ArrayItem(
@@ -124,6 +127,7 @@ array(
                         name: c
                     )
                     byRef: false
+                    unpack: false
                 )
             )
         )
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/expr/arraySpread.test b/vendor/nikic/php-parser/test/code/prettyPrinter/expr/arraySpread.test
new file mode 100644
index 0000000000..5e8393ff27
--- /dev/null
+++ b/vendor/nikic/php-parser/test/code/prettyPrinter/expr/arraySpread.test
@@ -0,0 +1,8 @@
+Array spread
+-----
+<?php
+
+[$a, $b] = [...$c, ...$d];
+-----
+!!php7
+[$a, $b] = [...$c, ...$d];
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/expr/arrow_function.test b/vendor/nikic/php-parser/test/code/prettyPrinter/expr/arrow_function.test
new file mode 100644
index 0000000000..fe8d8791b5
--- /dev/null
+++ b/vendor/nikic/php-parser/test/code/prettyPrinter/expr/arrow_function.test
@@ -0,0 +1,18 @@
+Arrow function
+-----
+<?php
+
+fn($a) => $a;
+fn($x = 42) => $x;
+fn(&$x) => $x;
+fn&($x) => $x;
+static fn($x, ...$rest) => $rest;
+fn(): int => $x;
+-----
+!!php7
+fn($a) => $a;
+fn($x = 42) => $x;
+fn(&$x) => $x;
+fn&($x) => $x;
+static fn($x, ...$rest) => $rest;
+fn(): int => $x;
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/expr/operators.test b/vendor/nikic/php-parser/test/code/prettyPrinter/expr/operators.test
index 72b68418f4..2b5ab01d6b 100644
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/expr/operators.test
+++ b/vendor/nikic/php-parser/test/code/prettyPrinter/expr/operators.test
@@ -19,6 +19,9 @@ $a--;
 (float) $a;
 (double) $a;
 (real) $a;
+( float) $a;
+(double ) $a;
+( REAL ) $a;
 (string) $a;
 (binary) $a;
 (array) $a;
@@ -53,9 +56,9 @@ $a || $b;
 $a ? $b : $c;
 $a ?: $c;
 $a ?? $c;
-
 $a = $b;
 $a **= $b;
+$a ??= $c;
 $a *= $b;
 $a /= $b;
 $a %= $b;
@@ -87,9 +90,12 @@ $a--;
 +$a;
 (int) $a;
 (int) $a;
+(float) $a;
 (double) $a;
+(real) $a;
+(float) $a;
 (double) $a;
-(double) $a;
+(real) $a;
 (string) $a;
 (string) $a;
 (array) $a;
@@ -125,6 +131,7 @@ $a ?: $c;
 $a ?? $c;
 $a = $b;
 $a **= $b;
+$a ??= $c;
 $a *= $b;
 $a /= $b;
 $a %= $b;
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/properties.test b/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/properties.test
new file mode 100644
index 0000000000..5a78ec4929
--- /dev/null
+++ b/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/properties.test
@@ -0,0 +1,20 @@
+Class properties
+-----
+<?php
+
+class A
+{
+    public $a;
+    public string $b;
+    protected static ?float $c = 5.0;
+    private static ?self $d;
+}
+-----
+!!php7
+class A
+{
+    public $a;
+    public string $b;
+    protected static ?float $c = 5.0;
+    private static ?self $d;
+}
diff --git a/vendor/nikic/php-parser/test/updateTests.php b/vendor/nikic/php-parser/test/updateTests.php
index d4de79c185..40d0d0a965 100644
--- a/vendor/nikic/php-parser/test/updateTests.php
+++ b/vendor/nikic/php-parser/test/updateTests.php
@@ -21,7 +21,7 @@
     foreach ($tests as list($modeLine, list($input, $expected))) {
         $modes = null !== $modeLine ? array_fill_keys(explode(',', $modeLine), true) : [];
         list($parser5, $parser7) = $codeParsingTest->createParsers($modes);
-        $output = isset($modes['php5'])
+        list(, $output) = isset($modes['php5'])
             ? $codeParsingTest->getParseOutput($parser5, $input, $modes)
             : $codeParsingTest->getParseOutput($parser7, $input, $modes);
         $newTests[] = [$modeLine, [$input, $output]];
diff --git a/vendor/nikic/php-parser/test_old/run-php-src.sh b/vendor/nikic/php-parser/test_old/run-php-src.sh
index 0d37f851de..d4f3889469 100755
--- a/vendor/nikic/php-parser/test_old/run-php-src.sh
+++ b/vendor/nikic/php-parser/test_old/run-php-src.sh
@@ -1,4 +1,4 @@
-wget -q https://github.com/php/php-src/archive/php-7.1.0.tar.gz
+wget -q https://github.com/php/php-src/archive/PHP-7.4.tar.gz
 mkdir -p ./data/php-src
-tar -xzf ./php-7.1.0.tar.gz -C ./data/php-src --strip-components=1
+tar -xzf ./PHP-7.4.tar.gz -C ./data/php-src --strip-components=1
 php -n test_old/run.php --verbose --no-progress PHP7 ./data/php-src
diff --git a/vendor/nikic/php-parser/test_old/run.php b/vendor/nikic/php-parser/test_old/run.php
index 2d7cdaccb6..8b74ab479b 100644
--- a/vendor/nikic/php-parser/test_old/run.php
+++ b/vendor/nikic/php-parser/test_old/run.php
@@ -59,9 +59,24 @@ function showHelp($error) {
 
 switch ($testType) {
     case 'Symfony':
-        $version = 'Php5';
+        $version = 'Php7';
         $fileFilter = function($path) {
-            return preg_match('~\.php(?:\.cache)?$~', $path) && false === strpos($path, 'skeleton');
+            if (!preg_match('~\.php$~', $path)) {
+                return false;
+            }
+
+            if (preg_match('~(?:
+# invalid php code
+  dependency-injection.Tests.Fixtures.xml.xml_with_wrong_ext
+# difference in nop statement
+| framework-bundle.Resources.views.Form.choice_widget_options\.html
+# difference due to INF
+| yaml.Tests.InlineTest
+)\.php$~x', $path)) {
+                return false;
+            }
+
+            return true;
         };
         $codeExtractor = function($file, $code) {
             return $code;
@@ -77,26 +92,31 @@ function showHelp($error) {
             if (preg_match('~(?:
 # skeleton files
   ext.gmp.tests.001
-| ext.skeleton.tests.001
+| ext.skeleton.tests.00\d
 # multibyte encoded files
 | ext.mbstring.tests.zend_multibyte-01
 | Zend.tests.multibyte.multibyte_encoding_001
 | Zend.tests.multibyte.multibyte_encoding_004
 | Zend.tests.multibyte.multibyte_encoding_005
+# invalid code due to missing WS after opening tag
+| tests.run-test.bug75042-3
 # pretty print difference due to INF vs 1e1000
 | ext.standard.tests.general_functions.bug27678
 | tests.lang.bug24640
+| Zend.tests.bug74947
 # pretty print differences due to negative LNumbers
 | Zend.tests.neg_num_string
 | Zend.tests.bug72918
 # pretty print difference due to nop statements
 | ext.mbstring.tests.htmlent
 | ext.standard.tests.file.fread_basic
+# its too hard to emulate these on old PHP versions
+| Zend.tests.flexible-heredoc-complex-test[1-4]
 )\.phpt$~x', $file)) {
                 return null;
             }
 
-            if (!preg_match('~--FILE--\s*(.*?)--[A-Z]+--~s', $code, $matches)) {
+            if (!preg_match('~--FILE--\s*(.*?)\n--[A-Z]+--~s', $code, $matches)) {
                 return null;
             }
             if (preg_match('~--EXPECT(?:F|REGEX)?--\s*(?:Parse|Fatal) error~', $code)) {
diff --git a/vendor/psy/psysh/box.json.dist b/vendor/psy/psysh/box.json.dist
index 32305a5259..e302f265eb 100644
--- a/vendor/psy/psysh/box.json.dist
+++ b/vendor/psy/psysh/box.json.dist
@@ -4,7 +4,6 @@
     "compactors": [
         "KevinGH\\Box\\Compactor\\Php"
     ],
-    "chmod": "0755",
     "blacklist": [
         "grammar",
         "test_old",
diff --git a/vendor/psy/psysh/composer.json b/vendor/psy/psysh/composer.json
index 7df60cf483..4588ba60a5 100644
--- a/vendor/psy/psysh/composer.json
+++ b/vendor/psy/psysh/composer.json
@@ -20,7 +20,7 @@
         "symfony/var-dumper": "~2.7|~3.0|~4.0",
         "nikic/php-parser": "~1.3|~2.0|~3.0|~4.0",
         "dnoegel/php-xdg-base-dir": "0.1",
-        "jakub-onderka/php-console-highlighter": "0.3.*"
+        "jakub-onderka/php-console-highlighter": "0.3.*|0.4.*"
     },
     "require-dev": {
         "phpunit/phpunit": "~4.8.35|~5.0|~6.0|~7.0",
diff --git a/vendor/psy/psysh/src/CodeCleaner/ListPass.php b/vendor/psy/psysh/src/CodeCleaner/ListPass.php
index aefc7ad27a..b0d1d73e40 100644
--- a/vendor/psy/psysh/src/CodeCleaner/ListPass.php
+++ b/vendor/psy/psysh/src/CodeCleaner/ListPass.php
@@ -12,10 +12,15 @@
 namespace Psy\CodeCleaner;
 
 use PhpParser\Node;
+use PhpParser\Node\Expr;
 use PhpParser\Node\Expr\Array_;
+use PhpParser\Node\Expr\ArrayDimFetch;
 use PhpParser\Node\Expr\ArrayItem;
 use PhpParser\Node\Expr\Assign;
+use PhpParser\Node\Expr\FuncCall;
 use PhpParser\Node\Expr\List_;
+use PhpParser\Node\Expr\MethodCall;
+use PhpParser\Node\Expr\PropertyFetch;
 use PhpParser\Node\Expr\Variable;
 use Psy\Exception\ParseErrorException;
 
@@ -74,9 +79,7 @@ public function enterNode(Node $node)
                 throw new ParseErrorException($msg, $item->key->getLine());
             }
 
-            $value = ($item instanceof ArrayItem) ? $item->value : $item;
-
-            if (!$value instanceof Variable) {
+            if (!self::isValidArrayItem($item)) {
                 $msg = 'Assignments can only happen to writable values';
                 throw new ParseErrorException($msg, $item->getLine());
             }
@@ -86,4 +89,24 @@ public function enterNode(Node $node)
             throw new ParseErrorException('Cannot use empty list');
         }
     }
+
+    /**
+     * Validate whether a given item in an array is valid for short assignment.
+     *
+     * @param Expr $item
+     *
+     * @return bool
+     */
+    private static function isValidArrayItem(Expr $item)
+    {
+        $value = ($item instanceof ArrayItem) ? $item->value : $item;
+
+        while ($value instanceof ArrayDimFetch || $value instanceof PropertyFetch) {
+            $value = $value->var;
+        }
+
+        // We just kind of give up if it's a method call. We can't tell if it's
+        // valid via static analysis.
+        return $value instanceof Variable || $value instanceof MethodCall || $value instanceof FuncCall;
+    }
 }
diff --git a/vendor/psy/psysh/src/CodeCleaner/RequirePass.php b/vendor/psy/psysh/src/CodeCleaner/RequirePass.php
index 3e27184a1b..31c156a37d 100644
--- a/vendor/psy/psysh/src/CodeCleaner/RequirePass.php
+++ b/vendor/psy/psysh/src/CodeCleaner/RequirePass.php
@@ -81,10 +81,9 @@ public static function resolve($file, $lineNumber = null)
             // So we're duplicating some of the logics here.
             if (E_WARNING & \error_reporting()) {
                 ErrorException::throwException(E_WARNING, 'Filename cannot be empty', null, $lineNumber);
-            } else {
-                // @todo trigger an error as fallback? this is pretty ugly…
-                // trigger_error('Filename cannot be empty', E_USER_WARNING);
             }
+            // @todo trigger an error as fallback? this is pretty ugly…
+            // trigger_error('Filename cannot be empty', E_USER_WARNING);
         }
 
         if ($file === '' || !\stream_resolve_include_path($file)) {
diff --git a/vendor/psy/psysh/src/CodeCleaner/ValidClassNamePass.php b/vendor/psy/psysh/src/CodeCleaner/ValidClassNamePass.php
index 022289dabe..9578c9a86f 100644
--- a/vendor/psy/psysh/src/CodeCleaner/ValidClassNamePass.php
+++ b/vendor/psy/psysh/src/CodeCleaner/ValidClassNamePass.php
@@ -248,6 +248,21 @@ protected function ensureClassOrInterfaceExists($name, $stmt)
         }
     }
 
+    /**
+     * Ensure that a referenced class _or trait_ exists.
+     *
+     * @throws FatalErrorException
+     *
+     * @param string $name
+     * @param Stmt   $stmt
+     */
+    protected function ensureClassOrTraitExists($name, $stmt)
+    {
+        if (!$this->classExists($name) && !$this->traitExists($name)) {
+            throw $this->createError(\sprintf('Class \'%s\' not found', $name), $stmt);
+        }
+    }
+
     /**
      * Ensure that a statically called method exists.
      *
@@ -259,7 +274,7 @@ protected function ensureClassOrInterfaceExists($name, $stmt)
      */
     protected function ensureMethodExists($class, $name, $stmt)
     {
-        $this->ensureClassExists($class, $stmt);
+        $this->ensureClassOrTraitExists($class, $stmt);
 
         // let's pretend all calls to self, parent and static are valid
         if (\in_array(\strtolower($class), ['self', 'parent', 'static'])) {
diff --git a/vendor/psy/psysh/src/ExecutionLoopClosure.php b/vendor/psy/psysh/src/ExecutionLoopClosure.php
index 94d3ce2e74..5b8238cf63 100644
--- a/vendor/psy/psysh/src/ExecutionLoopClosure.php
+++ b/vendor/psy/psysh/src/ExecutionLoopClosure.php
@@ -41,7 +41,9 @@ public function __construct(Shell $__psysh__)
 
                     try {
                         // Pull in any new execution scope variables
-                        \extract($__psysh__->getScopeVariablesDiff(\get_defined_vars()));
+                        if ($__psysh__->getLastExecSuccess()) {
+                            \extract($__psysh__->getScopeVariablesDiff(\get_defined_vars()));
+                        }
 
                         // Buffer stdout; we'll need it later
                         \ob_start([$__psysh__, 'writeStdout'], 1);
diff --git a/vendor/psy/psysh/src/Readline/Transient.php b/vendor/psy/psysh/src/Readline/Transient.php
index e238fdf494..6623bd9818 100644
--- a/vendor/psy/psysh/src/Readline/Transient.php
+++ b/vendor/psy/psysh/src/Readline/Transient.php
@@ -106,7 +106,7 @@ public function readline($prompt = null)
     {
         echo $prompt;
 
-        return \rtrim(\fgets($this->getStdin(), 1024));
+        return \rtrim(\fgets($this->getStdin()), "\n\r");
     }
 
     /**
diff --git a/vendor/psy/psysh/src/Shell.php b/vendor/psy/psysh/src/Shell.php
index 6f7c79bd68..7a0fbac28a 100644
--- a/vendor/psy/psysh/src/Shell.php
+++ b/vendor/psy/psysh/src/Shell.php
@@ -47,7 +47,7 @@
  */
 class Shell extends Application
 {
-    const VERSION = 'v0.9.7';
+    const VERSION = 'v0.9.9';
 
     const PROMPT      = '>>> ';
     const BUFF_PROMPT = '... ';
@@ -73,6 +73,7 @@ class Shell extends Application
     private $autoCompleter;
     private $matchers = [];
     private $commandsMatcher;
+    private $lastExecSuccess = true;
 
     /**
      * Create a new Psy Shell.
@@ -963,6 +964,8 @@ public function writeStdout($out, $phase = PHP_OUTPUT_HANDLER_END)
      */
     public function writeReturnValue($ret)
     {
+        $this->lastExecSuccess = true;
+
         if ($ret instanceof NoReturnValue) {
             return;
         }
@@ -986,11 +989,24 @@ public function writeReturnValue($ret)
      */
     public function writeException(\Exception $e)
     {
+        $this->lastExecSuccess = false;
         $this->context->setLastException($e);
         $this->output->writeln($this->formatException($e));
         $this->resetCodeBuffer();
     }
 
+    /**
+     * Check whether the last exec was successful.
+     *
+     * Returns true if a return value was logged rather than an exception.
+     *
+     * @return bool
+     */
+    public function getLastExecSuccess()
+    {
+        return $this->lastExecSuccess;
+    }
+
     /**
      * Helper for formatting an exception for writeException().
      *
diff --git a/vendor/psy/psysh/test/CodeCleaner/Fixtures/TraitWithStatic.php b/vendor/psy/psysh/test/CodeCleaner/Fixtures/TraitWithStatic.php
new file mode 100644
index 0000000000..132dc061cb
--- /dev/null
+++ b/vendor/psy/psysh/test/CodeCleaner/Fixtures/TraitWithStatic.php
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ * This file is part of Psy Shell.
+ *
+ * (c) 2012-2018 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Psy\Test\CodeCleaner\Fixtures;
+
+trait TraitWithStatic
+{
+    public static function doStuff()
+    {
+        // Don't actually do stuff.
+    }
+}
diff --git a/vendor/psy/psysh/test/CodeCleaner/ListPassTest.php b/vendor/psy/psysh/test/CodeCleaner/ListPassTest.php
index fd955a6aa5..b7a360d690 100644
--- a/vendor/psy/psysh/test/CodeCleaner/ListPassTest.php
+++ b/vendor/psy/psysh/test/CodeCleaner/ListPassTest.php
@@ -56,6 +56,8 @@ public function invalidStatements()
                 ['[] = []', $errorShortListAssign],
                 ['[$a] = [1]', $errorShortListAssign],
                 ['list("a" => $a) = array("a" => 1)', $errorAssocListAssign],
+                ['[$a[0], $a[1]] = [1, 2]', $errorShortListAssign],
+                ['[$a->b, $a->c] = [1, 2]', $errorShortListAssign],
             ]);
         }
 
@@ -64,6 +66,7 @@ public function invalidStatements()
             ['["a"] = [1]', $errorNonVariableAssign],
             ['[] = []', $errorEmptyList],
             ['[,] = [1,2]', $errorEmptyList],
+            ['[,,] = [1,2,3]', $errorEmptyList],
         ]);
     }
 
@@ -96,6 +99,14 @@ public function validStatements()
                 ['[,$b] = [1,2,3]'],
                 ['[$a,,$c] = [1,2,3]'],
                 ['[$a,,,] = [1,2,3]'],
+                ['[$a[0], $a[1]] = [1, 2]'],
+                ['[$a[0][0][0], $a[0][0][1]] = [1, 2]'],
+                ['[$a->b, $a->c] = [1, 2]'],
+                ['[$a->b[0], $a->c[1]] = [1, 2]'],
+                ['[$a[0]->b[0], $a[0]->c[1]] = [1, 2]'],
+                ['[$a[$b->c + $b->d]] = [1]'],
+                ['[$a->c()->d, $a->c()->e] = [1, 2]'],
+                ['[x()->a, x()->b] = [1, 2]'],
             ]);
         }
 
diff --git a/vendor/psy/psysh/test/CodeCleaner/ValidClassNamePassTest.php b/vendor/psy/psysh/test/CodeCleaner/ValidClassNamePassTest.php
index 3736f351eb..2d9ed60b58 100644
--- a/vendor/psy/psysh/test/CodeCleaner/ValidClassNamePassTest.php
+++ b/vendor/psy/psysh/test/CodeCleaner/ValidClassNamePassTest.php
@@ -172,6 +172,7 @@ class Kappa {}
             ['DateTime::$someMethod()'],
             ['Psy\Test\CodeCleaner\Fixtures\ClassWithStatic::doStuff()'],
             ['Psy\Test\CodeCleaner\Fixtures\ClassWithCallStatic::doStuff()'],
+            ['Psy\Test\CodeCleaner\Fixtures\TraitWithStatic::doStuff()'],
 
             // Allow `self` and `static` as class names.
             ['
diff --git a/vendor/psy/psysh/vendor-bin/box/composer.json b/vendor/psy/psysh/vendor-bin/box/composer.json
index a5ef20620f..13b78794fb 100644
--- a/vendor/psy/psysh/vendor-bin/box/composer.json
+++ b/vendor/psy/psysh/vendor-bin/box/composer.json
@@ -2,6 +2,6 @@
     "minimum-stability": "dev",
     "prefer-stable": true,
     "require": {
-        "humbug/box": "^3.0@alpha"
+        "humbug/box": "^3.1"
     }
 }
diff --git a/vendor/symfony/console/Application.php b/vendor/symfony/console/Application.php
index 6cc5f5c580..4d10c31699 100644
--- a/vendor/symfony/console/Application.php
+++ b/vendor/symfony/console/Application.php
@@ -596,6 +596,15 @@ public function find($name)
         $this->init();
 
         $aliases = [];
+
+        foreach ($this->commands as $command) {
+            foreach ($command->getAliases() as $alias) {
+                if (!$this->has($alias)) {
+                    $this->commands[$alias] = $command;
+                }
+            }
+        }
+
         $allCommands = $this->commandLoader ? array_merge($this->commandLoader->getNames(), array_keys($this->commands)) : array_keys($this->commands);
         $expr = preg_replace_callback('{([^:]+|)}', function ($matches) { return preg_quote($matches[1]).'[^:]*'; }, $name);
         $commands = preg_grep('{^'.$expr.'}', $allCommands);
diff --git a/vendor/symfony/console/Helper/QuestionHelper.php b/vendor/symfony/console/Helper/QuestionHelper.php
index 677aa764d4..2d910f4356 100644
--- a/vendor/symfony/console/Helper/QuestionHelper.php
+++ b/vendor/symfony/console/Helper/QuestionHelper.php
@@ -239,6 +239,7 @@ protected function writeError(OutputInterface $output, \Exception $error)
      */
     private function autocomplete(OutputInterface $output, Question $question, $inputStream, array $autocomplete)
     {
+        $fullChoice = '';
         $ret = '';
 
         $i = 0;
@@ -265,6 +266,7 @@ private function autocomplete(OutputInterface $output, Question $question, $inpu
             } elseif ("\177" === $c) { // Backspace Character
                 if (0 === $numMatches && 0 !== $i) {
                     --$i;
+                    $fullChoice = substr($fullChoice, 0, -1);
                     // Move cursor backwards
                     $output->write("\033[1D");
                 }
@@ -301,8 +303,10 @@ private function autocomplete(OutputInterface $output, Question $question, $inpu
                     if ($numMatches > 0 && -1 !== $ofs) {
                         $ret = $matches[$ofs];
                         // Echo out remaining chars for current match
-                        $output->write(substr($ret, $i));
-                        $i = \strlen($ret);
+                        $remainingCharacters = substr($ret, \strlen(trim($this->mostRecentlyEnteredValue($fullChoice))));
+                        $output->write($remainingCharacters);
+                        $fullChoice .= $remainingCharacters;
+                        $i = \strlen($fullChoice);
                     }
 
                     if ("\n" === $c) {
@@ -321,14 +325,21 @@ private function autocomplete(OutputInterface $output, Question $question, $inpu
 
                 $output->write($c);
                 $ret .= $c;
+                $fullChoice .= $c;
                 ++$i;
 
+                $tempRet = $ret;
+
+                if ($question instanceof ChoiceQuestion && $question->isMultiselect()) {
+                    $tempRet = $this->mostRecentlyEnteredValue($fullChoice);
+                }
+
                 $numMatches = 0;
                 $ofs = 0;
 
                 foreach ($autocomplete as $value) {
                     // If typed characters match the beginning chunk of value (e.g. [AcmeDe]moBundle)
-                    if (0 === strpos($value, $ret)) {
+                    if (0 === strpos($value, $tempRet)) {
                         $matches[$numMatches++] = $value;
                     }
                 }
@@ -340,8 +351,9 @@ private function autocomplete(OutputInterface $output, Question $question, $inpu
             if ($numMatches > 0 && -1 !== $ofs) {
                 // Save cursor position
                 $output->write("\0337");
-                // Write highlighted text
-                $output->write('<hl>'.OutputFormatter::escapeTrailingBackslash(substr($matches[$ofs], $i)).'</hl>');
+                // Write highlighted text, complete the partially entered response
+                $charactersEntered = \strlen(trim($this->mostRecentlyEnteredValue($fullChoice)));
+                $output->write('<hl>'.OutputFormatter::escapeTrailingBackslash(substr($matches[$ofs], $charactersEntered)).'</hl>');
                 // Restore cursor position
                 $output->write("\0338");
             }
@@ -350,7 +362,22 @@ private function autocomplete(OutputInterface $output, Question $question, $inpu
         // Reset stty so it behaves normally again
         shell_exec(sprintf('stty %s', $sttyMode));
 
-        return $ret;
+        return $fullChoice;
+    }
+
+    private function mostRecentlyEnteredValue($entered)
+    {
+        // Determine the most recent value that the user entered
+        if (false === strpos($entered, ',')) {
+            return $entered;
+        }
+
+        $choices = explode(',', $entered);
+        if (\strlen($lastChoice = trim($choices[\count($choices) - 1])) > 0) {
+            return $lastChoice;
+        }
+
+        return $entered;
     }
 
     /**
diff --git a/vendor/symfony/console/Tests/ApplicationTest.php b/vendor/symfony/console/Tests/ApplicationTest.php
index 200568f070..b920d211aa 100644
--- a/vendor/symfony/console/Tests/ApplicationTest.php
+++ b/vendor/symfony/console/Tests/ApplicationTest.php
@@ -72,8 +72,8 @@ public static function setUpBeforeClass()
         require_once self::$fixturesPath.'/BarBucCommand.php';
         require_once self::$fixturesPath.'/FooSubnamespaced1Command.php';
         require_once self::$fixturesPath.'/FooSubnamespaced2Command.php';
-        require_once self::$fixturesPath.'/TestTiti.php';
-        require_once self::$fixturesPath.'/TestToto.php';
+        require_once self::$fixturesPath.'/TestAmbiguousCommandRegistering.php';
+        require_once self::$fixturesPath.'/TestAmbiguousCommandRegistering2.php';
     }
 
     protected function normalizeLineBreaks($text)
@@ -164,6 +164,27 @@ public function testRegister()
         $this->assertEquals('foo', $command->getName(), '->register() registers a new command');
     }
 
+    public function testRegisterAmbiguous()
+    {
+        $code = function (InputInterface $input, OutputInterface $output) {
+            $output->writeln('It works!');
+        };
+
+        $application = new Application();
+        $application
+            ->register('test-foo')
+            ->setAliases(['test'])
+            ->setCode($code);
+
+        $application
+            ->register('test-bar')
+            ->setCode($code);
+
+        $tester = new ApplicationTester($application);
+        $tester->run(['test']);
+        $this->assertContains('It works!', $tester->getDisplay(true));
+    }
+
     public function testAdd()
     {
         $application = new Application();
@@ -303,9 +324,9 @@ public function testFindAmbiguousNamespace()
     public function testFindNonAmbiguous()
     {
         $application = new Application();
-        $application->add(new \TestTiti());
-        $application->add(new \TestToto());
-        $this->assertEquals('test-toto', $application->find('test')->getName());
+        $application->add(new \TestAmbiguousCommandRegistering());
+        $application->add(new \TestAmbiguousCommandRegistering2());
+        $this->assertEquals('test-ambiguous', $application->find('test')->getName());
     }
 
     /**
diff --git a/vendor/symfony/console/Tests/Fixtures/TestToto.php b/vendor/symfony/console/Tests/Fixtures/TestAmbiguousCommandRegistering.php
similarity index 65%
rename from vendor/symfony/console/Tests/Fixtures/TestToto.php
rename to vendor/symfony/console/Tests/Fixtures/TestAmbiguousCommandRegistering.php
index 2e6a819593..bece09fcdd 100644
--- a/vendor/symfony/console/Tests/Fixtures/TestToto.php
+++ b/vendor/symfony/console/Tests/Fixtures/TestAmbiguousCommandRegistering.php
@@ -4,19 +4,19 @@
 use Symfony\Component\Console\Input\InputInterface;
 use Symfony\Component\Console\Output\OutputInterface;
 
-class TestToto extends Command
+class TestAmbiguousCommandRegistering extends Command
 {
     protected function configure()
     {
         $this
-            ->setName('test-toto')
-            ->setDescription('The test-toto command')
+            ->setName('test-ambiguous')
+            ->setDescription('The test-ambiguous command')
             ->setAliases(['test'])
         ;
     }
 
     protected function execute(InputInterface $input, OutputInterface $output)
     {
-        $output->write('test-toto');
+        $output->write('test-ambiguous');
     }
 }
diff --git a/vendor/symfony/console/Tests/Fixtures/TestTiti.php b/vendor/symfony/console/Tests/Fixtures/TestAmbiguousCommandRegistering2.php
similarity index 62%
rename from vendor/symfony/console/Tests/Fixtures/TestTiti.php
rename to vendor/symfony/console/Tests/Fixtures/TestAmbiguousCommandRegistering2.php
index 72e29d2a0a..9dde486245 100644
--- a/vendor/symfony/console/Tests/Fixtures/TestTiti.php
+++ b/vendor/symfony/console/Tests/Fixtures/TestAmbiguousCommandRegistering2.php
@@ -4,18 +4,18 @@
 use Symfony\Component\Console\Input\InputInterface;
 use Symfony\Component\Console\Output\OutputInterface;
 
-class TestTiti extends Command
+class TestAmbiguousCommandRegistering2 extends Command
 {
     protected function configure()
     {
         $this
-            ->setName('test-titi')
-            ->setDescription('The test:titi command')
+            ->setName('test-ambiguous2')
+            ->setDescription('The test-ambiguous2 command')
         ;
     }
 
     protected function execute(InputInterface $input, OutputInterface $output)
     {
-        $output->write('test-titi');
+        $output->write('test-ambiguous2');
     }
 }
diff --git a/vendor/symfony/console/Tests/Helper/QuestionHelperTest.php b/vendor/symfony/console/Tests/Helper/QuestionHelperTest.php
index 56ba1c6891..3c030e0498 100644
--- a/vendor/symfony/console/Tests/Helper/QuestionHelperTest.php
+++ b/vendor/symfony/console/Tests/Helper/QuestionHelperTest.php
@@ -1018,6 +1018,37 @@ public function testTraversableAutocomplete()
         $this->assertEquals('FooBundle', $dialog->ask($this->createStreamableInputInterfaceMock($inputStream), $this->createOutputInterface(), $question));
     }
 
+    public function testTraversableMultiselectAutocomplete()
+    {
+        // <NEWLINE>
+        // F<TAB><NEWLINE>
+        // A<3x UP ARROW><TAB>,F<TAB><NEWLINE>
+        // F00<BACKSPACE><BACKSPACE>o<TAB>,A<DOWN ARROW>,<SPACE>SecurityBundle<NEWLINE>
+        // Acme<TAB>,<SPACE>As<TAB><29x BACKSPACE>S<TAB><NEWLINE>
+        // Ac<TAB>,As<TAB><3x BACKSPACE>d<TAB><NEWLINE>
+        $inputStream = $this->getInputStream("\nF\t\nA\033[A\033[A\033[A\t,F\t\nF00\177\177o\t,A\033[B\t, SecurityBundle\nAcme\t, As\t\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177S\t\nAc\t,As\t\177\177\177d\t\n");
+
+        $dialog = new QuestionHelper();
+        $helperSet = new HelperSet([new FormatterHelper()]);
+        $dialog->setHelperSet($helperSet);
+
+        $question = new ChoiceQuestion(
+            'Please select a bundle (defaults to AcmeDemoBundle and AsseticBundle)',
+            ['AcmeDemoBundle', 'AsseticBundle', 'SecurityBundle', 'FooBundle'],
+            '0,1'
+        );
+
+        // This tests that autocomplete works for all multiselect choices entered by the user
+        $question->setMultiselect(true);
+
+        $this->assertEquals(['AcmeDemoBundle', 'AsseticBundle'], $dialog->ask($this->createStreamableInputInterfaceMock($inputStream), $this->createOutputInterface(), $question));
+        $this->assertEquals(['FooBundle'], $dialog->ask($this->createStreamableInputInterfaceMock($inputStream), $this->createOutputInterface(), $question));
+        $this->assertEquals(['AsseticBundle', 'FooBundle'], $dialog->ask($this->createStreamableInputInterfaceMock($inputStream), $this->createOutputInterface(), $question));
+        $this->assertEquals(['FooBundle', 'AsseticBundle', 'SecurityBundle'], $dialog->ask($this->createStreamableInputInterfaceMock($inputStream), $this->createOutputInterface(), $question));
+        $this->assertEquals(['SecurityBundle'], $dialog->ask($this->createStreamableInputInterfaceMock($inputStream), $this->createOutputInterface(), $question));
+        $this->assertEquals(['AcmeDemoBundle', 'AsseticBundle'], $dialog->ask($this->createStreamableInputInterfaceMock($inputStream), $this->createOutputInterface(), $question));
+    }
+
     protected function getInputStream($input)
     {
         $stream = fopen('php://memory', 'r+', false);
diff --git a/vendor/symfony/debug/FatalErrorHandler/ClassNotFoundFatalErrorHandler.php b/vendor/symfony/debug/FatalErrorHandler/ClassNotFoundFatalErrorHandler.php
index 1ac18ac8f5..45dcc00d5c 100644
--- a/vendor/symfony/debug/FatalErrorHandler/ClassNotFoundFatalErrorHandler.php
+++ b/vendor/symfony/debug/FatalErrorHandler/ClassNotFoundFatalErrorHandler.php
@@ -185,7 +185,11 @@ private function convertFileToClass($path, $file, $prefix)
             }
         }
 
-        require_once $file;
+        try {
+            require_once $file;
+        } catch (\Throwable $e) {
+            return null;
+        }
 
         foreach ($candidates as $candidate) {
             if ($this->classExists($candidate)) {
diff --git a/vendor/symfony/finder/Comparator/Comparator.php b/vendor/symfony/finder/Comparator/Comparator.php
index ea37566df8..6aee21cf09 100644
--- a/vendor/symfony/finder/Comparator/Comparator.php
+++ b/vendor/symfony/finder/Comparator/Comparator.php
@@ -64,7 +64,7 @@ public function setOperator($operator)
             $operator = '==';
         }
 
-        if (!\in_array($operator, array('>', '<', '>=', '<=', '==', '!='))) {
+        if (!\in_array($operator, ['>', '<', '>=', '<=', '==', '!='])) {
             throw new \InvalidArgumentException(sprintf('Invalid operator "%s".', $operator));
         }
 
diff --git a/vendor/symfony/finder/Finder.php b/vendor/symfony/finder/Finder.php
index f16bfaace4..133c4b8c50 100644
--- a/vendor/symfony/finder/Finder.php
+++ b/vendor/symfony/finder/Finder.php
@@ -29,9 +29,9 @@
  *
  * All rules may be invoked several times.
  *
- * All methods return the current Finder object to allow easy chaining:
+ * All methods return the current Finder object to allow chaining:
  *
- * $finder = Finder::create()->files()->name('*.php')->in(__DIR__);
+ *     $finder = Finder::create()->files()->name('*.php')->in(__DIR__);
  *
  * @author Fabien Potencier <fabien@symfony.com>
  */
@@ -41,25 +41,25 @@ class Finder implements \IteratorAggregate, \Countable
     const IGNORE_DOT_FILES = 2;
 
     private $mode = 0;
-    private $names = array();
-    private $notNames = array();
-    private $exclude = array();
-    private $filters = array();
-    private $depths = array();
-    private $sizes = array();
+    private $names = [];
+    private $notNames = [];
+    private $exclude = [];
+    private $filters = [];
+    private $depths = [];
+    private $sizes = [];
     private $followLinks = false;
     private $sort = false;
     private $ignore = 0;
-    private $dirs = array();
-    private $dates = array();
-    private $iterators = array();
-    private $contains = array();
-    private $notContains = array();
-    private $paths = array();
-    private $notPaths = array();
+    private $dirs = [];
+    private $dates = [];
+    private $iterators = [];
+    private $contains = [];
+    private $notContains = [];
+    private $paths = [];
+    private $notPaths = [];
     private $ignoreUnreadableDirs = false;
 
-    private static $vcsPatterns = array('.svn', '_svn', 'CVS', '_darcs', '.arch-params', '.monotone', '.bzr', '.git', '.hg');
+    private static $vcsPatterns = ['.svn', '_svn', 'CVS', '_darcs', '.arch-params', '.monotone', '.bzr', '.git', '.hg'];
 
     public function __construct()
     {
@@ -105,8 +105,8 @@ public function files()
      *
      * Usage:
      *
-     *   $finder->depth('> 1') // the Finder will start matching at level 1.
-     *   $finder->depth('< 3') // the Finder will descend at most 3 levels of directories below the starting point.
+     *     $finder->depth('> 1') // the Finder will start matching at level 1.
+     *     $finder->depth('< 3') // the Finder will descend at most 3 levels of directories below the starting point.
      *
      * @param string|int $level The depth level expression
      *
@@ -127,10 +127,10 @@ public function depth($level)
      *
      * The date must be something that strtotime() is able to parse:
      *
-     *   $finder->date('since yesterday');
-     *   $finder->date('until 2 days ago');
-     *   $finder->date('> now - 2 hours');
-     *   $finder->date('>= 2005-10-15');
+     *     $finder->date('since yesterday');
+     *     $finder->date('until 2 days ago');
+     *     $finder->date('> now - 2 hours');
+     *     $finder->date('>= 2005-10-15');
      *
      * @param string $date A date range string
      *
@@ -152,9 +152,9 @@ public function date($date)
      *
      * You can use patterns (delimited with / sign), globs or simple strings.
      *
-     * $finder->name('*.php')
-     * $finder->name('/\.php$/') // same as above
-     * $finder->name('test.php')
+     *     $finder->name('*.php')
+     *     $finder->name('/\.php$/') // same as above
+     *     $finder->name('test.php')
      *
      * @param string $pattern A pattern (a regexp, a glob, or a string)
      *
@@ -190,8 +190,8 @@ public function notName($pattern)
      *
      * Strings or PCRE patterns can be used:
      *
-     * $finder->contains('Lorem ipsum')
-     * $finder->contains('/Lorem ipsum/i')
+     *     $finder->contains('Lorem ipsum')
+     *     $finder->contains('/Lorem ipsum/i')
      *
      * @param string $pattern A pattern (string or regexp)
      *
@@ -211,8 +211,8 @@ public function contains($pattern)
      *
      * Strings or PCRE patterns can be used:
      *
-     * $finder->notContains('Lorem ipsum')
-     * $finder->notContains('/Lorem ipsum/i')
+     *     $finder->notContains('Lorem ipsum')
+     *     $finder->notContains('/Lorem ipsum/i')
      *
      * @param string $pattern A pattern (string or regexp)
      *
@@ -232,8 +232,8 @@ public function notContains($pattern)
      *
      * You can use patterns (delimited with / sign) or simple strings.
      *
-     * $finder->path('some/special/dir')
-     * $finder->path('/some\/special\/dir/') // same as above
+     *     $finder->path('some/special/dir')
+     *     $finder->path('/some\/special\/dir/') // same as above
      *
      * Use only / as dirname separator.
      *
@@ -255,8 +255,8 @@ public function path($pattern)
      *
      * You can use patterns (delimited with / sign) or simple strings.
      *
-     * $finder->notPath('some/special/dir')
-     * $finder->notPath('/some\/special\/dir/') // same as above
+     *     $finder->notPath('some/special/dir')
+     *     $finder->notPath('/some\/special\/dir/') // same as above
      *
      * Use only / as dirname separator.
      *
@@ -276,9 +276,9 @@ public function notPath($pattern)
     /**
      * Adds tests for file sizes.
      *
-     * $finder->size('> 10K');
-     * $finder->size('<= 1Ki');
-     * $finder->size(4);
+     *     $finder->size('> 10K');
+     *     $finder->size('<= 1Ki');
+     *     $finder->size(4);
      *
      * @param string|int $size A size range string or an integer
      *
@@ -536,13 +536,13 @@ public function ignoreUnreadableDirs($ignore = true)
      */
     public function in($dirs)
     {
-        $resolvedDirs = array();
+        $resolvedDirs = [];
 
         foreach ((array) $dirs as $dir) {
             if (is_dir($dir)) {
                 $resolvedDirs[] = $this->normalizeDir($dir);
             } elseif ($glob = glob($dir, (\defined('GLOB_BRACE') ? GLOB_BRACE : 0) | GLOB_ONLYDIR)) {
-                $resolvedDirs = array_merge($resolvedDirs, array_map(array($this, 'normalizeDir'), $glob));
+                $resolvedDirs = array_merge($resolvedDirs, array_map([$this, 'normalizeDir'], $glob));
             } else {
                 throw new \InvalidArgumentException(sprintf('The "%s" directory does not exist.', $dir));
             }
@@ -589,7 +589,7 @@ public function getIterator()
      *
      * The set can be another Finder, an Iterator, an IteratorAggregate, or even a plain array.
      *
-     * @param mixed $iterator
+     * @param iterable $iterator
      *
      * @return $this
      *
@@ -639,18 +639,21 @@ public function count()
     }
 
     /**
-     * @param $dir
+     * @param string $dir
      *
      * @return \Iterator
      */
     private function searchInDirectory($dir)
     {
+        $exclude = $this->exclude;
+        $notPaths = $this->notPaths;
+
         if (static::IGNORE_VCS_FILES === (static::IGNORE_VCS_FILES & $this->ignore)) {
-            $this->exclude = array_merge($this->exclude, self::$vcsPatterns);
+            $exclude = array_merge($exclude, self::$vcsPatterns);
         }
 
         if (static::IGNORE_DOT_FILES === (static::IGNORE_DOT_FILES & $this->ignore)) {
-            $this->notPaths[] = '#(^|/)\..+(/|$)#';
+            $notPaths[] = '#(^|/)\..+(/|$)#';
         }
 
         $minDepth = 0;
@@ -683,8 +686,8 @@ private function searchInDirectory($dir)
 
         $iterator = new Iterator\RecursiveDirectoryIterator($dir, $flags, $this->ignoreUnreadableDirs);
 
-        if ($this->exclude) {
-            $iterator = new Iterator\ExcludeDirectoryFilterIterator($iterator, $this->exclude);
+        if ($exclude) {
+            $iterator = new Iterator\ExcludeDirectoryFilterIterator($iterator, $exclude);
         }
 
         $iterator = new \RecursiveIteratorIterator($iterator, \RecursiveIteratorIterator::SELF_FIRST);
@@ -717,8 +720,8 @@ private function searchInDirectory($dir)
             $iterator = new Iterator\CustomFilterIterator($iterator, $this->filters);
         }
 
-        if ($this->paths || $this->notPaths) {
-            $iterator = new Iterator\PathFilterIterator($iterator, $this->paths, $this->notPaths);
+        if ($this->paths || $notPaths) {
+            $iterator = new Iterator\PathFilterIterator($iterator, $this->paths, $notPaths);
         }
 
         if ($this->sort) {
@@ -732,12 +735,20 @@ private function searchInDirectory($dir)
     /**
      * Normalizes given directory names by removing trailing slashes.
      *
+     * Excluding: (s)ftp:// wrapper
+     *
      * @param string $dir
      *
      * @return string
      */
     private function normalizeDir($dir)
     {
-        return rtrim($dir, '/'.\DIRECTORY_SEPARATOR);
+        $dir = rtrim($dir, '/'.\DIRECTORY_SEPARATOR);
+
+        if (preg_match('#^s?ftp://#', $dir)) {
+            $dir .= '/';
+        }
+
+        return $dir;
     }
 }
diff --git a/vendor/symfony/finder/Glob.php b/vendor/symfony/finder/Glob.php
index d8df62bfea..ea76d51ae0 100644
--- a/vendor/symfony/finder/Glob.php
+++ b/vendor/symfony/finder/Glob.php
@@ -14,14 +14,14 @@
 /**
  * Glob matches globbing patterns against text.
  *
- *   if match_glob("foo.*", "foo.bar") echo "matched\n";
+ *     if match_glob("foo.*", "foo.bar") echo "matched\n";
  *
- * // prints foo.bar and foo.baz
- * $regex = glob_to_regex("foo.*");
- * for (array('foo.bar', 'foo.baz', 'foo', 'bar') as $t)
- * {
- *   if (/$regex/) echo "matched: $car\n";
- * }
+ *     // prints foo.bar and foo.baz
+ *     $regex = glob_to_regex("foo.*");
+ *     for (['foo.bar', 'foo.baz', 'foo', 'bar'] as $t)
+ *     {
+ *         if (/$regex/) echo "matched: $car\n";
+ *     }
  *
  * Glob implements glob(3) style matching that can be used to match
  * against text, rather than fetching names from a filesystem.
diff --git a/vendor/symfony/finder/Iterator/CustomFilterIterator.php b/vendor/symfony/finder/Iterator/CustomFilterIterator.php
index 6666e07ec5..896f7e912f 100644
--- a/vendor/symfony/finder/Iterator/CustomFilterIterator.php
+++ b/vendor/symfony/finder/Iterator/CustomFilterIterator.php
@@ -21,7 +21,7 @@
  */
 class CustomFilterIterator extends FilterIterator
 {
-    private $filters = array();
+    private $filters = [];
 
     /**
      * @param \Iterator  $iterator The Iterator to filter
diff --git a/vendor/symfony/finder/Iterator/DateRangeFilterIterator.php b/vendor/symfony/finder/Iterator/DateRangeFilterIterator.php
index b01e5e3f5d..8a47321a3c 100644
--- a/vendor/symfony/finder/Iterator/DateRangeFilterIterator.php
+++ b/vendor/symfony/finder/Iterator/DateRangeFilterIterator.php
@@ -20,7 +20,7 @@
  */
 class DateRangeFilterIterator extends FilterIterator
 {
-    private $comparators = array();
+    private $comparators = [];
 
     /**
      * @param \Iterator        $iterator    The Iterator to filter
diff --git a/vendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php b/vendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php
index c57128c278..bc0e6fc1e1 100644
--- a/vendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php
+++ b/vendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php
@@ -20,7 +20,7 @@ class ExcludeDirectoryFilterIterator extends FilterIterator implements \Recursiv
 {
     private $iterator;
     private $isRecursive;
-    private $excludedDirs = array();
+    private $excludedDirs = [];
     private $excludedPattern;
 
     /**
@@ -31,7 +31,7 @@ public function __construct(\Iterator $iterator, array $directories)
     {
         $this->iterator = $iterator;
         $this->isRecursive = $iterator instanceof \RecursiveIterator;
-        $patterns = array();
+        $patterns = [];
         foreach ($directories as $directory) {
             $directory = rtrim($directory, '/');
             if (!$this->isRecursive || false !== strpos($directory, '/')) {
@@ -75,7 +75,7 @@ public function hasChildren()
 
     public function getChildren()
     {
-        $children = new self($this->iterator->getChildren(), array());
+        $children = new self($this->iterator->getChildren(), []);
         $children->excludedDirs = $this->excludedDirs;
         $children->excludedPattern = $this->excludedPattern;
 
diff --git a/vendor/symfony/finder/Iterator/MultiplePcreFilterIterator.php b/vendor/symfony/finder/Iterator/MultiplePcreFilterIterator.php
index fc8854047e..ee365a58b0 100644
--- a/vendor/symfony/finder/Iterator/MultiplePcreFilterIterator.php
+++ b/vendor/symfony/finder/Iterator/MultiplePcreFilterIterator.php
@@ -18,8 +18,8 @@
  */
 abstract class MultiplePcreFilterIterator extends FilterIterator
 {
-    protected $matchRegexps = array();
-    protected $noMatchRegexps = array();
+    protected $matchRegexps = [];
+    protected $noMatchRegexps = [];
 
     /**
      * @param \Iterator $iterator        The Iterator to filter
@@ -91,7 +91,7 @@ protected function isRegex($str)
                 return !preg_match('/[*?[:alnum:] \\\\]/', $start);
             }
 
-            foreach (array(array('{', '}'), array('(', ')'), array('[', ']'), array('<', '>')) as $delimiters) {
+            foreach ([['{', '}'], ['(', ')'], ['[', ']'], ['<', '>']] as $delimiters) {
                 if ($start === $delimiters[0] && $end === $delimiters[1]) {
                     return true;
                 }
diff --git a/vendor/symfony/finder/Iterator/RecursiveDirectoryIterator.php b/vendor/symfony/finder/Iterator/RecursiveDirectoryIterator.php
index 3e6ef86ade..ab48a2b8a1 100644
--- a/vendor/symfony/finder/Iterator/RecursiveDirectoryIterator.php
+++ b/vendor/symfony/finder/Iterator/RecursiveDirectoryIterator.php
@@ -100,7 +100,7 @@ public function getChildren()
         } catch (\UnexpectedValueException $e) {
             if ($this->ignoreUnreadableDirs) {
                 // If directory is unreadable and finder is set to ignore it, a fake empty content is returned.
-                return new \RecursiveArrayIterator(array());
+                return new \RecursiveArrayIterator([]);
             } else {
                 throw new AccessDeniedException($e->getMessage(), $e->getCode(), $e);
             }
diff --git a/vendor/symfony/finder/Iterator/SizeRangeFilterIterator.php b/vendor/symfony/finder/Iterator/SizeRangeFilterIterator.php
index bd1a7fb700..4e521c8c90 100644
--- a/vendor/symfony/finder/Iterator/SizeRangeFilterIterator.php
+++ b/vendor/symfony/finder/Iterator/SizeRangeFilterIterator.php
@@ -20,7 +20,7 @@
  */
 class SizeRangeFilterIterator extends FilterIterator
 {
-    private $comparators = array();
+    private $comparators = [];
 
     /**
      * @param \Iterator          $iterator    The Iterator to filter
diff --git a/vendor/symfony/finder/Iterator/SortableIterator.php b/vendor/symfony/finder/Iterator/SortableIterator.php
index 53f8e31c6c..3c7157adb9 100644
--- a/vendor/symfony/finder/Iterator/SortableIterator.php
+++ b/vendor/symfony/finder/Iterator/SortableIterator.php
@@ -39,7 +39,7 @@ public function __construct(\Traversable $iterator, $sort)
 
         if (self::SORT_BY_NAME === $sort) {
             $this->sort = function ($a, $b) {
-                return strcmp($a->getRealpath() ?: $a->getPathname(), $b->getRealpath() ?: $b->getPathname());
+                return strcmp($a->getRealPath() ?: $a->getPathname(), $b->getRealPath() ?: $b->getPathname());
             };
         } elseif (self::SORT_BY_TYPE === $sort) {
             $this->sort = function ($a, $b) {
@@ -49,7 +49,7 @@ public function __construct(\Traversable $iterator, $sort)
                     return 1;
                 }
 
-                return strcmp($a->getRealpath() ?: $a->getPathname(), $b->getRealpath() ?: $b->getPathname());
+                return strcmp($a->getRealPath() ?: $a->getPathname(), $b->getRealPath() ?: $b->getPathname());
             };
         } elseif (self::SORT_BY_ACCESSED_TIME === $sort) {
             $this->sort = function ($a, $b) {
diff --git a/vendor/symfony/finder/LICENSE b/vendor/symfony/finder/LICENSE
index 21d7fb9e2f..a677f43763 100644
--- a/vendor/symfony/finder/LICENSE
+++ b/vendor/symfony/finder/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2004-2018 Fabien Potencier
+Copyright (c) 2004-2019 Fabien Potencier
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/vendor/symfony/finder/Tests/Comparator/ComparatorTest.php b/vendor/symfony/finder/Tests/Comparator/ComparatorTest.php
index 656fc57a4b..2f56092ed8 100644
--- a/vendor/symfony/finder/Tests/Comparator/ComparatorTest.php
+++ b/vendor/symfony/finder/Tests/Comparator/ComparatorTest.php
@@ -58,8 +58,8 @@ public function testTest($operator, $target, $match, $noMatch)
 
     public function getTestData()
     {
-        return array(
-            array('<', '1000', array('500', '999'), array('1000', '1500')),
-        );
+        return [
+            ['<', '1000', ['500', '999'], ['1000', '1500']],
+        ];
     }
 }
diff --git a/vendor/symfony/finder/Tests/Comparator/DateComparatorTest.php b/vendor/symfony/finder/Tests/Comparator/DateComparatorTest.php
index 8a6c1ddfd1..3aebf52449 100644
--- a/vendor/symfony/finder/Tests/Comparator/DateComparatorTest.php
+++ b/vendor/symfony/finder/Tests/Comparator/DateComparatorTest.php
@@ -51,14 +51,14 @@ public function testTest($test, $match, $noMatch)
 
     public function getTestData()
     {
-        return array(
-            array('< 2005-10-10', array(strtotime('2005-10-09')), array(strtotime('2005-10-15'))),
-            array('until 2005-10-10', array(strtotime('2005-10-09')), array(strtotime('2005-10-15'))),
-            array('before 2005-10-10', array(strtotime('2005-10-09')), array(strtotime('2005-10-15'))),
-            array('> 2005-10-10', array(strtotime('2005-10-15')), array(strtotime('2005-10-09'))),
-            array('after 2005-10-10', array(strtotime('2005-10-15')), array(strtotime('2005-10-09'))),
-            array('since 2005-10-10', array(strtotime('2005-10-15')), array(strtotime('2005-10-09'))),
-            array('!= 2005-10-10', array(strtotime('2005-10-11')), array(strtotime('2005-10-10'))),
-        );
+        return [
+            ['< 2005-10-10', [strtotime('2005-10-09')], [strtotime('2005-10-15')]],
+            ['until 2005-10-10', [strtotime('2005-10-09')], [strtotime('2005-10-15')]],
+            ['before 2005-10-10', [strtotime('2005-10-09')], [strtotime('2005-10-15')]],
+            ['> 2005-10-10', [strtotime('2005-10-15')], [strtotime('2005-10-09')]],
+            ['after 2005-10-10', [strtotime('2005-10-15')], [strtotime('2005-10-09')]],
+            ['since 2005-10-10', [strtotime('2005-10-15')], [strtotime('2005-10-09')]],
+            ['!= 2005-10-10', [strtotime('2005-10-11')], [strtotime('2005-10-10')]],
+        ];
     }
 }
diff --git a/vendor/symfony/finder/Tests/Comparator/NumberComparatorTest.php b/vendor/symfony/finder/Tests/Comparator/NumberComparatorTest.php
index 30a75c738c..5b49b660a7 100644
--- a/vendor/symfony/finder/Tests/Comparator/NumberComparatorTest.php
+++ b/vendor/symfony/finder/Tests/Comparator/NumberComparatorTest.php
@@ -53,39 +53,39 @@ public function testTest($test, $match, $noMatch)
 
     public function getTestData()
     {
-        return array(
-            array('< 1000', array('500', '999'), array('1000', '1500')),
+        return [
+            ['< 1000', ['500', '999'], ['1000', '1500']],
 
-            array('< 1K', array('500', '999'), array('1000', '1500')),
-            array('<1k', array('500', '999'), array('1000', '1500')),
-            array('  < 1 K ', array('500', '999'), array('1000', '1500')),
-            array('<= 1K', array('1000'), array('1001')),
-            array('> 1K', array('1001'), array('1000')),
-            array('>= 1K', array('1000'), array('999')),
+            ['< 1K', ['500', '999'], ['1000', '1500']],
+            ['<1k', ['500', '999'], ['1000', '1500']],
+            ['  < 1 K ', ['500', '999'], ['1000', '1500']],
+            ['<= 1K', ['1000'], ['1001']],
+            ['> 1K', ['1001'], ['1000']],
+            ['>= 1K', ['1000'], ['999']],
 
-            array('< 1KI', array('500', '1023'), array('1024', '1500')),
-            array('<= 1KI', array('1024'), array('1025')),
-            array('> 1KI', array('1025'), array('1024')),
-            array('>= 1KI', array('1024'), array('1023')),
+            ['< 1KI', ['500', '1023'], ['1024', '1500']],
+            ['<= 1KI', ['1024'], ['1025']],
+            ['> 1KI', ['1025'], ['1024']],
+            ['>= 1KI', ['1024'], ['1023']],
 
-            array('1KI', array('1024'), array('1023', '1025')),
-            array('==1KI', array('1024'), array('1023', '1025')),
+            ['1KI', ['1024'], ['1023', '1025']],
+            ['==1KI', ['1024'], ['1023', '1025']],
 
-            array('==1m', array('1000000'), array('999999', '1000001')),
-            array('==1mi', array(1024 * 1024), array(1024 * 1024 - 1, 1024 * 1024 + 1)),
+            ['==1m', ['1000000'], ['999999', '1000001']],
+            ['==1mi', [1024 * 1024], [1024 * 1024 - 1, 1024 * 1024 + 1]],
 
-            array('==1g', array('1000000000'), array('999999999', '1000000001')),
-            array('==1gi', array(1024 * 1024 * 1024), array(1024 * 1024 * 1024 - 1, 1024 * 1024 * 1024 + 1)),
+            ['==1g', ['1000000000'], ['999999999', '1000000001']],
+            ['==1gi', [1024 * 1024 * 1024], [1024 * 1024 * 1024 - 1, 1024 * 1024 * 1024 + 1]],
 
-            array('!= 1000', array('500', '999'), array('1000')),
-        );
+            ['!= 1000', ['500', '999'], ['1000']],
+        ];
     }
 
     public function getConstructorTestData()
     {
-        return array(
-            array(
-                array(
+        return [
+            [
+                [
                     '1', '0',
                     '3.5', '33.55', '123.456', '123456.78',
                     '.1', '.123',
@@ -94,15 +94,15 @@ public function getConstructorTestData()
                     '==1', '!=1', '<1', '>1', '<=1', '>=1',
                     '==1k', '==1ki', '==1m', '==1mi', '==1g', '==1gi',
                     '1k', '1ki', '1m', '1mi', '1g', '1gi',
-                ),
-                array(
+                ],
+                [
                     false, null, '',
                     ' ', 'foobar',
                     '=1', '===1',
                     '0 . 1', '123 .45', '234. 567',
                     '..', '.0.', '0.1.2',
-                ),
-            ),
-        );
+                ],
+            ],
+        ];
     }
 }
diff --git a/vendor/symfony/finder/Tests/FinderTest.php b/vendor/symfony/finder/Tests/FinderTest.php
index fbdcc36e6b..c0eac6da12 100644
--- a/vendor/symfony/finder/Tests/FinderTest.php
+++ b/vendor/symfony/finder/Tests/FinderTest.php
@@ -24,33 +24,33 @@ public function testDirectories()
     {
         $finder = $this->buildFinder();
         $this->assertSame($finder, $finder->directories());
-        $this->assertIterator($this->toAbsolute(array('foo', 'toto')), $finder->in(self::$tmpDir)->getIterator());
+        $this->assertIterator($this->toAbsolute(['foo', 'toto']), $finder->in(self::$tmpDir)->getIterator());
 
         $finder = $this->buildFinder();
         $finder->directories();
         $finder->files();
         $finder->directories();
-        $this->assertIterator($this->toAbsolute(array('foo', 'toto')), $finder->in(self::$tmpDir)->getIterator());
+        $this->assertIterator($this->toAbsolute(['foo', 'toto']), $finder->in(self::$tmpDir)->getIterator());
     }
 
     public function testFiles()
     {
         $finder = $this->buildFinder();
         $this->assertSame($finder, $finder->files());
-        $this->assertIterator($this->toAbsolute(array('foo/bar.tmp', 'test.php', 'test.py', 'foo bar')), $finder->in(self::$tmpDir)->getIterator());
+        $this->assertIterator($this->toAbsolute(['foo/bar.tmp', 'test.php', 'test.py', 'foo bar']), $finder->in(self::$tmpDir)->getIterator());
 
         $finder = $this->buildFinder();
         $finder->files();
         $finder->directories();
         $finder->files();
-        $this->assertIterator($this->toAbsolute(array('foo/bar.tmp', 'test.php', 'test.py', 'foo bar')), $finder->in(self::$tmpDir)->getIterator());
+        $this->assertIterator($this->toAbsolute(['foo/bar.tmp', 'test.php', 'test.py', 'foo bar']), $finder->in(self::$tmpDir)->getIterator());
     }
 
     public function testRemoveTrailingSlash()
     {
         $finder = $this->buildFinder();
 
-        $expected = $this->toAbsolute(array('foo/bar.tmp', 'test.php', 'test.py', 'foo bar'));
+        $expected = $this->toAbsolute(['foo/bar.tmp', 'test.php', 'test.py', 'foo bar']);
         $in = self::$tmpDir.'//';
 
         $this->assertIterator($expected, $finder->in($in)->files()->getIterator());
@@ -65,7 +65,7 @@ public function testSymlinksNotResolved()
         $finder = $this->buildFinder();
 
         symlink($this->toAbsolute('foo'), $this->toAbsolute('baz'));
-        $expected = $this->toAbsolute(array('baz/bar.tmp'));
+        $expected = $this->toAbsolute(['baz/bar.tmp']);
         $in = self::$tmpDir.'/baz/';
         try {
             $this->assertIterator($expected, $finder->in($in)->files()->getIterator());
@@ -80,7 +80,7 @@ public function testBackPathNotNormalized()
     {
         $finder = $this->buildFinder();
 
-        $expected = $this->toAbsolute(array('foo/../foo/bar.tmp'));
+        $expected = $this->toAbsolute(['foo/../foo/bar.tmp']);
         $in = self::$tmpDir.'/foo/../foo/';
         $this->assertIterator($expected, $finder->in($in)->files()->getIterator());
     }
@@ -89,68 +89,68 @@ public function testDepth()
     {
         $finder = $this->buildFinder();
         $this->assertSame($finder, $finder->depth('< 1'));
-        $this->assertIterator($this->toAbsolute(array('foo', 'test.php', 'test.py', 'toto', 'foo bar')), $finder->in(self::$tmpDir)->getIterator());
+        $this->assertIterator($this->toAbsolute(['foo', 'test.php', 'test.py', 'toto', 'foo bar']), $finder->in(self::$tmpDir)->getIterator());
 
         $finder = $this->buildFinder();
         $this->assertSame($finder, $finder->depth('<= 0'));
-        $this->assertIterator($this->toAbsolute(array('foo', 'test.php', 'test.py', 'toto', 'foo bar')), $finder->in(self::$tmpDir)->getIterator());
+        $this->assertIterator($this->toAbsolute(['foo', 'test.php', 'test.py', 'toto', 'foo bar']), $finder->in(self::$tmpDir)->getIterator());
 
         $finder = $this->buildFinder();
         $this->assertSame($finder, $finder->depth('>= 1'));
-        $this->assertIterator($this->toAbsolute(array('foo/bar.tmp')), $finder->in(self::$tmpDir)->getIterator());
+        $this->assertIterator($this->toAbsolute(['foo/bar.tmp']), $finder->in(self::$tmpDir)->getIterator());
 
         $finder = $this->buildFinder();
         $finder->depth('< 1')->depth('>= 1');
-        $this->assertIterator(array(), $finder->in(self::$tmpDir)->getIterator());
+        $this->assertIterator([], $finder->in(self::$tmpDir)->getIterator());
     }
 
     public function testName()
     {
         $finder = $this->buildFinder();
         $this->assertSame($finder, $finder->name('*.php'));
-        $this->assertIterator($this->toAbsolute(array('test.php')), $finder->in(self::$tmpDir)->getIterator());
+        $this->assertIterator($this->toAbsolute(['test.php']), $finder->in(self::$tmpDir)->getIterator());
 
         $finder = $this->buildFinder();
         $finder->name('test.ph*');
         $finder->name('test.py');
-        $this->assertIterator($this->toAbsolute(array('test.php', 'test.py')), $finder->in(self::$tmpDir)->getIterator());
+        $this->assertIterator($this->toAbsolute(['test.php', 'test.py']), $finder->in(self::$tmpDir)->getIterator());
 
         $finder = $this->buildFinder();
         $finder->name('~^test~i');
-        $this->assertIterator($this->toAbsolute(array('test.php', 'test.py')), $finder->in(self::$tmpDir)->getIterator());
+        $this->assertIterator($this->toAbsolute(['test.php', 'test.py']), $finder->in(self::$tmpDir)->getIterator());
 
         $finder = $this->buildFinder();
         $finder->name('~\\.php$~i');
-        $this->assertIterator($this->toAbsolute(array('test.php')), $finder->in(self::$tmpDir)->getIterator());
+        $this->assertIterator($this->toAbsolute(['test.php']), $finder->in(self::$tmpDir)->getIterator());
 
         $finder = $this->buildFinder();
         $finder->name('test.p{hp,y}');
-        $this->assertIterator($this->toAbsolute(array('test.php', 'test.py')), $finder->in(self::$tmpDir)->getIterator());
+        $this->assertIterator($this->toAbsolute(['test.php', 'test.py']), $finder->in(self::$tmpDir)->getIterator());
     }
 
     public function testNotName()
     {
         $finder = $this->buildFinder();
         $this->assertSame($finder, $finder->notName('*.php'));
-        $this->assertIterator($this->toAbsolute(array('foo', 'foo/bar.tmp', 'test.py', 'toto', 'foo bar')), $finder->in(self::$tmpDir)->getIterator());
+        $this->assertIterator($this->toAbsolute(['foo', 'foo/bar.tmp', 'test.py', 'toto', 'foo bar']), $finder->in(self::$tmpDir)->getIterator());
 
         $finder = $this->buildFinder();
         $finder->notName('*.php');
         $finder->notName('*.py');
-        $this->assertIterator($this->toAbsolute(array('foo', 'foo/bar.tmp', 'toto', 'foo bar')), $finder->in(self::$tmpDir)->getIterator());
+        $this->assertIterator($this->toAbsolute(['foo', 'foo/bar.tmp', 'toto', 'foo bar']), $finder->in(self::$tmpDir)->getIterator());
 
         $finder = $this->buildFinder();
         $finder->name('test.ph*');
         $finder->name('test.py');
         $finder->notName('*.php');
         $finder->notName('*.py');
-        $this->assertIterator(array(), $finder->in(self::$tmpDir)->getIterator());
+        $this->assertIterator([], $finder->in(self::$tmpDir)->getIterator());
 
         $finder = $this->buildFinder();
         $finder->name('test.ph*');
         $finder->name('test.py');
         $finder->notName('*.p{hp,y}');
-        $this->assertIterator(array(), $finder->in(self::$tmpDir)->getIterator());
+        $this->assertIterator([], $finder->in(self::$tmpDir)->getIterator());
     }
 
     /**
@@ -160,107 +160,130 @@ public function testRegexName($regex)
     {
         $finder = $this->buildFinder();
         $finder->name($regex);
-        $this->assertIterator($this->toAbsolute(array('test.py', 'test.php')), $finder->in(self::$tmpDir)->getIterator());
+        $this->assertIterator($this->toAbsolute(['test.py', 'test.php']), $finder->in(self::$tmpDir)->getIterator());
     }
 
     public function testSize()
     {
         $finder = $this->buildFinder();
         $this->assertSame($finder, $finder->files()->size('< 1K')->size('> 500'));
-        $this->assertIterator($this->toAbsolute(array('test.php')), $finder->in(self::$tmpDir)->getIterator());
+        $this->assertIterator($this->toAbsolute(['test.php']), $finder->in(self::$tmpDir)->getIterator());
     }
 
     public function testDate()
     {
         $finder = $this->buildFinder();
         $this->assertSame($finder, $finder->files()->date('until last month'));
-        $this->assertIterator($this->toAbsolute(array('foo/bar.tmp', 'test.php')), $finder->in(self::$tmpDir)->getIterator());
+        $this->assertIterator($this->toAbsolute(['foo/bar.tmp', 'test.php']), $finder->in(self::$tmpDir)->getIterator());
     }
 
     public function testExclude()
     {
         $finder = $this->buildFinder();
         $this->assertSame($finder, $finder->exclude('foo'));
-        $this->assertIterator($this->toAbsolute(array('test.php', 'test.py', 'toto', 'foo bar')), $finder->in(self::$tmpDir)->getIterator());
+        $this->assertIterator($this->toAbsolute(['test.php', 'test.py', 'toto', 'foo bar']), $finder->in(self::$tmpDir)->getIterator());
     }
 
     public function testIgnoreVCS()
     {
         $finder = $this->buildFinder();
         $this->assertSame($finder, $finder->ignoreVCS(false)->ignoreDotFiles(false));
-        $this->assertIterator($this->toAbsolute(array('.git', 'foo', 'foo/bar.tmp', 'test.php', 'test.py', 'toto', 'toto/.git', '.bar', '.foo', '.foo/.bar', '.foo/bar', 'foo bar')), $finder->in(self::$tmpDir)->getIterator());
+        $this->assertIterator($this->toAbsolute(['.git', 'foo', 'foo/bar.tmp', 'test.php', 'test.py', 'toto', 'toto/.git', '.bar', '.foo', '.foo/.bar', '.foo/bar', 'foo bar']), $finder->in(self::$tmpDir)->getIterator());
 
         $finder = $this->buildFinder();
         $finder->ignoreVCS(false)->ignoreVCS(false)->ignoreDotFiles(false);
-        $this->assertIterator($this->toAbsolute(array('.git', 'foo', 'foo/bar.tmp', 'test.php', 'test.py', 'toto', 'toto/.git', '.bar', '.foo', '.foo/.bar', '.foo/bar', 'foo bar')), $finder->in(self::$tmpDir)->getIterator());
+        $this->assertIterator($this->toAbsolute(['.git', 'foo', 'foo/bar.tmp', 'test.php', 'test.py', 'toto', 'toto/.git', '.bar', '.foo', '.foo/.bar', '.foo/bar', 'foo bar']), $finder->in(self::$tmpDir)->getIterator());
 
         $finder = $this->buildFinder();
         $this->assertSame($finder, $finder->ignoreVCS(true)->ignoreDotFiles(false));
-        $this->assertIterator($this->toAbsolute(array('foo', 'foo/bar.tmp', 'test.php', 'test.py', 'toto', '.bar', '.foo', '.foo/.bar', '.foo/bar', 'foo bar')), $finder->in(self::$tmpDir)->getIterator());
+        $this->assertIterator($this->toAbsolute(['foo', 'foo/bar.tmp', 'test.php', 'test.py', 'toto', '.bar', '.foo', '.foo/.bar', '.foo/bar', 'foo bar']), $finder->in(self::$tmpDir)->getIterator());
+    }
+
+    public function testIgnoreVCSCanBeDisabledAfterFirstIteration()
+    {
+        $finder = $this->buildFinder();
+        $finder->in(self::$tmpDir);
+        $finder->ignoreDotFiles(false);
+
+        $this->assertIterator($this->toAbsolute(['foo', 'foo/bar.tmp', 'test.php', 'test.py', 'toto', '.bar', '.foo', '.foo/.bar', '.foo/bar', 'foo bar']), $finder->getIterator());
+
+        $finder->ignoreVCS(false);
+        $this->assertIterator($this->toAbsolute(['.git', 'foo', 'foo/bar.tmp', 'test.php', 'test.py', 'toto', 'toto/.git', '.bar', '.foo', '.foo/.bar', '.foo/bar', 'foo bar']), $finder->getIterator());
     }
 
     public function testIgnoreDotFiles()
     {
         $finder = $this->buildFinder();
         $this->assertSame($finder, $finder->ignoreDotFiles(false)->ignoreVCS(false));
-        $this->assertIterator($this->toAbsolute(array('.git', '.bar', '.foo', '.foo/.bar', '.foo/bar', 'foo', 'foo/bar.tmp', 'test.php', 'test.py', 'toto', 'toto/.git', 'foo bar')), $finder->in(self::$tmpDir)->getIterator());
+        $this->assertIterator($this->toAbsolute(['.git', '.bar', '.foo', '.foo/.bar', '.foo/bar', 'foo', 'foo/bar.tmp', 'test.php', 'test.py', 'toto', 'toto/.git', 'foo bar']), $finder->in(self::$tmpDir)->getIterator());
 
         $finder = $this->buildFinder();
         $finder->ignoreDotFiles(false)->ignoreDotFiles(false)->ignoreVCS(false);
-        $this->assertIterator($this->toAbsolute(array('.git', '.bar', '.foo', '.foo/.bar', '.foo/bar', 'foo', 'foo/bar.tmp', 'test.php', 'test.py', 'toto', 'toto/.git', 'foo bar')), $finder->in(self::$tmpDir)->getIterator());
+        $this->assertIterator($this->toAbsolute(['.git', '.bar', '.foo', '.foo/.bar', '.foo/bar', 'foo', 'foo/bar.tmp', 'test.php', 'test.py', 'toto', 'toto/.git', 'foo bar']), $finder->in(self::$tmpDir)->getIterator());
 
         $finder = $this->buildFinder();
         $this->assertSame($finder, $finder->ignoreDotFiles(true)->ignoreVCS(false));
-        $this->assertIterator($this->toAbsolute(array('foo', 'foo/bar.tmp', 'test.php', 'test.py', 'toto', 'foo bar')), $finder->in(self::$tmpDir)->getIterator());
+        $this->assertIterator($this->toAbsolute(['foo', 'foo/bar.tmp', 'test.php', 'test.py', 'toto', 'foo bar']), $finder->in(self::$tmpDir)->getIterator());
+    }
+
+    public function testIgnoreDotFilesCanBeDisabledAfterFirstIteration()
+    {
+        $finder = $this->buildFinder();
+        $finder->in(self::$tmpDir);
+
+        $this->assertIterator($this->toAbsolute(['foo', 'foo/bar.tmp', 'test.php', 'test.py', 'toto', 'foo bar']), $finder->getIterator());
+
+        $finder->ignoreDotFiles(false);
+        $this->assertIterator($this->toAbsolute(['foo', 'foo/bar.tmp', 'test.php', 'test.py', 'toto', '.bar', '.foo', '.foo/.bar', '.foo/bar', 'foo bar']), $finder->getIterator());
     }
 
     public function testSortByName()
     {
         $finder = $this->buildFinder();
         $this->assertSame($finder, $finder->sortByName());
-        $this->assertIterator($this->toAbsolute(array('foo', 'foo bar', 'foo/bar.tmp', 'test.php', 'test.py', 'toto')), $finder->in(self::$tmpDir)->getIterator());
+        $this->assertIterator($this->toAbsolute(['foo', 'foo bar', 'foo/bar.tmp', 'test.php', 'test.py', 'toto']), $finder->in(self::$tmpDir)->getIterator());
     }
 
     public function testSortByType()
     {
         $finder = $this->buildFinder();
         $this->assertSame($finder, $finder->sortByType());
-        $this->assertIterator($this->toAbsolute(array('foo', 'foo bar', 'toto', 'foo/bar.tmp', 'test.php', 'test.py')), $finder->in(self::$tmpDir)->getIterator());
+        $this->assertIterator($this->toAbsolute(['foo', 'foo bar', 'toto', 'foo/bar.tmp', 'test.php', 'test.py']), $finder->in(self::$tmpDir)->getIterator());
     }
 
     public function testSortByAccessedTime()
     {
         $finder = $this->buildFinder();
         $this->assertSame($finder, $finder->sortByAccessedTime());
-        $this->assertIterator($this->toAbsolute(array('foo/bar.tmp', 'test.php', 'toto', 'test.py', 'foo', 'foo bar')), $finder->in(self::$tmpDir)->getIterator());
+        $this->assertIterator($this->toAbsolute(['foo/bar.tmp', 'test.php', 'toto', 'test.py', 'foo', 'foo bar']), $finder->in(self::$tmpDir)->getIterator());
     }
 
     public function testSortByChangedTime()
     {
         $finder = $this->buildFinder();
         $this->assertSame($finder, $finder->sortByChangedTime());
-        $this->assertIterator($this->toAbsolute(array('toto', 'test.py', 'test.php', 'foo/bar.tmp', 'foo', 'foo bar')), $finder->in(self::$tmpDir)->getIterator());
+        $this->assertIterator($this->toAbsolute(['toto', 'test.py', 'test.php', 'foo/bar.tmp', 'foo', 'foo bar']), $finder->in(self::$tmpDir)->getIterator());
     }
 
     public function testSortByModifiedTime()
     {
         $finder = $this->buildFinder();
         $this->assertSame($finder, $finder->sortByModifiedTime());
-        $this->assertIterator($this->toAbsolute(array('foo/bar.tmp', 'test.php', 'toto', 'test.py', 'foo', 'foo bar')), $finder->in(self::$tmpDir)->getIterator());
+        $this->assertIterator($this->toAbsolute(['foo/bar.tmp', 'test.php', 'toto', 'test.py', 'foo', 'foo bar']), $finder->in(self::$tmpDir)->getIterator());
     }
 
     public function testSort()
     {
         $finder = $this->buildFinder();
         $this->assertSame($finder, $finder->sort(function (\SplFileInfo $a, \SplFileInfo $b) { return strcmp($a->getRealPath(), $b->getRealPath()); }));
-        $this->assertIterator($this->toAbsolute(array('foo', 'foo bar', 'foo/bar.tmp', 'test.php', 'test.py', 'toto')), $finder->in(self::$tmpDir)->getIterator());
+        $this->assertIterator($this->toAbsolute(['foo', 'foo bar', 'foo/bar.tmp', 'test.php', 'test.py', 'toto']), $finder->in(self::$tmpDir)->getIterator());
     }
 
     public function testFilter()
     {
         $finder = $this->buildFinder();
         $this->assertSame($finder, $finder->filter(function (\SplFileInfo $f) { return false !== strpos($f, 'test'); }));
-        $this->assertIterator($this->toAbsolute(array('test.php', 'test.py')), $finder->in(self::$tmpDir)->getIterator());
+        $this->assertIterator($this->toAbsolute(['test.php', 'test.py']), $finder->in(self::$tmpDir)->getIterator());
     }
 
     public function testFollowLinks()
@@ -271,19 +294,19 @@ public function testFollowLinks()
 
         $finder = $this->buildFinder();
         $this->assertSame($finder, $finder->followLinks());
-        $this->assertIterator($this->toAbsolute(array('foo', 'foo/bar.tmp', 'test.php', 'test.py', 'toto', 'foo bar')), $finder->in(self::$tmpDir)->getIterator());
+        $this->assertIterator($this->toAbsolute(['foo', 'foo/bar.tmp', 'test.php', 'test.py', 'toto', 'foo bar']), $finder->in(self::$tmpDir)->getIterator());
     }
 
     public function testIn()
     {
         $finder = $this->buildFinder();
-        $iterator = $finder->files()->name('*.php')->depth('< 1')->in(array(self::$tmpDir, __DIR__))->getIterator();
+        $iterator = $finder->files()->name('*.php')->depth('< 1')->in([self::$tmpDir, __DIR__])->getIterator();
 
-        $expected = array(
+        $expected = [
             self::$tmpDir.\DIRECTORY_SEPARATOR.'test.php',
             __DIR__.\DIRECTORY_SEPARATOR.'FinderTest.php',
             __DIR__.\DIRECTORY_SEPARATOR.'GlobTest.php',
-        );
+        ];
 
         $this->assertIterator($expected, $iterator);
     }
@@ -300,9 +323,9 @@ public function testInWithNonExistentDirectory()
     public function testInWithGlob()
     {
         $finder = $this->buildFinder();
-        $finder->in(array(__DIR__.'/Fixtures/*/B/C/', __DIR__.'/Fixtures/*/*/B/C/'))->getIterator();
+        $finder->in([__DIR__.'/Fixtures/*/B/C/', __DIR__.'/Fixtures/*/*/B/C/'])->getIterator();
 
-        $this->assertIterator($this->toAbsoluteFixtures(array('A/B/C/abc.dat', 'copy/A/B/C/abc.dat.copy')), $finder);
+        $this->assertIterator($this->toAbsoluteFixtures(['A/B/C/abc.dat', 'copy/A/B/C/abc.dat.copy']), $finder);
     }
 
     /**
@@ -316,10 +339,14 @@ public function testInWithNonDirectoryGlob()
 
     public function testInWithGlobBrace()
     {
+        if (!\defined('GLOB_BRACE')) {
+            $this->markTestSkipped('Glob brace is not supported on this system.');
+        }
+
         $finder = $this->buildFinder();
-        $finder->in(array(__DIR__.'/Fixtures/{A,copy/A}/B/C'))->getIterator();
+        $finder->in([__DIR__.'/Fixtures/{A,copy/A}/B/C'])->getIterator();
 
-        $this->assertIterator($this->toAbsoluteFixtures(array('A/B/C/abc.dat', 'copy/A/B/C/abc.dat.copy')), $finder);
+        $this->assertIterator($this->toAbsoluteFixtures(['A/B/C/abc.dat', 'copy/A/B/C/abc.dat.copy']), $finder);
     }
 
     /**
@@ -334,12 +361,12 @@ public function testGetIteratorWithoutIn()
     public function testGetIterator()
     {
         $finder = $this->buildFinder();
-        $dirs = array();
+        $dirs = [];
         foreach ($finder->directories()->in(self::$tmpDir) as $dir) {
             $dirs[] = (string) $dir;
         }
 
-        $expected = $this->toAbsolute(array('foo', 'toto'));
+        $expected = $this->toAbsolute(['foo', 'toto']);
 
         sort($dirs);
         sort($expected);
@@ -360,13 +387,13 @@ public function testRelativePath()
     {
         $finder = $this->buildFinder()->in(self::$tmpDir);
 
-        $paths = array();
+        $paths = [];
 
         foreach ($finder as $file) {
             $paths[] = $file->getRelativePath();
         }
 
-        $ref = array('', '', '', '', 'foo', '');
+        $ref = ['', '', '', '', 'foo', ''];
 
         sort($ref);
         sort($paths);
@@ -378,13 +405,13 @@ public function testRelativePathname()
     {
         $finder = $this->buildFinder()->in(self::$tmpDir)->sortByName();
 
-        $paths = array();
+        $paths = [];
 
         foreach ($finder as $file) {
             $paths[] = $file->getRelativePathname();
         }
 
-        $ref = array('test.php', 'toto', 'test.py', 'foo', 'foo'.\DIRECTORY_SEPARATOR.'bar.tmp', 'foo bar');
+        $ref = ['test.php', 'toto', 'test.py', 'foo', 'foo'.\DIRECTORY_SEPARATOR.'bar.tmp', 'foo bar'];
 
         sort($paths);
         sort($ref);
@@ -402,7 +429,7 @@ public function testAppendWithAFinder()
 
         $finder = $finder->append($finder1);
 
-        $this->assertIterator($this->toAbsolute(array('foo', 'foo/bar.tmp', 'toto')), $finder->getIterator());
+        $this->assertIterator($this->toAbsolute(['foo', 'foo/bar.tmp', 'toto']), $finder->getIterator());
     }
 
     public function testAppendWithAnArray()
@@ -410,14 +437,14 @@ public function testAppendWithAnArray()
         $finder = $this->buildFinder();
         $finder->files()->in(self::$tmpDir.\DIRECTORY_SEPARATOR.'foo');
 
-        $finder->append($this->toAbsolute(array('foo', 'toto')));
+        $finder->append($this->toAbsolute(['foo', 'toto']));
 
-        $this->assertIterator($this->toAbsolute(array('foo', 'foo/bar.tmp', 'toto')), $finder->getIterator());
+        $this->assertIterator($this->toAbsolute(['foo', 'foo/bar.tmp', 'toto']), $finder->getIterator());
     }
 
     public function testAppendReturnsAFinder()
     {
-        $this->assertInstanceOf('Symfony\\Component\\Finder\\Finder', Finder::create()->append(array()));
+        $this->assertInstanceOf('Symfony\\Component\\Finder\\Finder', Finder::create()->append([]));
     }
 
     public function testAppendDoesNotRequireIn()
@@ -498,7 +525,7 @@ public function testContainsOnDirectory()
             ->directories()
             ->name('Fixtures')
             ->contains('abc');
-        $this->assertIterator(array(), $finder);
+        $this->assertIterator([], $finder);
     }
 
     public function testNotContainsOnDirectory()
@@ -508,7 +535,7 @@ public function testNotContainsOnDirectory()
             ->directories()
             ->name('Fixtures')
             ->notContains('abc');
-        $this->assertIterator(array(), $finder);
+        $this->assertIterator([], $finder);
     }
 
     /**
@@ -519,10 +546,10 @@ public function testNotContainsOnDirectory()
      */
     public function testMultipleLocations()
     {
-        $locations = array(
+        $locations = [
             self::$tmpDir.'/',
             self::$tmpDir.'/toto/',
-        );
+        ];
 
         // it is expected that there are test.py test.php in the tmpDir
         $finder = new Finder();
@@ -544,18 +571,18 @@ public function testMultipleLocations()
      */
     public function testMultipleLocationsWithSubDirectories()
     {
-        $locations = array(
+        $locations = [
             __DIR__.'/Fixtures/one',
             self::$tmpDir.\DIRECTORY_SEPARATOR.'toto',
-        );
+        ];
 
         $finder = $this->buildFinder();
         $finder->in($locations)->depth('< 10')->name('*.neon');
 
-        $expected = array(
+        $expected = [
             __DIR__.'/Fixtures/one'.\DIRECTORY_SEPARATOR.'b'.\DIRECTORY_SEPARATOR.'c.neon',
             __DIR__.'/Fixtures/one'.\DIRECTORY_SEPARATOR.'b'.\DIRECTORY_SEPARATOR.'d.neon',
-        );
+        ];
 
         $this->assertIterator($expected, $finder);
         $this->assertIteratorInForeach($expected, $finder);
@@ -578,32 +605,32 @@ public function testRegexSpecialCharsLocationWithPathRestrictionContainingStartF
         $finder->in(__DIR__.\DIRECTORY_SEPARATOR.'Fixtures'.\DIRECTORY_SEPARATOR.'r+e.gex[c]a(r)s')
             ->path('/^dir/');
 
-        $expected = array('r+e.gex[c]a(r)s'.\DIRECTORY_SEPARATOR.'dir', 'r+e.gex[c]a(r)s'.\DIRECTORY_SEPARATOR.'dir'.\DIRECTORY_SEPARATOR.'bar.dat');
+        $expected = ['r+e.gex[c]a(r)s'.\DIRECTORY_SEPARATOR.'dir', 'r+e.gex[c]a(r)s'.\DIRECTORY_SEPARATOR.'dir'.\DIRECTORY_SEPARATOR.'bar.dat'];
         $this->assertIterator($this->toAbsoluteFixtures($expected), $finder);
     }
 
     public function getContainsTestData()
     {
-        return array(
-            array('', '', array()),
-            array('foo', 'bar', array()),
-            array('', 'foobar', array('dolor.txt', 'ipsum.txt', 'lorem.txt')),
-            array('lorem ipsum dolor sit amet', 'foobar', array('lorem.txt')),
-            array('sit', 'bar', array('dolor.txt', 'ipsum.txt', 'lorem.txt')),
-            array('dolor sit amet', '@^L@m', array('dolor.txt', 'ipsum.txt')),
-            array('/^lorem ipsum dolor sit amet$/m', 'foobar', array('lorem.txt')),
-            array('lorem', 'foobar', array('lorem.txt')),
-            array('', 'lorem', array('dolor.txt', 'ipsum.txt')),
-            array('ipsum dolor sit amet', '/^IPSUM/m', array('lorem.txt')),
-        );
+        return [
+            ['', '', []],
+            ['foo', 'bar', []],
+            ['', 'foobar', ['dolor.txt', 'ipsum.txt', 'lorem.txt']],
+            ['lorem ipsum dolor sit amet', 'foobar', ['lorem.txt']],
+            ['sit', 'bar', ['dolor.txt', 'ipsum.txt', 'lorem.txt']],
+            ['dolor sit amet', '@^L@m', ['dolor.txt', 'ipsum.txt']],
+            ['/^lorem ipsum dolor sit amet$/m', 'foobar', ['lorem.txt']],
+            ['lorem', 'foobar', ['lorem.txt']],
+            ['', 'lorem', ['dolor.txt', 'ipsum.txt']],
+            ['ipsum dolor sit amet', '/^IPSUM/m', ['lorem.txt']],
+        ];
     }
 
     public function getRegexNameTestData()
     {
-        return array(
-            array('~.+\\.p.+~i'),
-            array('~t.*s~i'),
-        );
+        return [
+            ['~.+\\.p.+~i'],
+            ['~t.*s~i'],
+        ];
     }
 
     /**
@@ -621,29 +648,29 @@ public function testPath($matchPatterns, $noMatchPatterns, array $expected)
 
     public function getTestPathData()
     {
-        return array(
-            array('', '', array()),
-            array('/^A\/B\/C/', '/C$/',
-                array('A'.\DIRECTORY_SEPARATOR.'B'.\DIRECTORY_SEPARATOR.'C'.\DIRECTORY_SEPARATOR.'abc.dat'),
-            ),
-            array('/^A\/B/', 'foobar',
-                array(
+        return [
+            ['', '', []],
+            ['/^A\/B\/C/', '/C$/',
+                ['A'.\DIRECTORY_SEPARATOR.'B'.\DIRECTORY_SEPARATOR.'C'.\DIRECTORY_SEPARATOR.'abc.dat'],
+            ],
+            ['/^A\/B/', 'foobar',
+                [
                     'A'.\DIRECTORY_SEPARATOR.'B',
                     'A'.\DIRECTORY_SEPARATOR.'B'.\DIRECTORY_SEPARATOR.'C',
                     'A'.\DIRECTORY_SEPARATOR.'B'.\DIRECTORY_SEPARATOR.'ab.dat',
                     'A'.\DIRECTORY_SEPARATOR.'B'.\DIRECTORY_SEPARATOR.'C'.\DIRECTORY_SEPARATOR.'abc.dat',
-                ),
-            ),
-            array('A/B/C', 'foobar',
-                array(
+                ],
+            ],
+            ['A/B/C', 'foobar',
+                [
                     'A'.\DIRECTORY_SEPARATOR.'B'.\DIRECTORY_SEPARATOR.'C',
                     'A'.\DIRECTORY_SEPARATOR.'B'.\DIRECTORY_SEPARATOR.'C'.\DIRECTORY_SEPARATOR.'abc.dat',
                     'copy'.\DIRECTORY_SEPARATOR.'A'.\DIRECTORY_SEPARATOR.'B'.\DIRECTORY_SEPARATOR.'C',
                     'copy'.\DIRECTORY_SEPARATOR.'A'.\DIRECTORY_SEPARATOR.'B'.\DIRECTORY_SEPARATOR.'C'.\DIRECTORY_SEPARATOR.'abc.dat.copy',
-                ),
-            ),
-            array('A/B', 'foobar',
-                array(
+                ],
+            ],
+            ['A/B', 'foobar',
+                [
                     //dirs
                     'A'.\DIRECTORY_SEPARATOR.'B',
                     'A'.\DIRECTORY_SEPARATOR.'B'.\DIRECTORY_SEPARATOR.'C',
@@ -654,14 +681,14 @@ public function getTestPathData()
                     'A'.\DIRECTORY_SEPARATOR.'B'.\DIRECTORY_SEPARATOR.'C'.\DIRECTORY_SEPARATOR.'abc.dat',
                     'copy'.\DIRECTORY_SEPARATOR.'A'.\DIRECTORY_SEPARATOR.'B'.\DIRECTORY_SEPARATOR.'ab.dat.copy',
                     'copy'.\DIRECTORY_SEPARATOR.'A'.\DIRECTORY_SEPARATOR.'B'.\DIRECTORY_SEPARATOR.'C'.\DIRECTORY_SEPARATOR.'abc.dat.copy',
-                ),
-            ),
-            array('/^with space\//', 'foobar',
-                array(
+                ],
+            ],
+            ['/^with space\//', 'foobar',
+                [
                     'with space'.\DIRECTORY_SEPARATOR.'foo.txt',
-                ),
-            ),
-        );
+                ],
+            ],
+        ];
     }
 
     public function testAccessDeniedException()
@@ -679,7 +706,7 @@ public function testAccessDeniedException()
 
         if (false === $couldRead = is_readable($testDir)) {
             try {
-                $this->assertIterator($this->toAbsolute(array('foo bar', 'test.php', 'test.py')), $finder->getIterator());
+                $this->assertIterator($this->toAbsolute(['foo bar', 'test.php', 'test.py']), $finder->getIterator());
                 $this->fail('Finder should throw an exception when opening a non-readable directory.');
             } catch (\Exception $e) {
                 $expectedExceptionClass = 'Symfony\\Component\\Finder\\Exception\\AccessDeniedException';
@@ -697,7 +724,7 @@ public function testAccessDeniedException()
 
         // restore original permissions
         chmod($testDir, 0777);
-        clearstatcache($testDir);
+        clearstatcache(true, $testDir);
 
         if ($couldRead) {
             $this->markTestSkipped('could read test files while test requires unreadable');
@@ -718,12 +745,12 @@ public function testIgnoredAccessDeniedException()
         chmod($testDir, 0333);
 
         if (false === ($couldRead = is_readable($testDir))) {
-            $this->assertIterator($this->toAbsolute(array('foo bar', 'test.php', 'test.py')), $finder->getIterator());
+            $this->assertIterator($this->toAbsolute(['foo bar', 'test.php', 'test.py']), $finder->getIterator());
         }
 
         // restore original permissions
         chmod($testDir, 0777);
-        clearstatcache($testDir);
+        clearstatcache(true, $testDir);
 
         if ($couldRead) {
             $this->markTestSkipped('could read test files while test requires unreadable');
diff --git a/vendor/symfony/finder/Tests/GlobTest.php b/vendor/symfony/finder/Tests/GlobTest.php
index 3a5aab3124..2d48799c5c 100644
--- a/vendor/symfony/finder/Tests/GlobTest.php
+++ b/vendor/symfony/finder/Tests/GlobTest.php
@@ -39,7 +39,7 @@ public function testGlobToRegexDoubleStarStrictDots()
         }
         sort($match);
 
-        $this->assertSame(array('one/b/c.neon', 'one/b/d.neon'), $match);
+        $this->assertSame(['one/b/c.neon', 'one/b/d.neon'], $match);
     }
 
     public function testGlobToRegexDoubleStarNonStrictDots()
@@ -56,7 +56,7 @@ public function testGlobToRegexDoubleStarNonStrictDots()
         }
         sort($match);
 
-        $this->assertSame(array('.dot/b/c.neon', '.dot/b/d.neon', 'one/b/c.neon', 'one/b/d.neon'), $match);
+        $this->assertSame(['.dot/b/c.neon', '.dot/b/d.neon', 'one/b/c.neon', 'one/b/d.neon'], $match);
     }
 
     public function testGlobToRegexDoubleStarWithoutLeadingSlash()
@@ -73,7 +73,7 @@ public function testGlobToRegexDoubleStarWithoutLeadingSlash()
         }
         sort($match);
 
-        $this->assertSame(array('one/a', 'one/b', 'one/b/c.neon', 'one/b/d.neon'), $match);
+        $this->assertSame(['one/a', 'one/b', 'one/b/c.neon', 'one/b/d.neon'], $match);
     }
 
     public function testGlobToRegexDoubleStarWithoutLeadingSlashNotStrictLeadingDot()
@@ -90,6 +90,6 @@ public function testGlobToRegexDoubleStarWithoutLeadingSlashNotStrictLeadingDot(
         }
         sort($match);
 
-        $this->assertSame(array('one/.dot', 'one/a', 'one/b', 'one/b/c.neon', 'one/b/d.neon'), $match);
+        $this->assertSame(['one/.dot', 'one/a', 'one/b', 'one/b/c.neon', 'one/b/d.neon'], $match);
     }
 }
diff --git a/vendor/symfony/finder/Tests/Iterator/CustomFilterIteratorTest.php b/vendor/symfony/finder/Tests/Iterator/CustomFilterIteratorTest.php
index b036ad13c2..ad0187e032 100644
--- a/vendor/symfony/finder/Tests/Iterator/CustomFilterIteratorTest.php
+++ b/vendor/symfony/finder/Tests/Iterator/CustomFilterIteratorTest.php
@@ -20,7 +20,7 @@ class CustomFilterIteratorTest extends IteratorTestCase
      */
     public function testWithInvalidFilter()
     {
-        new CustomFilterIterator(new Iterator(), array('foo'));
+        new CustomFilterIterator(new Iterator(), ['foo']);
     }
 
     /**
@@ -28,7 +28,7 @@ public function testWithInvalidFilter()
      */
     public function testAccept($filters, $expected)
     {
-        $inner = new Iterator(array('test.php', 'test.py', 'foo.php'));
+        $inner = new Iterator(['test.php', 'test.py', 'foo.php']);
 
         $iterator = new CustomFilterIterator($inner, $filters);
 
@@ -37,10 +37,10 @@ public function testAccept($filters, $expected)
 
     public function getAcceptData()
     {
-        return array(
-            array(array(function (\SplFileInfo $fileinfo) { return false; }), array()),
-            array(array(function (\SplFileInfo $fileinfo) { return 0 === strpos($fileinfo, 'test'); }), array('test.php', 'test.py')),
-            array(array('is_dir'), array()),
-        );
+        return [
+            [[function (\SplFileInfo $fileinfo) { return false; }], []],
+            [[function (\SplFileInfo $fileinfo) { return 0 === strpos($fileinfo, 'test'); }], ['test.php', 'test.py']],
+            [['is_dir'], []],
+        ];
     }
 }
diff --git a/vendor/symfony/finder/Tests/Iterator/DateRangeFilterIteratorTest.php b/vendor/symfony/finder/Tests/Iterator/DateRangeFilterIteratorTest.php
index 3226f706c7..7b1800b157 100644
--- a/vendor/symfony/finder/Tests/Iterator/DateRangeFilterIteratorTest.php
+++ b/vendor/symfony/finder/Tests/Iterator/DateRangeFilterIteratorTest.php
@@ -32,7 +32,7 @@ public function testAccept($size, $expected)
 
     public function getAcceptData()
     {
-        $since20YearsAgo = array(
+        $since20YearsAgo = [
             '.git',
             'test.py',
             'foo',
@@ -45,9 +45,9 @@ public function getAcceptData()
             '.foo/.bar',
             'foo bar',
             '.foo/bar',
-        );
+        ];
 
-        $since2MonthsAgo = array(
+        $since2MonthsAgo = [
             '.git',
             'test.py',
             'foo',
@@ -58,17 +58,17 @@ public function getAcceptData()
             '.foo/.bar',
             'foo bar',
             '.foo/bar',
-        );
+        ];
 
-        $untilLastMonth = array(
+        $untilLastMonth = [
             'foo/bar.tmp',
             'test.php',
-        );
+        ];
 
-        return array(
-            array(array(new DateComparator('since 20 years ago')), $this->toAbsolute($since20YearsAgo)),
-            array(array(new DateComparator('since 2 months ago')), $this->toAbsolute($since2MonthsAgo)),
-            array(array(new DateComparator('until last month')), $this->toAbsolute($untilLastMonth)),
-        );
+        return [
+            [[new DateComparator('since 20 years ago')], $this->toAbsolute($since20YearsAgo)],
+            [[new DateComparator('since 2 months ago')], $this->toAbsolute($since2MonthsAgo)],
+            [[new DateComparator('until last month')], $this->toAbsolute($untilLastMonth)],
+        ];
     }
 }
diff --git a/vendor/symfony/finder/Tests/Iterator/DepthRangeFilterIteratorTest.php b/vendor/symfony/finder/Tests/Iterator/DepthRangeFilterIteratorTest.php
index 2e90140530..dab9723d7e 100644
--- a/vendor/symfony/finder/Tests/Iterator/DepthRangeFilterIteratorTest.php
+++ b/vendor/symfony/finder/Tests/Iterator/DepthRangeFilterIteratorTest.php
@@ -32,7 +32,7 @@ public function testAccept($minDepth, $maxDepth, $expected)
 
     public function getAcceptData()
     {
-        $lessThan1 = array(
+        $lessThan1 = [
             '.git',
             'test.py',
             'foo',
@@ -41,9 +41,9 @@ public function getAcceptData()
             '.foo',
             '.bar',
             'foo bar',
-        );
+        ];
 
-        $lessThanOrEqualTo1 = array(
+        $lessThanOrEqualTo1 = [
             '.git',
             'test.py',
             'foo',
@@ -56,28 +56,28 @@ public function getAcceptData()
             '.bar',
             'foo bar',
             '.foo/bar',
-        );
+        ];
 
-        $graterThanOrEqualTo1 = array(
+        $graterThanOrEqualTo1 = [
             'toto/.git',
             'foo/bar.tmp',
             '.foo/.bar',
             '.foo/bar',
-        );
+        ];
 
-        $equalTo1 = array(
+        $equalTo1 = [
             'toto/.git',
             'foo/bar.tmp',
             '.foo/.bar',
             '.foo/bar',
-        );
+        ];
 
-        return array(
-            array(0, 0, $this->toAbsolute($lessThan1)),
-            array(0, 1, $this->toAbsolute($lessThanOrEqualTo1)),
-            array(2, PHP_INT_MAX, array()),
-            array(1, PHP_INT_MAX, $this->toAbsolute($graterThanOrEqualTo1)),
-            array(1, 1, $this->toAbsolute($equalTo1)),
-        );
+        return [
+            [0, 0, $this->toAbsolute($lessThan1)],
+            [0, 1, $this->toAbsolute($lessThanOrEqualTo1)],
+            [2, PHP_INT_MAX, []],
+            [1, PHP_INT_MAX, $this->toAbsolute($graterThanOrEqualTo1)],
+            [1, 1, $this->toAbsolute($equalTo1)],
+        ];
     }
 }
diff --git a/vendor/symfony/finder/Tests/Iterator/ExcludeDirectoryFilterIteratorTest.php b/vendor/symfony/finder/Tests/Iterator/ExcludeDirectoryFilterIteratorTest.php
index fa192c31f4..2835ba57c8 100644
--- a/vendor/symfony/finder/Tests/Iterator/ExcludeDirectoryFilterIteratorTest.php
+++ b/vendor/symfony/finder/Tests/Iterator/ExcludeDirectoryFilterIteratorTest.php
@@ -30,7 +30,7 @@ public function testAccept($directories, $expected)
 
     public function getAcceptData()
     {
-        $foo = array(
+        $foo = [
             '.bar',
             '.foo',
             '.foo/.bar',
@@ -41,9 +41,9 @@ public function getAcceptData()
             'toto',
             'toto/.git',
             'foo bar',
-        );
+        ];
 
-        $fo = array(
+        $fo = [
             '.bar',
             '.foo',
             '.foo/.bar',
@@ -56,9 +56,9 @@ public function getAcceptData()
             'toto',
             'toto/.git',
             'foo bar',
-        );
+        ];
 
-        $toto = array(
+        $toto = [
             '.bar',
             '.foo',
             '.foo/.bar',
@@ -69,12 +69,12 @@ public function getAcceptData()
             'foo/bar.tmp',
             'test.php',
             'foo bar',
-        );
+        ];
 
-        return array(
-            array(array('foo'), $this->toAbsolute($foo)),
-            array(array('fo'), $this->toAbsolute($fo)),
-            array(array('toto/'), $this->toAbsolute($toto)),
-        );
+        return [
+            [['foo'], $this->toAbsolute($foo)],
+            [['fo'], $this->toAbsolute($fo)],
+            [['toto/'], $this->toAbsolute($toto)],
+        ];
     }
 }
diff --git a/vendor/symfony/finder/Tests/Iterator/FileTypeFilterIteratorTest.php b/vendor/symfony/finder/Tests/Iterator/FileTypeFilterIteratorTest.php
index 4350b00ca9..fe03b434ad 100644
--- a/vendor/symfony/finder/Tests/Iterator/FileTypeFilterIteratorTest.php
+++ b/vendor/symfony/finder/Tests/Iterator/FileTypeFilterIteratorTest.php
@@ -29,7 +29,7 @@ public function testAccept($mode, $expected)
 
     public function getAcceptData()
     {
-        $onlyFiles = array(
+        $onlyFiles = [
             'test.py',
             'foo/bar.tmp',
             'test.php',
@@ -37,20 +37,20 @@ public function getAcceptData()
             '.foo/.bar',
             '.foo/bar',
             'foo bar',
-        );
+        ];
 
-        $onlyDirectories = array(
+        $onlyDirectories = [
             '.git',
             'foo',
             'toto',
             'toto/.git',
             '.foo',
-        );
+        ];
 
-        return array(
-            array(FileTypeFilterIterator::ONLY_FILES, $this->toAbsolute($onlyFiles)),
-            array(FileTypeFilterIterator::ONLY_DIRECTORIES, $this->toAbsolute($onlyDirectories)),
-        );
+        return [
+            [FileTypeFilterIterator::ONLY_FILES, $this->toAbsolute($onlyFiles)],
+            [FileTypeFilterIterator::ONLY_DIRECTORIES, $this->toAbsolute($onlyDirectories)],
+        ];
     }
 }
 
diff --git a/vendor/symfony/finder/Tests/Iterator/FilecontentFilterIteratorTest.php b/vendor/symfony/finder/Tests/Iterator/FilecontentFilterIteratorTest.php
index 744bdae12a..f4f70c8e8c 100644
--- a/vendor/symfony/finder/Tests/Iterator/FilecontentFilterIteratorTest.php
+++ b/vendor/symfony/finder/Tests/Iterator/FilecontentFilterIteratorTest.php
@@ -17,23 +17,23 @@ class FilecontentFilterIteratorTest extends IteratorTestCase
 {
     public function testAccept()
     {
-        $inner = new MockFileListIterator(array('test.txt'));
-        $iterator = new FilecontentFilterIterator($inner, array(), array());
-        $this->assertIterator(array('test.txt'), $iterator);
+        $inner = new MockFileListIterator(['test.txt']);
+        $iterator = new FilecontentFilterIterator($inner, [], []);
+        $this->assertIterator(['test.txt'], $iterator);
     }
 
     public function testDirectory()
     {
-        $inner = new MockFileListIterator(array('directory'));
-        $iterator = new FilecontentFilterIterator($inner, array('directory'), array());
-        $this->assertIterator(array(), $iterator);
+        $inner = new MockFileListIterator(['directory']);
+        $iterator = new FilecontentFilterIterator($inner, ['directory'], []);
+        $this->assertIterator([], $iterator);
     }
 
     public function testUnreadableFile()
     {
-        $inner = new MockFileListIterator(array('file r-'));
-        $iterator = new FilecontentFilterIterator($inner, array('file r-'), array());
-        $this->assertIterator(array(), $iterator);
+        $inner = new MockFileListIterator(['file r-']);
+        $iterator = new FilecontentFilterIterator($inner, ['file r-'], []);
+        $this->assertIterator([], $iterator);
     }
 
     /**
@@ -49,38 +49,38 @@ public function getTestFilterData()
     {
         $inner = new MockFileListIterator();
 
-        $inner[] = new MockSplFileInfo(array(
+        $inner[] = new MockSplFileInfo([
             'name' => 'a.txt',
             'contents' => 'Lorem ipsum...',
             'type' => 'file',
-            'mode' => 'r+', )
+            'mode' => 'r+', ]
         );
 
-        $inner[] = new MockSplFileInfo(array(
+        $inner[] = new MockSplFileInfo([
             'name' => 'b.yml',
             'contents' => 'dolor sit...',
             'type' => 'file',
-            'mode' => 'r+', )
+            'mode' => 'r+', ]
         );
 
-        $inner[] = new MockSplFileInfo(array(
+        $inner[] = new MockSplFileInfo([
             'name' => 'some/other/dir/third.php',
             'contents' => 'amet...',
             'type' => 'file',
-            'mode' => 'r+', )
+            'mode' => 'r+', ]
         );
 
-        $inner[] = new MockSplFileInfo(array(
+        $inner[] = new MockSplFileInfo([
             'name' => 'unreadable-file.txt',
             'contents' => false,
             'type' => 'file',
-            'mode' => 'r+', )
+            'mode' => 'r+', ]
         );
 
-        return array(
-            array($inner, array('.'), array(), array('a.txt', 'b.yml', 'some/other/dir/third.php')),
-            array($inner, array('ipsum'), array(), array('a.txt')),
-            array($inner, array('i', 'amet'), array('Lorem', 'amet'), array('b.yml')),
-        );
+        return [
+            [$inner, ['.'], [], ['a.txt', 'b.yml', 'some/other/dir/third.php']],
+            [$inner, ['ipsum'], [], ['a.txt']],
+            [$inner, ['i', 'amet'], ['Lorem', 'amet'], ['b.yml']],
+        ];
     }
 }
diff --git a/vendor/symfony/finder/Tests/Iterator/FilenameFilterIteratorTest.php b/vendor/symfony/finder/Tests/Iterator/FilenameFilterIteratorTest.php
index c4b9795918..9270dd1cd3 100644
--- a/vendor/symfony/finder/Tests/Iterator/FilenameFilterIteratorTest.php
+++ b/vendor/symfony/finder/Tests/Iterator/FilenameFilterIteratorTest.php
@@ -20,7 +20,7 @@ class FilenameFilterIteratorTest extends IteratorTestCase
      */
     public function testAccept($matchPatterns, $noMatchPatterns, $expected)
     {
-        $inner = new InnerNameIterator(array('test.php', 'test.py', 'foo.php'));
+        $inner = new InnerNameIterator(['test.php', 'test.py', 'foo.php']);
 
         $iterator = new FilenameFilterIterator($inner, $matchPatterns, $noMatchPatterns);
 
@@ -29,14 +29,14 @@ public function testAccept($matchPatterns, $noMatchPatterns, $expected)
 
     public function getAcceptData()
     {
-        return array(
-            array(array('test.*'), array(), array('test.php', 'test.py')),
-            array(array(), array('test.*'), array('foo.php')),
-            array(array('*.php'), array('test.*'), array('foo.php')),
-            array(array('*.php', '*.py'), array('foo.*'), array('test.php', 'test.py')),
-            array(array('/\.php$/'), array(), array('test.php', 'foo.php')),
-            array(array(), array('/\.php$/'), array('test.py')),
-        );
+        return [
+            [['test.*'], [], ['test.php', 'test.py']],
+            [[], ['test.*'], ['foo.php']],
+            [['*.php'], ['test.*'], ['foo.php']],
+            [['*.php', '*.py'], ['foo.*'], ['test.php', 'test.py']],
+            [['/\.php$/'], [], ['test.php', 'foo.php']],
+            [[], ['/\.php$/'], ['test.py']],
+        ];
     }
 }
 
diff --git a/vendor/symfony/finder/Tests/Iterator/FilterIteratorTest.php b/vendor/symfony/finder/Tests/Iterator/FilterIteratorTest.php
index 8b1a4482ba..b26f7ba6bd 100644
--- a/vendor/symfony/finder/Tests/Iterator/FilterIteratorTest.php
+++ b/vendor/symfony/finder/Tests/Iterator/FilterIteratorTest.php
@@ -23,7 +23,7 @@ public function testFilterFilesystemIterators()
         $i = new \FilesystemIterator($this->toAbsolute());
 
         // it is expected that there are test.py test.php in the tmpDir
-        $i = $this->getMockForAbstractClass('Symfony\Component\Finder\Iterator\FilterIterator', array($i));
+        $i = $this->getMockForAbstractClass('Symfony\Component\Finder\Iterator\FilterIterator', [$i]);
         $i->expects($this->any())
             ->method('accept')
             ->will($this->returnCallback(function () use ($i) {
diff --git a/vendor/symfony/finder/Tests/Iterator/Iterator.php b/vendor/symfony/finder/Tests/Iterator/Iterator.php
index 849bf081e2..3e21a07004 100644
--- a/vendor/symfony/finder/Tests/Iterator/Iterator.php
+++ b/vendor/symfony/finder/Tests/Iterator/Iterator.php
@@ -13,9 +13,9 @@
 
 class Iterator implements \Iterator
 {
-    protected $values = array();
+    protected $values = [];
 
-    public function __construct(array $values = array())
+    public function __construct(array $values = [])
     {
         foreach ($values as $value) {
             $this->attach(new \SplFileInfo($value));
diff --git a/vendor/symfony/finder/Tests/Iterator/IteratorTestCase.php b/vendor/symfony/finder/Tests/Iterator/IteratorTestCase.php
index 89f042aefa..796dc6ac36 100644
--- a/vendor/symfony/finder/Tests/Iterator/IteratorTestCase.php
+++ b/vendor/symfony/finder/Tests/Iterator/IteratorTestCase.php
@@ -51,7 +51,7 @@ protected function assertOrderedIteratorForGroups($expected, \Traversable $itera
         $values = array_values(array_map(function (\SplFileInfo $fileinfo) { return $fileinfo->getPathname(); }, iterator_to_array($iterator)));
 
         foreach ($expected as $subarray) {
-            $temp = array();
+            $temp = [];
             while (\count($values) && \count($temp) < \count($subarray)) {
                 $temp[] = array_shift($values);
             }
@@ -69,7 +69,7 @@ protected function assertOrderedIteratorForGroups($expected, \Traversable $itera
      */
     protected function assertIteratorInForeach($expected, \Traversable $iterator)
     {
-        $values = array();
+        $values = [];
         foreach ($iterator as $file) {
             $this->assertInstanceOf('Symfony\\Component\\Finder\\SplFileInfo', $file);
             $values[] = $file->getPathname();
@@ -89,7 +89,7 @@ protected function assertIteratorInForeach($expected, \Traversable $iterator)
      */
     protected function assertOrderedIteratorInForeach($expected, \Traversable $iterator)
     {
-        $values = array();
+        $values = [];
         foreach ($iterator as $file) {
             $this->assertInstanceOf('Symfony\\Component\\Finder\\SplFileInfo', $file);
             $values[] = $file->getPathname();
diff --git a/vendor/symfony/finder/Tests/Iterator/MockFileListIterator.php b/vendor/symfony/finder/Tests/Iterator/MockFileListIterator.php
index eb0adfad0a..670478d7a7 100644
--- a/vendor/symfony/finder/Tests/Iterator/MockFileListIterator.php
+++ b/vendor/symfony/finder/Tests/Iterator/MockFileListIterator.php
@@ -13,7 +13,7 @@
 
 class MockFileListIterator extends \ArrayIterator
 {
-    public function __construct(array $filesArray = array())
+    public function __construct(array $filesArray = [])
     {
         $files = array_map(function ($file) { return new MockSplFileInfo($file); }, $filesArray);
         parent::__construct($files);
diff --git a/vendor/symfony/finder/Tests/Iterator/MockSplFileInfo.php b/vendor/symfony/finder/Tests/Iterator/MockSplFileInfo.php
index 36e6528d01..58bb5979e9 100644
--- a/vendor/symfony/finder/Tests/Iterator/MockSplFileInfo.php
+++ b/vendor/symfony/finder/Tests/Iterator/MockSplFileInfo.php
@@ -28,14 +28,14 @@ public function __construct($param)
         if (\is_string($param)) {
             parent::__construct($param);
         } elseif (\is_array($param)) {
-            $defaults = array(
-              'name' => 'file.txt',
-              'contents' => null,
-              'mode' => null,
-              'type' => null,
-              'relativePath' => null,
-              'relativePathname' => null,
-            );
+            $defaults = [
+                'name' => 'file.txt',
+                'contents' => null,
+                'mode' => null,
+                'type' => null,
+                'relativePath' => null,
+                'relativePathname' => null,
+            ];
             $defaults = array_merge($defaults, $param);
             parent::__construct($defaults['name']);
             $this->setContents($defaults['contents']);
diff --git a/vendor/symfony/finder/Tests/Iterator/MultiplePcreFilterIteratorTest.php b/vendor/symfony/finder/Tests/Iterator/MultiplePcreFilterIteratorTest.php
index f2c1cd2414..955677695b 100644
--- a/vendor/symfony/finder/Tests/Iterator/MultiplePcreFilterIteratorTest.php
+++ b/vendor/symfony/finder/Tests/Iterator/MultiplePcreFilterIteratorTest.php
@@ -27,24 +27,24 @@ public function testIsRegex($string, $isRegex, $message)
 
     public function getIsRegexFixtures()
     {
-        return array(
-            array('foo', false, 'string'),
-            array(' foo ', false, '" " is not a valid delimiter'),
-            array('\\foo\\', false, '"\\" is not a valid delimiter'),
-            array('afooa', false, '"a" is not a valid delimiter'),
-            array('//', false, 'the pattern should contain at least 1 character'),
-            array('/a/', true, 'valid regex'),
-            array('/foo/', true, 'valid regex'),
-            array('/foo/i', true, 'valid regex with a single modifier'),
-            array('/foo/imsxu', true, 'valid regex with multiple modifiers'),
-            array('#foo#', true, '"#" is a valid delimiter'),
-            array('{foo}', true, '"{,}" is a valid delimiter pair'),
-            array('[foo]', true, '"[,]" is a valid delimiter pair'),
-            array('(foo)', true, '"(,)" is a valid delimiter pair'),
-            array('<foo>', true, '"<,>" is a valid delimiter pair'),
-            array('*foo.*', false, '"*" is not considered as a valid delimiter'),
-            array('?foo.?', false, '"?" is not considered as a valid delimiter'),
-        );
+        return [
+            ['foo', false, 'string'],
+            [' foo ', false, '" " is not a valid delimiter'],
+            ['\\foo\\', false, '"\\" is not a valid delimiter'],
+            ['afooa', false, '"a" is not a valid delimiter'],
+            ['//', false, 'the pattern should contain at least 1 character'],
+            ['/a/', true, 'valid regex'],
+            ['/foo/', true, 'valid regex'],
+            ['/foo/i', true, 'valid regex with a single modifier'],
+            ['/foo/imsxu', true, 'valid regex with multiple modifiers'],
+            ['#foo#', true, '"#" is a valid delimiter'],
+            ['{foo}', true, '"{,}" is a valid delimiter pair'],
+            ['[foo]', true, '"[,]" is a valid delimiter pair'],
+            ['(foo)', true, '"(,)" is a valid delimiter pair'],
+            ['<foo>', true, '"<,>" is a valid delimiter pair'],
+            ['*foo.*', false, '"*" is not considered as a valid delimiter'],
+            ['?foo.?', false, '"?" is not considered as a valid delimiter'],
+        ];
     }
 }
 
diff --git a/vendor/symfony/finder/Tests/Iterator/PathFilterIteratorTest.php b/vendor/symfony/finder/Tests/Iterator/PathFilterIteratorTest.php
index 38ed966a61..9040ee04c3 100644
--- a/vendor/symfony/finder/Tests/Iterator/PathFilterIteratorTest.php
+++ b/vendor/symfony/finder/Tests/Iterator/PathFilterIteratorTest.php
@@ -29,54 +29,54 @@ public function getTestFilterData()
         $inner = new MockFileListIterator();
 
         //PATH:   A/B/C/abc.dat
-        $inner[] = new MockSplFileInfo(array(
+        $inner[] = new MockSplFileInfo([
             'name' => 'abc.dat',
             'relativePathname' => 'A'.\DIRECTORY_SEPARATOR.'B'.\DIRECTORY_SEPARATOR.'C'.\DIRECTORY_SEPARATOR.'abc.dat',
-        ));
+        ]);
 
         //PATH:   A/B/ab.dat
-        $inner[] = new MockSplFileInfo(array(
+        $inner[] = new MockSplFileInfo([
             'name' => 'ab.dat',
             'relativePathname' => 'A'.\DIRECTORY_SEPARATOR.'B'.\DIRECTORY_SEPARATOR.'ab.dat',
-        ));
+        ]);
 
         //PATH:   A/a.dat
-        $inner[] = new MockSplFileInfo(array(
+        $inner[] = new MockSplFileInfo([
             'name' => 'a.dat',
             'relativePathname' => 'A'.\DIRECTORY_SEPARATOR.'a.dat',
-        ));
+        ]);
 
         //PATH:   copy/A/B/C/abc.dat.copy
-        $inner[] = new MockSplFileInfo(array(
+        $inner[] = new MockSplFileInfo([
             'name' => 'abc.dat.copy',
             'relativePathname' => 'copy'.\DIRECTORY_SEPARATOR.'A'.\DIRECTORY_SEPARATOR.'B'.\DIRECTORY_SEPARATOR.'C'.\DIRECTORY_SEPARATOR.'abc.dat',
-        ));
+        ]);
 
         //PATH:   copy/A/B/ab.dat.copy
-        $inner[] = new MockSplFileInfo(array(
+        $inner[] = new MockSplFileInfo([
             'name' => 'ab.dat.copy',
             'relativePathname' => 'copy'.\DIRECTORY_SEPARATOR.'A'.\DIRECTORY_SEPARATOR.'B'.\DIRECTORY_SEPARATOR.'ab.dat',
-        ));
+        ]);
 
         //PATH:   copy/A/a.dat.copy
-        $inner[] = new MockSplFileInfo(array(
+        $inner[] = new MockSplFileInfo([
             'name' => 'a.dat.copy',
             'relativePathname' => 'copy'.\DIRECTORY_SEPARATOR.'A'.\DIRECTORY_SEPARATOR.'a.dat',
-        ));
+        ]);
 
-        return array(
-            array($inner, array('/^A/'),       array(), array('abc.dat', 'ab.dat', 'a.dat')),
-            array($inner, array('/^A\/B/'),    array(), array('abc.dat', 'ab.dat')),
-            array($inner, array('/^A\/B\/C/'), array(), array('abc.dat')),
-            array($inner, array('/A\/B\/C/'),  array(), array('abc.dat', 'abc.dat.copy')),
+        return [
+            [$inner, ['/^A/'],       [], ['abc.dat', 'ab.dat', 'a.dat']],
+            [$inner, ['/^A\/B/'],    [], ['abc.dat', 'ab.dat']],
+            [$inner, ['/^A\/B\/C/'], [], ['abc.dat']],
+            [$inner, ['/A\/B\/C/'], [], ['abc.dat', 'abc.dat.copy']],
 
-            array($inner, array('A'),      array(), array('abc.dat', 'ab.dat', 'a.dat', 'abc.dat.copy', 'ab.dat.copy', 'a.dat.copy')),
-            array($inner, array('A/B'),    array(), array('abc.dat', 'ab.dat', 'abc.dat.copy', 'ab.dat.copy')),
-            array($inner, array('A/B/C'),  array(), array('abc.dat', 'abc.dat.copy')),
+            [$inner, ['A'],      [], ['abc.dat', 'ab.dat', 'a.dat', 'abc.dat.copy', 'ab.dat.copy', 'a.dat.copy']],
+            [$inner, ['A/B'],    [], ['abc.dat', 'ab.dat', 'abc.dat.copy', 'ab.dat.copy']],
+            [$inner, ['A/B/C'], [], ['abc.dat', 'abc.dat.copy']],
 
-            array($inner, array('copy/A'),      array(), array('abc.dat.copy', 'ab.dat.copy', 'a.dat.copy')),
-            array($inner, array('copy/A/B'),    array(), array('abc.dat.copy', 'ab.dat.copy')),
-            array($inner, array('copy/A/B/C'),  array(), array('abc.dat.copy')),
-        );
+            [$inner, ['copy/A'],      [], ['abc.dat.copy', 'ab.dat.copy', 'a.dat.copy']],
+            [$inner, ['copy/A/B'],    [], ['abc.dat.copy', 'ab.dat.copy']],
+            [$inner, ['copy/A/B/C'], [], ['abc.dat.copy']],
+        ];
     }
 }
diff --git a/vendor/symfony/finder/Tests/Iterator/RealIteratorTestCase.php b/vendor/symfony/finder/Tests/Iterator/RealIteratorTestCase.php
index b0223b782b..70048a5ea6 100644
--- a/vendor/symfony/finder/Tests/Iterator/RealIteratorTestCase.php
+++ b/vendor/symfony/finder/Tests/Iterator/RealIteratorTestCase.php
@@ -20,7 +20,7 @@ public static function setUpBeforeClass()
     {
         self::$tmpDir = realpath(sys_get_temp_dir()).\DIRECTORY_SEPARATOR.'symfony_finder';
 
-        self::$files = array(
+        self::$files = [
             '.git/',
             '.foo/',
             '.foo/.bar',
@@ -33,7 +33,7 @@ public static function setUpBeforeClass()
             'toto/',
             'toto/.git/',
             'foo bar',
-        );
+        ];
 
         self::$files = self::toAbsolute(self::$files);
 
@@ -88,7 +88,7 @@ protected static function toAbsolute($files = null)
         }
 
         if (\is_array($files)) {
-            $f = array();
+            $f = [];
             foreach ($files as $file) {
                 if (\is_array($file)) {
                     $f[] = self::toAbsolute($file);
@@ -109,7 +109,7 @@ protected static function toAbsolute($files = null)
 
     protected static function toAbsoluteFixtures($files)
     {
-        $f = array();
+        $f = [];
         foreach ($files as $file) {
             $f[] = realpath(__DIR__.\DIRECTORY_SEPARATOR.'..'.\DIRECTORY_SEPARATOR.'Fixtures'.\DIRECTORY_SEPARATOR.$file);
         }
diff --git a/vendor/symfony/finder/Tests/Iterator/RecursiveDirectoryIteratorTest.php b/vendor/symfony/finder/Tests/Iterator/RecursiveDirectoryIteratorTest.php
index 0c9aca24b9..037810aea7 100644
--- a/vendor/symfony/finder/Tests/Iterator/RecursiveDirectoryIteratorTest.php
+++ b/vendor/symfony/finder/Tests/Iterator/RecursiveDirectoryIteratorTest.php
@@ -42,11 +42,11 @@ public function testSeekOnFtp()
             $this->markTestSkipped('Unsupported stream "ftp".');
         }
 
-        $contains = array(
+        $contains = [
             'ftp://speedtest.tele2.net'.\DIRECTORY_SEPARATOR.'1000GB.zip',
             'ftp://speedtest.tele2.net'.\DIRECTORY_SEPARATOR.'100GB.zip',
-        );
-        $actual = array();
+        ];
+        $actual = [];
 
         $i->seek(0);
         $actual[] = $i->getPathname();
diff --git a/vendor/symfony/finder/Tests/Iterator/SizeRangeFilterIteratorTest.php b/vendor/symfony/finder/Tests/Iterator/SizeRangeFilterIteratorTest.php
index 068fc7b0bb..b1e431ba52 100644
--- a/vendor/symfony/finder/Tests/Iterator/SizeRangeFilterIteratorTest.php
+++ b/vendor/symfony/finder/Tests/Iterator/SizeRangeFilterIteratorTest.php
@@ -30,18 +30,18 @@ public function testAccept($size, $expected)
 
     public function getAcceptData()
     {
-        $lessThan1KGreaterThan05K = array(
+        $lessThan1KGreaterThan05K = [
             '.foo',
             '.git',
             'foo',
             'test.php',
             'toto',
             'toto/.git',
-        );
+        ];
 
-        return array(
-            array(array(new NumberComparator('< 1K'), new NumberComparator('> 0.5K')), $this->toAbsolute($lessThan1KGreaterThan05K)),
-        );
+        return [
+            [[new NumberComparator('< 1K'), new NumberComparator('> 0.5K')], $this->toAbsolute($lessThan1KGreaterThan05K)],
+        ];
     }
 }
 
diff --git a/vendor/symfony/finder/Tests/Iterator/SortableIteratorTest.php b/vendor/symfony/finder/Tests/Iterator/SortableIteratorTest.php
index a35a12b5be..57f1e096a5 100644
--- a/vendor/symfony/finder/Tests/Iterator/SortableIteratorTest.php
+++ b/vendor/symfony/finder/Tests/Iterator/SortableIteratorTest.php
@@ -18,7 +18,7 @@ class SortableIteratorTest extends RealIteratorTestCase
     public function testConstructor()
     {
         try {
-            new SortableIterator(new Iterator(array()), 'foobar');
+            new SortableIterator(new Iterator([]), 'foobar');
             $this->fail('__construct() throws an \InvalidArgumentException exception if the mode is not valid');
         } catch (\Exception $e) {
             $this->assertInstanceOf('InvalidArgumentException', $e, '__construct() throws an \InvalidArgumentException exception if the mode is not valid');
@@ -73,7 +73,7 @@ public function testAccept($mode, $expected)
 
     public function getAcceptData()
     {
-        $sortByName = array(
+        $sortByName = [
             '.bar',
             '.foo',
             '.foo/.bar',
@@ -86,9 +86,9 @@ public function getAcceptData()
             'test.py',
             'toto',
             'toto/.git',
-        );
+        ];
 
-        $sortByType = array(
+        $sortByType = [
             '.foo',
             '.git',
             'foo',
@@ -101,9 +101,9 @@ public function getAcceptData()
             'foo/bar.tmp',
             'test.php',
             'test.py',
-        );
+        ];
 
-        $customComparison = array(
+        $customComparison = [
             '.bar',
             '.foo',
             '.foo/.bar',
@@ -116,13 +116,13 @@ public function getAcceptData()
             'test.py',
             'toto',
             'toto/.git',
-        );
+        ];
 
-        $sortByAccessedTime = array(
+        $sortByAccessedTime = [
             // For these two files the access time was set to 2005-10-15
-            array('foo/bar.tmp', 'test.php'),
+            ['foo/bar.tmp', 'test.php'],
             // These files were created more or less at the same time
-            array(
+            [
                 '.git',
                 '.foo',
                 '.foo/.bar',
@@ -132,13 +132,13 @@ public function getAcceptData()
                 'toto',
                 'toto/.git',
                 'foo bar',
-            ),
+            ],
             // This file was accessed after sleeping for 1 sec
-            array('.bar'),
-        );
+            ['.bar'],
+        ];
 
-        $sortByChangedTime = array(
-            array(
+        $sortByChangedTime = [
+            [
                 '.git',
                 '.foo',
                 '.foo/.bar',
@@ -149,13 +149,13 @@ public function getAcceptData()
                 'toto',
                 'toto/.git',
                 'foo bar',
-            ),
-            array('test.php'),
-            array('test.py'),
-        );
+            ],
+            ['test.php'],
+            ['test.py'],
+        ];
 
-        $sortByModifiedTime = array(
-            array(
+        $sortByModifiedTime = [
+            [
                 '.git',
                 '.foo',
                 '.foo/.bar',
@@ -166,18 +166,18 @@ public function getAcceptData()
                 'toto',
                 'toto/.git',
                 'foo bar',
-            ),
-            array('test.php'),
-            array('test.py'),
-        );
+            ],
+            ['test.php'],
+            ['test.py'],
+        ];
 
-        return array(
-            array(SortableIterator::SORT_BY_NAME, $this->toAbsolute($sortByName)),
-            array(SortableIterator::SORT_BY_TYPE, $this->toAbsolute($sortByType)),
-            array(SortableIterator::SORT_BY_ACCESSED_TIME, $this->toAbsolute($sortByAccessedTime)),
-            array(SortableIterator::SORT_BY_CHANGED_TIME, $this->toAbsolute($sortByChangedTime)),
-            array(SortableIterator::SORT_BY_MODIFIED_TIME, $this->toAbsolute($sortByModifiedTime)),
-            array(function (\SplFileInfo $a, \SplFileInfo $b) { return strcmp($a->getRealPath(), $b->getRealPath()); }, $this->toAbsolute($customComparison)),
-        );
+        return [
+            [SortableIterator::SORT_BY_NAME, $this->toAbsolute($sortByName)],
+            [SortableIterator::SORT_BY_TYPE, $this->toAbsolute($sortByType)],
+            [SortableIterator::SORT_BY_ACCESSED_TIME, $this->toAbsolute($sortByAccessedTime)],
+            [SortableIterator::SORT_BY_CHANGED_TIME, $this->toAbsolute($sortByChangedTime)],
+            [SortableIterator::SORT_BY_MODIFIED_TIME, $this->toAbsolute($sortByModifiedTime)],
+            [function (\SplFileInfo $a, \SplFileInfo $b) { return strcmp($a->getRealPath(), $b->getRealPath()); }, $this->toAbsolute($customComparison)],
+        ];
     }
 }
diff --git a/vendor/symfony/finder/phpunit.xml.dist b/vendor/symfony/finder/phpunit.xml.dist
index 0e1a8669be..078847af96 100644
--- a/vendor/symfony/finder/phpunit.xml.dist
+++ b/vendor/symfony/finder/phpunit.xml.dist
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
 <phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.1/phpunit.xsd"
+         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/5.2/phpunit.xsd"
          backupGlobals="false"
          colors="true"
          bootstrap="vendor/autoload.php"
diff --git a/vendor/symfony/var-dumper/Caster/AmqpCaster.php b/vendor/symfony/var-dumper/Caster/AmqpCaster.php
index 655262f406..19bdc29525 100644
--- a/vendor/symfony/var-dumper/Caster/AmqpCaster.php
+++ b/vendor/symfony/var-dumper/Caster/AmqpCaster.php
@@ -20,7 +20,7 @@
  */
 class AmqpCaster
 {
-    private static $flags = array(
+    private static $flags = [
         AMQP_DURABLE => 'AMQP_DURABLE',
         AMQP_PASSIVE => 'AMQP_PASSIVE',
         AMQP_EXCLUSIVE => 'AMQP_EXCLUSIVE',
@@ -35,22 +35,22 @@ class AmqpCaster
         AMQP_MULTIPLE => 'AMQP_MULTIPLE',
         AMQP_NOWAIT => 'AMQP_NOWAIT',
         AMQP_REQUEUE => 'AMQP_REQUEUE',
-    );
+    ];
 
-    private static $exchangeTypes = array(
+    private static $exchangeTypes = [
         AMQP_EX_TYPE_DIRECT => 'AMQP_EX_TYPE_DIRECT',
         AMQP_EX_TYPE_FANOUT => 'AMQP_EX_TYPE_FANOUT',
         AMQP_EX_TYPE_TOPIC => 'AMQP_EX_TYPE_TOPIC',
         AMQP_EX_TYPE_HEADERS => 'AMQP_EX_TYPE_HEADERS',
-    );
+    ];
 
     public static function castConnection(\AMQPConnection $c, array $a, Stub $stub, $isNested)
     {
         $prefix = Caster::PREFIX_VIRTUAL;
 
-        $a += array(
+        $a += [
             $prefix.'is_connected' => $c->isConnected(),
-        );
+        ];
 
         // Recent version of the extension already expose private properties
         if (isset($a["\x00AMQPConnection\x00login"])) {
@@ -64,7 +64,7 @@ public static function castConnection(\AMQPConnection $c, array $a, Stub $stub,
             $timeout = $c->getTimeout();
         }
 
-        $a += array(
+        $a += [
             $prefix.'is_connected' => $c->isConnected(),
             $prefix.'login' => $c->getLogin(),
             $prefix.'password' => $c->getPassword(),
@@ -72,7 +72,7 @@ public static function castConnection(\AMQPConnection $c, array $a, Stub $stub,
             $prefix.'vhost' => $c->getVhost(),
             $prefix.'port' => $c->getPort(),
             $prefix.'read_timeout' => $timeout,
-        );
+        ];
 
         return $a;
     }
@@ -81,21 +81,21 @@ public static function castChannel(\AMQPChannel $c, array $a, Stub $stub, $isNes
     {
         $prefix = Caster::PREFIX_VIRTUAL;
 
-        $a += array(
+        $a += [
             $prefix.'is_connected' => $c->isConnected(),
             $prefix.'channel_id' => $c->getChannelId(),
-        );
+        ];
 
         // Recent version of the extension already expose private properties
         if (isset($a["\x00AMQPChannel\x00connection"])) {
             return $a;
         }
 
-        $a += array(
+        $a += [
             $prefix.'connection' => $c->getConnection(),
             $prefix.'prefetch_size' => $c->getPrefetchSize(),
             $prefix.'prefetch_count' => $c->getPrefetchCount(),
-        );
+        ];
 
         return $a;
     }
@@ -104,21 +104,21 @@ public static function castQueue(\AMQPQueue $c, array $a, Stub $stub, $isNested)
     {
         $prefix = Caster::PREFIX_VIRTUAL;
 
-        $a += array(
+        $a += [
             $prefix.'flags' => self::extractFlags($c->getFlags()),
-        );
+        ];
 
         // Recent version of the extension already expose private properties
         if (isset($a["\x00AMQPQueue\x00name"])) {
             return $a;
         }
 
-        $a += array(
+        $a += [
             $prefix.'connection' => $c->getConnection(),
             $prefix.'channel' => $c->getChannel(),
             $prefix.'name' => $c->getName(),
             $prefix.'arguments' => $c->getArguments(),
-        );
+        ];
 
         return $a;
     }
@@ -127,9 +127,9 @@ public static function castExchange(\AMQPExchange $c, array $a, Stub $stub, $isN
     {
         $prefix = Caster::PREFIX_VIRTUAL;
 
-        $a += array(
+        $a += [
             $prefix.'flags' => self::extractFlags($c->getFlags()),
-        );
+        ];
 
         $type = isset(self::$exchangeTypes[$c->getType()]) ? new ConstStub(self::$exchangeTypes[$c->getType()], $c->getType()) : $c->getType();
 
@@ -140,13 +140,13 @@ public static function castExchange(\AMQPExchange $c, array $a, Stub $stub, $isN
             return $a;
         }
 
-        $a += array(
+        $a += [
             $prefix.'connection' => $c->getConnection(),
             $prefix.'channel' => $c->getChannel(),
             $prefix.'name' => $c->getName(),
             $prefix.'type' => $type,
             $prefix.'arguments' => $c->getArguments(),
-        );
+        ];
 
         return $a;
     }
@@ -165,10 +165,10 @@ public static function castEnvelope(\AMQPEnvelope $c, array $a, Stub $stub, $isN
         }
 
         if (!($filter & Caster::EXCLUDE_VERBOSE)) {
-            $a += array($prefix.'body' => $c->getBody());
+            $a += [$prefix.'body' => $c->getBody()];
         }
 
-        $a += array(
+        $a += [
             $prefix.'delivery_tag' => $c->getDeliveryTag(),
             $prefix.'is_redelivery' => $c->isRedelivery(),
             $prefix.'exchange_name' => $c->getExchangeName(),
@@ -186,14 +186,14 @@ public static function castEnvelope(\AMQPEnvelope $c, array $a, Stub $stub, $isN
             $prefix.'type' => $c->getType(),
             $prefix.'user_id' => $c->getUserId(),
             $prefix.'app_id' => $c->getAppId(),
-        );
+        ];
 
         return $a;
     }
 
     private static function extractFlags($flags)
     {
-        $flagsArray = array();
+        $flagsArray = [];
 
         foreach (self::$flags as $value => $name) {
             if ($flags & $value) {
@@ -202,7 +202,7 @@ private static function extractFlags($flags)
         }
 
         if (!$flagsArray) {
-            $flagsArray = array('AMQP_NOPARAM');
+            $flagsArray = ['AMQP_NOPARAM'];
         }
 
         return new ConstStub(implode('|', $flagsArray), $flags);
diff --git a/vendor/symfony/var-dumper/Caster/ArgsStub.php b/vendor/symfony/var-dumper/Caster/ArgsStub.php
index 7cd759a550..081fb47e99 100644
--- a/vendor/symfony/var-dumper/Caster/ArgsStub.php
+++ b/vendor/symfony/var-dumper/Caster/ArgsStub.php
@@ -20,13 +20,13 @@
  */
 class ArgsStub extends EnumStub
 {
-    private static $parameters = array();
+    private static $parameters = [];
 
     public function __construct(array $args, $function, $class)
     {
         list($variadic, $params) = self::getParameters($function, $class);
 
-        $values = array();
+        $values = [];
         foreach ($args as $k => $v) {
             $values[$k] = !is_scalar($v) && !$v instanceof Stub ? new CutStub($v) : $v;
         }
@@ -41,7 +41,7 @@ public function __construct(array $args, $function, $class)
             $values[] = new EnumStub(array_splice($values, \count($params)), false);
             $params[] = $variadic;
         }
-        if (array('...') === $params) {
+        if (['...'] === $params) {
             $this->dumpKeys = false;
             $this->value = $values[0]->value;
         } else {
@@ -58,11 +58,11 @@ private static function getParameters($function, $class)
         try {
             $r = null !== $class ? new \ReflectionMethod($class, $function) : new \ReflectionFunction($function);
         } catch (\ReflectionException $e) {
-            return array(null, null);
+            return [null, null];
         }
 
         $variadic = '...';
-        $params = array();
+        $params = [];
         foreach ($r->getParameters() as $v) {
             $k = '$'.$v->name;
             if ($v->isPassedByReference()) {
@@ -75,6 +75,6 @@ private static function getParameters($function, $class)
             }
         }
 
-        return self::$parameters[$k] = array($variadic, $params);
+        return self::$parameters[$k] = [$variadic, $params];
     }
 }
diff --git a/vendor/symfony/var-dumper/Caster/Caster.php b/vendor/symfony/var-dumper/Caster/Caster.php
index 30cb9fc0d6..93d0ce2b41 100644
--- a/vendor/symfony/var-dumper/Caster/Caster.php
+++ b/vendor/symfony/var-dumper/Caster/Caster.php
@@ -56,7 +56,7 @@ public static function castObject($obj, $class, $hasDebugInfo = false)
         if ($hasDebugInfo) {
             $a = $obj->__debugInfo();
         } elseif ($obj instanceof \Closure) {
-            $a = array();
+            $a = [];
         } else {
             $a = (array) $obj;
         }
@@ -65,10 +65,10 @@ public static function castObject($obj, $class, $hasDebugInfo = false)
         }
 
         if ($a) {
-            static $publicProperties = array();
+            static $publicProperties = [];
 
             $i = 0;
-            $prefixedKeys = array();
+            $prefixedKeys = [];
             foreach ($a as $k => $v) {
                 if (isset($k[0]) ? "\0" !== $k[0] : \PHP_VERSION_ID >= 70200) {
                     if (!isset($publicProperties[$class])) {
@@ -109,7 +109,7 @@ public static function castObject($obj, $class, $hasDebugInfo = false)
      *
      * @return array The filtered array
      */
-    public static function filter(array $a, $filter, array $listedProperties = array(), &$count = 0)
+    public static function filter(array $a, $filter, array $listedProperties = [], &$count = 0)
     {
         $count = 0;
 
@@ -119,7 +119,7 @@ public static function filter(array $a, $filter, array $listedProperties = array
             if (null === $v) {
                 $type |= self::EXCLUDE_NULL & $filter;
                 $type |= self::EXCLUDE_EMPTY & $filter;
-            } elseif (false === $v || '' === $v || '0' === $v || 0 === $v || 0.0 === $v || array() === $v) {
+            } elseif (false === $v || '' === $v || '0' === $v || 0 === $v || 0.0 === $v || [] === $v) {
                 $type |= self::EXCLUDE_EMPTY & $filter;
             }
             if ((self::EXCLUDE_NOT_IMPORTANT & $filter) && !\in_array($k, $listedProperties, true)) {
diff --git a/vendor/symfony/var-dumper/Caster/ClassStub.php b/vendor/symfony/var-dumper/Caster/ClassStub.php
index f134fe781f..1a85098e15 100644
--- a/vendor/symfony/var-dumper/Caster/ClassStub.php
+++ b/vendor/symfony/var-dumper/Caster/ClassStub.php
@@ -19,8 +19,8 @@
 class ClassStub extends ConstStub
 {
     /**
-     * @param string   A PHP identifier, e.g. a class, method, interface, etc. name
-     * @param callable The callable targeted by the identifier when it is ambiguous or not a real PHP identifier
+     * @param string   $identifier A PHP identifier, e.g. a class, method, interface, etc. name
+     * @param callable $callable   The callable targeted by the identifier when it is ambiguous or not a real PHP identifier
      */
     public function __construct($identifier, $callable = null)
     {
@@ -37,16 +37,16 @@ public function __construct($identifier, $callable = null)
                 if ($callable instanceof \Closure) {
                     $r = new \ReflectionFunction($callable);
                 } elseif (\is_object($callable)) {
-                    $r = array($callable, '__invoke');
+                    $r = [$callable, '__invoke'];
                 } elseif (\is_array($callable)) {
                     $r = $callable;
                 } elseif (false !== $i = strpos($callable, '::')) {
-                    $r = array(substr($callable, 0, $i), substr($callable, 2 + $i));
+                    $r = [substr($callable, 0, $i), substr($callable, 2 + $i)];
                 } else {
                     $r = new \ReflectionFunction($callable);
                 }
             } elseif (0 < $i = strpos($identifier, '::') ?: strpos($identifier, '->')) {
-                $r = array(substr($identifier, 0, $i), substr($identifier, 2 + $i));
+                $r = [substr($identifier, 0, $i), substr($identifier, 2 + $i)];
             } else {
                 $r = new \ReflectionClass($identifier);
             }
diff --git a/vendor/symfony/var-dumper/Caster/DOMCaster.php b/vendor/symfony/var-dumper/Caster/DOMCaster.php
index 3a99865370..65151b4f4f 100644
--- a/vendor/symfony/var-dumper/Caster/DOMCaster.php
+++ b/vendor/symfony/var-dumper/Caster/DOMCaster.php
@@ -20,7 +20,7 @@
  */
 class DOMCaster
 {
-    private static $errorCodes = array(
+    private static $errorCodes = [
         DOM_PHP_ERR => 'DOM_PHP_ERR',
         DOM_INDEX_SIZE_ERR => 'DOM_INDEX_SIZE_ERR',
         DOMSTRING_SIZE_ERR => 'DOMSTRING_SIZE_ERR',
@@ -38,9 +38,9 @@ class DOMCaster
         DOM_NAMESPACE_ERR => 'DOM_NAMESPACE_ERR',
         DOM_INVALID_ACCESS_ERR => 'DOM_INVALID_ACCESS_ERR',
         DOM_VALIDATION_ERR => 'DOM_VALIDATION_ERR',
-    );
+    ];
 
-    private static $nodeTypes = array(
+    private static $nodeTypes = [
         XML_ELEMENT_NODE => 'XML_ELEMENT_NODE',
         XML_ATTRIBUTE_NODE => 'XML_ATTRIBUTE_NODE',
         XML_TEXT_NODE => 'XML_TEXT_NODE',
@@ -59,7 +59,7 @@ class DOMCaster
         XML_ATTRIBUTE_DECL_NODE => 'XML_ATTRIBUTE_DECL_NODE',
         XML_ENTITY_DECL_NODE => 'XML_ENTITY_DECL_NODE',
         XML_NAMESPACE_DECL_NODE => 'XML_NAMESPACE_DECL_NODE',
-    );
+    ];
 
     public static function castException(\DOMException $e, array $a, Stub $stub, $isNested)
     {
@@ -73,26 +73,26 @@ public static function castException(\DOMException $e, array $a, Stub $stub, $is
 
     public static function castLength($dom, array $a, Stub $stub, $isNested)
     {
-        $a += array(
+        $a += [
             'length' => $dom->length,
-        );
+        ];
 
         return $a;
     }
 
     public static function castImplementation($dom, array $a, Stub $stub, $isNested)
     {
-        $a += array(
+        $a += [
             Caster::PREFIX_VIRTUAL.'Core' => '1.0',
             Caster::PREFIX_VIRTUAL.'XML' => '2.0',
-        );
+        ];
 
         return $a;
     }
 
     public static function castNode(\DOMNode $dom, array $a, Stub $stub, $isNested)
     {
-        $a += array(
+        $a += [
             'nodeName' => $dom->nodeName,
             'nodeValue' => new CutStub($dom->nodeValue),
             'nodeType' => new ConstStub(self::$nodeTypes[$dom->nodeType], $dom->nodeType),
@@ -109,14 +109,14 @@ public static function castNode(\DOMNode $dom, array $a, Stub $stub, $isNested)
             'localName' => $dom->localName,
             'baseURI' => $dom->baseURI ? new LinkStub($dom->baseURI) : $dom->baseURI,
             'textContent' => new CutStub($dom->textContent),
-        );
+        ];
 
         return $a;
     }
 
     public static function castNameSpaceNode(\DOMNameSpaceNode $dom, array $a, Stub $stub, $isNested)
     {
-        $a += array(
+        $a += [
             'nodeName' => $dom->nodeName,
             'nodeValue' => new CutStub($dom->nodeValue),
             'nodeType' => new ConstStub(self::$nodeTypes[$dom->nodeType], $dom->nodeType),
@@ -125,14 +125,14 @@ public static function castNameSpaceNode(\DOMNameSpaceNode $dom, array $a, Stub
             'namespaceURI' => $dom->namespaceURI,
             'ownerDocument' => new CutStub($dom->ownerDocument),
             'parentNode' => new CutStub($dom->parentNode),
-        );
+        ];
 
         return $a;
     }
 
     public static function castDocument(\DOMDocument $dom, array $a, Stub $stub, $isNested, $filter = 0)
     {
-        $a += array(
+        $a += [
             'doctype' => $dom->doctype,
             'implementation' => $dom->implementation,
             'documentElement' => new CutStub($dom->documentElement),
@@ -152,12 +152,12 @@ public static function castDocument(\DOMDocument $dom, array $a, Stub $stub, $is
             'preserveWhiteSpace' => $dom->preserveWhiteSpace,
             'recover' => $dom->recover,
             'substituteEntities' => $dom->substituteEntities,
-        );
+        ];
 
         if (!($filter & Caster::EXCLUDE_VERBOSE)) {
             $formatOutput = $dom->formatOutput;
             $dom->formatOutput = true;
-            $a += array(Caster::PREFIX_VIRTUAL.'xml' => $dom->saveXML());
+            $a += [Caster::PREFIX_VIRTUAL.'xml' => $dom->saveXML()];
             $dom->formatOutput = $formatOutput;
         }
 
@@ -166,136 +166,136 @@ public static function castDocument(\DOMDocument $dom, array $a, Stub $stub, $is
 
     public static function castCharacterData(\DOMCharacterData $dom, array $a, Stub $stub, $isNested)
     {
-        $a += array(
+        $a += [
             'data' => $dom->data,
             'length' => $dom->length,
-        );
+        ];
 
         return $a;
     }
 
     public static function castAttr(\DOMAttr $dom, array $a, Stub $stub, $isNested)
     {
-        $a += array(
+        $a += [
             'name' => $dom->name,
             'specified' => $dom->specified,
             'value' => $dom->value,
             'ownerElement' => $dom->ownerElement,
             'schemaTypeInfo' => $dom->schemaTypeInfo,
-        );
+        ];
 
         return $a;
     }
 
     public static function castElement(\DOMElement $dom, array $a, Stub $stub, $isNested)
     {
-        $a += array(
+        $a += [
             'tagName' => $dom->tagName,
             'schemaTypeInfo' => $dom->schemaTypeInfo,
-        );
+        ];
 
         return $a;
     }
 
     public static function castText(\DOMText $dom, array $a, Stub $stub, $isNested)
     {
-        $a += array(
+        $a += [
             'wholeText' => $dom->wholeText,
-        );
+        ];
 
         return $a;
     }
 
     public static function castTypeinfo(\DOMTypeinfo $dom, array $a, Stub $stub, $isNested)
     {
-        $a += array(
+        $a += [
             'typeName' => $dom->typeName,
             'typeNamespace' => $dom->typeNamespace,
-        );
+        ];
 
         return $a;
     }
 
     public static function castDomError(\DOMDomError $dom, array $a, Stub $stub, $isNested)
     {
-        $a += array(
+        $a += [
             'severity' => $dom->severity,
             'message' => $dom->message,
             'type' => $dom->type,
             'relatedException' => $dom->relatedException,
             'related_data' => $dom->related_data,
             'location' => $dom->location,
-        );
+        ];
 
         return $a;
     }
 
     public static function castLocator(\DOMLocator $dom, array $a, Stub $stub, $isNested)
     {
-        $a += array(
+        $a += [
             'lineNumber' => $dom->lineNumber,
             'columnNumber' => $dom->columnNumber,
             'offset' => $dom->offset,
             'relatedNode' => $dom->relatedNode,
             'uri' => $dom->uri ? new LinkStub($dom->uri, $dom->lineNumber) : $dom->uri,
-        );
+        ];
 
         return $a;
     }
 
     public static function castDocumentType(\DOMDocumentType $dom, array $a, Stub $stub, $isNested)
     {
-        $a += array(
+        $a += [
             'name' => $dom->name,
             'entities' => $dom->entities,
             'notations' => $dom->notations,
             'publicId' => $dom->publicId,
             'systemId' => $dom->systemId,
             'internalSubset' => $dom->internalSubset,
-        );
+        ];
 
         return $a;
     }
 
     public static function castNotation(\DOMNotation $dom, array $a, Stub $stub, $isNested)
     {
-        $a += array(
+        $a += [
             'publicId' => $dom->publicId,
             'systemId' => $dom->systemId,
-        );
+        ];
 
         return $a;
     }
 
     public static function castEntity(\DOMEntity $dom, array $a, Stub $stub, $isNested)
     {
-        $a += array(
+        $a += [
             'publicId' => $dom->publicId,
             'systemId' => $dom->systemId,
             'notationName' => $dom->notationName,
             'actualEncoding' => $dom->actualEncoding,
             'encoding' => $dom->encoding,
             'version' => $dom->version,
-        );
+        ];
 
         return $a;
     }
 
     public static function castProcessingInstruction(\DOMProcessingInstruction $dom, array $a, Stub $stub, $isNested)
     {
-        $a += array(
+        $a += [
             'target' => $dom->target,
             'data' => $dom->data,
-        );
+        ];
 
         return $a;
     }
 
     public static function castXPath(\DOMXPath $dom, array $a, Stub $stub, $isNested)
     {
-        $a += array(
+        $a += [
             'document' => $dom->document,
-        );
+        ];
 
         return $a;
     }
diff --git a/vendor/symfony/var-dumper/Caster/DateCaster.php b/vendor/symfony/var-dumper/Caster/DateCaster.php
index 175d98655f..3b030b734a 100644
--- a/vendor/symfony/var-dumper/Caster/DateCaster.php
+++ b/vendor/symfony/var-dumper/Caster/DateCaster.php
@@ -31,7 +31,7 @@ public static function castDateTime(\DateTimeInterface $d, array $a, Stub $stub,
             .($location ? ($d->format('I') ? "\nDST On" : "\nDST Off") : '')
         ;
 
-        $a = array();
+        $a = [];
         $a[$prefix.'date'] = new ConstStub(self::formatDateTime($d, $location ? ' e (P)' : ' P'), $title);
 
         $stub->class .= $d->format(' @U');
@@ -45,7 +45,7 @@ public static function castInterval(\DateInterval $interval, array $a, Stub $stu
         $numberOfSeconds = $now->add($interval)->getTimestamp() - $now->getTimestamp();
         $title = number_format($numberOfSeconds, 0, '.', ' ').'s';
 
-        $i = array(Caster::PREFIX_VIRTUAL.'interval' => new ConstStub(self::formatInterval($interval), $title));
+        $i = [Caster::PREFIX_VIRTUAL.'interval' => new ConstStub(self::formatInterval($interval), $title)];
 
         return $filter & Caster::EXCLUDE_VERBOSE ? $i : $i + $a;
     }
@@ -78,7 +78,7 @@ public static function castTimeZone(\DateTimeZone $timeZone, array $a, Stub $stu
         $formatted = (new \DateTime('now', $timeZone))->format($location ? 'e (P)' : 'P');
         $title = $location && \extension_loaded('intl') ? \Locale::getDisplayRegion('-'.$location['country_code'], \Locale::getDefault()) : '';
 
-        $z = array(Caster::PREFIX_VIRTUAL.'timezone' => new ConstStub($formatted, $title));
+        $z = [Caster::PREFIX_VIRTUAL.'timezone' => new ConstStub($formatted, $title)];
 
         return $filter & Caster::EXCLUDE_VERBOSE ? $z : $z + $a;
     }
@@ -89,7 +89,7 @@ public static function castPeriod(\DatePeriod $p, array $a, Stub $stub, $isNeste
             return $a;
         }
 
-        $dates = array();
+        $dates = [];
         if (\PHP_VERSION_ID >= 70107) { // see https://bugs.php.net/bug.php?id=74639
             foreach (clone $p as $i => $d) {
                 if (3 === $i) {
@@ -112,7 +112,7 @@ public static function castPeriod(\DatePeriod $p, array $a, Stub $stub, $isNeste
             ($end = $p->getEndDate()) ? 'to '.self::formatDateTime($end) : 'recurring '.$p->recurrences.' time/s'
         );
 
-        $p = array(Caster::PREFIX_VIRTUAL.'period' => new ConstStub($period, implode("\n", $dates)));
+        $p = [Caster::PREFIX_VIRTUAL.'period' => new ConstStub($period, implode("\n", $dates))];
 
         return $filter & Caster::EXCLUDE_VERBOSE ? $p : $p + $a;
     }
diff --git a/vendor/symfony/var-dumper/Caster/DoctrineCaster.php b/vendor/symfony/var-dumper/Caster/DoctrineCaster.php
index 785d0270d7..696b87816e 100644
--- a/vendor/symfony/var-dumper/Caster/DoctrineCaster.php
+++ b/vendor/symfony/var-dumper/Caster/DoctrineCaster.php
@@ -25,8 +25,8 @@ class DoctrineCaster
 {
     public static function castCommonProxy(CommonProxy $proxy, array $a, Stub $stub, $isNested)
     {
-        foreach (array('__cloner__', '__initializer__') as $k) {
-            if (array_key_exists($k, $a)) {
+        foreach (['__cloner__', '__initializer__'] as $k) {
+            if (\array_key_exists($k, $a)) {
                 unset($a[$k]);
                 ++$stub->cut;
             }
@@ -37,8 +37,8 @@ public static function castCommonProxy(CommonProxy $proxy, array $a, Stub $stub,
 
     public static function castOrmProxy(OrmProxy $proxy, array $a, Stub $stub, $isNested)
     {
-        foreach (array('_entityPersister', '_identifier') as $k) {
-            if (array_key_exists($k = "\0Doctrine\\ORM\\Proxy\\Proxy\0".$k, $a)) {
+        foreach (['_entityPersister', '_identifier'] as $k) {
+            if (\array_key_exists($k = "\0Doctrine\\ORM\\Proxy\\Proxy\0".$k, $a)) {
                 unset($a[$k]);
                 ++$stub->cut;
             }
@@ -49,8 +49,8 @@ public static function castOrmProxy(OrmProxy $proxy, array $a, Stub $stub, $isNe
 
     public static function castPersistentCollection(PersistentCollection $coll, array $a, Stub $stub, $isNested)
     {
-        foreach (array('snapshot', 'association', 'typeClass') as $k) {
-            if (array_key_exists($k = "\0Doctrine\\ORM\\PersistentCollection\0".$k, $a)) {
+        foreach (['snapshot', 'association', 'typeClass'] as $k) {
+            if (\array_key_exists($k = "\0Doctrine\\ORM\\PersistentCollection\0".$k, $a)) {
                 $a[$k] = new CutStub($a[$k]);
             }
         }
diff --git a/vendor/symfony/var-dumper/Caster/ExceptionCaster.php b/vendor/symfony/var-dumper/Caster/ExceptionCaster.php
index 49df71da7e..e0acbe39df 100644
--- a/vendor/symfony/var-dumper/Caster/ExceptionCaster.php
+++ b/vendor/symfony/var-dumper/Caster/ExceptionCaster.php
@@ -24,7 +24,7 @@ class ExceptionCaster
 {
     public static $srcContext = 1;
     public static $traceArgs = true;
-    public static $errorTypes = array(
+    public static $errorTypes = [
         E_DEPRECATED => 'E_DEPRECATED',
         E_USER_DEPRECATED => 'E_USER_DEPRECATED',
         E_RECOVERABLE_ERROR => 'E_RECOVERABLE_ERROR',
@@ -40,9 +40,9 @@ class ExceptionCaster
         E_USER_WARNING => 'E_USER_WARNING',
         E_USER_NOTICE => 'E_USER_NOTICE',
         E_STRICT => 'E_STRICT',
-    );
+    ];
 
-    private static $framesCache = array();
+    private static $framesCache = [];
 
     public static function castError(\Error $e, array $a, Stub $stub, $isNested, $filter = 0)
     {
@@ -92,10 +92,10 @@ public static function castSilencedErrorContext(SilencedErrorContext $e, array $
             $a[$s] = new ConstStub(self::$errorTypes[$a[$s]], $a[$s]);
         }
 
-        $trace = array(array(
+        $trace = [[
             'file' => $a[$sPrefix.'file'],
             'line' => $a[$sPrefix.'line'],
-        ));
+        ]];
 
         if (isset($a[$sPrefix.'trace'])) {
             $trace = array_merge($trace, $a[$sPrefix.'trace']);
@@ -117,16 +117,16 @@ public static function castTraceStub(TraceStub $trace, array $a, Stub $stub, $is
         $frames = $trace->value;
         $prefix = Caster::PREFIX_VIRTUAL;
 
-        $a = array();
+        $a = [];
         $j = \count($frames);
         if (0 > $i = $trace->sliceOffset) {
             $i = max(0, $j + $i);
         }
         if (!isset($trace->value[$i])) {
-            return array();
+            return [];
         }
         $lastCall = isset($frames[$i]['function']) ? (isset($frames[$i]['class']) ? $frames[0]['class'].$frames[$i]['type'] : '').$frames[$i]['function'].'()' : '';
-        $frames[] = array('function' => '');
+        $frames[] = ['function' => ''];
         $collapse = false;
 
         for ($j += $trace->numberingOffset - $i++; isset($frames[$i]); ++$i, --$j) {
@@ -134,16 +134,16 @@ public static function castTraceStub(TraceStub $trace, array $a, Stub $stub, $is
             $call = isset($f['function']) ? (isset($f['class']) ? $f['class'].$f['type'] : '').$f['function'] : '???';
 
             $frame = new FrameStub(
-                array(
+                [
                     'object' => isset($f['object']) ? $f['object'] : null,
                     'class' => isset($f['class']) ? $f['class'] : null,
                     'type' => isset($f['type']) ? $f['type'] : null,
                     'function' => isset($f['function']) ? $f['function'] : null,
-                ) + $frames[$i - 1],
+                ] + $frames[$i - 1],
                 false,
                 true
             );
-            $f = self::castFrameStub($frame, array(), $frame, true);
+            $f = self::castFrameStub($frame, [], $frame, true);
             if (isset($f[$prefix.'src'])) {
                 foreach ($f[$prefix.'src']->value as $label => $frame) {
                     if (0 === strpos($label, "\0~collapse=0")) {
@@ -239,7 +239,7 @@ public static function castFrameStub(FrameStub $frame, array $a, Stub $stub, $is
                     $srcAttr .= '&separator=:';
                 }
                 $srcAttr .= $ellipsis ? '&ellipsis-type=path&ellipsis='.$ellipsis.'&ellipsis-tail='.$ellipsisTail : '';
-                self::$framesCache[$cacheKey] = $a[$prefix.'src'] = new EnumStub(array("\0~$srcAttr\0$srcKey" => $src));
+                self::$framesCache[$cacheKey] = $a[$prefix.'src'] = new EnumStub(["\0~$srcAttr\0$srcKey" => $src]);
             }
         }
 
@@ -265,7 +265,7 @@ private static function filterExceptionArray($xClass, array $a, $xPrefix, $filte
             $trace = $a[$xPrefix.'trace'];
             unset($a[$xPrefix.'trace']); // Ensures the trace is always last
         } else {
-            $trace = array();
+            $trace = [];
         }
 
         if (!($filter & Caster::EXCLUDE_VERBOSE) && $trace) {
@@ -291,23 +291,23 @@ private static function traceUnshift(&$trace, $class, $file, $line)
         if (isset($trace[0]['file'], $trace[0]['line']) && $trace[0]['file'] === $file && $trace[0]['line'] === $line) {
             return;
         }
-        array_unshift($trace, array(
+        array_unshift($trace, [
             'function' => $class ? 'new '.$class : null,
             'file' => $file,
             'line' => $line,
-        ));
+        ]);
     }
 
     private static function extractSource($srcLines, $line, $srcContext, $title, $lang, $file = null)
     {
         $srcLines = explode("\n", $srcLines);
-        $src = array();
+        $src = [];
 
         for ($i = $line - 1 - $srcContext; $i <= $line - 1 + $srcContext; ++$i) {
             $src[] = (isset($srcLines[$i]) ? $srcLines[$i] : '')."\n";
         }
 
-        $srcLines = array();
+        $srcLines = [];
         $ltrim = 0;
         do {
             $pad = null;
diff --git a/vendor/symfony/var-dumper/Caster/LinkStub.php b/vendor/symfony/var-dumper/Caster/LinkStub.php
index e8e408fec5..b589b502d4 100644
--- a/vendor/symfony/var-dumper/Caster/LinkStub.php
+++ b/vendor/symfony/var-dumper/Caster/LinkStub.php
@@ -55,9 +55,9 @@ public function __construct($label, $line = 0, $href = null)
         if ($composerRoot = $this->getComposerRoot($href, $this->inVendor)) {
             $this->attr['ellipsis'] = \strlen($href) - \strlen($composerRoot) + 1;
             $this->attr['ellipsis-type'] = 'path';
-            $this->attr['ellipsis-tail'] = 1 + ($this->inVendor ? 2 + \strlen(implode(\array_slice(explode(\DIRECTORY_SEPARATOR, substr($href, 1 - $this->attr['ellipsis'])), 0, 2))) : 0);
+            $this->attr['ellipsis-tail'] = 1 + ($this->inVendor ? 2 + \strlen(implode('', \array_slice(explode(\DIRECTORY_SEPARATOR, substr($href, 1 - $this->attr['ellipsis'])), 0, 2))) : 0);
         } elseif (3 < \count($ellipsis = explode(\DIRECTORY_SEPARATOR, $href))) {
-            $this->attr['ellipsis'] = 2 + \strlen(implode(\array_slice($ellipsis, -2)));
+            $this->attr['ellipsis'] = 2 + \strlen(implode('', \array_slice($ellipsis, -2)));
             $this->attr['ellipsis-type'] = 'path';
             $this->attr['ellipsis-tail'] = 1;
         }
@@ -66,7 +66,7 @@ public function __construct($label, $line = 0, $href = null)
     private function getComposerRoot($file, &$inVendor)
     {
         if (null === self::$vendorRoots) {
-            self::$vendorRoots = array();
+            self::$vendorRoots = [];
 
             foreach (get_declared_classes() as $class) {
                 if ('C' === $class[0] && 0 === strpos($class, 'ComposerAutoloaderInit')) {
diff --git a/vendor/symfony/var-dumper/Caster/PdoCaster.php b/vendor/symfony/var-dumper/Caster/PdoCaster.php
index 83a001d960..8af51829a9 100644
--- a/vendor/symfony/var-dumper/Caster/PdoCaster.php
+++ b/vendor/symfony/var-dumper/Caster/PdoCaster.php
@@ -20,53 +20,53 @@
  */
 class PdoCaster
 {
-    private static $pdoAttributes = array(
-        'CASE' => array(
+    private static $pdoAttributes = [
+        'CASE' => [
             \PDO::CASE_LOWER => 'LOWER',
             \PDO::CASE_NATURAL => 'NATURAL',
             \PDO::CASE_UPPER => 'UPPER',
-        ),
-        'ERRMODE' => array(
+        ],
+        'ERRMODE' => [
             \PDO::ERRMODE_SILENT => 'SILENT',
             \PDO::ERRMODE_WARNING => 'WARNING',
             \PDO::ERRMODE_EXCEPTION => 'EXCEPTION',
-        ),
+        ],
         'TIMEOUT',
         'PREFETCH',
         'AUTOCOMMIT',
         'PERSISTENT',
         'DRIVER_NAME',
         'SERVER_INFO',
-        'ORACLE_NULLS' => array(
+        'ORACLE_NULLS' => [
             \PDO::NULL_NATURAL => 'NATURAL',
             \PDO::NULL_EMPTY_STRING => 'EMPTY_STRING',
             \PDO::NULL_TO_STRING => 'TO_STRING',
-        ),
+        ],
         'CLIENT_VERSION',
         'SERVER_VERSION',
         'STATEMENT_CLASS',
         'EMULATE_PREPARES',
         'CONNECTION_STATUS',
         'STRINGIFY_FETCHES',
-        'DEFAULT_FETCH_MODE' => array(
+        'DEFAULT_FETCH_MODE' => [
             \PDO::FETCH_ASSOC => 'ASSOC',
             \PDO::FETCH_BOTH => 'BOTH',
             \PDO::FETCH_LAZY => 'LAZY',
             \PDO::FETCH_NUM => 'NUM',
             \PDO::FETCH_OBJ => 'OBJ',
-        ),
-    );
+        ],
+    ];
 
     public static function castPdo(\PDO $c, array $a, Stub $stub, $isNested)
     {
-        $attr = array();
+        $attr = [];
         $errmode = $c->getAttribute(\PDO::ATTR_ERRMODE);
         $c->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
 
         foreach (self::$pdoAttributes as $k => $v) {
             if (!isset($k[0])) {
                 $k = $v;
-                $v = array();
+                $v = [];
             }
 
             try {
@@ -85,11 +85,11 @@ public static function castPdo(\PDO $c, array $a, Stub $stub, $isNested)
         }
 
         $prefix = Caster::PREFIX_VIRTUAL;
-        $a += array(
+        $a += [
             $prefix.'inTransaction' => method_exists($c, 'inTransaction'),
             $prefix.'errorInfo' => $c->errorInfo(),
             $prefix.'attributes' => new EnumStub($attr),
-        );
+        ];
 
         if ($a[$prefix.'inTransaction']) {
             $a[$prefix.'inTransaction'] = $c->inTransaction();
diff --git a/vendor/symfony/var-dumper/Caster/PgSqlCaster.php b/vendor/symfony/var-dumper/Caster/PgSqlCaster.php
index 88414e4ccf..cd6bf5b5fe 100644
--- a/vendor/symfony/var-dumper/Caster/PgSqlCaster.php
+++ b/vendor/symfony/var-dumper/Caster/PgSqlCaster.php
@@ -20,7 +20,7 @@
  */
 class PgSqlCaster
 {
-    private static $paramCodes = array(
+    private static $paramCodes = [
         'server_encoding',
         'client_encoding',
         'is_superuser',
@@ -31,17 +31,17 @@ class PgSqlCaster
         'integer_datetimes',
         'application_name',
         'standard_conforming_strings',
-    );
+    ];
 
-    private static $transactionStatus = array(
+    private static $transactionStatus = [
         PGSQL_TRANSACTION_IDLE => 'PGSQL_TRANSACTION_IDLE',
         PGSQL_TRANSACTION_ACTIVE => 'PGSQL_TRANSACTION_ACTIVE',
         PGSQL_TRANSACTION_INTRANS => 'PGSQL_TRANSACTION_INTRANS',
         PGSQL_TRANSACTION_INERROR => 'PGSQL_TRANSACTION_INERROR',
         PGSQL_TRANSACTION_UNKNOWN => 'PGSQL_TRANSACTION_UNKNOWN',
-    );
+    ];
 
-    private static $resultStatus = array(
+    private static $resultStatus = [
         PGSQL_EMPTY_QUERY => 'PGSQL_EMPTY_QUERY',
         PGSQL_COMMAND_OK => 'PGSQL_COMMAND_OK',
         PGSQL_TUPLES_OK => 'PGSQL_TUPLES_OK',
@@ -50,9 +50,9 @@ class PgSqlCaster
         PGSQL_BAD_RESPONSE => 'PGSQL_BAD_RESPONSE',
         PGSQL_NONFATAL_ERROR => 'PGSQL_NONFATAL_ERROR',
         PGSQL_FATAL_ERROR => 'PGSQL_FATAL_ERROR',
-    );
+    ];
 
-    private static $diagCodes = array(
+    private static $diagCodes = [
         'severity' => PGSQL_DIAG_SEVERITY,
         'sqlstate' => PGSQL_DIAG_SQLSTATE,
         'message' => PGSQL_DIAG_MESSAGE_PRIMARY,
@@ -65,7 +65,7 @@ class PgSqlCaster
         'file' => PGSQL_DIAG_SOURCE_FILE,
         'line' => PGSQL_DIAG_SOURCE_LINE,
         'function' => PGSQL_DIAG_SOURCE_FUNCTION,
-    );
+    ];
 
     public static function castLargeObject($lo, array $a, Stub $stub, $isNested)
     {
@@ -127,14 +127,14 @@ public static function castResult($result, array $a, Stub $stub, $isNested)
         $fields = pg_num_fields($result);
 
         for ($i = 0; $i < $fields; ++$i) {
-            $field = array(
+            $field = [
                 'name' => pg_field_name($result, $i),
                 'table' => sprintf('%s (OID: %s)', pg_field_table($result, $i), pg_field_table($result, $i, true)),
                 'type' => sprintf('%s (OID: %s)', pg_field_type($result, $i), pg_field_type_oid($result, $i)),
                 'nullable' => (bool) pg_field_is_null($result, $i),
                 'storage' => pg_field_size($result, $i).' bytes',
                 'display' => pg_field_prtlen($result, $i).' chars',
-            );
+            ];
             if (' (OID: )' === $field['table']) {
                 $field['table'] = null;
             }
diff --git a/vendor/symfony/var-dumper/Caster/RedisCaster.php b/vendor/symfony/var-dumper/Caster/RedisCaster.php
index 409a0d48a1..1e2fb39916 100644
--- a/vendor/symfony/var-dumper/Caster/RedisCaster.php
+++ b/vendor/symfony/var-dumper/Caster/RedisCaster.php
@@ -20,11 +20,11 @@
  */
 class RedisCaster
 {
-    private static $serializer = array(
+    private static $serializer = [
         \Redis::SERIALIZER_NONE => 'NONE',
         \Redis::SERIALIZER_PHP => 'PHP',
         2 => 'IGBINARY', // Optional Redis::SERIALIZER_IGBINARY
-    );
+    ];
 
     public static function castRedis(\Redis $c, array $a, Stub $stub, $isNested)
     {
@@ -40,15 +40,15 @@ public static function castRedis(\Redis $c, array $a, Stub $stub, $isNested)
         }
 
         if (!$connected = $c->isConnected()) {
-            return $a + array(
+            return $a + [
                 $prefix.'isConnected' => $connected,
-            );
+            ];
         }
 
         $ser = $c->getOption(\Redis::OPT_SERIALIZER);
         $retry = \defined('Redis::OPT_SCAN') ? $c->getOption(\Redis::OPT_SCAN) : 0;
 
-        return $a + array(
+        return $a + [
             $prefix.'isConnected' => $connected,
             $prefix.'host' => $c->getHost(),
             $prefix.'port' => $c->getPort(),
@@ -56,22 +56,22 @@ public static function castRedis(\Redis $c, array $a, Stub $stub, $isNested)
             $prefix.'dbNum' => $c->getDbNum(),
             $prefix.'timeout' => $c->getTimeout(),
             $prefix.'persistentId' => $c->getPersistentID(),
-            $prefix.'options' => new EnumStub(array(
+            $prefix.'options' => new EnumStub([
                 'READ_TIMEOUT' => $c->getOption(\Redis::OPT_READ_TIMEOUT),
                 'SERIALIZER' => isset(self::$serializer[$ser]) ? new ConstStub(self::$serializer[$ser], $ser) : $ser,
                 'PREFIX' => $c->getOption(\Redis::OPT_PREFIX),
                 'SCAN' => new ConstStub($retry ? 'RETRY' : 'NORETRY', $retry),
-            )),
-        );
+            ]),
+        ];
     }
 
     public static function castRedisArray(\RedisArray $c, array $a, Stub $stub, $isNested)
     {
         $prefix = Caster::PREFIX_VIRTUAL;
 
-        return $a + array(
+        return $a + [
             $prefix.'hosts' => $c->_hosts(),
             $prefix.'function' => ClassStub::wrapCallable($c->_function()),
-        );
+        ];
     }
 }
diff --git a/vendor/symfony/var-dumper/Caster/ReflectionCaster.php b/vendor/symfony/var-dumper/Caster/ReflectionCaster.php
index 2b049eaecb..1543bbfdfa 100644
--- a/vendor/symfony/var-dumper/Caster/ReflectionCaster.php
+++ b/vendor/symfony/var-dumper/Caster/ReflectionCaster.php
@@ -20,7 +20,7 @@
  */
 class ReflectionCaster
 {
-    private static $extraMap = array(
+    private static $extraMap = [
         'docComment' => 'getDocComment',
         'extension' => 'getExtensionName',
         'isDisabled' => 'isDisabled',
@@ -29,7 +29,7 @@ class ReflectionCaster
         'isUserDefined' => 'isUserDefined',
         'isGenerator' => 'isGenerator',
         'isVariadic' => 'isVariadic',
-    );
+    ];
 
     public static function castClosure(\Closure $c, array $a, Stub $stub, $isNested, $filter = 0)
     {
@@ -39,11 +39,16 @@ public static function castClosure(\Closure $c, array $a, Stub $stub, $isNested,
         $stub->class = 'Closure'; // HHVM generates unique class names for closures
         $a = static::castFunctionAbstract($c, $a, $stub, $isNested, $filter);
 
+        if (false === strpos($c->name, '{closure}')) {
+            $stub->class = isset($a[$prefix.'class']) ? $a[$prefix.'class']->value.'::'.$c->name : $c->name;
+            unset($a[$prefix.'class']);
+        }
+
         if (isset($a[$prefix.'parameters'])) {
             foreach ($a[$prefix.'parameters']->value as &$v) {
                 $param = $v;
-                $v = new EnumStub(array());
-                foreach (static::castParameter($param, array(), $stub, true) as $k => $param) {
+                $v = new EnumStub([]);
+                foreach (static::castParameter($param, [], $stub, true) as $k => $param) {
                     if ("\0" === $k[0]) {
                         $v->value[substr($k, 3)] = $param;
                     }
@@ -85,11 +90,11 @@ public static function castType(\ReflectionType $c, array $a, Stub $stub, $isNes
     {
         $prefix = Caster::PREFIX_VIRTUAL;
 
-        $a += array(
+        $a += [
             $prefix.'name' => $c instanceof \ReflectionNamedType ? $c->getName() : $c->__toString(),
             $prefix.'allowsNull' => $c->allowsNull(),
             $prefix.'isBuiltin' => $c->isBuiltin(),
-        );
+        ];
 
         return $a;
     }
@@ -102,28 +107,28 @@ public static function castReflectionGenerator(\ReflectionGenerator $c, array $a
             $a[$prefix.'this'] = new CutStub($c->getThis());
         }
         $function = $c->getFunction();
-        $frame = array(
+        $frame = [
             'class' => isset($function->class) ? $function->class : null,
             'type' => isset($function->class) ? ($function->isStatic() ? '::' : '->') : null,
             'function' => $function->name,
             'file' => $c->getExecutingFile(),
             'line' => $c->getExecutingLine(),
-        );
+        ];
         if ($trace = $c->getTrace(DEBUG_BACKTRACE_IGNORE_ARGS)) {
             $function = new \ReflectionGenerator($c->getExecutingGenerator());
-            array_unshift($trace, array(
+            array_unshift($trace, [
                 'function' => 'yield',
                 'file' => $function->getExecutingFile(),
                 'line' => $function->getExecutingLine() - 1,
-            ));
+            ]);
             $trace[] = $frame;
             $a[$prefix.'trace'] = new TraceStub($trace, false, 0, -1, -1);
         } else {
             $function = new FrameStub($frame, false, true);
-            $function = ExceptionCaster::castFrameStub($function, array(), $function, true);
-            $a[$prefix.'executing'] = new EnumStub(array(
+            $function = ExceptionCaster::castFrameStub($function, [], $function, true);
+            $a[$prefix.'executing'] = new EnumStub([
                 "\0~separator= \0".$frame['class'].$frame['type'].$frame['function'].'()' => $function[$prefix.'src'],
-            ));
+            ]);
         }
 
         $a[Caster::PREFIX_VIRTUAL.'closed'] = false;
@@ -139,11 +144,11 @@ public static function castClass(\ReflectionClass $c, array $a, Stub $stub, $isN
             $a[$prefix.'modifiers'] = implode(' ', $n);
         }
 
-        self::addMap($a, $c, array(
+        self::addMap($a, $c, [
             'extends' => 'getParentClass',
             'implements' => 'getInterfaceNames',
             'constants' => 'getConstants',
-        ));
+        ]);
 
         foreach ($c->getProperties() as $n) {
             $a[$prefix.'properties'][$n->name] = $n;
@@ -164,17 +169,17 @@ public static function castFunctionAbstract(\ReflectionFunctionAbstract $c, arra
     {
         $prefix = Caster::PREFIX_VIRTUAL;
 
-        self::addMap($a, $c, array(
+        self::addMap($a, $c, [
             'returnsReference' => 'returnsReference',
             'returnType' => 'getReturnType',
             'class' => 'getClosureScopeClass',
             'this' => 'getClosureThis',
-        ));
+        ]);
 
         if (isset($a[$prefix.'returnType'])) {
             $v = $a[$prefix.'returnType'];
             $v = $v instanceof \ReflectionNamedType ? $v->getName() : $v->__toString();
-            $a[$prefix.'returnType'] = new ClassStub($a[$prefix.'returnType']->allowsNull() ? '?'.$v : $v, array(class_exists($v, false) || interface_exists($v, false) || trait_exists($v, false) ? $v : '', ''));
+            $a[$prefix.'returnType'] = new ClassStub($a[$prefix.'returnType']->allowsNull() ? '?'.$v : $v, [class_exists($v, false) || interface_exists($v, false) || trait_exists($v, false) ? $v : '', '']);
         }
         if (isset($a[$prefix.'class'])) {
             $a[$prefix.'class'] = new ClassStub($a[$prefix.'class']);
@@ -233,12 +238,12 @@ public static function castParameter(\ReflectionParameter $c, array $a, Stub $st
         // Added by HHVM
         unset($a['info']);
 
-        self::addMap($a, $c, array(
+        self::addMap($a, $c, [
             'position' => 'getPosition',
             'isVariadic' => 'isVariadic',
             'byReference' => 'isPassedByReference',
             'allowsNull' => 'allowsNull',
-        ));
+        ]);
 
         if (method_exists($c, 'getType')) {
             if ($v = $c->getType()) {
@@ -250,7 +255,7 @@ public static function castParameter(\ReflectionParameter $c, array $a, Stub $st
 
         if (isset($a[$prefix.'typeHint'])) {
             $v = $a[$prefix.'typeHint'];
-            $a[$prefix.'typeHint'] = new ClassStub($v, array(class_exists($v, false) || interface_exists($v, false) || trait_exists($v, false) ? $v : '', ''));
+            $a[$prefix.'typeHint'] = new ClassStub($v, [class_exists($v, false) || interface_exists($v, false) || trait_exists($v, false) ? $v : '', '']);
         } else {
             unset($a[$prefix.'allowsNull']);
         }
@@ -283,7 +288,7 @@ public static function castProperty(\ReflectionProperty $c, array $a, Stub $stub
 
     public static function castExtension(\ReflectionExtension $c, array $a, Stub $stub, $isNested)
     {
-        self::addMap($a, $c, array(
+        self::addMap($a, $c, [
             'version' => 'getVersion',
             'dependencies' => 'getDependencies',
             'iniEntries' => 'getIniEntries',
@@ -292,26 +297,26 @@ public static function castExtension(\ReflectionExtension $c, array $a, Stub $st
             'constants' => 'getConstants',
             'functions' => 'getFunctions',
             'classes' => 'getClasses',
-        ));
+        ]);
 
         return $a;
     }
 
     public static function castZendExtension(\ReflectionZendExtension $c, array $a, Stub $stub, $isNested)
     {
-        self::addMap($a, $c, array(
+        self::addMap($a, $c, [
             'version' => 'getVersion',
             'author' => 'getAuthor',
             'copyright' => 'getCopyright',
             'url' => 'getURL',
-        ));
+        ]);
 
         return $a;
     }
 
     private static function addExtra(&$a, \Reflector $c)
     {
-        $x = isset($a[Caster::PREFIX_VIRTUAL.'extra']) ? $a[Caster::PREFIX_VIRTUAL.'extra']->value : array();
+        $x = isset($a[Caster::PREFIX_VIRTUAL.'extra']) ? $a[Caster::PREFIX_VIRTUAL.'extra']->value : [];
 
         if (method_exists($c, 'getFileName') && $m = $c->getFileName()) {
             $x['file'] = new LinkStub($m, $c->getStartLine());
diff --git a/vendor/symfony/var-dumper/Caster/SplCaster.php b/vendor/symfony/var-dumper/Caster/SplCaster.php
index 0780c0a371..a223adb7f2 100644
--- a/vendor/symfony/var-dumper/Caster/SplCaster.php
+++ b/vendor/symfony/var-dumper/Caster/SplCaster.php
@@ -20,12 +20,12 @@
  */
 class SplCaster
 {
-    private static $splFileObjectFlags = array(
+    private static $splFileObjectFlags = [
         \SplFileObject::DROP_NEW_LINE => 'DROP_NEW_LINE',
         \SplFileObject::READ_AHEAD => 'READ_AHEAD',
         \SplFileObject::SKIP_EMPTY => 'SKIP_EMPTY',
         \SplFileObject::READ_CSV => 'READ_CSV',
-    );
+    ];
 
     public static function castArrayObject(\ArrayObject $c, array $a, Stub $stub, $isNested)
     {
@@ -39,9 +39,9 @@ public static function castArrayIterator(\ArrayIterator $c, array $a, Stub $stub
 
     public static function castHeap(\Iterator $c, array $a, Stub $stub, $isNested)
     {
-        $a += array(
+        $a += [
             Caster::PREFIX_VIRTUAL.'heap' => iterator_to_array(clone $c),
-        );
+        ];
 
         return $a;
     }
@@ -52,10 +52,10 @@ public static function castDoublyLinkedList(\SplDoublyLinkedList $c, array $a, S
         $mode = $c->getIteratorMode();
         $c->setIteratorMode(\SplDoublyLinkedList::IT_MODE_KEEP | $mode & ~\SplDoublyLinkedList::IT_MODE_DELETE);
 
-        $a += array(
+        $a += [
             $prefix.'mode' => new ConstStub((($mode & \SplDoublyLinkedList::IT_MODE_LIFO) ? 'IT_MODE_LIFO' : 'IT_MODE_FIFO').' | '.(($mode & \SplDoublyLinkedList::IT_MODE_DELETE) ? 'IT_MODE_DELETE' : 'IT_MODE_KEEP'), $mode),
             $prefix.'dllist' => iterator_to_array($c),
-        );
+        ];
         $c->setIteratorMode($mode);
 
         return $a;
@@ -63,7 +63,7 @@ public static function castDoublyLinkedList(\SplDoublyLinkedList $c, array $a, S
 
     public static function castFileInfo(\SplFileInfo $c, array $a, Stub $stub, $isNested)
     {
-        static $map = array(
+        static $map = [
             'path' => 'getPath',
             'filename' => 'getFilename',
             'basename' => 'getBasename',
@@ -86,7 +86,7 @@ public static function castFileInfo(\SplFileInfo $c, array $a, Stub $stub, $isNe
             'dir' => 'isDir',
             'link' => 'isLink',
             'linkTarget' => 'getLinkTarget',
-        );
+        ];
 
         $prefix = Caster::PREFIX_VIRTUAL;
 
@@ -105,7 +105,7 @@ public static function castFileInfo(\SplFileInfo $c, array $a, Stub $stub, $isNe
             $a[$prefix.'perms'] = new ConstStub(sprintf('0%o', $a[$prefix.'perms']), $a[$prefix.'perms']);
         }
 
-        static $mapDate = array('aTime', 'mTime', 'cTime');
+        static $mapDate = ['aTime', 'mTime', 'cTime'];
         foreach ($mapDate as $key) {
             if (isset($a[$prefix.$key])) {
                 $a[$prefix.$key] = new ConstStub(date('Y-m-d H:i:s', $a[$prefix.$key]), $a[$prefix.$key]);
@@ -117,14 +117,14 @@ public static function castFileInfo(\SplFileInfo $c, array $a, Stub $stub, $isNe
 
     public static function castFileObject(\SplFileObject $c, array $a, Stub $stub, $isNested)
     {
-        static $map = array(
+        static $map = [
             'csvControl' => 'getCsvControl',
             'flags' => 'getFlags',
             'maxLineLen' => 'getMaxLineLen',
             'fstat' => 'fstat',
             'eof' => 'eof',
             'key' => 'key',
-        );
+        ];
 
         $prefix = Caster::PREFIX_VIRTUAL;
 
@@ -136,7 +136,7 @@ public static function castFileObject(\SplFileObject $c, array $a, Stub $stub, $
         }
 
         if (isset($a[$prefix.'flags'])) {
-            $flagsArray = array();
+            $flagsArray = [];
             foreach (self::$splFileObjectFlags as $value => $name) {
                 if ($a[$prefix.'flags'] & $value) {
                     $flagsArray[] = $name;
@@ -146,7 +146,7 @@ public static function castFileObject(\SplFileObject $c, array $a, Stub $stub, $
         }
 
         if (isset($a[$prefix.'fstat'])) {
-            $a[$prefix.'fstat'] = new CutArrayStub($a[$prefix.'fstat'], array('dev', 'ino', 'nlink', 'rdev', 'blksize', 'blocks'));
+            $a[$prefix.'fstat'] = new CutArrayStub($a[$prefix.'fstat'], ['dev', 'ino', 'nlink', 'rdev', 'blksize', 'blocks']);
         }
 
         return $a;
@@ -154,29 +154,29 @@ public static function castFileObject(\SplFileObject $c, array $a, Stub $stub, $
 
     public static function castFixedArray(\SplFixedArray $c, array $a, Stub $stub, $isNested)
     {
-        $a += array(
+        $a += [
             Caster::PREFIX_VIRTUAL.'storage' => $c->toArray(),
-        );
+        ];
 
         return $a;
     }
 
     public static function castObjectStorage(\SplObjectStorage $c, array $a, Stub $stub, $isNested)
     {
-        $storage = array();
+        $storage = [];
         unset($a[Caster::PREFIX_DYNAMIC."\0gcdata"]); // Don't hit https://bugs.php.net/65967
 
         $clone = clone $c;
         foreach ($clone as $obj) {
-            $storage[] = array(
+            $storage[] = [
                 'object' => $obj,
                 'info' => $clone->getInfo(),
-             );
+             ];
         }
 
-        $a += array(
+        $a += [
             Caster::PREFIX_VIRTUAL.'storage' => $storage,
-        );
+        ];
 
         return $a;
     }
@@ -199,10 +199,10 @@ private static function castSplArray($c, array $a, Stub $stub, $isNested)
             $a = Caster::castObject($c, $class);
             $c->setFlags($flags);
         }
-        $a += array(
+        $a += [
             $prefix.'flag::STD_PROP_LIST' => (bool) ($flags & \ArrayObject::STD_PROP_LIST),
             $prefix.'flag::ARRAY_AS_PROPS' => (bool) ($flags & \ArrayObject::ARRAY_AS_PROPS),
-        );
+        ];
         if ($c instanceof \ArrayObject) {
             $a[$prefix.'iteratorClass'] = new ClassStub($c->getIteratorClass());
         }
diff --git a/vendor/symfony/var-dumper/Caster/StubCaster.php b/vendor/symfony/var-dumper/Caster/StubCaster.php
index b0bf5dc80d..9927d42610 100644
--- a/vendor/symfony/var-dumper/Caster/StubCaster.php
+++ b/vendor/symfony/var-dumper/Caster/StubCaster.php
@@ -35,7 +35,7 @@ public static function castStub(Stub $c, array $a, Stub $stub, $isNested)
                 $stub->class = Stub::STRING_BINARY;
             }
 
-            $a = array();
+            $a = [];
         }
 
         return $a;
@@ -51,7 +51,7 @@ public static function cutInternals($obj, array $a, Stub $stub, $isNested)
         if ($isNested) {
             $stub->cut += \count($a);
 
-            return array();
+            return [];
         }
 
         return $a;
@@ -66,7 +66,7 @@ public static function castEnum(EnumStub $c, array $a, Stub $stub, $isNested)
             $stub->cut = $c->cut;
             $stub->attr = $c->attr;
 
-            $a = array();
+            $a = [];
 
             if ($c->value) {
                 foreach (array_keys($c->value) as $k) {
diff --git a/vendor/symfony/var-dumper/Caster/SymfonyCaster.php b/vendor/symfony/var-dumper/Caster/SymfonyCaster.php
index 5d9decb67a..ae7134f55b 100644
--- a/vendor/symfony/var-dumper/Caster/SymfonyCaster.php
+++ b/vendor/symfony/var-dumper/Caster/SymfonyCaster.php
@@ -16,14 +16,14 @@
 
 class SymfonyCaster
 {
-    private static $requestGetters = array(
+    private static $requestGetters = [
         'pathInfo' => 'getPathInfo',
         'requestUri' => 'getRequestUri',
         'baseUrl' => 'getBaseUrl',
         'basePath' => 'getBasePath',
         'method' => 'getMethod',
         'format' => 'getRequestFormat',
-    );
+    ];
 
     public static function castRequest(Request $request, array $a, Stub $stub, $isNested)
     {
diff --git a/vendor/symfony/var-dumper/Caster/XmlReaderCaster.php b/vendor/symfony/var-dumper/Caster/XmlReaderCaster.php
index 19b26e69c6..3ae9ec0ba1 100644
--- a/vendor/symfony/var-dumper/Caster/XmlReaderCaster.php
+++ b/vendor/symfony/var-dumper/Caster/XmlReaderCaster.php
@@ -19,7 +19,7 @@
  */
 class XmlReaderCaster
 {
-    private static $nodeTypes = array(
+    private static $nodeTypes = [
         \XMLReader::NONE => 'NONE',
         \XMLReader::ELEMENT => 'ELEMENT',
         \XMLReader::ATTRIBUTE => 'ATTRIBUTE',
@@ -38,12 +38,12 @@ class XmlReaderCaster
         \XMLReader::END_ELEMENT => 'END_ELEMENT',
         \XMLReader::END_ENTITY => 'END_ENTITY',
         \XMLReader::XML_DECLARATION => 'XML_DECLARATION',
-    );
+    ];
 
     public static function castXmlReader(\XMLReader $reader, array $a, Stub $stub, $isNested)
     {
         $props = Caster::PREFIX_VIRTUAL.'parserProperties';
-        $info = array(
+        $info = [
             'localName' => $reader->localName,
             'prefix' => $reader->prefix,
             'nodeType' => new ConstStub(self::$nodeTypes[$reader->nodeType], $reader->nodeType),
@@ -55,20 +55,20 @@ public static function castXmlReader(\XMLReader $reader, array $a, Stub $stub, $
             'value' => $reader->value,
             'namespaceURI' => $reader->namespaceURI,
             'baseURI' => $reader->baseURI ? new LinkStub($reader->baseURI) : $reader->baseURI,
-            $props => array(
+            $props => [
                 'LOADDTD' => $reader->getParserProperty(\XMLReader::LOADDTD),
                 'DEFAULTATTRS' => $reader->getParserProperty(\XMLReader::DEFAULTATTRS),
                 'VALIDATE' => $reader->getParserProperty(\XMLReader::VALIDATE),
                 'SUBST_ENTITIES' => $reader->getParserProperty(\XMLReader::SUBST_ENTITIES),
-            ),
-        );
+            ],
+        ];
 
-        if ($info[$props] = Caster::filter($info[$props], Caster::EXCLUDE_EMPTY, array(), $count)) {
+        if ($info[$props] = Caster::filter($info[$props], Caster::EXCLUDE_EMPTY, [], $count)) {
             $info[$props] = new EnumStub($info[$props]);
             $info[$props]->cut = $count;
         }
 
-        $info = Caster::filter($info, Caster::EXCLUDE_EMPTY, array(), $count);
+        $info = Caster::filter($info, Caster::EXCLUDE_EMPTY, [], $count);
         // +2 because hasValue and hasAttributes are always filtered
         $stub->cut += $count + 2;
 
diff --git a/vendor/symfony/var-dumper/Caster/XmlResourceCaster.php b/vendor/symfony/var-dumper/Caster/XmlResourceCaster.php
index 5d0207ee81..117138c784 100644
--- a/vendor/symfony/var-dumper/Caster/XmlResourceCaster.php
+++ b/vendor/symfony/var-dumper/Caster/XmlResourceCaster.php
@@ -20,7 +20,7 @@
  */
 class XmlResourceCaster
 {
-    private static $xmlErrors = array(
+    private static $xmlErrors = [
         XML_ERROR_NONE => 'XML_ERROR_NONE',
         XML_ERROR_NO_MEMORY => 'XML_ERROR_NO_MEMORY',
         XML_ERROR_SYNTAX => 'XML_ERROR_SYNTAX',
@@ -43,7 +43,7 @@ class XmlResourceCaster
         XML_ERROR_INCORRECT_ENCODING => 'XML_ERROR_INCORRECT_ENCODING',
         XML_ERROR_UNCLOSED_CDATA_SECTION => 'XML_ERROR_UNCLOSED_CDATA_SECTION',
         XML_ERROR_EXTERNAL_ENTITY_HANDLING => 'XML_ERROR_EXTERNAL_ENTITY_HANDLING',
-    );
+    ];
 
     public static function castXml($h, array $a, Stub $stub, $isNested)
     {
diff --git a/vendor/symfony/var-dumper/Cloner/AbstractCloner.php b/vendor/symfony/var-dumper/Cloner/AbstractCloner.php
index 5501fc6983..de09f1803d 100644
--- a/vendor/symfony/var-dumper/Cloner/AbstractCloner.php
+++ b/vendor/symfony/var-dumper/Cloner/AbstractCloner.php
@@ -21,124 +21,124 @@
  */
 abstract class AbstractCloner implements ClonerInterface
 {
-    public static $defaultCasters = array(
-        '__PHP_Incomplete_Class' => array('Symfony\Component\VarDumper\Caster\Caster', 'castPhpIncompleteClass'),
-
-        'Symfony\Component\VarDumper\Caster\CutStub' => array('Symfony\Component\VarDumper\Caster\StubCaster', 'castStub'),
-        'Symfony\Component\VarDumper\Caster\CutArrayStub' => array('Symfony\Component\VarDumper\Caster\StubCaster', 'castCutArray'),
-        'Symfony\Component\VarDumper\Caster\ConstStub' => array('Symfony\Component\VarDumper\Caster\StubCaster', 'castStub'),
-        'Symfony\Component\VarDumper\Caster\EnumStub' => array('Symfony\Component\VarDumper\Caster\StubCaster', 'castEnum'),
-
-        'Closure' => array('Symfony\Component\VarDumper\Caster\ReflectionCaster', 'castClosure'),
-        'Generator' => array('Symfony\Component\VarDumper\Caster\ReflectionCaster', 'castGenerator'),
-        'ReflectionType' => array('Symfony\Component\VarDumper\Caster\ReflectionCaster', 'castType'),
-        'ReflectionGenerator' => array('Symfony\Component\VarDumper\Caster\ReflectionCaster', 'castReflectionGenerator'),
-        'ReflectionClass' => array('Symfony\Component\VarDumper\Caster\ReflectionCaster', 'castClass'),
-        'ReflectionFunctionAbstract' => array('Symfony\Component\VarDumper\Caster\ReflectionCaster', 'castFunctionAbstract'),
-        'ReflectionMethod' => array('Symfony\Component\VarDumper\Caster\ReflectionCaster', 'castMethod'),
-        'ReflectionParameter' => array('Symfony\Component\VarDumper\Caster\ReflectionCaster', 'castParameter'),
-        'ReflectionProperty' => array('Symfony\Component\VarDumper\Caster\ReflectionCaster', 'castProperty'),
-        'ReflectionExtension' => array('Symfony\Component\VarDumper\Caster\ReflectionCaster', 'castExtension'),
-        'ReflectionZendExtension' => array('Symfony\Component\VarDumper\Caster\ReflectionCaster', 'castZendExtension'),
-
-        'Doctrine\Common\Persistence\ObjectManager' => array('Symfony\Component\VarDumper\Caster\StubCaster', 'cutInternals'),
-        'Doctrine\Common\Proxy\Proxy' => array('Symfony\Component\VarDumper\Caster\DoctrineCaster', 'castCommonProxy'),
-        'Doctrine\ORM\Proxy\Proxy' => array('Symfony\Component\VarDumper\Caster\DoctrineCaster', 'castOrmProxy'),
-        'Doctrine\ORM\PersistentCollection' => array('Symfony\Component\VarDumper\Caster\DoctrineCaster', 'castPersistentCollection'),
-
-        'DOMException' => array('Symfony\Component\VarDumper\Caster\DOMCaster', 'castException'),
-        'DOMStringList' => array('Symfony\Component\VarDumper\Caster\DOMCaster', 'castLength'),
-        'DOMNameList' => array('Symfony\Component\VarDumper\Caster\DOMCaster', 'castLength'),
-        'DOMImplementation' => array('Symfony\Component\VarDumper\Caster\DOMCaster', 'castImplementation'),
-        'DOMImplementationList' => array('Symfony\Component\VarDumper\Caster\DOMCaster', 'castLength'),
-        'DOMNode' => array('Symfony\Component\VarDumper\Caster\DOMCaster', 'castNode'),
-        'DOMNameSpaceNode' => array('Symfony\Component\VarDumper\Caster\DOMCaster', 'castNameSpaceNode'),
-        'DOMDocument' => array('Symfony\Component\VarDumper\Caster\DOMCaster', 'castDocument'),
-        'DOMNodeList' => array('Symfony\Component\VarDumper\Caster\DOMCaster', 'castLength'),
-        'DOMNamedNodeMap' => array('Symfony\Component\VarDumper\Caster\DOMCaster', 'castLength'),
-        'DOMCharacterData' => array('Symfony\Component\VarDumper\Caster\DOMCaster', 'castCharacterData'),
-        'DOMAttr' => array('Symfony\Component\VarDumper\Caster\DOMCaster', 'castAttr'),
-        'DOMElement' => array('Symfony\Component\VarDumper\Caster\DOMCaster', 'castElement'),
-        'DOMText' => array('Symfony\Component\VarDumper\Caster\DOMCaster', 'castText'),
-        'DOMTypeinfo' => array('Symfony\Component\VarDumper\Caster\DOMCaster', 'castTypeinfo'),
-        'DOMDomError' => array('Symfony\Component\VarDumper\Caster\DOMCaster', 'castDomError'),
-        'DOMLocator' => array('Symfony\Component\VarDumper\Caster\DOMCaster', 'castLocator'),
-        'DOMDocumentType' => array('Symfony\Component\VarDumper\Caster\DOMCaster', 'castDocumentType'),
-        'DOMNotation' => array('Symfony\Component\VarDumper\Caster\DOMCaster', 'castNotation'),
-        'DOMEntity' => array('Symfony\Component\VarDumper\Caster\DOMCaster', 'castEntity'),
-        'DOMProcessingInstruction' => array('Symfony\Component\VarDumper\Caster\DOMCaster', 'castProcessingInstruction'),
-        'DOMXPath' => array('Symfony\Component\VarDumper\Caster\DOMCaster', 'castXPath'),
-
-        'XmlReader' => array('Symfony\Component\VarDumper\Caster\XmlReaderCaster', 'castXmlReader'),
-
-        'ErrorException' => array('Symfony\Component\VarDumper\Caster\ExceptionCaster', 'castErrorException'),
-        'Exception' => array('Symfony\Component\VarDumper\Caster\ExceptionCaster', 'castException'),
-        'Error' => array('Symfony\Component\VarDumper\Caster\ExceptionCaster', 'castError'),
-        'Symfony\Component\DependencyInjection\ContainerInterface' => array('Symfony\Component\VarDumper\Caster\StubCaster', 'cutInternals'),
-        'Symfony\Component\HttpFoundation\Request' => array('Symfony\Component\VarDumper\Caster\SymfonyCaster', 'castRequest'),
-        'Symfony\Component\VarDumper\Exception\ThrowingCasterException' => array('Symfony\Component\VarDumper\Caster\ExceptionCaster', 'castThrowingCasterException'),
-        'Symfony\Component\VarDumper\Caster\TraceStub' => array('Symfony\Component\VarDumper\Caster\ExceptionCaster', 'castTraceStub'),
-        'Symfony\Component\VarDumper\Caster\FrameStub' => array('Symfony\Component\VarDumper\Caster\ExceptionCaster', 'castFrameStub'),
-        'Symfony\Component\Debug\Exception\SilencedErrorContext' => array('Symfony\Component\VarDumper\Caster\ExceptionCaster', 'castSilencedErrorContext'),
-
-        'PHPUnit_Framework_MockObject_MockObject' => array('Symfony\Component\VarDumper\Caster\StubCaster', 'cutInternals'),
-        'Prophecy\Prophecy\ProphecySubjectInterface' => array('Symfony\Component\VarDumper\Caster\StubCaster', 'cutInternals'),
-        'Mockery\MockInterface' => array('Symfony\Component\VarDumper\Caster\StubCaster', 'cutInternals'),
-
-        'PDO' => array('Symfony\Component\VarDumper\Caster\PdoCaster', 'castPdo'),
-        'PDOStatement' => array('Symfony\Component\VarDumper\Caster\PdoCaster', 'castPdoStatement'),
-
-        'AMQPConnection' => array('Symfony\Component\VarDumper\Caster\AmqpCaster', 'castConnection'),
-        'AMQPChannel' => array('Symfony\Component\VarDumper\Caster\AmqpCaster', 'castChannel'),
-        'AMQPQueue' => array('Symfony\Component\VarDumper\Caster\AmqpCaster', 'castQueue'),
-        'AMQPExchange' => array('Symfony\Component\VarDumper\Caster\AmqpCaster', 'castExchange'),
-        'AMQPEnvelope' => array('Symfony\Component\VarDumper\Caster\AmqpCaster', 'castEnvelope'),
-
-        'ArrayObject' => array('Symfony\Component\VarDumper\Caster\SplCaster', 'castArrayObject'),
-        'ArrayIterator' => array('Symfony\Component\VarDumper\Caster\SplCaster', 'castArrayIterator'),
-        'SplDoublyLinkedList' => array('Symfony\Component\VarDumper\Caster\SplCaster', 'castDoublyLinkedList'),
-        'SplFileInfo' => array('Symfony\Component\VarDumper\Caster\SplCaster', 'castFileInfo'),
-        'SplFileObject' => array('Symfony\Component\VarDumper\Caster\SplCaster', 'castFileObject'),
-        'SplFixedArray' => array('Symfony\Component\VarDumper\Caster\SplCaster', 'castFixedArray'),
-        'SplHeap' => array('Symfony\Component\VarDumper\Caster\SplCaster', 'castHeap'),
-        'SplObjectStorage' => array('Symfony\Component\VarDumper\Caster\SplCaster', 'castObjectStorage'),
-        'SplPriorityQueue' => array('Symfony\Component\VarDumper\Caster\SplCaster', 'castHeap'),
-        'OuterIterator' => array('Symfony\Component\VarDumper\Caster\SplCaster', 'castOuterIterator'),
-
-        'MongoCursorInterface' => array('Symfony\Component\VarDumper\Caster\MongoCaster', 'castCursor'),
-
-        'Redis' => array('Symfony\Component\VarDumper\Caster\RedisCaster', 'castRedis'),
-        'RedisArray' => array('Symfony\Component\VarDumper\Caster\RedisCaster', 'castRedisArray'),
-
-        'DateTimeInterface' => array('Symfony\Component\VarDumper\Caster\DateCaster', 'castDateTime'),
-        'DateInterval' => array('Symfony\Component\VarDumper\Caster\DateCaster', 'castInterval'),
-        'DateTimeZone' => array('Symfony\Component\VarDumper\Caster\DateCaster', 'castTimeZone'),
-        'DatePeriod' => array('Symfony\Component\VarDumper\Caster\DateCaster', 'castPeriod'),
-
-        ':curl' => array('Symfony\Component\VarDumper\Caster\ResourceCaster', 'castCurl'),
-        ':dba' => array('Symfony\Component\VarDumper\Caster\ResourceCaster', 'castDba'),
-        ':dba persistent' => array('Symfony\Component\VarDumper\Caster\ResourceCaster', 'castDba'),
-        ':gd' => array('Symfony\Component\VarDumper\Caster\ResourceCaster', 'castGd'),
-        ':mysql link' => array('Symfony\Component\VarDumper\Caster\ResourceCaster', 'castMysqlLink'),
-        ':pgsql large object' => array('Symfony\Component\VarDumper\Caster\PgSqlCaster', 'castLargeObject'),
-        ':pgsql link' => array('Symfony\Component\VarDumper\Caster\PgSqlCaster', 'castLink'),
-        ':pgsql link persistent' => array('Symfony\Component\VarDumper\Caster\PgSqlCaster', 'castLink'),
-        ':pgsql result' => array('Symfony\Component\VarDumper\Caster\PgSqlCaster', 'castResult'),
-        ':process' => array('Symfony\Component\VarDumper\Caster\ResourceCaster', 'castProcess'),
-        ':stream' => array('Symfony\Component\VarDumper\Caster\ResourceCaster', 'castStream'),
-        ':persistent stream' => array('Symfony\Component\VarDumper\Caster\ResourceCaster', 'castStream'),
-        ':stream-context' => array('Symfony\Component\VarDumper\Caster\ResourceCaster', 'castStreamContext'),
-        ':xml' => array('Symfony\Component\VarDumper\Caster\XmlResourceCaster', 'castXml'),
-    );
+    public static $defaultCasters = [
+        '__PHP_Incomplete_Class' => ['Symfony\Component\VarDumper\Caster\Caster', 'castPhpIncompleteClass'],
+
+        'Symfony\Component\VarDumper\Caster\CutStub' => ['Symfony\Component\VarDumper\Caster\StubCaster', 'castStub'],
+        'Symfony\Component\VarDumper\Caster\CutArrayStub' => ['Symfony\Component\VarDumper\Caster\StubCaster', 'castCutArray'],
+        'Symfony\Component\VarDumper\Caster\ConstStub' => ['Symfony\Component\VarDumper\Caster\StubCaster', 'castStub'],
+        'Symfony\Component\VarDumper\Caster\EnumStub' => ['Symfony\Component\VarDumper\Caster\StubCaster', 'castEnum'],
+
+        'Closure' => ['Symfony\Component\VarDumper\Caster\ReflectionCaster', 'castClosure'],
+        'Generator' => ['Symfony\Component\VarDumper\Caster\ReflectionCaster', 'castGenerator'],
+        'ReflectionType' => ['Symfony\Component\VarDumper\Caster\ReflectionCaster', 'castType'],
+        'ReflectionGenerator' => ['Symfony\Component\VarDumper\Caster\ReflectionCaster', 'castReflectionGenerator'],
+        'ReflectionClass' => ['Symfony\Component\VarDumper\Caster\ReflectionCaster', 'castClass'],
+        'ReflectionFunctionAbstract' => ['Symfony\Component\VarDumper\Caster\ReflectionCaster', 'castFunctionAbstract'],
+        'ReflectionMethod' => ['Symfony\Component\VarDumper\Caster\ReflectionCaster', 'castMethod'],
+        'ReflectionParameter' => ['Symfony\Component\VarDumper\Caster\ReflectionCaster', 'castParameter'],
+        'ReflectionProperty' => ['Symfony\Component\VarDumper\Caster\ReflectionCaster', 'castProperty'],
+        'ReflectionExtension' => ['Symfony\Component\VarDumper\Caster\ReflectionCaster', 'castExtension'],
+        'ReflectionZendExtension' => ['Symfony\Component\VarDumper\Caster\ReflectionCaster', 'castZendExtension'],
+
+        'Doctrine\Common\Persistence\ObjectManager' => ['Symfony\Component\VarDumper\Caster\StubCaster', 'cutInternals'],
+        'Doctrine\Common\Proxy\Proxy' => ['Symfony\Component\VarDumper\Caster\DoctrineCaster', 'castCommonProxy'],
+        'Doctrine\ORM\Proxy\Proxy' => ['Symfony\Component\VarDumper\Caster\DoctrineCaster', 'castOrmProxy'],
+        'Doctrine\ORM\PersistentCollection' => ['Symfony\Component\VarDumper\Caster\DoctrineCaster', 'castPersistentCollection'],
+
+        'DOMException' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castException'],
+        'DOMStringList' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castLength'],
+        'DOMNameList' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castLength'],
+        'DOMImplementation' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castImplementation'],
+        'DOMImplementationList' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castLength'],
+        'DOMNode' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castNode'],
+        'DOMNameSpaceNode' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castNameSpaceNode'],
+        'DOMDocument' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castDocument'],
+        'DOMNodeList' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castLength'],
+        'DOMNamedNodeMap' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castLength'],
+        'DOMCharacterData' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castCharacterData'],
+        'DOMAttr' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castAttr'],
+        'DOMElement' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castElement'],
+        'DOMText' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castText'],
+        'DOMTypeinfo' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castTypeinfo'],
+        'DOMDomError' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castDomError'],
+        'DOMLocator' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castLocator'],
+        'DOMDocumentType' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castDocumentType'],
+        'DOMNotation' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castNotation'],
+        'DOMEntity' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castEntity'],
+        'DOMProcessingInstruction' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castProcessingInstruction'],
+        'DOMXPath' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castXPath'],
+
+        'XmlReader' => ['Symfony\Component\VarDumper\Caster\XmlReaderCaster', 'castXmlReader'],
+
+        'ErrorException' => ['Symfony\Component\VarDumper\Caster\ExceptionCaster', 'castErrorException'],
+        'Exception' => ['Symfony\Component\VarDumper\Caster\ExceptionCaster', 'castException'],
+        'Error' => ['Symfony\Component\VarDumper\Caster\ExceptionCaster', 'castError'],
+        'Symfony\Component\DependencyInjection\ContainerInterface' => ['Symfony\Component\VarDumper\Caster\StubCaster', 'cutInternals'],
+        'Symfony\Component\HttpFoundation\Request' => ['Symfony\Component\VarDumper\Caster\SymfonyCaster', 'castRequest'],
+        'Symfony\Component\VarDumper\Exception\ThrowingCasterException' => ['Symfony\Component\VarDumper\Caster\ExceptionCaster', 'castThrowingCasterException'],
+        'Symfony\Component\VarDumper\Caster\TraceStub' => ['Symfony\Component\VarDumper\Caster\ExceptionCaster', 'castTraceStub'],
+        'Symfony\Component\VarDumper\Caster\FrameStub' => ['Symfony\Component\VarDumper\Caster\ExceptionCaster', 'castFrameStub'],
+        'Symfony\Component\Debug\Exception\SilencedErrorContext' => ['Symfony\Component\VarDumper\Caster\ExceptionCaster', 'castSilencedErrorContext'],
+
+        'PHPUnit_Framework_MockObject_MockObject' => ['Symfony\Component\VarDumper\Caster\StubCaster', 'cutInternals'],
+        'Prophecy\Prophecy\ProphecySubjectInterface' => ['Symfony\Component\VarDumper\Caster\StubCaster', 'cutInternals'],
+        'Mockery\MockInterface' => ['Symfony\Component\VarDumper\Caster\StubCaster', 'cutInternals'],
+
+        'PDO' => ['Symfony\Component\VarDumper\Caster\PdoCaster', 'castPdo'],
+        'PDOStatement' => ['Symfony\Component\VarDumper\Caster\PdoCaster', 'castPdoStatement'],
+
+        'AMQPConnection' => ['Symfony\Component\VarDumper\Caster\AmqpCaster', 'castConnection'],
+        'AMQPChannel' => ['Symfony\Component\VarDumper\Caster\AmqpCaster', 'castChannel'],
+        'AMQPQueue' => ['Symfony\Component\VarDumper\Caster\AmqpCaster', 'castQueue'],
+        'AMQPExchange' => ['Symfony\Component\VarDumper\Caster\AmqpCaster', 'castExchange'],
+        'AMQPEnvelope' => ['Symfony\Component\VarDumper\Caster\AmqpCaster', 'castEnvelope'],
+
+        'ArrayObject' => ['Symfony\Component\VarDumper\Caster\SplCaster', 'castArrayObject'],
+        'ArrayIterator' => ['Symfony\Component\VarDumper\Caster\SplCaster', 'castArrayIterator'],
+        'SplDoublyLinkedList' => ['Symfony\Component\VarDumper\Caster\SplCaster', 'castDoublyLinkedList'],
+        'SplFileInfo' => ['Symfony\Component\VarDumper\Caster\SplCaster', 'castFileInfo'],
+        'SplFileObject' => ['Symfony\Component\VarDumper\Caster\SplCaster', 'castFileObject'],
+        'SplFixedArray' => ['Symfony\Component\VarDumper\Caster\SplCaster', 'castFixedArray'],
+        'SplHeap' => ['Symfony\Component\VarDumper\Caster\SplCaster', 'castHeap'],
+        'SplObjectStorage' => ['Symfony\Component\VarDumper\Caster\SplCaster', 'castObjectStorage'],
+        'SplPriorityQueue' => ['Symfony\Component\VarDumper\Caster\SplCaster', 'castHeap'],
+        'OuterIterator' => ['Symfony\Component\VarDumper\Caster\SplCaster', 'castOuterIterator'],
+
+        'MongoCursorInterface' => ['Symfony\Component\VarDumper\Caster\MongoCaster', 'castCursor'],
+
+        'Redis' => ['Symfony\Component\VarDumper\Caster\RedisCaster', 'castRedis'],
+        'RedisArray' => ['Symfony\Component\VarDumper\Caster\RedisCaster', 'castRedisArray'],
+
+        'DateTimeInterface' => ['Symfony\Component\VarDumper\Caster\DateCaster', 'castDateTime'],
+        'DateInterval' => ['Symfony\Component\VarDumper\Caster\DateCaster', 'castInterval'],
+        'DateTimeZone' => ['Symfony\Component\VarDumper\Caster\DateCaster', 'castTimeZone'],
+        'DatePeriod' => ['Symfony\Component\VarDumper\Caster\DateCaster', 'castPeriod'],
+
+        ':curl' => ['Symfony\Component\VarDumper\Caster\ResourceCaster', 'castCurl'],
+        ':dba' => ['Symfony\Component\VarDumper\Caster\ResourceCaster', 'castDba'],
+        ':dba persistent' => ['Symfony\Component\VarDumper\Caster\ResourceCaster', 'castDba'],
+        ':gd' => ['Symfony\Component\VarDumper\Caster\ResourceCaster', 'castGd'],
+        ':mysql link' => ['Symfony\Component\VarDumper\Caster\ResourceCaster', 'castMysqlLink'],
+        ':pgsql large object' => ['Symfony\Component\VarDumper\Caster\PgSqlCaster', 'castLargeObject'],
+        ':pgsql link' => ['Symfony\Component\VarDumper\Caster\PgSqlCaster', 'castLink'],
+        ':pgsql link persistent' => ['Symfony\Component\VarDumper\Caster\PgSqlCaster', 'castLink'],
+        ':pgsql result' => ['Symfony\Component\VarDumper\Caster\PgSqlCaster', 'castResult'],
+        ':process' => ['Symfony\Component\VarDumper\Caster\ResourceCaster', 'castProcess'],
+        ':stream' => ['Symfony\Component\VarDumper\Caster\ResourceCaster', 'castStream'],
+        ':persistent stream' => ['Symfony\Component\VarDumper\Caster\ResourceCaster', 'castStream'],
+        ':stream-context' => ['Symfony\Component\VarDumper\Caster\ResourceCaster', 'castStreamContext'],
+        ':xml' => ['Symfony\Component\VarDumper\Caster\XmlResourceCaster', 'castXml'],
+    ];
 
     protected $maxItems = 2500;
     protected $maxString = -1;
     protected $minDepth = 1;
     protected $useExt;
 
-    private $casters = array();
+    private $casters = [];
     private $prevErrorHandler;
-    private $classInfo = array();
+    private $classInfo = [];
     private $filter = 0;
 
     /**
@@ -213,7 +213,7 @@ public function setMinDepth($minDepth)
      */
     public function cloneVar($var, $filter = 0)
     {
-        $this->prevErrorHandler = set_error_handler(function ($type, $msg, $file, $line, $context = array()) {
+        $this->prevErrorHandler = set_error_handler(function ($type, $msg, $file, $line, $context = []) {
             if (E_RECOVERABLE_ERROR === $type || E_USER_ERROR === $type) {
                 // Cloner never dies
                 throw new \ErrorException($msg, 0, $type, $file, $line);
@@ -270,7 +270,7 @@ protected function castObject(Stub $stub, $isNested)
             list($i, $parents, $hasDebugInfo) = $this->classInfo[$class];
         } else {
             $i = 2;
-            $parents = array(strtolower($class));
+            $parents = [strtolower($class)];
             $hasDebugInfo = method_exists($class, '__debugInfo');
 
             foreach (class_parents($class) as $p) {
@@ -283,7 +283,7 @@ protected function castObject(Stub $stub, $isNested)
             }
             $parents[] = '*';
 
-            $this->classInfo[$class] = array($i, $parents, $hasDebugInfo);
+            $this->classInfo[$class] = [$i, $parents, $hasDebugInfo];
         }
 
         $a = Caster::castObject($obj, $class, $hasDebugInfo);
@@ -297,7 +297,7 @@ protected function castObject(Stub $stub, $isNested)
                 }
             }
         } catch (\Exception $e) {
-            $a = array((Stub::TYPE_OBJECT === $stub->type ? Caster::PREFIX_VIRTUAL : '').'⚠' => new ThrowingCasterException($e)) + $a;
+            $a = [(Stub::TYPE_OBJECT === $stub->type ? Caster::PREFIX_VIRTUAL : '').'⚠' => new ThrowingCasterException($e)] + $a;
         }
 
         return $a;
@@ -313,7 +313,7 @@ protected function castObject(Stub $stub, $isNested)
      */
     protected function castResource(Stub $stub, $isNested)
     {
-        $a = array();
+        $a = [];
         $res = $stub->value;
         $type = $stub->class;
 
@@ -324,7 +324,7 @@ protected function castResource(Stub $stub, $isNested)
                 }
             }
         } catch (\Exception $e) {
-            $a = array((Stub::TYPE_OBJECT === $stub->type ? Caster::PREFIX_VIRTUAL : '').'⚠' => new ThrowingCasterException($e)) + $a;
+            $a = [(Stub::TYPE_OBJECT === $stub->type ? Caster::PREFIX_VIRTUAL : '').'⚠' => new ThrowingCasterException($e)] + $a;
         }
 
         return $a;
diff --git a/vendor/symfony/var-dumper/Cloner/Cursor.php b/vendor/symfony/var-dumper/Cloner/Cursor.php
index 888f4f2be3..5b0542f6c2 100644
--- a/vendor/symfony/var-dumper/Cloner/Cursor.php
+++ b/vendor/symfony/var-dumper/Cloner/Cursor.php
@@ -38,6 +38,6 @@ class Cursor
     public $hashLength = 0;
     public $hashCut = 0;
     public $stop = false;
-    public $attr = array();
+    public $attr = [];
     public $skipChildren = false;
 }
diff --git a/vendor/symfony/var-dumper/Cloner/Data.php b/vendor/symfony/var-dumper/Cloner/Data.php
index f9b7eab92b..bb5ee94d8b 100644
--- a/vendor/symfony/var-dumper/Cloner/Data.php
+++ b/vendor/symfony/var-dumper/Cloner/Data.php
@@ -63,7 +63,7 @@ public function getType()
     /**
      * @param bool $recursive Whether values should be resolved recursively or not
      *
-     * @return string|int|float|bool|array|null|Data[] A native representation of the original value
+     * @return string|int|float|bool|array|Data[]|null A native representation of the original value
      */
     public function getValue($recursive = false)
     {
@@ -79,7 +79,7 @@ public function getValue($recursive = false)
             return $item->value;
         }
 
-        $children = $item->position ? $this->data[$item->position] : array();
+        $children = $item->position ? $this->data[$item->position] : [];
 
         foreach ($children as $k => $v) {
             if ($recursive && !($v = $this->getStub($v)) instanceof Stub) {
@@ -125,7 +125,7 @@ public function __get($key)
         if (null !== $data = $this->seek($key)) {
             $item = $this->getStub($data->data[$data->position][$data->key]);
 
-            return $item instanceof Stub || array() === $item ? $data : $item;
+            return $item instanceof Stub || [] === $item ? $data : $item;
         }
     }
 
@@ -239,7 +239,7 @@ public function seek($key)
         if (!($item = $this->getStub($item)) instanceof Stub || !$item->position) {
             return;
         }
-        $keys = array($key);
+        $keys = [$key];
 
         switch ($item->type) {
             case Stub::TYPE_OBJECT:
@@ -259,7 +259,7 @@ public function seek($key)
         $children = $this->data[$item->position];
 
         foreach ($keys as $key) {
-            if (isset($children[$key]) || array_key_exists($key, $children)) {
+            if (isset($children[$key]) || \array_key_exists($key, $children)) {
                 $data = clone $this;
                 $data->key = $key;
                 $data->position = $item->position;
@@ -275,7 +275,7 @@ public function seek($key)
      */
     public function dump(DumperInterface $dumper)
     {
-        $refs = array(0);
+        $refs = [0];
         $this->dumpItem($dumper, new Cursor(), $refs, $this->data[$this->position][$this->key]);
     }
 
@@ -295,7 +295,7 @@ private function dumpItem($dumper, $cursor, &$refs, $item)
         $firstSeen = true;
 
         if (!$item instanceof Stub) {
-            $cursor->attr = array();
+            $cursor->attr = [];
             $type = \gettype($item);
             if ($item && 'array' === $type) {
                 $item = $this->getStub($item);
@@ -336,10 +336,10 @@ private function dumpItem($dumper, $cursor, &$refs, $item)
                     if ($cut >= 0) {
                         $cut += \count($children);
                     }
-                    $children = array();
+                    $children = [];
                 }
             } else {
-                $children = array();
+                $children = [];
             }
             switch ($item->type) {
                 case Stub::TYPE_STRING:
diff --git a/vendor/symfony/var-dumper/Cloner/Stub.php b/vendor/symfony/var-dumper/Cloner/Stub.php
index 3b8e60d90e..27dd3ef32c 100644
--- a/vendor/symfony/var-dumper/Cloner/Stub.php
+++ b/vendor/symfony/var-dumper/Cloner/Stub.php
@@ -16,7 +16,7 @@
  *
  * @author Nicolas Grekas <p@tchwork.com>
  */
-class Stub implements \Serializable
+class Stub
 {
     const TYPE_REF = 1;
     const TYPE_STRING = 2;
@@ -37,21 +37,31 @@ class Stub implements \Serializable
     public $handle = 0;
     public $refCount = 0;
     public $position = 0;
-    public $attr = array();
+    public $attr = [];
 
-    /**
-     * @internal
-     */
-    public function serialize()
-    {
-        return \serialize(array($this->class, $this->position, $this->cut, $this->type, $this->value, $this->handle, $this->refCount, $this->attr));
-    }
+    private static $defaultProperties = [];
 
     /**
      * @internal
      */
-    public function unserialize($serialized)
+    public function __sleep()
     {
-        list($this->class, $this->position, $this->cut, $this->type, $this->value, $this->handle, $this->refCount, $this->attr) = \unserialize($serialized);
+        $properties = [];
+
+        if (!isset(self::$defaultProperties[$c = \get_class($this)])) {
+            self::$defaultProperties[$c] = get_class_vars($c);
+
+            foreach ((new \ReflectionClass($c))->getStaticProperties() as $k => $v) {
+                unset(self::$defaultProperties[$c][$k]);
+            }
+        }
+
+        foreach (self::$defaultProperties[$c] as $k => $v) {
+            if ($this->$k !== $v) {
+                $properties[] = $k;
+            }
+        }
+
+        return $properties;
     }
 }
diff --git a/vendor/symfony/var-dumper/Cloner/VarCloner.php b/vendor/symfony/var-dumper/Cloner/VarCloner.php
index 7a3816cf60..f418aa0894 100644
--- a/vendor/symfony/var-dumper/Cloner/VarCloner.php
+++ b/vendor/symfony/var-dumper/Cloner/VarCloner.php
@@ -19,7 +19,7 @@ class VarCloner extends AbstractCloner
     private static $gid;
     private static $hashMask = 0;
     private static $hashOffset = 0;
-    private static $arrayCache = array();
+    private static $arrayCache = [];
 
     /**
      * {@inheritdoc}
@@ -29,19 +29,20 @@ protected function doClone($var)
         $len = 1;                       // Length of $queue
         $pos = 0;                       // Number of cloned items past the minimum depth
         $refsCounter = 0;               // Hard references counter
-        $queue = array(array($var));    // This breadth-first queue is the return value
-        $indexedArrays = array();       // Map of queue indexes that hold numerically indexed arrays
-        $hardRefs = array();            // Map of original zval hashes to stub objects
-        $objRefs = array();             // Map of original object handles to their stub object couterpart
-        $resRefs = array();             // Map of original resource handles to their stub object couterpart
-        $values = array();              // Map of stub objects' hashes to original values
+        $queue = [[$var]];    // This breadth-first queue is the return value
+        $indexedArrays = [];       // Map of queue indexes that hold numerically indexed arrays
+        $hardRefs = [];            // Map of original zval hashes to stub objects
+        $objRefs = [];             // Map of original object handles to their stub object counterpart
+        $objects = [];             // Keep a ref to objects to ensure their handle cannot be reused while cloning
+        $resRefs = [];             // Map of original resource handles to their stub object counterpart
+        $values = [];              // Map of stub objects' hashes to original values
         $maxItems = $this->maxItems;
         $maxString = $this->maxString;
         $minDepth = $this->minDepth;
         $currentDepth = 0;              // Current tree depth
         $currentDepthFinalIndex = 0;    // Final $queue index for current tree depth
         $minimumDepthReached = 0 === $minDepth; // Becomes true when minimum tree depth has been reached
-        $cookie = (object) array();     // Unique object used to detect hard references
+        $cookie = (object) [];     // Unique object used to detect hard references
         $a = null;                      // Array cast for nested structures
         $stub = null;                   // Stub capturing the main properties of an original item value
                                         // or null if the original value is used directly
@@ -74,7 +75,7 @@ protected function doClone($var)
                     if (\is_int($k)) {
                         continue;
                     }
-                    foreach (array($k => true) as $gk => $gv) {
+                    foreach ([$k => true] as $gk => $gv) {
                     }
                     if ($gk !== $k) {
                         $fromObjCast = true;
@@ -163,7 +164,7 @@ protected function doClone($var)
                             // Happens with copies of $GLOBALS
                             if (isset($v[$gid])) {
                                 unset($v[$gid]);
-                                $a = array();
+                                $a = [];
                                 foreach ($v as $gk => &$gv) {
                                     $a[$gk] = &$gv;
                                 }
@@ -200,6 +201,7 @@ protected function doClone($var)
                         }
                         if (empty($objRefs[$h])) {
                             $objRefs[$h] = $stub;
+                            $objects[] = $v;
                         } else {
                             $stub = $objRefs[$h];
                             ++$stub->refCount;
@@ -254,12 +256,12 @@ protected function doClone($var)
 
                 if ($arrayStub === $stub) {
                     if ($arrayStub->cut) {
-                        $stub = array($arrayStub->cut, $arrayStub->class => $arrayStub->position);
+                        $stub = [$arrayStub->cut, $arrayStub->class => $arrayStub->position];
                         $arrayStub->cut = 0;
                     } elseif (isset(self::$arrayCache[$arrayStub->class][$arrayStub->position])) {
                         $stub = self::$arrayCache[$arrayStub->class][$arrayStub->position];
                     } else {
-                        self::$arrayCache[$arrayStub->class][$arrayStub->position] = $stub = array($arrayStub->class => $arrayStub->position);
+                        self::$arrayCache[$arrayStub->class][$arrayStub->position] = $stub = [$arrayStub->class => $arrayStub->position];
                     }
                 }
 
@@ -273,10 +275,10 @@ protected function doClone($var)
             if ($fromObjCast) {
                 $fromObjCast = false;
                 $refs = $vals;
-                $vals = array();
+                $vals = [];
                 $j = -1;
                 foreach ($queue[$i] as $k => $v) {
-                    foreach (array($k => true) as $gk => $gv) {
+                    foreach ([$k => true] as $gk => $gv) {
                     }
                     if ($gk !== $k) {
                         $vals = (object) $vals;
@@ -300,7 +302,7 @@ protected function doClone($var)
 
     private static function initHashMask()
     {
-        $obj = (object) array();
+        $obj = (object) [];
         self::$hashOffset = 16 - PHP_INT_SIZE;
         self::$hashMask = -1;
 
@@ -308,7 +310,7 @@ private static function initHashMask()
             self::$hashOffset += 16;
         } else {
             // check if we are nested in an output buffering handler to prevent a fatal error with ob_start() below
-            $obFuncs = array('ob_clean', 'ob_end_clean', 'ob_flush', 'ob_end_flush', 'ob_get_contents', 'ob_get_flush');
+            $obFuncs = ['ob_clean', 'ob_end_clean', 'ob_flush', 'ob_end_flush', 'ob_get_contents', 'ob_get_flush'];
             foreach (debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS) as $frame) {
                 if (isset($frame['function'][0]) && !isset($frame['class']) && 'o' === $frame['function'][0] && \in_array($frame['function'], $obFuncs)) {
                     $frame['line'] = 0;
diff --git a/vendor/symfony/var-dumper/Dumper/AbstractDumper.php b/vendor/symfony/var-dumper/Dumper/AbstractDumper.php
index 228f8f2e54..30cd1a1b19 100644
--- a/vendor/symfony/var-dumper/Dumper/AbstractDumper.php
+++ b/vendor/symfony/var-dumper/Dumper/AbstractDumper.php
@@ -39,7 +39,7 @@ abstract class AbstractDumper implements DataDumperInterface, DumperInterface
 
     /**
      * @param callable|resource|string|null $output  A line dumper callable, an opened stream or an output path, defaults to static::$defaultOutput
-     * @param string                        $charset The default character encoding to use for non-UTF8 strings
+     * @param string|null                   $charset The default character encoding to use for non-UTF8 strings
      * @param int                           $flags   A bit field of static::DUMP_* constants to fine tune dumps representation
      */
     public function __construct($output = null, $charset = null, $flags = 0)
@@ -73,7 +73,7 @@ public function setOutput($output)
                 $output = fopen($output, 'wb');
             }
             $this->outputStream = $output;
-            $this->lineDumper = array($this, 'echoLine');
+            $this->lineDumper = [$this, 'echoLine'];
         }
 
         return $prev;
diff --git a/vendor/symfony/var-dumper/Dumper/CliDumper.php b/vendor/symfony/var-dumper/Dumper/CliDumper.php
index 419cfeb496..2bd347d96a 100644
--- a/vendor/symfony/var-dumper/Dumper/CliDumper.php
+++ b/vendor/symfony/var-dumper/Dumper/CliDumper.php
@@ -26,7 +26,7 @@ class CliDumper extends AbstractDumper
 
     protected $colors;
     protected $maxStringWidth = 0;
-    protected $styles = array(
+    protected $styles = [
         // See http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
         'default' => '38;5;208',
         'num' => '1;38;5;38',
@@ -40,17 +40,17 @@ class CliDumper extends AbstractDumper
         'meta' => '38;5;170',
         'key' => '38;5;113',
         'index' => '38;5;38',
-    );
+    ];
 
     protected static $controlCharsRx = '/[\x00-\x1F\x7F]+/';
-    protected static $controlCharsMap = array(
+    protected static $controlCharsMap = [
         "\t" => '\t',
         "\n" => '\n',
         "\v" => '\v',
         "\f" => '\f',
         "\r" => '\r',
         "\033" => '\e',
-    );
+    ];
 
     protected $collapseNextHash = false;
     protected $expandNextHash = false;
@@ -64,7 +64,7 @@ public function __construct($output = null, $charset = null, $flags = 0)
 
         if ('\\' === \DIRECTORY_SEPARATOR && !$this->isWindowsTrueColor()) {
             // Use only the base 16 xterm colors when using ANSICON or standard Windows 10 CLI
-            $this->setStyles(array(
+            $this->setStyles([
                 'default' => '31',
                 'num' => '1;34',
                 'const' => '1;31',
@@ -74,7 +74,7 @@ public function __construct($output = null, $charset = null, $flags = 0)
                 'meta' => '35',
                 'key' => '32',
                 'index' => '34',
-            ));
+            ]);
         }
     }
 
@@ -152,7 +152,7 @@ public function dumpScalar(Cursor $cursor, $type, $value)
                 break;
 
             default:
-                $attr += array('value' => $this->utf8Encode($value));
+                $attr += ['value' => $this->utf8Encode($value)];
                 $value = $this->utf8Encode($type);
                 break;
         }
@@ -177,10 +177,10 @@ public function dumpString(Cursor $cursor, $str, $bin, $cut)
             $this->line .= '""';
             $this->endValue($cursor);
         } else {
-            $attr += array(
+            $attr += [
                 'length' => 0 <= $cut ? mb_strlen($str, 'UTF-8') + $cut : 0,
                 'binary' => $bin,
-            );
+            ];
             $str = explode("\n", $str);
             if (isset($str[1]) && !isset($str[2]) && !isset($str[1][0])) {
                 unset($str[1]);
@@ -272,9 +272,9 @@ public function enterHash(Cursor $cursor, $type, $class, $hasChild)
         }
 
         if ($cursor->softRefCount || 0 < $cursor->softRefHandle) {
-            $prefix .= $this->style('ref', (Cursor::HASH_RESOURCE === $type ? '@' : '#').(0 < $cursor->softRefHandle ? $cursor->softRefHandle : $cursor->softRefTo), array('count' => $cursor->softRefCount));
+            $prefix .= $this->style('ref', (Cursor::HASH_RESOURCE === $type ? '@' : '#').(0 < $cursor->softRefHandle ? $cursor->softRefHandle : $cursor->softRefTo), ['count' => $cursor->softRefCount]);
         } elseif ($cursor->hardRefTo && !$cursor->refIndex && $class) {
-            $prefix .= $this->style('ref', '&'.$cursor->hardRefTo, array('count' => $cursor->hardRefCount));
+            $prefix .= $this->style('ref', '&'.$cursor->hardRefTo, ['count' => $cursor->hardRefCount]);
         } elseif (!$hasChild && Cursor::HASH_RESOURCE === $type) {
             $prefix = substr($prefix, 0, -1);
         }
@@ -327,7 +327,7 @@ protected function dumpKey(Cursor $cursor)
             if ($cursor->hashKeyIsBinary) {
                 $key = $this->utf8Encode($key);
             }
-            $attr = array('binary' => $cursor->hashKeyIsBinary);
+            $attr = ['binary' => $cursor->hashKeyIsBinary];
             $bin = $cursor->hashKeyIsBinary ? 'b' : '';
             $style = 'key';
             switch ($cursor->hashType) {
@@ -364,7 +364,7 @@ protected function dumpKey(Cursor $cursor)
                                 $style = 'meta';
                                 if (isset($key[0][1])) {
                                     parse_str(substr($key[0], 1), $attr);
-                                    $attr += array('binary' => $cursor->hashKeyIsBinary);
+                                    $attr += ['binary' => $cursor->hashKeyIsBinary];
                                 }
                                 break;
                             case '*':
@@ -389,13 +389,13 @@ protected function dumpKey(Cursor $cursor)
                         $this->line .= $bin.$this->style($style, $key[1], $attr).(isset($attr['separator']) ? $attr['separator'] : ': ');
                     } else {
                         // This case should not happen
-                        $this->line .= '-'.$bin.'"'.$this->style('private', $key, array('class' => '')).'": ';
+                        $this->line .= '-'.$bin.'"'.$this->style('private', $key, ['class' => '']).'": ';
                     }
                     break;
             }
 
             if ($cursor->hardRefTo) {
-                $this->line .= $this->style('ref', '&'.($cursor->hardRefCount ? $cursor->hardRefTo : ''), array('count' => $cursor->hardRefCount)).' ';
+                $this->line .= $this->style('ref', '&'.($cursor->hardRefCount ? $cursor->hardRefTo : ''), ['count' => $cursor->hardRefCount]).' ';
             }
         }
     }
@@ -409,7 +409,7 @@ protected function dumpKey(Cursor $cursor)
      *
      * @return string The value with style decoration
      */
-    protected function style($style, $value, $attr = array())
+    protected function style($style, $value, $attr = [])
     {
         if (null === $this->colors) {
             $this->colors = $this->supportsColors();
@@ -495,7 +495,7 @@ protected function supportsColors()
             }
         }
 
-        $h = stream_get_meta_data($this->outputStream) + array('wrapper_type' => null);
+        $h = stream_get_meta_data($this->outputStream) + ['wrapper_type' => null];
         $h = 'Output' === $h['stream_type'] && 'PHP' === $h['wrapper_type'] ? fopen('php://stdout', 'wb') : $this->outputStream;
 
         return static::$defaultColors = $this->hasColorSupport($h);
diff --git a/vendor/symfony/var-dumper/Dumper/HtmlDumper.php b/vendor/symfony/var-dumper/Dumper/HtmlDumper.php
index d498e12f83..37d50a884d 100644
--- a/vendor/symfony/var-dumper/Dumper/HtmlDumper.php
+++ b/vendor/symfony/var-dumper/Dumper/HtmlDumper.php
@@ -30,7 +30,7 @@ class HtmlDumper extends CliDumper
     protected $colors = true;
     protected $headerIsDumped = false;
     protected $lastDepth = -1;
-    protected $styles = array(
+    protected $styles = [
         'default' => 'background-color:#18171B; color:#FF8400; line-height:1.2em; font:12px Menlo, Monaco, Consolas, monospace; word-wrap: break-word; white-space: pre-wrap; position:relative; z-index:99999; word-break: break-all',
         'num' => 'font-weight:bold; color:#1299DA',
         'const' => 'font-weight:bold',
@@ -44,14 +44,14 @@ class HtmlDumper extends CliDumper
         'key' => 'color:#56DB3A',
         'index' => 'color:#1299DA',
         'ellipsis' => 'color:#FF8400',
-    );
+    ];
 
-    private $displayOptions = array(
+    private $displayOptions = [
         'maxDepth' => 1,
         'maxStringLength' => 160,
         'fileLinkFormat' => null,
-    );
-    private $extraDisplayOptions = array();
+    ];
+    private $extraDisplayOptions = [];
 
     /**
      * {@inheritdoc}
@@ -108,7 +108,7 @@ public function setDumpBoundaries($prefix, $suffix)
     /**
      * {@inheritdoc}
      */
-    public function dump(Data $data, $output = null, array $extraDisplayOptions = array())
+    public function dump(Data $data, $output = null, array $extraDisplayOptions = [])
     {
         $this->extraDisplayOptions = $extraDisplayOptions;
         $result = parent::dump($data, $output);
@@ -483,14 +483,10 @@ function showCurrent(state)
             <input type="text" class="sf-dump-search-input">
             <span class="sf-dump-search-count">0 of 0<\/span>
             <button type="button" class="sf-dump-search-input-previous" tabindex="-1">
-                <svg viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg">
-                    <path d="M1683 1331l-166 165q-19 19-45 19t-45-19l-531-531-531 531q-19 19-45 19t-45-19l-166-165q-19-19-19-45.5t19-45.5l742-741q19-19 45-19t45 19l742 741q19 19 19 45.5t-19 45.5z"\/>
-                <\/svg>
+                <svg viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1683 1331l-166 165q-19 19-45 19t-45-19L896 965l-531 531q-19 19-45 19t-45-19l-166-165q-19-19-19-45.5t19-45.5l742-741q19-19 45-19t45 19l742 741q19 19 19 45.5t-19 45.5z"\/><\/svg>
             <\/button>
             <button type="button" class="sf-dump-search-input-next" tabindex="-1">
-                <svg viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg">
-                    <path d="M1683 808l-742 741q-19 19-45 19t-45-19l-742-741q-19-19-19-45.5t19-45.5l166-165q19-19 45-19t45 19l531 531 531-531q19-19 45-19t45 19l166 165q19 19 19 45.5t-19 45.5z"\/>
-                <\/svg>
+                <svg viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1683 808l-742 741q-19 19-45 19t-45-19L109 808q-19-19-19-45.5t19-45.5l166-165q19-19 45-19t45 19l531 531 531-531q19-19 45-19t45 19l166 165q19 19 19 45.5t-19 45.5z"\/><\/svg>
             <\/button>
         ';
         root.insertBefore(search, root.firstChild);
@@ -785,7 +781,7 @@ public function leaveHash(Cursor $cursor, $type, $class, $hasChild, $cut)
     /**
      * {@inheritdoc}
      */
-    protected function style($style, $value, $attr = array())
+    protected function style($style, $value, $attr = [])
     {
         if ('' === $value) {
             return '';
@@ -873,7 +869,7 @@ protected function dumpLine($depth, $endOfValue = false)
         }
 
         if (-1 === $depth) {
-            $args = array('"'.$this->dumpId.'"');
+            $args = ['"'.$this->dumpId.'"'];
             if ($this->extraDisplayOptions) {
                 $args[] = json_encode($this->extraDisplayOptions, JSON_FORCE_OBJECT);
             }
@@ -895,7 +891,7 @@ private function getSourceLink($file, $line)
         $options = $this->extraDisplayOptions + $this->displayOptions;
 
         if ($fmt = $options['fileLinkFormat']) {
-            return \is_string($fmt) ? strtr($fmt, array('%f' => $file, '%l' => $line)) : $fmt->format($file, $line);
+            return \is_string($fmt) ? strtr($fmt, ['%f' => $file, '%l' => $line]) : $fmt->format($file, $line);
         }
 
         return false;
diff --git a/vendor/symfony/var-dumper/LICENSE b/vendor/symfony/var-dumper/LICENSE
index 15fc1c88d3..cf8b3ebe87 100644
--- a/vendor/symfony/var-dumper/LICENSE
+++ b/vendor/symfony/var-dumper/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2014-2018 Fabien Potencier
+Copyright (c) 2014-2019 Fabien Potencier
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/vendor/symfony/var-dumper/README.md b/vendor/symfony/var-dumper/README.md
index 3b5d55f5f5..339f73eba3 100644
--- a/vendor/symfony/var-dumper/README.md
+++ b/vendor/symfony/var-dumper/README.md
@@ -2,8 +2,8 @@ VarDumper Component
 ===================
 
 The VarDumper component provides mechanisms for walking through any arbitrary
-PHP variable. Built on top, it provides a better `dump()` function that you
-can use instead of `var_dump`.
+PHP variable. It provides a better `dump()` function that you can use instead
+of `var_dump`.
 
 Resources
 ---------
diff --git a/vendor/symfony/var-dumper/Resources/functions/dump.php b/vendor/symfony/var-dumper/Resources/functions/dump.php
index 95d8bb5980..0e0e4d0435 100644
--- a/vendor/symfony/var-dumper/Resources/functions/dump.php
+++ b/vendor/symfony/var-dumper/Resources/functions/dump.php
@@ -17,8 +17,8 @@
      */
     function dump($var)
     {
-        foreach (func_get_args() as $var) {
-            VarDumper::dump($var);
+        foreach (func_get_args() as $v) {
+            VarDumper::dump($v);
         }
 
         if (1 < func_num_args()) {
diff --git a/vendor/symfony/var-dumper/Tests/Caster/CasterTest.php b/vendor/symfony/var-dumper/Tests/Caster/CasterTest.php
index 105d5638ee..728697b413 100644
--- a/vendor/symfony/var-dumper/Tests/Caster/CasterTest.php
+++ b/vendor/symfony/var-dumper/Tests/Caster/CasterTest.php
@@ -22,7 +22,7 @@ class CasterTest extends TestCase
 {
     use VarDumperTestTrait;
 
-    private $referenceArray = array(
+    private $referenceArray = [
         'null' => null,
         'empty' => false,
         'public' => 'pub',
@@ -30,7 +30,7 @@ class CasterTest extends TestCase
         "\0+\0dynamic" => 'dyn',
         "\0*\0protected" => 'prot',
         "\0Foo\0private" => 'priv',
-    );
+    ];
 
     /**
      * @dataProvider provideFilter
@@ -48,107 +48,107 @@ public function testFilter($filter, $expectedDiff, $listedProperties = null)
 
     public function provideFilter()
     {
-        return array(
-            array(
+        return [
+            [
                 0,
-                array(),
-            ),
-            array(
+                [],
+            ],
+            [
                 Caster::EXCLUDE_PUBLIC,
-                array(
+                [
                     'null' => null,
                     'empty' => false,
                     'public' => 'pub',
-                ),
-            ),
-            array(
+                ],
+            ],
+            [
                 Caster::EXCLUDE_NULL,
-                array(
+                [
                     'null' => null,
-                ),
-            ),
-            array(
+                ],
+            ],
+            [
                 Caster::EXCLUDE_EMPTY,
-                array(
+                [
                     'null' => null,
                     'empty' => false,
-                ),
-            ),
-            array(
+                ],
+            ],
+            [
                 Caster::EXCLUDE_VIRTUAL,
-                array(
+                [
                     "\0~\0virtual" => 'virt',
-                ),
-            ),
-            array(
+                ],
+            ],
+            [
                 Caster::EXCLUDE_DYNAMIC,
-                array(
+                [
                     "\0+\0dynamic" => 'dyn',
-                ),
-            ),
-            array(
+                ],
+            ],
+            [
                 Caster::EXCLUDE_PROTECTED,
-                array(
+                [
                     "\0*\0protected" => 'prot',
-                ),
-            ),
-            array(
+                ],
+            ],
+            [
                 Caster::EXCLUDE_PRIVATE,
-                array(
+                [
                     "\0Foo\0private" => 'priv',
-                ),
-            ),
-            array(
+                ],
+            ],
+            [
                 Caster::EXCLUDE_VERBOSE,
-                array(
+                [
                     'public' => 'pub',
                     "\0*\0protected" => 'prot',
-                ),
-                array('public', "\0*\0protected"),
-            ),
-            array(
+                ],
+                ['public', "\0*\0protected"],
+            ],
+            [
                 Caster::EXCLUDE_NOT_IMPORTANT,
-                array(
+                [
                     'null' => null,
                     'empty' => false,
                     "\0~\0virtual" => 'virt',
                     "\0+\0dynamic" => 'dyn',
                     "\0Foo\0private" => 'priv',
-                ),
-                array('public', "\0*\0protected"),
-            ),
-            array(
+                ],
+                ['public', "\0*\0protected"],
+            ],
+            [
                 Caster::EXCLUDE_VIRTUAL | Caster::EXCLUDE_DYNAMIC,
-                array(
+                [
                     "\0~\0virtual" => 'virt',
                     "\0+\0dynamic" => 'dyn',
-                ),
-            ),
-            array(
+                ],
+            ],
+            [
                 Caster::EXCLUDE_NOT_IMPORTANT | Caster::EXCLUDE_VERBOSE,
                 $this->referenceArray,
-                array('public', "\0*\0protected"),
-            ),
-            array(
+                ['public', "\0*\0protected"],
+            ],
+            [
                 Caster::EXCLUDE_NOT_IMPORTANT | Caster::EXCLUDE_EMPTY,
-                array(
+                [
                     'null' => null,
                     'empty' => false,
                     "\0~\0virtual" => 'virt',
                     "\0+\0dynamic" => 'dyn',
                     "\0*\0protected" => 'prot',
                     "\0Foo\0private" => 'priv',
-                ),
-                array('public', 'empty'),
-            ),
-            array(
+                ],
+                ['public', 'empty'],
+            ],
+            [
                 Caster::EXCLUDE_VERBOSE | Caster::EXCLUDE_EMPTY | Caster::EXCLUDE_STRICT,
-                array(
+                [
                     'empty' => false,
-                ),
-                array('public', 'empty'),
-            ),
-        );
+                ],
+                ['public', 'empty'],
+            ],
+        ];
     }
 
     /**
diff --git a/vendor/symfony/var-dumper/Tests/Caster/DateCasterTest.php b/vendor/symfony/var-dumper/Tests/Caster/DateCasterTest.php
index dafa16cddd..da8b4d0fa5 100644
--- a/vendor/symfony/var-dumper/Tests/Caster/DateCasterTest.php
+++ b/vendor/symfony/var-dumper/Tests/Caster/DateCasterTest.php
@@ -55,7 +55,7 @@ public function testCastDateTime($time, $timezone, $xDate, $xTimestamp, $xInfos)
 
         $stub = new Stub();
         $date = new \DateTime($time, new \DateTimeZone($timezone));
-        $cast = DateCaster::castDateTime($date, array('foo' => 'bar'), $stub, false, 0);
+        $cast = DateCaster::castDateTime($date, ['foo' => 'bar'], $stub, false, 0);
 
         $xDump = <<<EODUMP
 array:1 [
@@ -83,18 +83,18 @@ public function testCastDateTime($time, $timezone, $xDate, $xTimestamp, $xInfos)
 
     public function provideDateTimes()
     {
-        return array(
-            array('2017-04-30 00:00:00.000000', 'Europe/Zurich', '2017-04-30 00:00:00.0 Europe/Zurich (+02:00)', 1493503200, 'Sunday, April 30, 2017%Afrom now%ADST On'),
-            array('2017-12-31 00:00:00.000000', 'Europe/Zurich', '2017-12-31 00:00:00.0 Europe/Zurich (+01:00)', 1514674800, 'Sunday, December 31, 2017%Afrom now%ADST Off'),
-            array('2017-04-30 00:00:00.000000', '+02:00', '2017-04-30 00:00:00.0 +02:00', 1493503200, 'Sunday, April 30, 2017%Afrom now'),
-
-            array('2017-04-30 00:00:00.100000', '+00:00', '2017-04-30 00:00:00.100 +00:00', 1493510400, 'Sunday, April 30, 2017%Afrom now'),
-            array('2017-04-30 00:00:00.120000', '+00:00', '2017-04-30 00:00:00.120 +00:00', 1493510400, 'Sunday, April 30, 2017%Afrom now'),
-            array('2017-04-30 00:00:00.123000', '+00:00', '2017-04-30 00:00:00.123 +00:00', 1493510400, 'Sunday, April 30, 2017%Afrom now'),
-            array('2017-04-30 00:00:00.123400', '+00:00', '2017-04-30 00:00:00.123400 +00:00', 1493510400, 'Sunday, April 30, 2017%Afrom now'),
-            array('2017-04-30 00:00:00.123450', '+00:00', '2017-04-30 00:00:00.123450 +00:00', 1493510400, 'Sunday, April 30, 2017%Afrom now'),
-            array('2017-04-30 00:00:00.123456', '+00:00', '2017-04-30 00:00:00.123456 +00:00', 1493510400, 'Sunday, April 30, 2017%Afrom now'),
-        );
+        return [
+            ['2017-04-30 00:00:00.000000', 'Europe/Zurich', '2017-04-30 00:00:00.0 Europe/Zurich (+02:00)', 1493503200, 'Sunday, April 30, 2017%Afrom now%ADST On'],
+            ['2017-12-31 00:00:00.000000', 'Europe/Zurich', '2017-12-31 00:00:00.0 Europe/Zurich (+01:00)', 1514674800, 'Sunday, December 31, 2017%Afrom now%ADST Off'],
+            ['2017-04-30 00:00:00.000000', '+02:00', '2017-04-30 00:00:00.0 +02:00', 1493503200, 'Sunday, April 30, 2017%Afrom now'],
+
+            ['2017-04-30 00:00:00.100000', '+00:00', '2017-04-30 00:00:00.100 +00:00', 1493510400, 'Sunday, April 30, 2017%Afrom now'],
+            ['2017-04-30 00:00:00.120000', '+00:00', '2017-04-30 00:00:00.120 +00:00', 1493510400, 'Sunday, April 30, 2017%Afrom now'],
+            ['2017-04-30 00:00:00.123000', '+00:00', '2017-04-30 00:00:00.123 +00:00', 1493510400, 'Sunday, April 30, 2017%Afrom now'],
+            ['2017-04-30 00:00:00.123400', '+00:00', '2017-04-30 00:00:00.123400 +00:00', 1493510400, 'Sunday, April 30, 2017%Afrom now'],
+            ['2017-04-30 00:00:00.123450', '+00:00', '2017-04-30 00:00:00.123450 +00:00', 1493510400, 'Sunday, April 30, 2017%Afrom now'],
+            ['2017-04-30 00:00:00.123456', '+00:00', '2017-04-30 00:00:00.123456 +00:00', 1493510400, 'Sunday, April 30, 2017%Afrom now'],
+        ];
     }
 
     /**
@@ -149,7 +149,7 @@ public function testCastInterval($intervalSpec, $ms, $invert, $xInterval, $xSeco
         $interval = $this->createInterval($intervalSpec, $ms, $invert);
         $stub = new Stub();
 
-        $cast = DateCaster::castInterval($interval, array('foo' => 'bar'), $stub, false, Caster::EXCLUDE_VERBOSE);
+        $cast = DateCaster::castInterval($interval, ['foo' => 'bar'], $stub, false, Caster::EXCLUDE_VERBOSE);
 
         $xDump = <<<EODUMP
 array:1 [
@@ -184,35 +184,35 @@ public function provideIntervals()
         $i = new \DateInterval('PT0S');
         $ms = ($withMs = \PHP_VERSION_ID >= 70100 && isset($i->f)) ? '.0' : '';
 
-        return array(
-            array('PT0S', 0, 0, '0s', '0s'),
-            array('PT0S', 0.1, 0, $withMs ? '+ 00:00:00.100' : '0s', '%is'),
-            array('PT1S', 0, 0, '+ 00:00:01'.$ms, '%is'),
-            array('PT2M', 0, 0, '+ 00:02:00'.$ms, '%is'),
-            array('PT3H', 0, 0, '+ 03:00:00'.$ms, '%ss'),
-            array('P4D', 0, 0, '+ 4d', '%ss'),
-            array('P5M', 0, 0, '+ 5m', null),
-            array('P6Y', 0, 0, '+ 6y', null),
-            array('P1Y2M3DT4H5M6S', 0, 0, '+ 1y 2m 3d 04:05:06'.$ms, null),
-            array('PT1M60S', 0, 0, '+ 00:02:00'.$ms, null),
-            array('PT1H60M', 0, 0, '+ 02:00:00'.$ms, null),
-            array('P1DT24H', 0, 0, '+ 2d', null),
-            array('P1M32D', 0, 0, '+ 1m 32d', null),
-
-            array('PT0S', 0, 1, '0s', '0s'),
-            array('PT0S', 0.1, 1, $withMs ? '- 00:00:00.100' : '0s', '%is'),
-            array('PT1S', 0, 1, '- 00:00:01'.$ms, '%is'),
-            array('PT2M', 0, 1, '- 00:02:00'.$ms, '%is'),
-            array('PT3H', 0, 1, '- 03:00:00'.$ms, '%ss'),
-            array('P4D', 0, 1, '- 4d', '%ss'),
-            array('P5M', 0, 1, '- 5m', null),
-            array('P6Y', 0, 1, '- 6y', null),
-            array('P1Y2M3DT4H5M6S', 0, 1, '- 1y 2m 3d 04:05:06'.$ms, null),
-            array('PT1M60S', 0, 1, '- 00:02:00'.$ms, null),
-            array('PT1H60M', 0, 1, '- 02:00:00'.$ms, null),
-            array('P1DT24H', 0, 1, '- 2d', null),
-            array('P1M32D', 0, 1, '- 1m 32d', null),
-        );
+        return [
+            ['PT0S', 0, 0, '0s', '0s'],
+            ['PT0S', 0.1, 0, $withMs ? '+ 00:00:00.100' : '0s', '%is'],
+            ['PT1S', 0, 0, '+ 00:00:01'.$ms, '%is'],
+            ['PT2M', 0, 0, '+ 00:02:00'.$ms, '%is'],
+            ['PT3H', 0, 0, '+ 03:00:00'.$ms, '%ss'],
+            ['P4D', 0, 0, '+ 4d', '%ss'],
+            ['P5M', 0, 0, '+ 5m', null],
+            ['P6Y', 0, 0, '+ 6y', null],
+            ['P1Y2M3DT4H5M6S', 0, 0, '+ 1y 2m 3d 04:05:06'.$ms, null],
+            ['PT1M60S', 0, 0, '+ 00:02:00'.$ms, null],
+            ['PT1H60M', 0, 0, '+ 02:00:00'.$ms, null],
+            ['P1DT24H', 0, 0, '+ 2d', null],
+            ['P1M32D', 0, 0, '+ 1m 32d', null],
+
+            ['PT0S', 0, 1, '0s', '0s'],
+            ['PT0S', 0.1, 1, $withMs ? '- 00:00:00.100' : '0s', '%is'],
+            ['PT1S', 0, 1, '- 00:00:01'.$ms, '%is'],
+            ['PT2M', 0, 1, '- 00:02:00'.$ms, '%is'],
+            ['PT3H', 0, 1, '- 03:00:00'.$ms, '%ss'],
+            ['P4D', 0, 1, '- 4d', '%ss'],
+            ['P5M', 0, 1, '- 5m', null],
+            ['P6Y', 0, 1, '- 6y', null],
+            ['P1Y2M3DT4H5M6S', 0, 1, '- 1y 2m 3d 04:05:06'.$ms, null],
+            ['PT1M60S', 0, 1, '- 00:02:00'.$ms, null],
+            ['PT1H60M', 0, 1, '- 02:00:00'.$ms, null],
+            ['P1DT24H', 0, 1, '- 2d', null],
+            ['P1M32D', 0, 1, '- 1m 32d', null],
+        ];
     }
 
     /**
@@ -267,7 +267,7 @@ public function testCastTimeZone($timezone, $xTimezone, $xRegion)
         $timezone = new \DateTimeZone($timezone);
         $stub = new Stub();
 
-        $cast = DateCaster::castTimeZone($timezone, array('foo' => 'bar'), $stub, false, Caster::EXCLUDE_VERBOSE);
+        $cast = DateCaster::castTimeZone($timezone, ['foo' => 'bar'], $stub, false, Caster::EXCLUDE_VERBOSE);
 
         $xDump = <<<EODUMP
 array:1 [
@@ -297,27 +297,27 @@ public function provideTimeZones()
     {
         $xRegion = \extension_loaded('intl') ? '%s' : '';
 
-        return array(
+        return [
             // type 1 (UTC offset)
-            array('-12:00', '-12:00', ''),
-            array('+00:00', '+00:00', ''),
-            array('+14:00', '+14:00', ''),
+            ['-12:00', '-12:00', ''],
+            ['+00:00', '+00:00', ''],
+            ['+14:00', '+14:00', ''],
 
             // type 2 (timezone abbreviation)
-            array('GMT', '+00:00', ''),
-            array('a', '+01:00', ''),
-            array('b', '+02:00', ''),
-            array('z', '+00:00', ''),
+            ['GMT', '+00:00', ''],
+            ['a', '+01:00', ''],
+            ['b', '+02:00', ''],
+            ['z', '+00:00', ''],
 
             // type 3 (timezone identifier)
-            array('Africa/Tunis', 'Africa/Tunis (%s:00)', $xRegion),
-            array('America/Panama', 'America/Panama (%s:00)', $xRegion),
-            array('Asia/Jerusalem', 'Asia/Jerusalem (%s:00)', $xRegion),
-            array('Atlantic/Canary', 'Atlantic/Canary (%s:00)', $xRegion),
-            array('Australia/Perth', 'Australia/Perth (%s:00)', $xRegion),
-            array('Europe/Zurich', 'Europe/Zurich (%s:00)', $xRegion),
-            array('Pacific/Tahiti', 'Pacific/Tahiti (%s:00)', $xRegion),
-        );
+            ['Africa/Tunis', 'Africa/Tunis (%s:00)', $xRegion],
+            ['America/Panama', 'America/Panama (%s:00)', $xRegion],
+            ['Asia/Jerusalem', 'Asia/Jerusalem (%s:00)', $xRegion],
+            ['Atlantic/Canary', 'Atlantic/Canary (%s:00)', $xRegion],
+            ['Australia/Perth', 'Australia/Perth (%s:00)', $xRegion],
+            ['Europe/Zurich', 'Europe/Zurich (%s:00)', $xRegion],
+            ['Pacific/Tahiti', 'Pacific/Tahiti (%s:00)', $xRegion],
+        ];
     }
 
     /**
@@ -352,7 +352,7 @@ public function testCastPeriod($start, $interval, $end, $options, $xPeriod, $xDa
         $p = new \DatePeriod(new \DateTime($start), new \DateInterval($interval), \is_int($end) ? $end : new \DateTime($end), $options);
         $stub = new Stub();
 
-        $cast = DateCaster::castPeriod($p, array(), $stub, false, 0);
+        $cast = DateCaster::castPeriod($p, [], $stub, false, 0);
 
         $xDump = <<<EODUMP
 array:1 [
@@ -383,28 +383,28 @@ public function providePeriods()
         $i = new \DateInterval('PT0S');
         $ms = \PHP_VERSION_ID >= 70100 && isset($i->f) ? '.0' : '';
 
-        $periods = array(
-            array('2017-01-01', 'P1D', '2017-01-03', 0, 'every + 1d, from 2017-01-01 00:00:00.0 (included) to 2017-01-03 00:00:00.0', '1) 2017-01-01%a2) 2017-01-02'),
-            array('2017-01-01', 'P1D', 1, 0, 'every + 1d, from 2017-01-01 00:00:00.0 (included) recurring 2 time/s', '1) 2017-01-01%a2) 2017-01-02'),
+        $periods = [
+            ['2017-01-01', 'P1D', '2017-01-03', 0, 'every + 1d, from 2017-01-01 00:00:00.0 (included) to 2017-01-03 00:00:00.0', '1) 2017-01-01%a2) 2017-01-02'],
+            ['2017-01-01', 'P1D', 1, 0, 'every + 1d, from 2017-01-01 00:00:00.0 (included) recurring 2 time/s', '1) 2017-01-01%a2) 2017-01-02'],
 
-            array('2017-01-01', 'P1D', '2017-01-04', 0, 'every + 1d, from 2017-01-01 00:00:00.0 (included) to 2017-01-04 00:00:00.0', '1) 2017-01-01%a2) 2017-01-02%a3) 2017-01-03'),
-            array('2017-01-01', 'P1D', 2, 0, 'every + 1d, from 2017-01-01 00:00:00.0 (included) recurring 3 time/s', '1) 2017-01-01%a2) 2017-01-02%a3) 2017-01-03'),
+            ['2017-01-01', 'P1D', '2017-01-04', 0, 'every + 1d, from 2017-01-01 00:00:00.0 (included) to 2017-01-04 00:00:00.0', '1) 2017-01-01%a2) 2017-01-02%a3) 2017-01-03'],
+            ['2017-01-01', 'P1D', 2, 0, 'every + 1d, from 2017-01-01 00:00:00.0 (included) recurring 3 time/s', '1) 2017-01-01%a2) 2017-01-02%a3) 2017-01-03'],
 
-            array('2017-01-01', 'P1D', '2017-01-05', 0, 'every + 1d, from 2017-01-01 00:00:00.0 (included) to 2017-01-05 00:00:00.0', '1) 2017-01-01%a2) 2017-01-02%a1 more'),
-            array('2017-01-01', 'P1D', 3, 0, 'every + 1d, from 2017-01-01 00:00:00.0 (included) recurring 4 time/s', '1) 2017-01-01%a2) 2017-01-02%a3) 2017-01-03%a1 more'),
+            ['2017-01-01', 'P1D', '2017-01-05', 0, 'every + 1d, from 2017-01-01 00:00:00.0 (included) to 2017-01-05 00:00:00.0', '1) 2017-01-01%a2) 2017-01-02%a1 more'],
+            ['2017-01-01', 'P1D', 3, 0, 'every + 1d, from 2017-01-01 00:00:00.0 (included) recurring 4 time/s', '1) 2017-01-01%a2) 2017-01-02%a3) 2017-01-03%a1 more'],
 
-            array('2017-01-01', 'P1D', '2017-01-21', 0, 'every + 1d, from 2017-01-01 00:00:00.0 (included) to 2017-01-21 00:00:00.0', '1) 2017-01-01%a17 more'),
-            array('2017-01-01', 'P1D', 19, 0, 'every + 1d, from 2017-01-01 00:00:00.0 (included) recurring 20 time/s', '1) 2017-01-01%a17 more'),
+            ['2017-01-01', 'P1D', '2017-01-21', 0, 'every + 1d, from 2017-01-01 00:00:00.0 (included) to 2017-01-21 00:00:00.0', '1) 2017-01-01%a17 more'],
+            ['2017-01-01', 'P1D', 19, 0, 'every + 1d, from 2017-01-01 00:00:00.0 (included) recurring 20 time/s', '1) 2017-01-01%a17 more'],
 
-            array('2017-01-01 01:00:00', 'P1D', '2017-01-03 01:00:00', 0, 'every + 1d, from 2017-01-01 01:00:00.0 (included) to 2017-01-03 01:00:00.0', '1) 2017-01-01 01:00:00.0%a2) 2017-01-02 01:00:00.0'),
-            array('2017-01-01 01:00:00', 'P1D', 1, 0, 'every + 1d, from 2017-01-01 01:00:00.0 (included) recurring 2 time/s', '1) 2017-01-01 01:00:00.0%a2) 2017-01-02 01:00:00.0'),
+            ['2017-01-01 01:00:00', 'P1D', '2017-01-03 01:00:00', 0, 'every + 1d, from 2017-01-01 01:00:00.0 (included) to 2017-01-03 01:00:00.0', '1) 2017-01-01 01:00:00.0%a2) 2017-01-02 01:00:00.0'],
+            ['2017-01-01 01:00:00', 'P1D', 1, 0, 'every + 1d, from 2017-01-01 01:00:00.0 (included) recurring 2 time/s', '1) 2017-01-01 01:00:00.0%a2) 2017-01-02 01:00:00.0'],
 
-            array('2017-01-01', 'P1DT1H', '2017-01-03', 0, "every + 1d 01:00:00$ms, from 2017-01-01 00:00:00.0 (included) to 2017-01-03 00:00:00.0", '1) 2017-01-01 00:00:00.0%a2) 2017-01-02 01:00:00.0'),
-            array('2017-01-01', 'P1DT1H', 1, 0, "every + 1d 01:00:00$ms, from 2017-01-01 00:00:00.0 (included) recurring 2 time/s", '1) 2017-01-01 00:00:00.0%a2) 2017-01-02 01:00:00.0'),
+            ['2017-01-01', 'P1DT1H', '2017-01-03', 0, "every + 1d 01:00:00$ms, from 2017-01-01 00:00:00.0 (included) to 2017-01-03 00:00:00.0", '1) 2017-01-01 00:00:00.0%a2) 2017-01-02 01:00:00.0'],
+            ['2017-01-01', 'P1DT1H', 1, 0, "every + 1d 01:00:00$ms, from 2017-01-01 00:00:00.0 (included) recurring 2 time/s", '1) 2017-01-01 00:00:00.0%a2) 2017-01-02 01:00:00.0'],
 
-            array('2017-01-01', 'P1D', '2017-01-04', \DatePeriod::EXCLUDE_START_DATE, 'every + 1d, from 2017-01-01 00:00:00.0 (excluded) to 2017-01-04 00:00:00.0', '1) 2017-01-02%a2) 2017-01-03'),
-            array('2017-01-01', 'P1D', 2, \DatePeriod::EXCLUDE_START_DATE, 'every + 1d, from 2017-01-01 00:00:00.0 (excluded) recurring 2 time/s', '1) 2017-01-02%a2) 2017-01-03'),
-        );
+            ['2017-01-01', 'P1D', '2017-01-04', \DatePeriod::EXCLUDE_START_DATE, 'every + 1d, from 2017-01-01 00:00:00.0 (excluded) to 2017-01-04 00:00:00.0', '1) 2017-01-02%a2) 2017-01-03'],
+            ['2017-01-01', 'P1D', 2, \DatePeriod::EXCLUDE_START_DATE, 'every + 1d, from 2017-01-01 00:00:00.0 (excluded) recurring 2 time/s', '1) 2017-01-02%a2) 2017-01-03'],
+        ];
 
         if (\PHP_VERSION_ID < 70107) {
             array_walk($periods, function (&$i) { $i[5] = ''; });
diff --git a/vendor/symfony/var-dumper/Tests/Caster/ExceptionCasterTest.php b/vendor/symfony/var-dumper/Tests/Caster/ExceptionCasterTest.php
index 4f9b538a0a..ea83e77163 100644
--- a/vendor/symfony/var-dumper/Tests/Caster/ExceptionCasterTest.php
+++ b/vendor/symfony/var-dumper/Tests/Caster/ExceptionCasterTest.php
@@ -36,7 +36,7 @@ protected function tearDown()
 
     public function testDefaultSettings()
     {
-        $ref = array('foo');
+        $ref = ['foo'];
         $e = $this->getTestException('foo', $ref);
 
         $expectedDump = <<<'EODUMP'
@@ -57,7 +57,7 @@ public function testDefaultSettings()
 EODUMP;
 
         $this->assertDumpMatchesFormat($expectedDump, $e);
-        $this->assertSame(array('foo'), $ref);
+        $this->assertSame(['foo'], $ref);
     }
 
     public function testSeek()
@@ -166,19 +166,19 @@ public function testFrameWithTwig()
     {
         require_once \dirname(__DIR__).'/Fixtures/Twig.php';
 
-        $f = array(
-            new FrameStub(array(
+        $f = [
+            new FrameStub([
                 'file' => \dirname(__DIR__).'/Fixtures/Twig.php',
                 'line' => 20,
                 'class' => '__TwigTemplate_VarDumperFixture_u75a09',
-            )),
-            new FrameStub(array(
+            ]),
+            new FrameStub([
                 'file' => \dirname(__DIR__).'/Fixtures/Twig.php',
                 'line' => 21,
                 'class' => '__TwigTemplate_VarDumperFixture_u75a09',
                 'object' => new \__TwigTemplate_VarDumperFixture_u75a09(null, __FILE__),
-            )),
-        );
+            ]),
+        ];
 
         $expectedDump = <<<'EODUMP'
 array:2 [
diff --git a/vendor/symfony/var-dumper/Tests/Caster/PdoCasterTest.php b/vendor/symfony/var-dumper/Tests/Caster/PdoCasterTest.php
index 000e5feeb1..19bbe0f80c 100644
--- a/vendor/symfony/var-dumper/Tests/Caster/PdoCasterTest.php
+++ b/vendor/symfony/var-dumper/Tests/Caster/PdoCasterTest.php
@@ -29,9 +29,9 @@ class PdoCasterTest extends TestCase
     public function testCastPdo()
     {
         $pdo = new \PDO('sqlite::memory:');
-        $pdo->setAttribute(\PDO::ATTR_STATEMENT_CLASS, array('PDOStatement', array($pdo)));
+        $pdo->setAttribute(\PDO::ATTR_STATEMENT_CLASS, ['PDOStatement', [$pdo]]);
 
-        $cast = PdoCaster::castPdo($pdo, array(), new Stub(), false);
+        $cast = PdoCaster::castPdo($pdo, [], new Stub(), false);
 
         $this->assertInstanceOf('Symfony\Component\VarDumper\Caster\EnumStub', $cast["\0~\0attributes"]);
 
diff --git a/vendor/symfony/var-dumper/Tests/Caster/ReflectionCasterTest.php b/vendor/symfony/var-dumper/Tests/Caster/ReflectionCasterTest.php
index a66c1d0386..37e14966f4 100644
--- a/vendor/symfony/var-dumper/Tests/Caster/ReflectionCasterTest.php
+++ b/vendor/symfony/var-dumper/Tests/Caster/ReflectionCasterTest.php
@@ -37,7 +37,7 @@ public function testReflectionCaster()
 %A]
   constants: array:3 [
     "IS_IMPLICIT_ABSTRACT" => 16
-    "IS_EXPLICIT_ABSTRACT" => 32
+    "IS_EXPLICIT_ABSTRACT" => %d
     "IS_FINAL" => %d
   ]
   properties: array:%d [
@@ -85,6 +85,34 @@ public function testClosureCaster()
         );
     }
 
+    public function testFromCallableClosureCaster()
+    {
+        if (\defined('HHVM_VERSION_ID')) {
+            $this->markTestSkipped('Not for HHVM.');
+        }
+        $var = [
+            (new \ReflectionMethod($this, __FUNCTION__))->getClosure($this),
+            (new \ReflectionMethod(__CLASS__, 'tearDownAfterClass'))->getClosure(),
+        ];
+
+        $this->assertDumpMatchesFormat(
+            <<<EOTXT
+array:2 [
+  0 => Symfony\Component\VarDumper\Tests\Caster\ReflectionCasterTest::testFromCallableClosureCaster {
+    this: Symfony\Component\VarDumper\Tests\Caster\ReflectionCasterTest { …}
+    file: "%sReflectionCasterTest.php"
+    line: "%d to %d"
+  }
+  1 => %sTestCase::tearDownAfterClass {
+    file: "%sTestCase.php"
+    line: "%d to %d"
+  }
+]
+EOTXT
+            , $var
+        );
+    }
+
     public function testClosureCasterExcludingVerbosity()
     {
         $var = function () {};
@@ -223,7 +251,7 @@ public function testGenerator()
 EODUMP;
 
         $r = new \ReflectionGenerator($generator);
-        $this->assertDumpMatchesFormat($expectedDump, array($r, $r->getExecutingGenerator()));
+        $this->assertDumpMatchesFormat($expectedDump, [$r, $r->getExecutingGenerator()]);
 
         foreach ($generator as $v) {
         }
diff --git a/vendor/symfony/var-dumper/Tests/Caster/SplCasterTest.php b/vendor/symfony/var-dumper/Tests/Caster/SplCasterTest.php
index d3c9ec25f5..984b340c6d 100644
--- a/vendor/symfony/var-dumper/Tests/Caster/SplCasterTest.php
+++ b/vendor/symfony/var-dumper/Tests/Caster/SplCasterTest.php
@@ -23,8 +23,8 @@ class SplCasterTest extends TestCase
 
     public function getCastFileInfoTests()
     {
-        return array(
-            array(__FILE__, <<<'EOTXT'
+        return [
+            [__FILE__, <<<'EOTXT'
 SplFileInfo {
 %Apath: "%sCaster"
   filename: "SplCasterTest.php"
@@ -35,7 +35,7 @@ public function getCastFileInfoTests()
   aTime: %s-%s-%d %d:%d:%d
   mTime: %s-%s-%d %d:%d:%d
   cTime: %s-%s-%d %d:%d:%d
-  inode: %d
+  inode: %i
   size: %d
   perms: 0%d
   owner: %d
@@ -49,8 +49,8 @@ public function getCastFileInfoTests()
   link: false
 %A}
 EOTXT
-            ),
-            array('https://google.com/about', <<<'EOTXT'
+            ],
+            ['https://google.com/about', <<<'EOTXT'
 SplFileInfo {
 %Apath: "https://google.com"
   filename: "about"
@@ -60,8 +60,8 @@ public function getCastFileInfoTests()
   realPath: false
 %A}
 EOTXT
-            ),
-        );
+            ],
+        ];
     }
 
     /** @dataProvider getCastFileInfoTests */
@@ -85,7 +85,7 @@ public function testCastFileObject()
   aTime: %s-%s-%d %d:%d:%d
   mTime: %s-%s-%d %d:%d:%d
   cTime: %s-%s-%d %d:%d:%d
-  inode: %d
+  inode: %i
   size: %d
   perms: 0%d
   owner: %d
@@ -105,7 +105,7 @@ public function testCastFileObject()
   maxLineLen: 0
   fstat: array:26 [
     "dev" => %d
-    "ino" => %d
+    "ino" => %i
     "nlink" => %d
     "rdev" => 0
     "blksize" => %i
@@ -137,12 +137,12 @@ public function testCastSplDoublyLinkedList($modeValue, $modeDump)
 
     public function provideCastSplDoublyLinkedList()
     {
-        return array(
-            array(\SplDoublyLinkedList::IT_MODE_FIFO, 'IT_MODE_FIFO | IT_MODE_KEEP'),
-            array(\SplDoublyLinkedList::IT_MODE_LIFO, 'IT_MODE_LIFO | IT_MODE_KEEP'),
-            array(\SplDoublyLinkedList::IT_MODE_FIFO | \SplDoublyLinkedList::IT_MODE_DELETE, 'IT_MODE_FIFO | IT_MODE_DELETE'),
-            array(\SplDoublyLinkedList::IT_MODE_LIFO | \SplDoublyLinkedList::IT_MODE_DELETE, 'IT_MODE_LIFO | IT_MODE_DELETE'),
-        );
+        return [
+            [\SplDoublyLinkedList::IT_MODE_FIFO, 'IT_MODE_FIFO | IT_MODE_KEEP'],
+            [\SplDoublyLinkedList::IT_MODE_LIFO, 'IT_MODE_LIFO | IT_MODE_KEEP'],
+            [\SplDoublyLinkedList::IT_MODE_FIFO | \SplDoublyLinkedList::IT_MODE_DELETE, 'IT_MODE_FIFO | IT_MODE_DELETE'],
+            [\SplDoublyLinkedList::IT_MODE_LIFO | \SplDoublyLinkedList::IT_MODE_DELETE, 'IT_MODE_LIFO | IT_MODE_DELETE'],
+        ];
     }
 
     public function testCastObjectStorageIsntModified()
@@ -169,7 +169,7 @@ public function testCastArrayObject()
         if (\defined('HHVM_VERSION')) {
             $this->markTestSkipped('HHVM as different internal details.');
         }
-        $var = new \ArrayObject(array(123));
+        $var = new \ArrayObject([123]);
         $var->foo = 234;
 
         $expected = <<<EOTXT
@@ -191,7 +191,7 @@ public function testArrayIterator()
         if (\defined('HHVM_VERSION')) {
             $this->markTestSkipped('HHVM as different internal details.');
         }
-        $var = new MyArrayIterator(array(234));
+        $var = new MyArrayIterator([234]);
 
         $expected = <<<EOTXT
 Symfony\Component\VarDumper\Tests\Caster\MyArrayIterator {
diff --git a/vendor/symfony/var-dumper/Tests/Caster/StubCasterTest.php b/vendor/symfony/var-dumper/Tests/Caster/StubCasterTest.php
index 36603c51cc..945833ebca 100644
--- a/vendor/symfony/var-dumper/Tests/Caster/StubCasterTest.php
+++ b/vendor/symfony/var-dumper/Tests/Caster/StubCasterTest.php
@@ -26,7 +26,7 @@ class StubCasterTest extends TestCase
 
     public function testArgsStubWithDefaults($foo = 234, $bar = 456)
     {
-        $args = array(new ArgsStub(array(123), __FUNCTION__, __CLASS__));
+        $args = [new ArgsStub([123], __FUNCTION__, __CLASS__)];
 
         $expectedDump = <<<'EODUMP'
 array:1 [
@@ -41,7 +41,7 @@ public function testArgsStubWithDefaults($foo = 234, $bar = 456)
 
     public function testArgsStubWithExtraArgs($foo = 234)
     {
-        $args = array(new ArgsStub(array(123, 456), __FUNCTION__, __CLASS__));
+        $args = [new ArgsStub([123, 456], __FUNCTION__, __CLASS__)];
 
         $expectedDump = <<<'EODUMP'
 array:1 [
@@ -59,7 +59,7 @@ public function testArgsStubWithExtraArgs($foo = 234)
 
     public function testArgsStubNoParamWithExtraArgs()
     {
-        $args = array(new ArgsStub(array(123), __FUNCTION__, __CLASS__));
+        $args = [new ArgsStub([123], __FUNCTION__, __CLASS__)];
 
         $expectedDump = <<<'EODUMP'
 array:1 [
@@ -74,7 +74,7 @@ public function testArgsStubNoParamWithExtraArgs()
 
     public function testArgsStubWithClosure()
     {
-        $args = array(new ArgsStub(array(123), '{closure}', null));
+        $args = [new ArgsStub([123], '{closure}', null)];
 
         $expectedDump = <<<'EODUMP'
 array:1 [
@@ -89,13 +89,13 @@ public function testArgsStubWithClosure()
 
     public function testLinkStub()
     {
-        $var = array(new LinkStub(__CLASS__, 0, __FILE__));
+        $var = [new LinkStub(__CLASS__, 0, __FILE__)];
 
         $cloner = new VarCloner();
         $dumper = new HtmlDumper();
         $dumper->setDumpHeader('<foo></foo>');
         $dumper->setDumpBoundaries('<bar>', '</bar>');
-        $dumper->setDisplayOptions(array('fileLinkFormat' => '%f:%l'));
+        $dumper->setDisplayOptions(['fileLinkFormat' => '%f:%l']);
         $dump = $dumper->dump($cloner->cloneVar($var), true);
 
         $expectedDump = <<<'EODUMP'
@@ -110,13 +110,13 @@ public function testLinkStub()
 
     public function testLinkStubWithNoFileLink()
     {
-        $var = array(new LinkStub('example.com', 0, 'http://example.com'));
+        $var = [new LinkStub('example.com', 0, 'http://example.com')];
 
         $cloner = new VarCloner();
         $dumper = new HtmlDumper();
         $dumper->setDumpHeader('<foo></foo>');
         $dumper->setDumpBoundaries('<bar>', '</bar>');
-        $dumper->setDisplayOptions(array('fileLinkFormat' => '%f:%l'));
+        $dumper->setDisplayOptions(['fileLinkFormat' => '%f:%l']);
         $dump = $dumper->dump($cloner->cloneVar($var), true);
 
         $expectedDump = <<<'EODUMP'
@@ -131,13 +131,13 @@ public function testLinkStubWithNoFileLink()
 
     public function testClassStub()
     {
-        $var = array(new ClassStub('hello', array(FooInterface::class, 'foo')));
+        $var = [new ClassStub('hello', [FooInterface::class, 'foo'])];
 
         $cloner = new VarCloner();
         $dumper = new HtmlDumper();
         $dumper->setDumpHeader('<foo></foo>');
         $dumper->setDumpBoundaries('<bar>', '</bar>');
-        $dump = $dumper->dump($cloner->cloneVar($var), true, array('fileLinkFormat' => '%f:%l'));
+        $dump = $dumper->dump($cloner->cloneVar($var), true, ['fileLinkFormat' => '%f:%l']);
 
         $expectedDump = <<<'EODUMP'
 <foo></foo><bar><span class=sf-dump-note>array:1</span> [<samp>
@@ -151,7 +151,7 @@ public function testClassStub()
 
     public function testClassStubWithNotExistingClass()
     {
-        $var = array(new ClassStub(NotExisting::class));
+        $var = [new ClassStub(NotExisting::class)];
 
         $cloner = new VarCloner();
         $dumper = new HtmlDumper();
@@ -172,13 +172,13 @@ public function testClassStubWithNotExistingClass()
 
     public function testClassStubWithNotExistingMethod()
     {
-        $var = array(new ClassStub('hello', array(FooInterface::class, 'missing')));
+        $var = [new ClassStub('hello', [FooInterface::class, 'missing'])];
 
         $cloner = new VarCloner();
         $dumper = new HtmlDumper();
         $dumper->setDumpHeader('<foo></foo>');
         $dumper->setDumpBoundaries('<bar>', '</bar>');
-        $dump = $dumper->dump($cloner->cloneVar($var), true, array('fileLinkFormat' => '%f:%l'));
+        $dump = $dumper->dump($cloner->cloneVar($var), true, ['fileLinkFormat' => '%f:%l']);
 
         $expectedDump = <<<'EODUMP'
 <foo></foo><bar><span class=sf-dump-note>array:1</span> [<samp>
diff --git a/vendor/symfony/var-dumper/Tests/Caster/XmlReaderCasterTest.php b/vendor/symfony/var-dumper/Tests/Caster/XmlReaderCasterTest.php
index 374d298af1..1d7b3f6278 100644
--- a/vendor/symfony/var-dumper/Tests/Caster/XmlReaderCasterTest.php
+++ b/vendor/symfony/var-dumper/Tests/Caster/XmlReaderCasterTest.php
@@ -66,15 +66,15 @@ public function testNodes($seek, $expectedDump)
 
     public function provideNodes()
     {
-        return array(
-            array(0, <<<'EODUMP'
+        return [
+            [0, <<<'EODUMP'
 XMLReader {
   +nodeType: NONE
    …13
 }
 EODUMP
-            ),
-            array(1, <<<'EODUMP'
+            ],
+            [1, <<<'EODUMP'
 XMLReader {
   +localName: "foo"
   +nodeType: ELEMENT
@@ -82,8 +82,8 @@ public function provideNodes()
    …11
 }
 EODUMP
-            ),
-            array(2, <<<'EODUMP'
+            ],
+            [2, <<<'EODUMP'
 XMLReader {
   +localName: "#text"
   +nodeType: SIGNIFICANT_WHITESPACE
@@ -96,8 +96,8 @@ public function provideNodes()
    …9
 }
 EODUMP
-            ),
-            array(3, <<<'EODUMP'
+            ],
+            [3, <<<'EODUMP'
 XMLReader {
   +localName: "bar"
   +nodeType: ELEMENT
@@ -106,8 +106,8 @@ public function provideNodes()
    …10
 }
 EODUMP
-            ),
-            array(4, <<<'EODUMP'
+            ],
+            [4, <<<'EODUMP'
 XMLReader {
   +localName: "bar"
   +nodeType: END_ELEMENT
@@ -116,8 +116,8 @@ public function provideNodes()
    …10
 }
 EODUMP
-            ),
-            array(6, <<<'EODUMP'
+            ],
+            [6, <<<'EODUMP'
 XMLReader {
   +localName: "bar"
   +nodeType: ELEMENT
@@ -127,8 +127,8 @@ public function provideNodes()
    …9
 }
 EODUMP
-            ),
-            array(9, <<<'EODUMP'
+            ],
+            [9, <<<'EODUMP'
 XMLReader {
   +localName: "#text"
   +nodeType: TEXT
@@ -138,8 +138,8 @@ public function provideNodes()
    …9
 }
 EODUMP
-            ),
-            array(12, <<<'EODUMP'
+            ],
+            [12, <<<'EODUMP'
 XMLReader {
   +localName: "bar"
   +nodeType: ELEMENT
@@ -149,8 +149,8 @@ public function provideNodes()
    …9
 }
 EODUMP
-            ),
-            array(13, <<<'EODUMP'
+            ],
+            [13, <<<'EODUMP'
 XMLReader {
   +localName: "bar"
   +nodeType: END_ELEMENT
@@ -159,8 +159,8 @@ public function provideNodes()
    …10
 }
 EODUMP
-            ),
-            array(15, <<<'EODUMP'
+            ],
+            [15, <<<'EODUMP'
 XMLReader {
   +localName: "bar"
   +nodeType: ELEMENT
@@ -170,8 +170,8 @@ public function provideNodes()
    …9
 }
 EODUMP
-            ),
-            array(16, <<<'EODUMP'
+            ],
+            [16, <<<'EODUMP'
 XMLReader {
   +localName: "#text"
   +nodeType: SIGNIFICANT_WHITESPACE
@@ -184,8 +184,8 @@ public function provideNodes()
    …9
 }
 EODUMP
-            ),
-            array(17, <<<'EODUMP'
+            ],
+            [17, <<<'EODUMP'
 XMLReader {
   +localName: "baz"
   +prefix: "baz"
@@ -196,8 +196,8 @@ public function provideNodes()
    …8
 }
 EODUMP
-            ),
-            array(18, <<<'EODUMP'
+            ],
+            [18, <<<'EODUMP'
 XMLReader {
   +localName: "baz"
   +prefix: "baz"
@@ -208,8 +208,8 @@ public function provideNodes()
    …8
 }
 EODUMP
-            ),
-            array(19, <<<'EODUMP'
+            ],
+            [19, <<<'EODUMP'
 XMLReader {
   +localName: "#text"
   +nodeType: SIGNIFICANT_WHITESPACE
@@ -222,8 +222,8 @@ public function provideNodes()
    …9
 }
 EODUMP
-            ),
-            array(21, <<<'EODUMP'
+            ],
+            [21, <<<'EODUMP'
 XMLReader {
   +localName: "#text"
   +nodeType: SIGNIFICANT_WHITESPACE
@@ -233,8 +233,8 @@ public function provideNodes()
    …9
 }
 EODUMP
-            ),
-            array(22, <<<'EODUMP'
+            ],
+            [22, <<<'EODUMP'
 XMLReader {
   +localName: "foo"
   +nodeType: END_ELEMENT
@@ -242,7 +242,7 @@ public function provideNodes()
    …11
 }
 EODUMP
-            ),
-        );
+            ],
+        ];
     }
 }
diff --git a/vendor/symfony/var-dumper/Tests/Cloner/DataTest.php b/vendor/symfony/var-dumper/Tests/Cloner/DataTest.php
index d10951be93..7d20bced35 100644
--- a/vendor/symfony/var-dumper/Tests/Cloner/DataTest.php
+++ b/vendor/symfony/var-dumper/Tests/Cloner/DataTest.php
@@ -21,9 +21,9 @@ class DataTest extends TestCase
 {
     public function testBasicData()
     {
-        $values = array(1 => 123, 4.5, 'abc', null, false);
+        $values = [1 => 123, 4.5, 'abc', null, false];
         $data = $this->cloneVar($values);
-        $clonedValues = array();
+        $clonedValues = [];
 
         $this->assertInstanceOf(Data::class, $data);
         $this->assertCount(\count($values), $data);
@@ -62,7 +62,7 @@ public function testObject()
 
     public function testArray()
     {
-        $values = array(array(), array(123));
+        $values = [[], [123]];
         $data = $this->cloneVar($values);
 
         $this->assertSame($values, $data->getValue(true));
@@ -83,7 +83,7 @@ public function testArray()
 
     public function testStub()
     {
-        $data = $this->cloneVar(array(new ClassStub('stdClass')));
+        $data = $this->cloneVar([new ClassStub('stdClass')]);
         $data = $data[0];
 
         $this->assertSame('string', $data->getType());
@@ -93,15 +93,15 @@ public function testStub()
 
     public function testHardRefs()
     {
-        $values = array(array());
+        $values = [[]];
         $values[1] = &$values[0];
         $values[2][0] = &$values[2];
 
         $data = $this->cloneVar($values);
 
-        $this->assertSame(array(), $data[0]->getValue());
-        $this->assertSame(array(), $data[1]->getValue());
-        $this->assertEquals(array($data[2]->getValue()), $data[2]->getValue(true));
+        $this->assertSame([], $data[0]->getValue());
+        $this->assertSame([], $data[1]->getValue());
+        $this->assertEquals([$data[2]->getValue()], $data[2]->getValue(true));
 
         $this->assertSame('array (count=3)', (string) $data);
     }
diff --git a/vendor/symfony/var-dumper/Tests/Cloner/VarClonerTest.php b/vendor/symfony/var-dumper/Tests/Cloner/VarClonerTest.php
index 12fabcf08c..3b180af498 100644
--- a/vendor/symfony/var-dumper/Tests/Cloner/VarClonerTest.php
+++ b/vendor/symfony/var-dumper/Tests/Cloner/VarClonerTest.php
@@ -21,7 +21,7 @@ class VarClonerTest extends TestCase
 {
     public function testMaxIntBoundary()
     {
-        $data = array(PHP_INT_MAX => 123);
+        $data = [PHP_INT_MAX => 123];
 
         $cloner = new VarCloner();
         $clone = $cloner->cloneVar($data);
@@ -149,42 +149,42 @@ public function testClone()
     public function testLimits()
     {
         // Level 0:
-        $data = array(
+        $data = [
             // Level 1:
-            array(
+            [
                 // Level 2:
-                array(
+                [
                     // Level 3:
                     'Level 3 Item 0',
                     'Level 3 Item 1',
                     'Level 3 Item 2',
                     'Level 3 Item 3',
-                ),
-                array(
+                ],
+                [
                     'Level 3 Item 4',
                     'Level 3 Item 5',
                     'Level 3 Item 6',
-                ),
-                array(
+                ],
+                [
                     'Level 3 Item 7',
-                ),
-            ),
-            array(
-                array(
+                ],
+            ],
+            [
+                [
                     'Level 3 Item 8',
-                ),
+                ],
                 'Level 2 Item 0',
-            ),
-            array(
+            ],
+            [
                 'Level 2 Item 1',
-            ),
+            ],
             'Level 1 Item 0',
-            array(
+            [
                 // Test setMaxString:
                 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
                 'SHORT',
-            ),
-        );
+            ],
+        ];
 
         $cloner = new VarCloner();
         $cloner->setMinDepth(2);
@@ -381,16 +381,16 @@ public function testJsonCast()
 
     public function testCaster()
     {
-        $cloner = new VarCloner(array(
+        $cloner = new VarCloner([
             '*' => function ($obj, $array) {
-                return array('foo' => 123);
+                return ['foo' => 123];
             },
             __CLASS__ => function ($obj, $array) {
                 ++$array['foo'];
 
                 return $array;
             },
-        ));
+        ]);
         $clone = $cloner->cloneVar($this);
 
         $expected = <<<EOTXT
diff --git a/vendor/symfony/var-dumper/Tests/Dumper/CliDumperTest.php b/vendor/symfony/var-dumper/Tests/Dumper/CliDumperTest.php
index 298c33e629..9520b4fe10 100644
--- a/vendor/symfony/var-dumper/Tests/Dumper/CliDumperTest.php
+++ b/vendor/symfony/var-dumper/Tests/Dumper/CliDumperTest.php
@@ -32,13 +32,13 @@ public function testGet()
         $dumper = new CliDumper('php://output');
         $dumper->setColors(false);
         $cloner = new VarCloner();
-        $cloner->addCasters(array(
+        $cloner->addCasters([
             ':stream' => function ($res, $a) {
                 unset($a['uri'], $a['wrapper_data']);
 
                 return $a;
             },
-        ));
+        ]);
         $data = $cloner->cloneVar($var);
 
         ob_start();
@@ -119,11 +119,11 @@ public function testDumpWithCommaFlag($expected, $flags)
         $dumper->setColors(false);
         $cloner = new VarCloner();
 
-        $var = array(
-            'array' => array('a', 'b'),
+        $var = [
+            'array' => ['a', 'b'],
             'string' => 'hello',
             'multiline string' => "this\nis\na\multiline\nstring",
-        );
+        ];
 
         $dump = $dumper->dump($cloner->cloneVar($var), true);
 
@@ -179,7 +179,7 @@ public function provideDumpWithCommaFlagTests()
 
 EOTXT;
 
-        yield array($expected, CliDumper::DUMP_COMMA_SEPARATOR);
+        yield [$expected, CliDumper::DUMP_COMMA_SEPARATOR];
 
         $expected = <<<'EOTXT'
 array:3 [
@@ -198,7 +198,7 @@ public function provideDumpWithCommaFlagTests()
 
 EOTXT;
 
-        yield array($expected, CliDumper::DUMP_TRAILING_COMMA);
+        yield [$expected, CliDumper::DUMP_TRAILING_COMMA];
     }
 
     /**
@@ -261,7 +261,7 @@ public function testJsonCast()
 
     public function testObjectCast()
     {
-        $var = (object) array(1 => 1);
+        $var = (object) [1 => 1];
         $var->{1} = 2;
 
         if (\PHP_VERSION_ID >= 70200) {
@@ -322,10 +322,10 @@ public function testFlags()
         putenv('DUMP_LIGHT_ARRAY=1');
         putenv('DUMP_STRING_LENGTH=1');
 
-        $var = array(
+        $var = [
             range(1, 3),
-            array('foo', 2 => 'bar'),
-        );
+            ['foo', 2 => 'bar'],
+        ];
 
         $this->assertDumpEquals(
             <<<EOTXT
@@ -362,22 +362,22 @@ public function testThrowingCaster()
         $dumper = new CliDumper();
         $dumper->setColors(false);
         $cloner = new VarCloner();
-        $cloner->addCasters(array(
+        $cloner->addCasters([
             ':stream' => function ($res, $a) {
                 unset($a['wrapper_data']);
 
                 return $a;
             },
-        ));
-        $cloner->addCasters(array(
+        ]);
+        $cloner->addCasters([
             ':stream' => eval('return function () use ($twig) {
                 try {
-                    $twig->render(array());
+                    $twig->render([]);
                 } catch (\Twig\Error\RuntimeError $e) {
                     throw $e->getPrevious();
                 }
             };'),
-        ));
+        ]);
         $ref = (int) $out;
 
         $data = $cloner->cloneVar($out);
@@ -419,7 +419,7 @@ public function testThrowingCaster()
 
     public function testRefsInProperties()
     {
-        $var = (object) array('foo' => 'foo');
+        $var = (object) ['foo' => 'foo'];
         $var->bar = &$var->foo;
 
         $dumper = new CliDumper();
@@ -580,12 +580,12 @@ private function getSpecialVars()
         }
 
         $var = function &() {
-            $var = array();
+            $var = [];
             $var[] = &$var;
 
             return $var;
         };
 
-        return array($var(), $GLOBALS, &$GLOBALS);
+        return [$var(), $GLOBALS, &$GLOBALS];
     }
 }
diff --git a/vendor/symfony/var-dumper/Tests/Dumper/FunctionsTest.php b/vendor/symfony/var-dumper/Tests/Dumper/FunctionsTest.php
new file mode 100644
index 0000000000..0bd596c2ad
--- /dev/null
+++ b/vendor/symfony/var-dumper/Tests/Dumper/FunctionsTest.php
@@ -0,0 +1,57 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\VarDumper\Tests\Dumper;
+
+use PHPUnit\Framework\TestCase;
+use Symfony\Component\VarDumper\Cloner\VarCloner;
+use Symfony\Component\VarDumper\Dumper\CliDumper;
+use Symfony\Component\VarDumper\VarDumper;
+
+class FunctionsTest extends TestCase
+{
+    public function testDumpReturnsFirstArg()
+    {
+        $this->setupVarDumper();
+
+        $var1 = 'a';
+
+        ob_start();
+        $return = dump($var1);
+        $out = ob_get_clean();
+
+        $this->assertEquals($var1, $return);
+    }
+
+    public function testDumpReturnsAllArgsInArray()
+    {
+        $this->setupVarDumper();
+
+        $var1 = 'a';
+        $var2 = 'b';
+        $var3 = 'c';
+
+        ob_start();
+        $return = dump($var1, $var2, $var3);
+        $out = ob_get_clean();
+
+        $this->assertEquals([$var1, $var2, $var3], $return);
+    }
+
+    protected function setupVarDumper()
+    {
+        $cloner = new VarCloner();
+        $dumper = new CliDumper('php://output');
+        VarDumper::setHandler(function ($var) use ($cloner, $dumper) {
+            $dumper->dump($cloner->cloneVar($var));
+        });
+    }
+}
diff --git a/vendor/symfony/var-dumper/Tests/Dumper/HtmlDumperTest.php b/vendor/symfony/var-dumper/Tests/Dumper/HtmlDumperTest.php
index 98ca471ac1..8a7e68ebf0 100644
--- a/vendor/symfony/var-dumper/Tests/Dumper/HtmlDumperTest.php
+++ b/vendor/symfony/var-dumper/Tests/Dumper/HtmlDumperTest.php
@@ -32,13 +32,13 @@ public function testGet()
         $dumper->setDumpHeader('<foo></foo>');
         $dumper->setDumpBoundaries('<bar>', '</bar>');
         $cloner = new VarCloner();
-        $cloner->addCasters(array(
+        $cloner->addCasters([
             ':stream' => function ($res, $a) {
                 unset($a['uri'], $a['wrapper_data']);
 
                 return $a;
             },
-        ));
+        ]);
         $data = $cloner->cloneVar($var);
 
         ob_start();
diff --git a/vendor/symfony/var-dumper/Tests/Fixtures/Twig.php b/vendor/symfony/var-dumper/Tests/Fixtures/Twig.php
index fe2542929b..8b84d820fc 100644
--- a/vendor/symfony/var-dumper/Tests/Fixtures/Twig.php
+++ b/vendor/symfony/var-dumper/Tests/Fixtures/Twig.php
@@ -11,11 +11,11 @@ public function __construct(Twig\Environment $env = null, $path = null)
             parent::__construct($env);
         }
         $this->parent = false;
-        $this->blocks = array();
+        $this->blocks = [];
         $this->path = $path;
     }
 
-    protected function doDisplay(array $context, array $blocks = array())
+    protected function doDisplay(array $context, array $blocks = [])
     {
         // line 2
         throw new \Exception('Foobar');
@@ -28,7 +28,7 @@ public function getTemplateName()
 
     public function getDebugInfo()
     {
-        return array(20 => 1, 21 => 2);
+        return [20 => 1, 21 => 2];
     }
 
     public function getSourceContext()
diff --git a/vendor/symfony/var-dumper/Tests/Fixtures/dumb-var.php b/vendor/symfony/var-dumper/Tests/Fixtures/dumb-var.php
index 59ee19bdad..de51cebc21 100644
--- a/vendor/symfony/var-dumper/Tests/Fixtures/dumb-var.php
+++ b/vendor/symfony/var-dumper/Tests/Fixtures/dumb-var.php
@@ -14,19 +14,19 @@ class DumbFoo
 
 $g = fopen(__FILE__, 'r');
 
-$var = array(
+$var = [
     'number' => 1, null,
     'const' => 1.1, true, false, NAN, INF, -INF, PHP_INT_MAX,
     'str' => "déjà\n", "\xE9\x00",
-    '[]' => array(),
+    '[]' => [],
     'res' => $g,
     'obj' => $foo,
     'closure' => function ($a, \PDO &$b = null) {},
     'line' => __LINE__ - 1,
-    'nobj' => array((object) array()),
-);
+    'nobj' => [(object) []],
+];
 
-$r = array();
+$r = [];
 $r[] = &$r;
 
 $var['recurs'] = &$r;
diff --git a/vendor/symfony/var-dumper/Tests/Test/VarDumperTestTraitTest.php b/vendor/symfony/var-dumper/Tests/Test/VarDumperTestTraitTest.php
index 464d67f6ce..18042fb3bf 100644
--- a/vendor/symfony/var-dumper/Tests/Test/VarDumperTestTraitTest.php
+++ b/vendor/symfony/var-dumper/Tests/Test/VarDumperTestTraitTest.php
@@ -21,7 +21,7 @@ class VarDumperTestTraitTest extends TestCase
     public function testItComparesLargeData()
     {
         $howMany = 700;
-        $data = array_fill_keys(range(0, $howMany), array('a', 'b', 'c', 'd'));
+        $data = array_fill_keys(range(0, $howMany), ['a', 'b', 'c', 'd']);
 
         $expected = sprintf("array:%d [\n", $howMany + 1);
         for ($i = 0; $i <= $howMany; ++$i) {
diff --git a/vendor/symfony/var-dumper/VarDumper.php b/vendor/symfony/var-dumper/VarDumper.php
index a9ed05b3b3..2ef20c064b 100644
--- a/vendor/symfony/var-dumper/VarDumper.php
+++ b/vendor/symfony/var-dumper/VarDumper.php
@@ -29,7 +29,7 @@ public static function dump($var)
     {
         if (null === self::$handler) {
             $cloner = new VarCloner();
-            $dumper = \in_array(\PHP_SAPI, array('cli', 'phpdbg'), true) ? new CliDumper() : new HtmlDumper();
+            $dumper = \in_array(\PHP_SAPI, ['cli', 'phpdbg'], true) ? new CliDumper() : new HtmlDumper();
             self::$handler = function ($var) use ($cloner, $dumper) {
                 $dumper->dump($cloner->cloneVar($var));
             };
diff --git a/vendor/symfony/var-dumper/phpunit.xml.dist b/vendor/symfony/var-dumper/phpunit.xml.dist
index 4a25f42db8..3243fcd027 100644
--- a/vendor/symfony/var-dumper/phpunit.xml.dist
+++ b/vendor/symfony/var-dumper/phpunit.xml.dist
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
 <phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.1/phpunit.xsd"
+         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/5.2/phpunit.xsd"
          backupGlobals="false"
          colors="true"
          bootstrap="vendor/autoload.php"
diff --git a/vendor/webmozart/assert/.composer-auth.json b/vendor/webmozart/assert/.composer-auth.json
deleted file mode 100644
index eea80018f0..0000000000
--- a/vendor/webmozart/assert/.composer-auth.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-    "github-oauth": {
-        "github.com": "PLEASE DO NOT USE THIS TOKEN IN YOUR OWN PROJECTS/FORKS",
-        "github.com": "This token is reserved for testing the webmozart/* repositories",
-        "github.com": "a9debbffdd953ee9b3b82dbc3b807cde2086bb86"
-    }
-}
diff --git a/vendor/webmozart/assert/.styleci.yml b/vendor/webmozart/assert/.styleci.yml
deleted file mode 100644
index c2ad4a57de..0000000000
--- a/vendor/webmozart/assert/.styleci.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-preset: symfony
-
-finder:
-    exclude:
-        - "tests"
-
-enabled:
-    - ordered_use
-
-disabled:
-    - phpdoc_annotation_without_dot # This is still buggy: https://github.com/symfony/symfony/pull/19198
diff --git a/vendor/webmozart/assert/CHANGELOG.md b/vendor/webmozart/assert/CHANGELOG.md
index 65fbc8f7ad..da4fb3fea9 100644
--- a/vendor/webmozart/assert/CHANGELOG.md
+++ b/vendor/webmozart/assert/CHANGELOG.md
@@ -3,6 +3,25 @@ Changelog
 
 ## UNRELEASED
 
+## 1.4.0 (2018-12-25)
+
+### Added
+
+* added `Assert::ip()`
+* added `Assert::ipv4()`
+* added `Assert::ipv6()`
+* added `Assert::notRegex()`
+* added `Assert::interfaceExists()`
+* added `Assert::isList()`
+* added `Assert::isMap()`
+* added polyfill for ctype
+
+### Fixed
+
+* Special case when comparing objects implementing `__toString()`
+
+## 1.3.0 (2018-01-29)
+
 ### Added 
 
 * added `Assert::minCount()`
@@ -20,6 +39,10 @@ Changelog
 
 * `stringNotEmpty` will no longer report "0" is an empty string
 
+### Deprecation
+
+* deprecated `Assert::isTraversable()` in favor of `Assert::isIterable()`
+
 ## 1.2.0 (2016-11-23)
 
  * added `Assert::throws()`
diff --git a/vendor/webmozart/assert/README.md b/vendor/webmozart/assert/README.md
index 1c1ede7dd1..ce7ba59dea 100644
--- a/vendor/webmozart/assert/README.md
+++ b/vendor/webmozart/assert/README.md
@@ -5,7 +5,6 @@ Webmozart Assert
 [![Build status](https://ci.appveyor.com/api/projects/status/lyg83bcsisrr94se/branch/master?svg=true)](https://ci.appveyor.com/project/webmozart/assert/branch/master)
 [![Latest Stable Version](https://poser.pugx.org/webmozart/assert/v/stable.svg)](https://packagist.org/packages/webmozart/assert)
 [![Total Downloads](https://poser.pugx.org/webmozart/assert/downloads.svg)](https://packagist.org/packages/webmozart/assert)
-[![Dependency Status](https://www.versioneye.com/php/webmozart:assert/1.2.0/badge.svg)](https://www.versioneye.com/php/webmozart:assert/1.2.0)
 
 Latest release: [1.2.0](https://packagist.org/packages/webmozart/assert#1.2.0)
 
@@ -146,6 +145,7 @@ Method                                              | Description
 `startsWithLetter($value, $message = '')`           | Check that a string starts with a letter
 `endsWith($value, $suffix, $message = '')`          | Check that a string has a suffix
 `regex($value, $pattern, $message = '')`            | Check that a string matches a regular expression
+`notRegex($value, $pattern, $message = '')`         | Check that a string does not match a regular expression
 `alpha($value, $message = '')`                      | Check that a string contains letters only
 `digits($value, $message = '')`                     | Check that a string contains digits only
 `alnum($value, $message = '')`                      | Check that a string contains letters and digits only
@@ -156,6 +156,9 @@ Method                                              | Description
 `maxLength($value, $max, $message = '')`            | Check that a string has at most a certain number of characters
 `lengthBetween($value, $min, $max, $message = '')`  | Check that a string has a length in the given range
 `uuid($value, $message = '')`                       | Check that a string is a valid UUID
+`ip($value, $message = '')`                         | Check that a string is a valid IP (either IPv4 or IPv6)
+`ipv4($value, $message = '')`                       | Check that a string is a valid IPv4
+`ipv6($value, $message = '')`                       | Check that a string is a valid IPv6
 `notWhitespaceOnly($value, $message = '')`          | Check that a string contains at least one non-whitespace character
 
 ### File Assertions
@@ -174,6 +177,7 @@ Method                                                | Description
 ----------------------------------------------------- | --------------------------------------------------
 `classExists($value, $message = '')`                  | Check that a value is an existing class name
 `subclassOf($value, $class, $message = '')`           | Check that a class is a subclass of another
+`interfaceExists($value, $message = '')`              | Check that a value is an existing interface name
 `implementsInterface($value, $class, $message = '')`  | Check that a class implements an interface
 `propertyExists($value, $property, $message = '')`    | Check that a property exists in a class/object
 `propertyNotExists($value, $property, $message = '')` | Check that a property does not exist in a class/object
@@ -190,6 +194,8 @@ Method                                             | Description
 `minCount($array, $min, $message = '')`            | Check that an array contains at least a certain number of elements
 `maxCount($array, $max, $message = '')`            | Check that an array contains at most a certain number of elements
 `countBetween($array, $min, $max, $message = '')`  | Check that an array has a count in the given range
+`isList($array, $message = '')`                    | Check that an array is a non-associative list
+`isMap($array, $message = '')`                     | Check that an array is associative and has strings as keys
 
 ### Function Assertions
 
diff --git a/vendor/webmozart/assert/composer.json b/vendor/webmozart/assert/composer.json
index c49e623a30..b6002ef354 100644
--- a/vendor/webmozart/assert/composer.json
+++ b/vendor/webmozart/assert/composer.json
@@ -1,7 +1,11 @@
 {
     "name": "webmozart/assert",
     "description": "Assertions to validate method input/output with nice error messages.",
-    "keywords": ["assert", "check", "validate"],
+    "keywords": [
+        "assert",
+        "check",
+        "validate"
+    ],
     "license": "MIT",
     "authors": [
         {
@@ -10,12 +14,18 @@
         }
     ],
     "require": {
-        "php": "^5.3.3 || ^7.0"
+        "php": "^5.3.3 || ^7.0",
+        "symfony/polyfill-ctype": "^1.8"
     },
     "require-dev": {
         "phpunit/phpunit": "^4.6",
         "sebastian/version": "^1.0.1"
     },
+    "extra": {
+        "branch-alias": {
+            "dev-master": "1.3-dev"
+        }
+    },
     "autoload": {
         "psr-4": {
             "Webmozart\\Assert\\": "src/"
@@ -25,10 +35,5 @@
         "psr-4": {
             "Webmozart\\Assert\\Tests\\": "tests/"
         }
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "1.3-dev"
-        }
     }
 }
diff --git a/vendor/webmozart/assert/src/Assert.php b/vendor/webmozart/assert/src/Assert.php
index e2f89c0b0d..db04bfbef3 100644
--- a/vendor/webmozart/assert/src/Assert.php
+++ b/vendor/webmozart/assert/src/Assert.php
@@ -29,6 +29,7 @@
  * @method static void nullOrIntegerish($value, $message = '')
  * @method static void nullOrFloat($value, $message = '')
  * @method static void nullOrNumeric($value, $message = '')
+ * @method static void nullOrNatural($value, $message = '')
  * @method static void nullOrBoolean($value, $message = '')
  * @method static void nullOrScalar($value, $message = '')
  * @method static void nullOrObject($value, $message = '')
@@ -38,6 +39,7 @@
  * @method static void nullOrIsTraversable($value, $message = '')
  * @method static void nullOrIsArrayAccessible($value, $message = '')
  * @method static void nullOrIsCountable($value, $message = '')
+ * @method static void nullOrIsIterable($value, $message = '')
  * @method static void nullOrIsInstanceOf($value, $class, $message = '')
  * @method static void nullOrNotInstanceOf($value, $class, $message = '')
  * @method static void nullOrIsInstanceOfAny($value, $classes, $message = '')
@@ -45,6 +47,9 @@
  * @method static void nullOrNotEmpty($value, $message = '')
  * @method static void nullOrTrue($value, $message = '')
  * @method static void nullOrFalse($value, $message = '')
+ * @method static void nullOrIp($value, $message = '')
+ * @method static void nullOrIpv4($value, $message = '')
+ * @method static void nullOrIpv6($value, $message = '')
  * @method static void nullOrEq($value, $value2, $message = '')
  * @method static void nullOrNotEq($value,$value2,  $message = '')
  * @method static void nullOrSame($value, $value2, $message = '')
@@ -62,6 +67,7 @@
  * @method static void nullOrStartsWithLetter($value, $message = '')
  * @method static void nullOrEndsWith($value, $suffix, $message = '')
  * @method static void nullOrRegex($value, $pattern, $message = '')
+ * @method static void nullOrNotRegex($value, $pattern, $message = '')
  * @method static void nullOrAlpha($value, $message = '')
  * @method static void nullOrDigits($value, $message = '')
  * @method static void nullOrAlnum($value, $message = '')
@@ -78,6 +84,7 @@
  * @method static void nullOrWritable($value, $message = '')
  * @method static void nullOrClassExists($value, $message = '')
  * @method static void nullOrSubclassOf($value, $class, $message = '')
+ * @method static void nullOrInterfaceExists($value, $message = '')
  * @method static void nullOrImplementsInterface($value, $interface, $message = '')
  * @method static void nullOrPropertyExists($value, $property, $message = '')
  * @method static void nullOrPropertyNotExists($value, $property, $message = '')
@@ -88,14 +95,18 @@
  * @method static void nullOrCount($value, $key, $message = '')
  * @method static void nullOrMinCount($value, $min, $message = '')
  * @method static void nullOrMaxCount($value, $max, $message = '')
- * @method static void nullCountBetween($value, $min, $max, $message = '')
+ * @method static void nullOrIsList($value, $message = '')
+ * @method static void nullOrIsMap($value, $message = '')
+ * @method static void nullOrCountBetween($value, $min, $max, $message = '')
  * @method static void nullOrUuid($values, $message = '')
+ * @method static void nullOrThrows($expression, $class = 'Exception', $message = '')
  * @method static void allString($values, $message = '')
  * @method static void allStringNotEmpty($values, $message = '')
  * @method static void allInteger($values, $message = '')
  * @method static void allIntegerish($values, $message = '')
  * @method static void allFloat($values, $message = '')
  * @method static void allNumeric($values, $message = '')
+ * @method static void allNatural($values, $message = '')
  * @method static void allBoolean($values, $message = '')
  * @method static void allScalar($values, $message = '')
  * @method static void allObject($values, $message = '')
@@ -105,6 +116,7 @@
  * @method static void allIsTraversable($values, $message = '')
  * @method static void allIsArrayAccessible($values, $message = '')
  * @method static void allIsCountable($values, $message = '')
+ * @method static void allIsIterable($values, $message = '')
  * @method static void allIsInstanceOf($values, $class, $message = '')
  * @method static void allNotInstanceOf($values, $class, $message = '')
  * @method static void allIsInstanceOfAny($values, $classes, $message = '')
@@ -114,6 +126,9 @@
  * @method static void allNotEmpty($values, $message = '')
  * @method static void allTrue($values, $message = '')
  * @method static void allFalse($values, $message = '')
+ * @method static void allIp($values, $message = '')
+ * @method static void allIpv4($values, $message = '')
+ * @method static void allIpv6($values, $message = '')
  * @method static void allEq($values, $value2, $message = '')
  * @method static void allNotEq($values,$value2,  $message = '')
  * @method static void allSame($values, $value2, $message = '')
@@ -131,6 +146,7 @@
  * @method static void allStartsWithLetter($values, $message = '')
  * @method static void allEndsWith($values, $suffix, $message = '')
  * @method static void allRegex($values, $pattern, $message = '')
+ * @method static void allNotRegex($values, $pattern, $message = '')
  * @method static void allAlpha($values, $message = '')
  * @method static void allDigits($values, $message = '')
  * @method static void allAlnum($values, $message = '')
@@ -147,6 +163,7 @@
  * @method static void allWritable($values, $message = '')
  * @method static void allClassExists($values, $message = '')
  * @method static void allSubclassOf($values, $class, $message = '')
+ * @method static void allInterfaceExists($values, $message = '')
  * @method static void allImplementsInterface($values, $interface, $message = '')
  * @method static void allPropertyExists($values, $property, $message = '')
  * @method static void allPropertyNotExists($values, $property, $message = '')
@@ -158,7 +175,10 @@
  * @method static void allMinCount($values, $min, $message = '')
  * @method static void allMaxCount($values, $max, $message = '')
  * @method static void allCountBetween($values, $min, $max, $message = '')
+ * @method static void allIsList($values, $message = '')
+ * @method static void allIsMap($values, $message = '')
  * @method static void allUuid($values, $message = '')
+ * @method static void allThrows($expressions, $class = 'Exception', $message = '')
  *
  * @since  1.0
  *
@@ -444,6 +464,36 @@ public static function false($value, $message = '')
         }
     }
 
+    public static function ip($value, $message = '')
+    {
+        if (false === filter_var($value, FILTER_VALIDATE_IP)) {
+            static::reportInvalidArgument(sprintf(
+                $message ?: 'Expected a value to be an IP. Got: %s',
+                static::valueToString($value)
+            ));
+        }
+    }
+
+    public static function ipv4($value, $message = '')
+    {
+        if (false === filter_var($value, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
+            static::reportInvalidArgument(sprintf(
+                $message ?: 'Expected a value to be an IPv4. Got: %s',
+                static::valueToString($value)
+            ));
+        }
+    }
+
+    public static function ipv6($value, $message = '')
+    {
+        if (false === filter_var($value, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {
+            static::reportInvalidArgument(sprintf(
+                $message ?: 'Expected a value to be an IPv6. Got %s',
+                static::valueToString($value)
+            ));
+        }
+    }
+
     public static function eq($value, $value2, $message = '')
     {
         if ($value2 != $value) {
@@ -636,6 +686,18 @@ public static function regex($value, $pattern, $message = '')
         }
     }
 
+    public static function notRegex($value, $pattern, $message = '')
+    {
+        if (preg_match($pattern, $value, $matches, PREG_OFFSET_CAPTURE)) {
+            static::reportInvalidArgument(sprintf(
+                $message ?: 'The value %s matches the pattern %s (at offset %d).',
+                static::valueToString($value),
+                static::valueToString($pattern),
+                $matches[0][1]
+            ));
+        }
+    }
+
     public static function alpha($value, $message = '')
     {
         $locale = setlocale(LC_CTYPE, 0);
@@ -835,6 +897,16 @@ public static function subclassOf($value, $class, $message = '')
         }
     }
 
+    public static function interfaceExists($value, $message = '')
+    {
+        if (!interface_exists($value)) {
+            static::reportInvalidArgument(sprintf(
+                $message ?: 'Expected an existing interface name. got %s',
+                static::valueToString($value)
+            ));
+        }
+    }
+
     public static function implementsInterface($value, $interface, $message = '')
     {
         if (!in_array($interface, class_implements($value))) {
@@ -888,7 +960,7 @@ public static function methodNotExists($classOrObject, $method, $message = '')
 
     public static function keyExists($array, $key, $message = '')
     {
-        if (!array_key_exists($key, $array)) {
+        if (!(isset($array[$key]) || array_key_exists($key, $array))) {
             static::reportInvalidArgument(sprintf(
                 $message ?: 'Expected the key %s to exist.',
                 static::valueToString($key)
@@ -898,7 +970,7 @@ public static function keyExists($array, $key, $message = '')
 
     public static function keyNotExists($array, $key, $message = '')
     {
-        if (array_key_exists($key, $array)) {
+        if (isset($array[$key]) || array_key_exists($key, $array)) {
             static::reportInvalidArgument(sprintf(
                 $message ?: 'Expected the key %s to not exist.',
                 static::valueToString($key)
@@ -951,6 +1023,30 @@ public static function countBetween($array, $min, $max, $message = '')
         }
     }
 
+    public static function isList($array, $message = '')
+    {
+        if (!is_array($array) || !$array || array_keys($array) !== range(0, count($array) - 1)) {
+            static::reportInvalidArgument(
+                $message ?: 'Expected list - non-associative array.'
+            );
+        }
+    }
+
+    public static function isMap($array, $message = '')
+    {
+        if (
+            !is_array($array) ||
+            !$array ||
+            array_keys($array) !== array_filter(array_keys($array), function ($key) {
+                return is_string($key);
+            })
+        ) {
+            static::reportInvalidArgument(
+                $message ?: 'Expected map - associative array with string keys.'
+            );
+        }
+    }
+
     public static function uuid($value, $message = '')
     {
         $value = str_replace(array('urn:', 'uuid:', '{', '}'), '', $value);
@@ -1044,6 +1140,10 @@ protected static function valueToString($value)
         }
 
         if (is_object($value)) {
+            if (method_exists($value, '__toString')) {
+                return get_class($value).': '.self::valueToString($value->__toString());
+            }
+
             return get_class($value);
         }
 
-- 
GitLab